SystemVerilog验证 测试平台编写指南 第九章 功能覆盖率

全面验证设计的唯一途径是采用受约束的随机测试方法(CRT),而功能覆盖率是用来衡量哪些设计特征已经被测试程序测试过的一个指标。
如何衡量验证的进展?
依靠完善的验证计划test plan和对应的功能覆盖率coverage。
用验证计划和对应功能覆盖率的结果来指导验证的进展,这样才能站在更高的抽象层次上看待验证。
根据功能覆盖率结果来思考如何提高功能覆盖率,并在功能覆盖率达标或者止步不前时思考验证计划本身。

(1)运行一个带多个种子的测试;
(2)检查运行通过与否;
(3)分析通过多次运行得到的覆盖率;

道法术
验证人员的最重要工作是制定完善的验证计划,这是验证之道。
搭建验证环境和编写对应验证计划的覆盖率代码,可以认为是法。
编写测试用例,就是术了。

9.1 覆盖率的类型
代码覆盖率
根据不同仿真工具有不同分类,比如S的line/condition/togggle/fsm,C的block/expression/toggle/fsm。后续处理工具会把数据库转换成可读格式。最终的结果用于衡量你执行了设计中的多少代码。关注点应该放在对设计代码的分析上,不是测试平台。
功能覆盖率
也被称为规范spec覆盖率。spec通常包括features,boundary/corner case,error injection。
漏洞率
漏洞率是另一个指标,指项目追踪期间新漏洞出现的概率。
断言覆盖率
断言是用于一次性地或一段时间内核对两个设计信号之间关系的声明性代码。
断言常用于查找错误,例如两个信号是否应该互斥或者请求是否被许可等。
cover property,会检查property是否至少成立一次,不同于assert要求property一直成立。

9.2 功能覆盖策略
收集信息而非数据。
收集覆盖率数据开销很大,要控制收集范围。只测量你将会分析并用来改进测试的那些内容。
保存给出高覆盖率的随机种子,以备回归测试用。
目标是取得高的代码和功能覆盖率。
要注意思考,漏洞是根据验证计划特意检查的,还是说完全出乎意料地随机撞见的?如果是后者,说明验证计划仍需完善。

9.3 功能覆盖率的简单例子
为测量功能覆盖率,先编写验证计划和相对应的可用于仿真的可执行版本。在System Verilog测试平台中对变量和表达式的数值进行采样。采样的地方就是覆盖点。同一时间点(比如当某一事务处理完成时)的多个覆盖点被一起放在一个覆盖组里。
例 9.2 的设计事务有八种不同的情形。测试程序随机产生port变量,验证计划要求把每一种情形都测试到。
例9.2 一个简单对象的功能覆盖率

program automatic test(busifc.TB ifc);
	class Transaction ;
		rand bit [31:0]
  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值