VCS在仿真过程中,也可以收集Coverage Metric。其中覆盖率类型有:
1)Code Coverage:包括control_flow和value两部分的coverage,line_coverage, branch_coverage, toggle_coverage,
FSM_coverage。
2)Functional Coverage:包括covergroup,SVA。
Coverage Database的产生:包含所有的有关coverage的信息,默认放在simv.vdb文件夹下。
db中的默认路径是,snps/coverage/db/testdata/line.verilog.data.xml
fsm/cond/tgl/branch等xml信息。
在编译命令中:vcs [cover_options] [compile_options] source.v
[cover_options]可以是:-cm line+cond+tgl+fsm+branch+assert
-cm_dir在compile options中改变simv.vdb文件夹的位置。
-cm_name指定testname。主要改变testname在db中的命名。
在仿真过程中:simv [cover_options] [run_options]
[cover_options]可以是:-cm line+cond+tgl+fsm+branch+assert
[run_options]指定runtime options。
Coverage Reports的产生:
使用工具URG(Unified Report Generator)产生html格式文件。
urg -dir dir1 [urg_option] -dbname merge
使用DVE的GUI界面。
dve -cov -dir <simv.vdb>
使用verdi的gui界面。
verdi -cov -covdir <simv.vdb>
verdi -cov -h,打印coverage mode下的帮助信息
其他的vcs编译和仿真中的option:
-cm_hier,在编过程中,指定收集coverage的scope。
-cm_assert_hier,在编译过程中,只是指定不收集coverage的assert hier。
其中hier的表示,+/- module,+/- tree,+/-assert
-cm_count,在gui和urg report中,显示次数,比如toggle的次数。
-cm_glitch period,不收集一定范围的glitch的coverage。simulation option
-cm_start/stop,指定coverage收集的时间,simulation option
coverage group相关的option;
-covg_disable_cg,关闭所有的coverage group的收集
urg生成report中的option:
-dir,指定需要拿到的db的hier,
-dbname,指定输出的merge db的hier
-elfile,指定exclusive的file,这样更好计算coverage。
-elfilelist
-noreport,不输出最终的report,只是merge db
-format text/both,指定report的输出格式
-matric [line,cond,fsm,tgl,branch,assert]执行计算的coverage类型
-parallel,并行merge
-full64,以64bit的程序进行merge
-plan,-userdata,-userdatafile,-hvp_no_score_missing,指定hvp相关的生成信息。