Cadence: 仿真工具Insicive(irun),Xcelium(xrun) (xrun是irun的升级版本);看波形使用Simvision
Synopsys:仿真工具VCS ,看波形使用Verdi
数字Designer常常需要快速搭建一套VCS仿真环境来对自己写的rtl进行初步的仿真。
对于一个要设计的module,其常见的文件结构如下(这里只是举例,不同的项目文件结构是不同的):
module_name
--> rtl
--> top.v
--> sub_module.v
--> tb
--> tb.sv
--> sim
--> run.sh/Makefile
--> tc
--> case1
--> test.sv
--> case2_name
--> test.sv
需要注意的只有一点: TB和TC分开放置
TB-TestBench:在搭建好之后一般不会去改动。一个test-bench例子如下:

这里各种外围设备可能是公司已经开发好的VIP,只需要将其例化并与DUT相连。
TC-Testcase:对应不同的测试场景。TC不是一个专门的模块,它的作用是产生激励并接收响应做检查(比如:调用VIP,比如使用SPI发送指令并接受DUT返回的数据进行检查;Foce某个信号;对DUT中的信号添加一些断言,当断言命中后,打印log...)
TC实际上是与TB共同工作的,完全可以将TC融合到TB中。
但是对于一个模块,有非常多的测试场景,不可能每个TC中都例化一遍TB,最好是将TB和TC分开放置,每个TC对应一个文件夹,TB尽量保持不动。
每次仿真时,只需要选择不同TC的路径即可。
搭建好TB和TC后,接下来就是仿真
VCS仿真过程包括编译(命令是vcs )和执行(命令是simv ),编译会产生可执行文件,默认名simv。
仿真后可以利用Verdi工具查看波形(命令是verdi )。
建立一个shell文件run.sh
run.sh
vcs -sverilog #支持sv特性,注意是-sverilog不是-sv
-full64 #支持64位操作系统
+v2k #支持Verilog-2001语法
-debug_access+all #提供所有的调试权限,包括对内部信号的读写比如force、强制操作等
-timescale=1ns/1ps #设置统一的仿真精度(如果tb中没有定义或需要进行覆盖)
-R #编译后立刻运行simv可执行文件进行仿真
-gui=verdi #打开verdi界面
-f asic.f #存储所有需要编译的.v .sv文件
-o simv #生成可执行文件simv (optional)
-l sim.log & #log文件保存到sim.log
#其他可选设置
# +vcs+lic+wait # 用于等待license
# +lint=all,noVCDE # 报告lint检查
# -kdb # 生成verdi的知识数据库,利用fsdb调试时使用
# +notimingcheck # 编译时不做时序检查(前仿必备)
# +nospecify # 仿真时忽略库文件中指定的延时(前仿必备)
verdi -sv
-f asic.f
-ssf tb.fsdb & #打开tb中自定义的波形文件
asic.f
+indir+文件夹名称 #帮助工具找到verilog代码中include文件的位置
../rtl/*.v
./tb/tb.sv
./tc/case_x/test.sv
-f #其他f文件
建议将compile与execute分开,因为更常见的情况是设计人员写完代码后还来不及搭建testbech,但是需要快速检查一下语法,此时只需要VCS编译通过即可(后续可以开发一套makefile来分别管理):
编译 :
vcs -sverilog -full64 +v2k
+vcs+lic+wait
-debug_access+all
-timescale=1ns/1ps
-f asic.f
-o simv
+notimgcheck, +nospecify
-l compile.log
执行仿真 :
simv +vcs+lic+wiat
| tee exec.log
vcs -cm line+cond_fsm+tgl+branch #行,条件,状态机,翻转,分支覆盖率
-cm_dir cm #覆盖率数据存储在名为cm.vdb文件夹下
-cm_hier cm_cfg & #指定文件cm_cfg,里面标出统计的模块和没有统计的模块
比如用户只关心DUT内部的覆盖率,cm_cfg文件可以写成
-tree tb
+tree tb.u_DUT
仿真完成后,会在当前目录下生成一个cm.vdb文件夹,可以将该文件夹剪切到对应的TC下,所有的TC运行完,及回归完成时,每个TC都会有一个cm.vdb文件夹,里面存放着对应TC下DUT的覆盖率数据。
覆盖率的检查与merge :
urg -dir tc/*/*.vdb -dbname merge.vdb -report cm_report
生成的报告是html格式,保存在自定义的cm_report(不定义就是usgReport)文件夹下。
覆盖率报告也可以用DVE打开:
dve -covdir merge.cdb
¥69.50
PC中文正版steam游戏 No Man's Sky 无人深空游戏 激活码KEY
¥34.00
{自动发货}XBOX金会员全球版激活码 3个月 季卡 XBOX Live Gold土耳其区充值 6个月礼品卡代兑换代升级XGPU
¥145.00
xgpu1年充值卡xbox终极会员一年代充pc主机EA Play金会员微软xgp12个月兑换码激活码礼品卡pgp WIN10 PC通用
¥84.00
意航员2 脑航员2 疯狂世界2 意航员2steam 激活码 steam游戏Psychonauts2 国区激活码 cdk 秒发 Psychonauts2
¥52.00
Steam大富翁11 国区激活码CDKey Richman 11 PC游戏 中文正版
¥43.00
PC中文 steam正版 死亡循环 DEATHLOOP 国区cdkey激活码 标准豪华版