IC数字前端设计开发27 (VCS中使用coverage metrics进行代码覆盖分析)

来自:https://blog.csdn.net/fredfei2002/article/details/5539060

VCS覆盖率概念

  1. vcs脚本命令中包含六种覆盖率分析选项:-cm line|cond|fsm|tgl|path|branch|assert,分别代表行覆盖率|条件覆盖率|状态机覆盖率|翻转覆盖率|路径覆盖率|分支覆盖率|断言覆盖率   最低要求为line100%, line+tgl+fsm+cond更好。
  2. line_coverage:仿真代码中行和语句的覆盖情况;cond_coverage:表明代码中条件语句的覆盖情况;fsm_coverage:状态机中各个状态的覆盖情况;tgl_coverage:代码中信号的0到1,1到0的翻转情况;obc:表明代码中的分支覆盖情况(if_else,case,及三元操作符);path_coverage:表明代码中数据通路的覆盖情况;
  3. UVF采用行覆盖率、条件覆盖率、状态机覆盖率和分支覆盖率作为代码覆盖率的判断标准;
  4. 分支覆盖率和条件覆盖率有什么不同呢?分支覆盖率是每个分支是否被运行及其运行的次数,与行覆盖率有点类似作用,而条件覆盖i率是条件的内容出现的组合情况是否都出现过,这个可以验证这个条件写的合不合理;
  5. 功能覆盖率基于控制的SVA断言覆盖率及基于数据的功能覆盖率,即coverage group中的容器被击中的情况;

VCS工具自带的Coverage Metric是一个功能强大的代码覆盖率分析工具,它能对仿真过程进行监测和评估,并可以通过指定对RTL代码中的哪一部分进行统计,即不关注那些无需进行覆盖率统计的代码(如memory的bist模块部分),从而提高验证效率。除此之外,在验证平台及设计代码已经基本稳定并进入全部case的回归阶段,该工具可以记录并保存每次仿真的相关信息,并在全部case仿真完成后将这些中间数据对代码覆盖率的贡献累加起来,生成一个最终的代码覆盖率统计报告。该工具还能自动将没有覆盖到的行标示出来,方便验证人员和设计人员进行分析和改进。此外,它还支持图形界面的使用。

Coverage Metrcs工具可以提供对如下几种覆盖率指标的统计:

l         Line or statement coverage:表明仿真过程代码中行和语句的覆盖情况,即区分出哪些得到执行,哪些没有执行。

l         Path/Condition coverage:表明代码中数据通路和条件语句的覆盖情况。

l         Toggle coverage:表明代码中信号的0到1和1到0的翻转情况。

l         FSM coverage:表明内状态机中各个状态的覆盖情况。

l         Branch coverage:表明仿代码中的分支覆盖情况。Verilog中的分支包括“if-else语句”、“case语句”和三元操作符“? :”。

编译时需添加如下命令:-lca –cm line+fsm+cond+path+branch+tgl –cm_dir “coverage_dir” –cm_hier “hierarchy cfg name” –cm_name “test suite name”

注:

       -lca 不知道干什么的

-cm_dir<directory_paht_name> 指明simv.cm文件夹的名称和路径;默认为simv.cm

       -cm_hier<filename> 分析代码覆盖率时指定的配置文件,此配置文件用来指定所需要进行代码覆盖率分析的模块。使用时在配置文件中指定所需要进行代码覆盖统计的模块,默认情况下vcs将统计所编译的所有模块的代码覆盖率。

       -cm_name<filename> 编译和运行时指定中间数据文件名称

       -cm_pp gui           启动cmView的GUI界面

如何选定固定的一部分进行coverage分析呢?
   -cm_hier config_file 通过写config_file确定需要要做coverage的范围
       +tree instance_name level_number 该instance代表的树的选择,缺省为0, 0代表整个instance。1为指定module_instance的顶层信号。n为记录从顶层开始到下面n层例化模块的信号
       +module
       +file
       +filelist
       +library

运行时同样需要添加以上命令。./simv –lca –cm line+fsm+cond+path+branch+tgl –cm_dir” “ –cm_hier” “ –cm_name” “

运行完成后生成代码覆盖报告:urg –dir “coverage_dir”。coverage_dir为之前定义的-cm_dir。

然后可用Firefox查看urgreport。
 

猜你喜欢

转载自blog.csdn.net/Times_poem/article/details/84025414
今日推荐