SystemVerilog的覆盖率建模方式

描述

为了确保验证的完备性,我们需要量化验证目标。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开发者应提供配置,允许验证环境集成者或测试用例开发人员控制覆盖率模型的EnableDisabe。验证VIP文档应该包括哪些属性可以被设置来影响覆盖率的收集,最基本的控制是决定是否要收集覆盖率。

 

uvm_config_db#(int)::(this,"ubus0.masters[0].monitor", "coverage_enable", 0);


或者
ubus0.masters[0].monitor.coverage_enable = 0;

 




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分