IC数字前端设计开发26 (使用VCS生成覆盖率报告)

来自:https://blog.csdn.net/limanjihe/article/details/52430286

 

第一部分:

html文件,想快速用浏览器打开,而不是通过鼠标点击的老套方式,

有着简单且看上去高大上的方法:

firefox浏览器

firefox trace.html

chrome浏览器

chromium-browser trace.html

 

第二部分

VCS中的coverage分析



   VCS支持强大的覆盖率分析功能, 那么如何使用该功能呢. 在这里只讲述基本的一些概念和流程,如果想了解更多, 请查看synopsysVCS / VCS MX Coverage Metrics User Guide.

  
下面列出如何用VCS进行覆盖率分析的步骤:

   $> vcs -Mupdate -cm line -cm_dir my_cov_info source.v
   $> simv -cm line -cm_dir int_dat_files
   $> vcs -cm_pp -cm line -cm_dir my_cov_info -cm_dir int_dat_files

  
第一条命令的作用是把source.v文件进行编译, 把编译结果放入my_cov_info 文件夹中. 选项-cm line表示在编译时, 要加入line 覆盖率分析.
  
第二条命令运行仿真,同样选项-cm line选项表示仿真是加入line覆盖率分析, 并把结果存入ini_data_files目录中
   第三条进行覆盖率分析, 分析文件从my_cov_infoint_dat_files这两个目录中读取, 进行line覆盖率的分析.
  
当然如果不指定文件夹, 那么文件将被存储到缺省的目录simv.
  
则命令为:

   $> vcs -Mupdate -cm line source.v
   $> simv -cm line
   $> vcs -cm_pp -cm line

  
如何选定固定的一部分进行coverage分析呢?
   -cm_hier config_file
通过写config_file确定需要要做coverage的范围
       +tree instance_name level_number instance代表的树的选择,缺省为0, 0代表整个instance.
       +module
       +file
       +filelist
       +library

  
也可以使用-cm_scope 命令
   $> vcs -cm_pp -cm_scope "tree+top.inst1" -cm_scope "file-testshell.v"

 
 
  
这里选取几个常用的coverage的选项:

   -cm line|cond|fsm|tgl|obc|path
设定coverage的方式
   -cm_name          缺省中间文件为test.lin test.con, 设定该名可改为 test_abc.line
   -cm_pp gui           启动cmViewGUI界面

 

 

将两次仿真.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这个选项。

clip_image002

 

         执行 make vcs , make sim后,会生成simv.vdb文件夹,该文件夹下包含了覆盖率的内容,但是我们需要将内容生成报告,这样,才方便我们查看。

clip_image004

 

         生成报告,使用的是 urg命令,该命令也是属于vcs工具里面的。

clip_image006

         -dir: 指定 .vdb文件夹的位置

         -report: 指定生成报告的格式,报告格式有两种,一种网页格式,一种text格式。这里,both代表生成两种。

         执行 make urg后,就会生成both文件夹。

clip_image008

 

         这文件夹下的文件,就是覆盖率报告了。

clip_image010

 

         打开dashboard.html。可以看到整体的一些信息。

clip_image012

 

         但是我们关心的是设计的,而不是testbench的。点击hierarchy,得到层次。

clip_image014

         点击u1,也就是设计的顶层。可以看到关于该顶层的信息。因为在顶层,都是调用各个子模块(这里是调用band_generaterx_tx, uart_txd模块),所以没有line的覆盖率统计,但是有TOGGLE的覆盖率统计,也就是信号的翻转。

clip_image016

         从上面可以看出,对于rst_n信号,没有从1->0的翻转,而这个信号是testbench中传递的,因此看出,在testbench设计,对于rst_n信号产生,有bug。

 

         点击左下角的uart_txd_1,查看该模块的信息。

clip_image018

         对于该设计,因为有具体的实现,所以可以看到有line的覆盖率,toggle的覆盖率,FSM的覆盖率。

 

         对于line覆盖率,从报告看出,总共有42行,覆盖到了41行。通过查看代码,可以知道是哪一行没有被执行到。

clip_image020

 

        

对于toggle覆盖率。从报告看出,只有rst_n有问题,而这问题是testbench的的bug造成的。

clip_image022

 

         对于FSM的检查。从报告看出,每个状态都有被覆盖到。但是从有些状态跳转到另外的状态,没有被覆盖到。因此造成FSM的覆盖率不高。

clip_image024

 

         通过查看覆盖率报告,可以查找到设计的缺陷,从而进行修正。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值