发布时间:2023-06-12 18:00
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
-cm_hier
-cm_name
-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。