VCS 选项

转自https://blog.csdn.net/wonder_coole/article/details/79618696
VCS/VCSMX 一般仿真步骤
VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法。仿真前要配置好synopsys_sim.setup文件,里边有lib mapping等信息。设置环境变量’setenv SYNOPSYS_SIM_SETUP /xxx/xxx/synopsys_sim.setup’. VCS对应的waveform工具有DVE和Verdi, DVE因为是原生的,所以VCS对DVE非常友好。但DVE已经过时了,其对uvm等新feature支持的不好。Verdi是Debussy公司的产品,现在已被Synopsys收购并着力发展,说以Verdi是未来的潮流。但由于其原来是Synopsys第三方产品,所以VCS对其支持并不是很友好。 如果要支持Verdi,需要设置好NOVAS_LIB_PATH的环境变量,并且在命令行中添加-kdb的option,knowledge database(kdb)是VCS支持Verdi时的重要概念。另外,VCS支持vpd和fsdb两个格式的dump wave。 fsdb的文件相对比较小。

Step 1: analysis verilog/system verilog/VHDL;
命令例子:

  vlogan -kdb -work DEFAULT [rtl.defs] -f filelistname -l  logfilename +incdir+include_dir_name  top.v    //对verilog file 进行analysis
 vlogan -kdb -sverilog +define+SVA_OFF -work DEFAULT -f vlog.flist -l  logfilename.log  //对systemverilog进行analysis



 vhdlan -kdb -vhdl87  -full64  -work $VCS_LIB  -f VHDL87_FILELIST -l vhdl87.log   //对VHDL87进行analysis

vhdlan -kdb -93  -full64  -work $VCS_LIB  -f VHDL93_FILELIST -l vhdl93.log   //对VHDL93进行analysis

Step 2: Elaboration
命令例子:

vcs -kdb -lca -noIncrComp +lint=TFIPC-L +lint=PCWM -debug_all -P /xxx/synopsys/verdi/xxxxxx/novas_new_dumper.tab /xxx/synopsys/verdi/xxx/pli.a top_module_name -l elab.log -Mdir=/xxx/incr_compile -o /xxx/simv

Step 3: Run simulation
命令例子:

simv +DUMP_FSDB +FSDB_FILENAME=xxx.rtl.fsdb +PLUSSEED +seed=146123456 -l /xxx/xxx.sim.log

simv +DUMP_VPD +VPD_FILENAME=xxx.rtl.fsdb +PLUSSEED +seed=146123456 -l /xxx/xxx.sim.log

注意,上面的两个命令中,参数DUMP_FSDB/VPD是一个dump波形的使能参数,需要在top testbench中添加dump wave的系统命令,配合使用才起作用:

reg [511:0] WAVE_FILENAME; // string definition

if ( t e s t test testplusargs(“DUMP_FSDB”)) begin
if ( v a l u e value valueplusargs(“FSDB_FILENAME=%s”, WAVE_FILENAME)) begin
$fsdbDumpfile(WAVE_FILENAME); // 具体系统命令查询Verdi安装目录下的文档:linking_dumping.pdf
end
end

if ( t e s t test testplusargs(“DUMP_VPD”)) begin
if ( v a l u e value valueplusargs(“VPD_FILENAME=%s”, WAVE_FILENAME)) begin
$vcdplusfile(WAVE_FILENAME);
$vcdpluson();
end
end
GUI
在仿真中产生coverage database

  1. 在analysis step不需要做特殊处理(vlogan/vhdlan)

  2. 在elaboration step需要添加这些option:

“-cm line+cond+fsm+tgl+branch -cm_linecontassign -cm_cond allops+anywidth+event -cm_noseqconst -debug_all”

  1. 在simulation step添加这些option:“-cm line+cond+fsm+tgl+branch”

仿真产生的coverage data会放在simv.vdb目录下,用“dve -covdir *.vdb”会以GUI形式打开

coverage 相关命令
产生coverage report的命令
urg -lca -dir <simv1.vdb simv2.vdb ….> -format <text|html|both> -log <log_file_name> -report

例如:

   urg -lca -dir simv.vdb -format text -log urg.log 在默认的report目录urgReport产生各个metrics(line/fsm/branch/condition)的报告
   urg -lca -dir simv.vdb -metric line+fsm -format text -log urg.log 只产生line和fsm的报告

   urg -lca -dir simv.vdb -format text -log urg.log –show summary <levels of hierarchy>

coverage merge的命令
urg -lca -f

例如:
urg -lca -f urgfile -map dut_name -format text -log coverage.log -dbname merged_simv -report merged_coverage
urg -lca -dir simv1.vdb simv2.vdb -map dut_name -format text -log coverage.log -dbname merged_simv -report merged_coverage

其他
在synopsys_sim.setup文件中设置 lib mapping的方法:
lib_name : lib_path

如: lp_mem_lib : /xxx/xxx/lp_mem_lib/vcsmx_2016/rtl/vhdl/VCSobj

在run simv时可执行tcl命令文件
./simv -ucli -i tclfile.do

ticfile.do为自定义的tcl命令,如 dump -add {tb.dut} -depth 0

本文为博主原创文章,转载请注明出处。http://blog.csdn.net/wonder_coole/article/details/79618696

本博客所有文章均同步发表于www.mx1980.cn/blog
————————————————
版权声明:本文为CSDN博主「wonder_coole」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wonder_coole/article/details/79618696

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值