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

如何为N位coverpoint生成N个0→1跳变功能覆盖率bins?

实现每一位单独的0→1跳变功能覆盖率统计

针对64位intrpt信号,要为每一位单独设置bin统计其0→1置位动作,这里提供两种精准满足需求的实现方案:

方案1:为每一位创建独立coverpoint

这种方式会为每个中断位生成单独的coverpoint,每个coverpoint只监控对应位的置位动作,统计结果清晰对应每一条中断线:

covergroup xyz;
    option.per_instance = 1;
    option.get_inst_coverage = 1;

    // 遍历每一位,生成专属coverpoint
    foreach (top.abc.intrpt[i]) begin
        coverpoint top.abc.intrpt[i] {
            bins asserted_bit[i] = (0 => 1);
            // 排除稳态、1→0跳变等不需要统计的情况
            bins ignore = default;
        }
    end
endgroup
  • 遍历intrpt的64个位(0到63),自动为每个位生成独立的coverpoint
  • 每个asserted_bit[i]只会在对应位发生0→1跳变时命中,命名自带位索引,方便定位具体中断线
  • 用default定义的ignore bin可以过滤掉我们不关心的状态变化,避免干扰统计结果

方案2:单个coverpoint内定义全部位的专属bin

如果希望把所有位的统计归在同一个coverpoint下,也可以用foreach在单个coverpoint中为每一位定义置位bin:

covergroup xyz;
    option.per_instance = 1;
    option.get_inst_coverage = 1;

    coverpoint top.abc.intrpt {
        // 为每一位定义0→1置位的专属bin
        foreach (top.abc.intrpt[i]) begin
            bins asserted_bit[i] = ( (top.abc.intrpt & ~(1'b1 << i)) => (top.abc.intrpt | (1'b1 << i)) );
        end
        // 排除所有非目标跳变和稳态
        bins ignore_all = default;
    }
endgroup
  • 每个asserted_bit[i]捕获的是:只要第i位从0变成1,不管其他位是什么状态,都会命中该bin
  • 所有位的统计都归在同一个coverpoint下,适合希望在同一组下查看全部位置位情况的场景

两种方案都能实现“每个输入中断线对应独立覆盖率统计”的需求,可根据你对覆盖率报告展示形式的偏好选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:35