数模混合仿真实例(数字verilog作为顶层)VCS+Xa; 跑XA自带的demo存在的问题

最近项目需要跑XA+VCS混仿,跑的XA安装目录下的一个关于加法器adder4的demo.
流程参考的下面IC君写的一个flow.
奉上链接如下:

https://zhuanlan.zhihu.com/p/64434740

写的比较详细,整个流程下来,一直看不了波形,一直查找原因终于跑通。

主要两个原因:
(1)不知为啥,公司服务器对于XA仿真器的GCC解释器的路径定义错误,需要自己在
.cshrc文件里面强制重新定义正确的路径
setenv XA_GCC /…XA安装目录…/gcc-4.5.2-static/bin/gcc(原有路径指到了gcc-4.5.0-static,但看xa安装目录下gcc版本时gcc-4.5.2-static所以改过来了)

更改这个变量后能成功产生仿真文件
(2)但是通过wv 吃进模拟fsdb波形和数字vpd波形,信号列表没有信号也没有设计的hier无法看仿真波形。
后面发现时wv版本太低用的2010版本。通过查找spiceexplorer安装目录发现公司已经安装了2015版本的wv,但是wv &命令默认调用最low的版本,所以通过手动启动2015版本custom waveview把fsdb和vpd波形吃进来,就能正确显示波形了

.cshrc文件里面重新定义
alias wv /…wv 2015版本安装路径…/bin/wv

至此,demo跑通

(3)注意生成fsdb波形也可以通过verdi读入设计,来看波形。命令如下:
首先读入verilog和SPICE网表文件
verdi -f filelist.f(数字设计) -ams xxxxx.sp(模拟SPICE网表)+spiceext+.sp+SP+.hsp+
然后分别两个波形窗口读入数字fsdb波形和模拟fsdb波形。
数字信号波形可直接拉信号看波形
模拟信号波形只能看spice网表里实现指定的信号波形(设计较大时指定部分信号,设计较小时可全部down下来),依次点击 Get Signals(波形窗口菜单栏波形图标) -> 新窗口里面出现你的设计层次结构,找到模拟模块层次,点击对应模块就会出现之前指定的模拟信号列表 -> 把需要看波形的信号加入到波形窗口即可
(4)
模拟信号必须指定所抓的信号,不然模拟仿真不会产生fsdb波形。
可以直接再cfg文件里指定信号层次或者再SPICE网表里指定,
SPICE网表里,格式如下(一般模拟同事清除):
.PROBE TRAN
+V(sim.x.x.x.x.xx. 指定信号层次结构,注意一定要正确)
+I(sim.x.x.x.x.xx. 指定信号层次结构,注意一定要正确)

另外混仿需要注意的问题:
1.混仿时间一般很久,如果可以建议XA开多核仿真,在cfg文件里面设置
set_multi_core -core 10(10核)
set_analysis_core -core 10
2.有时候时间太久需要中途掐断仿真,数字波形不更新不能load下来,只要vcs脚本选项里加了debug_pp
可以ctrl_c暂停仿真输入fsdbDumpflush,更新波形,再输入run启动仿真
或者代码里加入 foever #10000 $fsdbDumpflush

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用vcs进行SystemVerilog仿真时,需要编写仿真语句来控制仿真过程。下面是几个常用的仿真语句: 1. `+define+DEFINE_NAME=VALUE`:定义一个宏,可以在仿真代码中使用。 2. `+incdir+PATH`:添加一个包含文件的目录。 3. `+libext+.v+.sv`:指定仿真库的文件类型。 4. `+define+SIMULATION`:定义一个仿真标志,可以在仿真代码中使用。 5. `+notimingchecks`:禁用时序检查。 6. `+access+r`:指定仿真库的读取权限。 7. `+define+DEBUG`:定义一个调试标志,可以在仿真代码中使用。 8. `+define+VERBOSITY=2`:定义一个详细程度标志,可以在仿真代码中使用。 9. `+define+TESTCASE="mytest"`:定义一个测试用例名称,可以在仿真代码中使用。 10. `+incdir+../rtl`:添加一个RTL代码的目录。 这些仿真语句可以通过在vcs命令行中添加,或者在一个vcs脚本中定义来使用。例如,以下是一个示例vcs脚本: ``` #!/bin/bash VCS=/path/to/vcs TOP=top_module $VCS \ +define+SIMULATION \ +notimingchecks \ +access+r \ +incdir+../rtl \ +incdir+../tb \ +libext+.v+.sv \ ../rtl/*.v \ ../tb/*.sv \ -o $TOP \ -debug_all \ -full64 \ -l compile.log \ -timescale=1ns/1ps \ -assert svaext \ -fsv \ -sverilog \ -CC \ -R \ +define+TESTCASE="mytest" \ +define+VERBOSITY=2 ``` 该脚本使用了几个仿真语句,包括定义了`SIMULATION`标志和禁用时序检查。它还指定了RTL和测试代码的目录,并使用了SystemVerilog文件。最后,它定义了一个测试用例的名称和详细程度标志。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值