module tb;
logic [1:0] a,b;
logic sel;
covergroup c;
option.per_instance = 1;
coverpoint a{
wildcard bins a_={2'b??} with (sel);
}
coverpoint b{
wildcard bins b_={2'b??} iff (!sel);
}
endgroup
c ci;
initial begin
ci=new();
repeat(10) begin
a=$random;
b=$random;
sel=$random;
$display("%d %d %d",a,b,sel);
ci.sample();
#1;
end
end
endmodule
当我使用 with
时,覆盖范围没有显示,但当我使用 iff
代替 with
时,它就可以工作。我做错了什么?
最佳答案
bin 表达式中的 with
子句在构建 covergroup
时计算一次,并确定作为 a 的一部分创建的 bin 值的集合。 掩护点
。由于 sel
此时尚未初始化,因此没有为 coverpoint a
创建 bin。
每次对 covergroup
进行采样时,bin 表达式中的 iff
子句都会被求值,并且实际上是一个样本启用表达式。它对创建的 bin 值的选择没有影响。
很可能使用 iff
符合您的预期行为。
关于verilog - 使用 with 代替 iff 的功能覆盖问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75952333/