您的位置:首页 > 编程语言

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

2010-04-28 15:09 429 查看
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
      
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息