这段代码来自 "SystemVerilog IEEE STD 1800-2017"。
bit [7:0] a;
covergroup ga ( int abm);
option.auto_bin_max = abm;
coverpoint a { ignore_bins i = {3}; }
endgroup
ga gv1 = new (64);
ga gv2 = new (32);
在上面的例子中写道:"在这种情况下,gv1引用的实例的bins是 "auto[0:3]"到 "auto[252:255]",而gv2引用的实例的bins是 "auto[0:7]"到 "auto[248:255]""
谁能给我解释一下,为什么会创建这些bins?
是的,选项 auto_bin_max
设置自动创建的最大分仓数。所以,对于一个8位变量 a
(就像你在这里做的那样),而不是创建256个bin(每个值一个bin),你得到的是 auto_bin_max
仓。
当 auto_bin_max
覆盖组实例设置为64 gv1
(实际上这也是它的默认值),所以你得到64个大小相等的bin。25664=4,每个bin是4个值。
当 auto_bin_max
覆盖组实例设置为32 gv2
所以你可以得到32个大小相等的分仓。25632=8,所以每个bin是8个值。