VCS学习(5)-Code Coverage

一:类型

  line(行)覆盖率,Toggle(跳变)覆盖率,condition(条件)覆盖率,FSM(状态机)覆盖率,path(路径)覆盖率

二:覆盖率

1:行覆盖率

  一般要求100%,例如缺else,default

  例子如下,缺少else,default;但这不一定是错误,可能故意为之;二次检查

  

2:条件覆盖率

  代码中有if语句,实际可能出现某种情况,但程序没有覆盖,则报告

3:Toggle coverage

  信号是否有0->1,1->0的跳变;x->1,x->0不会报告

  

 

4:FSM覆盖率

  报告state1-state2没有转换

5:path覆盖率

  路径是否覆盖

三:什么时候使用覆盖率

1:behavior code

   line,condition,path,FSM

2:RTL code

  line, condition,path,Toggle(not command),FSM

3:Gate-level code

  Toggle

四:覆盖率编译执行开关

1:compile   

  #vcs -cm<coverage_type> <other option>;例如 -cm cond+line+tgl+fsm+path

  coverage_type:

  line,tgl,cond,fsm,path

2:simulation

  #./simv -cm<coverage_type> <other switches>

  -cm_name filename: 覆盖率文件的名字

  -cm_dir directory_of_file:覆盖率文件所在文件;后缀为vdb

  -cm_log:覆盖率log文件

  

 

3:dve

  dve -covdir *.vdb &             即可看覆盖率文件

  在dve界面,file-generate URG report-Report Format-可选中网页或者txt方式阅读覆盖率文件

4:不想报告某段code或者文件的覆盖率(比如一些在仿真时辅助的行为级代码,后仿真时会去掉)

  针对某段code屏蔽覆盖率报告但不屏蔽综合://VCS coverage off

                                                        //VCS coverage on

  针对某段code屏蔽覆盖率报告且屏蔽综合   ://synopsys translate_off

                       //synopsys translate_on

  针对某个文件屏蔽覆盖率   :

  在compile开关中添加-cm_hier<name_of_file>。-cm_hier ./filename  先在当前文件夹下新建一个文件,用gvim打开这个文件,输入-module fs,则在报告中屏蔽这个module的报告;输入    +module fs,则报告里只有fs的覆盖率;输入-file fs.v,则在报告里屏蔽fs.v文件;输入+file fs.v,则只有文件fs的报告

posted on 2018-03-15 16:45  huanm  阅读(8566)  评论(0编辑  收藏  举报