You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非连续采样点场景下实现SystemVerilog过渡覆盖率?

非连续跳变场景的过渡覆盖率实现方案

问题原因

你最初编写的(0=>1=>2=>...=>15)属于严格连续过渡规则:要求相邻两次clk采样的var_1值必须严格按照给定顺序依次变化,中间不允许同一个值重复出现。只要var_1在某个取值上保持超过1个采样周期,整个过渡序列就会被判定为中断,因此无法命中该bin。

可行解决方案

SystemVerilog的覆盖率语法支持使用重复序列符[*min:max]来描述同一个值连续出现的次数范围,你只需要给每个过渡节点添加[*1:$]修饰($表示无穷大),代表该值可以连续出现1次到任意多次,即可匹配「值可能停留任意个clk周期再跳变」的场景:

covergroup CG1 @(posedge clk);
  coverpoint var_1
  {
    // 允许每个值停留任意个clk周期,只要按0→1→2…→15的顺序最终完成跳转即可命中
    bins var_1_trans_bin = (0[*1:$] =>1[*1:$] =>2[*1:$] =>3[*1:$] =>4[*1:$] =>5[*1:$] =>6[*1:$] =>7[*1:$] =>8[*1:$] =>9[*1:$] =>10[*1:$] =>11[*1:$] =>12[*1:$] =>13[*1:$] =>14[*1:$] =>15[*1:$]);
    bins var_1_bin[] = {[0:15]};
  }
endgroup

效果验证

你提供的测试代码中clk周期为10ns,var_1每20ns才更新一次,所以每个var_1值会被连续采样2次,刚好命中了原始严格连续过渡的中断条件,替换上述代码后即可命中过渡bin,整体覆盖率可以达到100%。

内容的提问来源于stack exchange,提问作者sandywho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:27:01