微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 求助VCS环境下,覆盖率的问题

求助VCS环境下,覆盖率的问题

时间:10-02 整理:3721RD 点击:

菜鸟一枚,请各位路过的大神们帮我指点指点呀,谢谢了
目的:毕业设计对购买的PCIe总线IP中PIPE接口进行功能覆盖率验证,得出报告(不要求100%,了解过程即可)
环境描述:整个RTL代码中可分为设计文件夹,测试文件夹(包含testbench、testcase以及部分配置文件 ),全部都是.V文件
testcase中全部是以事务级进行信号调用的
尝试:在设计文件夹中,把关于电源管理的文件里面抽取部分信号,添加覆盖率组的描述
运行shell脚本,仿真测试激励的行为,生成.vbd文件,在用urg查看覆盖率报告
不知道这种过程是不是对的,但是我试过很多次,始终无法生成.Vdb文件,也就一直卡在这个点上,后面的跑urg也就没办法开展。

是对的
covergroup 要new过, 而且要sample过
再找找看你有啥遗漏的

这种方法是可以的。
如没有生成.vpd仿真数据库文件,看看是否漏掉了下面两个步骤
1,在makefile里加入编译选项+dumpvpd
2,在环境中调用函数dump_vpd()

VPD文件我可以生成,现在其实主要就想看看覆盖率报告,但是在测试功能覆盖率的时候,没有办法生成.vdb文件。还有就是,看了一篇《一种基于功能覆盖率的验证环境的构建方法》的论文,感觉它上面是将覆盖点写在了测试平台上,这种方式也可以么?不是要将覆盖点写在设计文件里面吗?所以我也在怀疑自己是不是环境构建有问题。

new了以后难道以后用到该功能的地方全部都要调用来实例化吗?还是在原来设计文件里面把该功能点覆盖就可以了?

讲讲你的TB具体是怎么样的,我好帮你分析一下

一般过程是
transaction generate->
func coverage (xactor_callback)调用 master's pre_callback or post_callback->
then sample and get simv.vdb->
urg and generate txt or html urgreport.

covergroup写在哪里都无所谓。new在什么地方new也都可以,但需要注意的是new必须在sample之前,不然编译会报错,说找不到对象。
一般都会把covergroup写在一个class里,在这个class new时,把里面的有需要的成员都new(包括covergroup),这个就跟c++一样,然后在环境的任何地方,只要你想收集覆盖率,就在那个地方sample就行了。

LZ可以简单点,直接用一个文件存放coverage,然后直接从信号层次抓信号来,进行监控并sample。 如果想正规点,那就从bfm/monitor来取,然后做sample。

urg命令怎么用!求帮助!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top