代码覆盖率和功能覆盖率

芯片验证过程中代码覆盖率和功能覆盖率一高一低意味着什么?
在makefile中添加-cm line+fsm+tgl+cond可完成相对应的代码覆盖率的收集。
这里简单介绍下如果你收集的代码覆盖率很高但是功能覆盖率却很低,这个可能是:

  • design没有完全按照功能spec文档规格实现所有功能,设计不完善;
  • 验证平台monitor监视器存在漏洞,设计代码实现了功能但没有覆盖到他们;
  • 功能正确,但是发送的激励不对,对应功能的覆盖率无法收集。

如果你收集的功能覆盖率很高但是代码覆盖率却很低,这可能是:

  • 设计代码没有按照spec实现功能,在design中是无效代码,
  • 用户定义的功能覆盖率收集存在错误,没有完全定比覆盖率收集的边界,测试计划未捕获所有设计功能/场景/边界,或者缺少功能覆盖率监视器。
  • 代码覆盖率中未覆盖的设计代码可能会映射到这些功能上。
  • 在实现功能覆盖率监视器时可能存在潜在的错误,导致它们收集了错误的覆盖率。因此,在验证项目中,对用户定义的功能覆盖率指标及其实现进行适当的检查很重要。

验证中,采用的是 VCS 仿真器,这款仿真器可以提供覆盖率收集的功能,并且将覆盖率报告以网页的形式保存。
进行验证评估时,一般需要保证设计中的每条代码都被执行过,才算基本完成仿真任务。但是,可能会出现无论怎样添加激励,代码中的某些语句始终无法被执行的状况。这时,就需要和设计人员进行协商,确保没有被覆盖的部分不是因为激励不够所造成的。如果是由于激励缺失所造成的,就必须根据要求添加新的激励,直至所有代码都被执行。在测试过程中,经常会出现覆盖率达到一定程度后就无法提高的情况,这时,也可以通过和设计人员讨论,对激励进行修改,提高覆盖率。代码覆盖率达到了100%,并不意味着验证的工作已经完成,但代码覆盖率100%是验证工作完备性的必要条件。
但是,即使代码覆盖率满足要求,还是不能保证所有的功能都已经被测到。因此,还需要保证功能覆盖率达到 95%以上,才能确保大多数功能已经在测试中被执行过。这样,也有助于发现潜在的 DUT 的 debug,确保 DUT 的功能正确性,提高流片成功率,使得验证具有完备性和准确性。
如何查看收集后的覆盖率?
收集后的覆盖率保存在simv.vdb文件夹中,可使用urg工具转成可视化的html文件或直接使用dve工具查看simv.vdb

直接查看指令:dve -full64 -cov -dir simv.vdb&

urg转成html文件:urg -dir simv.vdb -report urgReport

转成后的html文件可通过 firefox urgReport/dashboard.html查看

使用VCS生成覆盖率报告
VCS查看覆盖率,并使用dve查看

  • 8
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值