[验证百花筒] 如何使用verdi的覆盖率报告反推对应的testdata目录

[验证百花筒] 如何使用verdi的覆盖率报告反推对应的testdata目录

引言

一开始我们接触coverage的report通常都是用Synopsys公司的urg指令吃仿真器收集的coverage的database生成urgReport目录,其中包含众多html网页文件,然后再使用网页浏览器打开Dashboard.html文件通过其中的各种超链接调出其他的网页文件来分析覆盖率的,界面如下图所示。这种分析覆盖率的方式就是没法清晰地查看收集代码的hierarchy,与RTL的结合比较差,只能在一个个网页直接来回切,也没有办法添加exclude项,都是只读的。
urg生成的网页版的覆盖率报告

后来Cadence公司的dve也可以吃仿真器收集的coverage的database通过gui界面展示覆盖率报告结果,图形化界面比网页做的更好一些,并且也可以方便的添加exclude信息,用户界面下图所示。
dve分析覆盖率的GUI界面

不知道大家对于dve的使用有何感受,反正我一直用不惯,包括用它来分析波形debug,总觉这个界面设计更应该出现在windows 95的操作系统里,根本不像一款现代软件GUI。Cadence还有一款专门做覆盖率分析的软件IMC,用过一段时间,比dve要舒适很多,但是由于后来的东家门普遍使用的都是synopsys家的产品,也就再没用过该软件。
万幸的是,verdi后来也集成覆盖率分析的功能,只不过需要单独购买license,但是用起来要比dve舒适很多,用户界面如下图所示。
verdi分析覆盖率的GUI

而我们今天要介绍的功能就是以verdi作为工具演示的。

覆盖率database

首先我们看下覆盖率的database目录结构,如下图所示
覆盖率database

我们跑各种仿真生成的覆盖率结构都存放在testdata这个目录,其中包含的文件夹如下图所示
testdata目录下的文件结构

这个目录名就是我们在使用vcs工具编译运行的时候指定的参数-cm_name所指定的,我们这里使用的是testcase_SEED,本文要讲的内容就是如何直接在verdi打开的覆盖率报告上,找出每一项覆盖项是有哪些cm_name对应的database所覆盖的,这样我们就可以方便的查找到对应的testcase和SEED,进而轻易复现各种覆盖率对应的场景。

覆盖项查找对应的database

首先我们找到先将verdi如下图所示调到"Coverage Mode"
Verdi设置Coverage Mode

然后选中我们要覆盖率的覆盖项,在GUI右侧的CovDetail窗口找到对应的覆盖率细节,如下图所示我们查看的是某个状态机的覆盖率,如果我们想要查看某个具体状态跳转所对应的覆盖率database,我们就可以把鼠标移至对应的跳转项右击选择图中所示的"Show Associated Tests",这样我们就可以在GUI的左下角"Test List"项中看到覆盖率中哪些database覆盖了该状态机的跳转,由于我们cm_nanme指定的名字都是以testcase_SEED命名的,进而就可以轻易复现覆盖率报告中的任意覆盖项了。
覆盖项反推覆盖率database

总结

本文提供能一种使用verdi分析覆盖率的时候反推覆盖率对应的覆盖率database的方法,方便在regression阶段随机场景过多可以轻易由覆盖率报告复现某些具体的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值