来自:https://blog.csdn.net/limanjihe/article/details/52430286
第一部分:
html文件,想快速用浏览器打开,而不是通过鼠标点击的老套方式,
有着简单且看上去高大上的方法:
firefox浏览器
firefox trace.html
chrome浏览器
chromium-browser trace.html
第二部分
VCS中的coverage分析
|
将两次仿真.vdb数据,整合在一起,输出覆盖率结果。
TSCALE= -timescale="1ns/100ps"
RTL= ./dut.v
TB= ./my_tb.v
COV_OPT=line+tgl+fsm+cond
default: test
vcs: compile run
run:
./simv -l simv.log -cm $(COV_OPT) -cm_dir int_dat_files_test1
compile:
vcs -l vcs.log -sverilog $(TSCALE) $(TB) $(RTL) \
-P ${LD_LIBRARY_PATH}/novas.tab ${LD_LIBRARY_PATH}/pli.a \
-debug_pp -cm $(COV_OPT) -cm_dir my_cov_info_test1
urg:
urg -dir my_cov_info_test0 int_dat_files_test0 -dir my_cov_info_test1 int_dat_files_test1 -report both
第三部分
对于vcs工具,支持生成覆盖率报告,通过查看覆盖率报告,即可知道设计中有什么问题。
要生成覆盖率报告,要在编译和仿真的时候,加入一个选项。
-cm line | fsm | tgl | cond , 指定生成针对什么条件的覆盖率报告。
如下的makefile,就生成上述四个的覆盖率报告。注意,编译和仿真,都要加上-cm这个选项。
执行 make vcs , make sim后,会生成simv.vdb文件夹,该文件夹下包含了覆盖率的内容,但是我们需要将内容生成报告,这样,才方便我们查看。
生成报告,使用的是 urg命令,该命令也是属于vcs工具里面的。
-dir: 指定 .vdb文件夹的位置
-report: 指定生成报告的格式,报告格式有两种,一种网页格式,一种text格式。这里,both代表生成两种。
执行 make urg后,就会生成both文件夹。
这文件夹下的文件,就是覆盖率报告了。
打开dashboard.html。可以看到整体的一些信息。
但是我们关心的是设计的,而不是testbench的。点击hierarchy,得到层次。
点击u1,也就是设计的顶层。可以看到关于该顶层的信息。因为在顶层,都是调用各个子模块(这里是调用band_generaterx_tx, uart_txd模块),所以没有line的覆盖率统计,但是有TOGGLE的覆盖率统计,也就是信号的翻转。
从上面可以看出,对于rst_n信号,没有从1->0的翻转,而这个信号是testbench中传递的,因此看出,在testbench设计,对于rst_n信号产生,有bug。
点击左下角的uart_txd_1,查看该模块的信息。
对于该设计,因为有具体的实现,所以可以看到有line的覆盖率,toggle的覆盖率,FSM的覆盖率。
对于line覆盖率,从报告看出,总共有42行,覆盖到了41行。通过查看代码,可以知道是哪一行没有被执行到。
对于toggle覆盖率。从报告看出,只有rst_n有问题,而这问题是testbench的的bug造成的。
对于FSM的检查。从报告看出,每个状态都有被覆盖到。但是从有些状态跳转到另外的状态,没有被覆盖到。因此造成FSM的覆盖率不高。
通过查看覆盖率报告,可以查找到设计的缺陷,从而进行修正。