在一个芯片验证的工程中,通常以代码覆盖率和功能覆盖率来体现验证是否完备,而代码覆盖率包括:行,状态机,翻转,条件,分支覆盖率。为了保证验证的充分性,我们要尽可能保证这五种类型的代码覆盖率达到100%。
行覆盖率 line coverage 要求百分之99-100
状态机覆盖率 FSM coverage
条件覆盖率 conditional coverage
翻转覆盖率 Toggle coverage :0->1 ,1->0
路径覆盖率 Path coverage :initial 和always里的语句
分支覆盖率 branch coverage
-cm line cond fsm branch tgl为生成什么条件的覆盖率
Makefile文件中覆盖率脚本:
执行vcs
产生的.vdb文件为产生覆盖率的信息
一步步cd进去可以看到coverage文件
下面进行覆盖率查看,输入如下命令 dve -covdir *.vdb &
弹出DVE界面,通过DVE查看覆盖率(方法1)
双击tb_state 进入,可以看到代码会有颜色标注,覆盖到的为绿色,没有覆盖到的为红色
Line coverage
Toggle coverage
FSM coverage
Condition coverage
Branch coverage
通过URG查看覆盖率(方法2),可以以文本格式或者网页格式显示覆盖率
点击run,产生urgReport;
或者在命令栏urg -dir *.vdb &
ls之后可以看到urgReport,cd进去可以看到.html文件和 .xml文件
会显示很详细的覆盖率报告
Tb文件:
Module文件