用vcs统计代码覆盖率,verdi查看覆盖率报告
专栏:ExASIC Aug. 15, 2025, 6:35 p.m. 14 阅读
介绍在vcs里统计代码覆盖率的方法,并介绍如何用verdi合并和查看报告

一、在vcs仿真脚本里增加统计代码覆盖率的选项

在vcs里增加-cm选项,把需要统计的代码覆盖率类型选上。常见的代码覆盖率类型有:

  • line:行覆盖率

  • cond:条件覆盖率

  • fsm:状态机覆盖率

  • tgl:toggle覆盖率

  • branch:分析覆盖率

  • assert:断言覆盖率

另外,通过-cm_hier指定到rtl top层,只统计RTL部分,排除掉验证环境、仿真model等模块。

vcs 
    -cm line+cond+fsm+tgl+branch+assert
    -cm_hier cm_hier.file
	
# cat cm_hier.file
+tree tb.u_digital_top

设置好覆盖率option之后,仿真log的末尾有提示仿真过程中记录了哪些覆盖率类型。

---------------------------------------------------------------------------
VCS Coverage Metrics: during simulation line, cond, FSM, branch, tgl was monitored
---------------------------------------------------------------------------
           V C S   S i m u l a t i o n   R e p o r t 

二、用verdi查看覆盖率报告

对于单个case,可以直接用命令verdi -cov先打开gui,再点菜单上的Open/Add Database...,选择当前目录下的simv.vdb,就可以看到覆盖率报告了。

image.png

image.png

对于多个testcase,每个case只仿真了芯片的部分功能,真实覆盖率需要合并后查看。

可以写个脚本,把多个case下的simv.vdb用-covdir选项拼接到一起,下面是一个例子:

import os

tclist = ['tc_testcase1', 'tc_testcase2', 'tc_testcase3']

cmd = verdi -cov

for tc in tclist:
    cmd += ' -covdir' + tc + '/simv.vdb'
	
os.system(cmd)

运行脚本就可以看到合并之后的代码覆盖率报告了。

 

感谢阅读,更多文章点击这里:【专栏:ExASIC】
最新20篇 开设专栏