在下面的代码中,位'a'在1和0之间平均分配。此外,它使用并行约束约束为1。我最初的猜测是,我们会得到5个1和5个失败的随机化。而不是那样,我们得到10 1。任何人都可以解释其背后的原因吗?
program test1;
class test;
rand bit a;
constraint con1 {a dist {0:=5,1:=5};}
constraint con2 {a == 1'b1;}
function display();
$display(a);
endfunction
endclass
test t;
initial begin
t = new();
repeat(10)
begin
assert(t.randomize);
t.display();
end
end
endprogram
答案 0 :(得分:3)
1800-2012 LRM第18.5.4节
没有任何其他约束,表达式的概率 匹配列表中的任何值与其指定的权重成比例。 如果某些表达式有约束导致 这些表达式的分布权重是不可满足的, 实现仅需要满足约束。一个 此规则的例外是权重为零,被视为a 约束
所以它和你写的一样
constraint con1 {a dist {1:=5};}