为了确保验证的完备性,我们需要量化验证目标。SystemVerilog提供了一套丰富的覆盖率建模方式。有两种覆盖率建模方法:
functional coverage。用户指定覆盖率的目标,所需覆盖的值和收集的时刻。完成所有覆盖率的收集是确定DUT验证完成情况的指标之一。
code-coverage。通常情况下,创建一个code-coverage很简单,不需要花费很多精力。例如,行覆盖率、toogle覆盖率和FSM(有限状态机)覆盖率都是code-coverage。code-coverage的缺点是很难将code-coverage映射到验证特性目标上,code-coverage没有考虑到high-level的事务级行为。
建议从functional coverage开始建立一个功能覆盖率模型来表示high-level验证目标,之后可以使用code-coverage作为作为functional coverage的补充。
在code-coverage很低的情况下达到100%的functional coverage,通常意味着需要完善和加强functional coverage建模。
实现Functional Coverage Model
一个验证组件应该有一个针对协议的功能覆盖模型。你可能想禁用一些不重要或不需要验证的覆盖点。例如,你可能不需要测试系统中所有的总线事务类型。
你可能还想扩展功能覆盖模型,在验证组件覆盖率和系统中的其他属性或其他接口验证组件之间建立关联。例如,你可能想确保当FIFO已经满时所有类型的事务都被发送过,这就需要事务类型与FIFO-状态之间的cross。
启用和禁用Coverage
验证IP开发者应提供配置,允许验证环境集成者或测试用例开发人员控制覆盖率模型的Enable和Disabe。验证VIP文档应该包括哪些属性可以被设置来影响覆盖率的收集,最基本的控制是决定是否要收集覆盖率。
uvm_config_db#(int)::(this,"ubus0.masters[0].monitor","coverage_enable",0); 或者 ubus0.masters[0].monitor.coverage_enable = 0;
审核编辑:刘清
-
有限状态机
+关注
关注
0文章
52浏览量
10316 -
FIFO存储
+关注
关注
0文章
103浏览量
5963 -
FSMC
+关注
关注
0文章
55浏览量
38104 -
Verilog语言
+关注
关注
0文章
113浏览量
8211 -
DUT
+关注
关注
0文章
189浏览量
12329
原文标题:开发一个覆盖率模型
文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论