参考文章:vcs 覆盖率收集2——覆盖率选项 + 合并覆盖率_vcs覆盖率-CSDN博客
使用VCS生成覆盖率报告-weiqi7777-电子技术应用-AET-中国科技核心期刊-最丰富的电子设计资源平台
1、生成覆盖率报告时,一般要在编译和仿真时,加入选项 -cm line | fsm | tgl | cond 指定生成什么条件的覆盖率。
- -cm:指定覆盖率的类型,包括line、cond、fsm、tgl、path、branch和assert,line指的是行覆盖率,cond指的是条件覆盖率,fsm指的是状态机覆盖率,tgl指的是反转覆盖率,path指路径覆盖率,branch指分支覆盖率,assert指断言覆盖率(一般是在验证里面加,收集覆盖率)。
-
-cm_name:修改默认的test目录。对于每一个test,生成的coverage数据,默认是在simv.vdb/snps/coverage/db/testdata/test目录下。比如-cm_name load_test,那么coverage数据,就会生成在simv.vdb/snps/coverage/db/testdata/load_test目录下。
-
-cm_dir
:指定覆盖率统计结果的存放路径,默认是${OUTPUT}.vdb,更改默认的coverage model生成的目录。 -
-cm_log
:指定保存覆盖率结果的文本文件的名称。 -
-cm_hier
:指定覆盖率统计的范围,可以指定是module名、层次名和源文件等。0表示统计所有,1表示只统计当前层,2表示统计当前层和下一层,之后依次类推。 -
-cm_tgl mda
:为Verilog 2001和SystemVerilog未打包的多维数组启用翻转覆盖。 -
-cm_noconst
:告诉VCS不要监视由于信号始终为1或0值而永远无法满足的条件或永远无法执行的线路。
2、运行之后会生成${OUTPUT}.vdb目录,该文件夹下包含了覆盖率的内容。
编译:
vcs -full64 +v2k -sverilog -f filelist.f +define+RTL_SAIF ${FSDB_OPTION} -l com.log -o ${OUTPUT} -cm line+tgl+cond+fsm -cm_name ${OUTPUT}
仿真:
./${OUTPUT} -l ${OUTPUT}.log -cm line+tgl+cond+fsm
verdi打开:
verdi -cov -covdir ${OUTPUT}.vdb/
生成覆盖率报告:
urg -dir ${OUTPUT}.vdb -report both
3、在both文件下打开dashboard.html即可看见全部的覆盖率。