如何在模拟结束时打印系统Verilog Coverage Bin值?

时间:2019-06-29 17:27:08

标签: verilog system-verilog verification

我想通过在模拟结束时显示计数来找出状态机经历以下状态序列的次数。

我找不到在以下代码中转储bin“ b”的值的方法。

interface i;
typedef enum { S0, S1, S2, S3} state_e;
state_e  state;
assign state = dut1.sm_state;

covergroup my_cg @(state);
    coverpoint state {
        bins b = (S0 => S1 => S2 => S3);
    }
endgroup
my_cg cg1 = new();

final begin
    $display("COVERAGE:CG1.state:%0d", cg1.state.get_coverage());
end

endinterface

当前,如果sm连续弧一次,则输出为100。我想算一下它经过弧线的次数。

1 个答案:

答案 0 :(得分:0)

get_coverage不会为您提供垃圾桶命中数,而只是为您提供垃圾桶命中率的百分比,或垃圾桶命中率与垃圾桶总数的比率。为了提高性能,大多数工具会在垃圾箱达到其所需的最低命中次数后停止计数,默认情况下只有1次命中。这样不仅可以节省计数,还可以评估确定要命中哪个容器的选择表达式集。

对于调试,大多数工具为您提供了一种报告整个模拟的实际bin命中计数的方法。