vcs -sverilog +v2k +plusarg_save -ntb_opts uvm-1.1 \\
-f XXX/lib/vcs.f \\
+define+ASSERT_ON \\
-cm assert +define+COVER_ON \\
+define+XXX \\
+nospecify +lint=TFIPC-L +notimingcheck -debug_acc -j4 \\
-XgenLoopOpt=0x200 \\
-timescale=1ns/1fs +vcs+lic+wait -full64 +vcsd +memcbk +vpi \\
-cm line+fsm+cond -cm tgl \\
-cm_hier ../cfg/rtl_vcm.cfg -cm_dir ./${mode}/cov/simv.vdb \\
-Mdir=./${mode}/exec/uvm_test_csrc \\
-l ./${mode}/log/uvm_test.cmp_log \\
-o ./${mode}/exec/uvm_test_simv \\
-f ../cfg/tb.f
+vcs+lic+wait
等license
+v2k
使能verilog2000的标准
-timescale
- time_unit采用就近原则,例如顶层文件定义timescale后,中间文件再次定义timescale,则其后的文件按照中间文件定义的timescale执行。
- time_precision则采用最小的精度
-override_timescale
统一所有的timescale
-f -F
-f采用绝对路径;-F与-f类似,也可以采用绝对路径,同时也支持相对路径,但不允许嵌套使用。
VCS用-F解析filelist时,不允许文件嵌套使用,不支持`include “xxx.v”这种写法,改为-f便ok了。
+incdir
`include "xxx.sv"
要用+incdir把xxx.sv的路径指明。
-R
编译完成后,自动执行当前编译生成的可执行文件
+vcs+initmem+0|1|x|z
初始化RTL中所有mem的所有bit初始值
+vcs+initreg+0|1|x|z
初始化RTL中所有reg的所有bit初始值
VCS的+ -区别
-的一般是编译时用的,编译工具自带的。
+的是插件,环境,验证语言,等等加的,可扩展的,自定义的。
Dump波形文件
begin
$fsdbAutoSwitchDumpfile(1000,FSDB_SAVE_PATH,200);
$fsdbDumpvars(0,test_top);
#0 $fsdbDumpon;
#50000000 $fsdbDumpoff;
end
fsdb系统任务
$fsdbDumpfile(“file_name.fsdb”);
$fsdbAutoSwitchDumpfile(1000,"wave.fsdb",10,"fsdb_dump.log")
$fsdbDumpvars(0,"top.dut")
$fsdbDumpFlush
$fsdbDumpon
$fsdbDumpoff
$fsdbDumpFinish
tb.f里一般有什么
+libext+.v
-y XXX/memory/all/work/verilog 定义verilog的库
-f rtl_top.f
-f env.f
vcs -full64 -sverilog +vpi -ntb_opts uvm-1.1 -l cmp.log -P /XXX/verdi/Verdi3_L-2016.06-1/share/PLI/VCS/LINUX64/novas.tab \
/XXX/verdi/Verdi3_L-2016.06-1/share/PLI/VCS/LINUX64/pli.a +define+FUNC_COV_EN \
-cm line+cond+tgl+fsm+branch -cm_cond allvectors+allops -debug_access+all \
-f /xxx/tb.f -y /XXX/synopsys/syn/O-2018.06-SP3/dw/sim_ver \
+incdir+/XXX/synopsys/syn/O-2018.06-SP3/dw/sim_ver +libext+.v
testbench的顶层module名字是top, 收集top下的例化的rtl顶层模块的下面所有层的覆盖率
如果用到了dw的东西
一般加上选项
-y $DC_HOME/dw/sim_ver +incdir+$DC_HOME/dw/sim_ver +libext+.v