VCS中使用coverage metrics进行代码覆盖分析

发布时间:2023-06-12 18:00

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

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

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

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

l         Toggle coverage表明代码中信号的0110的翻转情况。

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 指明simv.cm文件夹的名称和路径;默认为simv.cm

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

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

       -cm_pp gui           启动cmViewGUI界面

 

如何选定固定的一部分进行coverage分析呢?
   -cm_hier config_file
通过写config_file确定需要要做coverage的范围

       +tree instance_name level_number
instance代表的树的选择,缺省为0, 0代表整个instance1为指定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

      

 

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号