SV-覆盖率

覆盖率概述

         设计的功能描述文档,知道其边界信号,时序协议,寄存器,功能。便可设置测试功能点。  到了系统级测试,难度增加。

        是否所有设计的功能在验证中都已验证?

        代码中的某些部分是否从未执行过?

         覆盖率——指标。

        覆盖率爬坡,越到后面越慢。覆盖率就是衡量验证的精度和完备性的数据的指标。

         激励多样化。   验证环境的完善,要能产生丰富的激励,而且monitor和checker也要足够健壮。

覆盖率种类

         即使达到100%代码覆盖率,并不一定到100%功能覆盖率。

         划分覆盖率。   从覆盖率生成的方法——1.隐形/显性的,隐形的不需要自己写,code coverage自动去检测,去告诉哪些代码已经执行过了; 显性的,断言覆盖率、功能覆盖率都是要自己写的。   2.覆盖率溯源,这部分的覆盖率规定是跟着,specification功能or设计implementation走的

代码覆盖率

功能覆盖率1

功能覆盖率2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在SV(SystemVerilog)中,覆盖率(coverage)是用来衡量验证测试的有效性的一种度量指标。它可以帮助验证工程师确定测试是否充分覆盖了设计中的各个功能或语句。 通常情况下,覆盖率是基于特定的覆盖模型来定义的,这个模型描述了设计中需要被覆盖的特定条件或情况。在SV中,你可以使用通配符(wildcard)来进行覆盖率的定义和匹配。 在覆盖模型中,通配符可以用来表示一组可能的取值。例如,你可以使用通配符'?'来匹配一个比特位的任意取值,使用'*'来匹配多个比特位的任意取值。这样,你可以定义一个通配符模式,来捕捉多个情况的覆盖。 下面是一个示例,展示了如何在SV中使用通配符来定义覆盖率: ```systemverilog // 定义一个覆盖模型 covergroup my_covergroup; coverpoint signal_a with wildcard @(posedge clk) { bins wildcard_bin = {1'b?}; } endgroup // 实例化覆盖模型 my_covergroup cg = new(); // 触发覆盖率采样 always @(posedge clk) begin cg.sample(signal_a); end ``` 在上面的示例中,我们定义了一个名为`my_covergroup`的覆盖模型,并在其中使用了通配符`?`来匹配`signal_a`信号的任意取值。当信号`signal_a`在时钟上升沿触发时,我们通过调用`cg.sample(signal_a)`来采样覆盖率。 通过这种方式,你可以灵活地定义和匹配覆盖率条件,以评估测试的覆盖程度是否满足需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值