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。
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。
相关文章推荐
- Gradle中配置使用sonar进行代码分析
- 使用 profile 进行python代码性能分析
- Xcode常用技巧(1)-使用Xcode进行代码分析及GDB调试
- 【代码审计】使用SonarQube进行代码质量分析管理
- iOS使用sonar进行代码分析
- 使用 Ratinal Purecoverage 进行 C++ 代码覆盖率分析
- 使用 Gradle 插件进行代码分析(转)
- 基于visual c++之windows核心编程代码分析(16)使用邮槽进行进程通信
- [置顶] 代码覆盖工具Jacoco使用示例及源码分析
- 使用VS2005进行代码覆盖率分析
- 使用 Gradle 插件进行代码分析
- 使用gcov对gcc项目进行覆盖分析
- 使用 Ratinal Purecoverage 进行 C++ 代码覆盖率分析
- [Android]使用Emma进行单体测试代码覆盖率分析
- 使用VS2005进行代码覆盖率分析
- 使用Klockwork进行代码分析简单操作流程
- 使用matlab对行人视频进行检测的代码的分析
- 软工实践练习一——使用Git进行代码管理心得
- C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
- 如何使用工具进行线上 PHP 性能追踪及分析?