文章目录
学习历程
最近在公司接触一个项目,目前testcase已经做完了,在跑代码覆盖率的时候发现覆盖率有些低基本在80%左右,TOGGLE在60%左右,正好趁着这个机会好好学习一下覆盖率的一些知识,也分享给大家,有不对的地方希望大家指正出来。
代码覆盖率
代码覆盖率包括行覆盖率(line),翻转覆盖率(toggle),有限状态机覆盖率(FSM),条件覆盖率(condition),分支覆盖率(branch)。个人感觉白皮书上说的路径覆盖率就是分支覆盖率。上面五个属于代码覆盖率是可以由软件直接生成(本人用的是DVE),不需要添加任何额外的HDL代码,工具会自动帮你完成代码覆盖率的统计。
这里总结一下VCS生成代码覆盖率一些常用的命令:
urg -full64 -dir $(PATH)*.vdb -dbname merged.vdb
urg:可产生覆盖率报告,会将目录下生成的所有vdb文件整合成为一个merged.vdb文件
dve -full64 -cov -covdir $(PATH)/merged.vdb
此命令是将整合后的merged.vdb文件用DVE打开以查看详细覆盖率情况
-cm line+cond+branch+tgl+fsm+assert
-cm选项可控制是否产生上述几种coverage,可以不都添加
-cm_dir $(PA