在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2977|回复: 1

[求助] 关于function coverage系统函数的问题

[复制链接]
发表于 2016-3-20 12:29:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
IEEE1800-2012/section 19.9中给出了三个关于coverage的系统任务/函数:
>$set_coverage_db_name(filename)
>$load_coverage_db(filename)
>$get_coverage()
前两个函数从标准中给出的解释可以大致估计是为了计算MULTI-CASE情况下的总的覆盖率的,但是问题来了,没有例子!!
我按照自己的猜测,做了下面的测试:
1.在第一个case中使用 $set_coverage_db_name来收集这个case的coverage样本数据;
   :我自己在questasim下尝试了下第一个函数,获得了一个文件,但不是明文,并不能阅读。




  1. initial begin
  2. $set_coverage_db_name("./coverage.log");
  3. end


复制代码

2.在第二个case中使用$load_coverage_db来传送第一个case中获得的coverage样本数据;




  1. initial begin
  2. $load_coverage_db("./coverage.log");
  3. end


复制代码

3.最后在第二个case中使用$get_coverage来计算结果,看看是否如期望的那样包含了第一个case的coverage样本数据;
   :通过第三个函数来计算,发现并没有如期望的那样包含第一个CASE的样本数据。

有没有同学知道前两个函数的用法?
 楼主| 发表于 2016-3-22 20:55:58 | 显示全部楼层
经过两天的调试,终于解决了这个问题,为了避免大家走同样的弯路,在此分享:基于(questasim10.2c)
1.这两个函数必须在所有的CG=new()出现之后再执行,不能简单的写在TB的顶层;
   :UVM 可以写在base_test的 build_phase/connect_phase中;
2.CG中 必须使用 option.per_instance=1;进行例化;
3.修改modelsim.ini;
   :解除注释 CvgZWNoCollect = 1,作用是option.weight=0的CP/CROSS不会被$get_coverage计算,UG上说 可以在vsim 中使用-cvgzwnocollect达到同样的效果,但是我使用这个命令会报错,不清楚原因,有知道的同学可以告知,谢谢;
   :解除注释 UCDBFileName = vsim.ucdb,作用是系统在仿真完成之后($finish之后)会自动执行coverage save指令 完成 保存当前的coverage信息到vsim.ucdb文件中,同样有命令可以晚上这个工作;(不再需要$set_coverage_db_name函数)

这里的vsim.ucdb只要存在就可以用于后续仿真,只需要在1.中所述的位置 添加 $load_coverage_db函数;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 16:23 , Processed in 0.017703 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表