Random 约束条件更改时的系统verilog randc行为
我读到randc变量的排列顺序随着变量约束的改变而改变。但考虑到下面的示例,在该示例中,约束未重新定义,但条件(y)发生变化-是否有可能重新计算randc变量的排列序列Random 约束条件更改时的系统verilog randc行为,random,system-verilog,Random,System Verilog,我读到randc变量的排列顺序随着变量约束的改变而改变。但考虑到下面的示例,在该示例中,约束未重新定义,但条件(y)发生变化-是否有可能重新计算randc变量的排列序列 randc bit [5:0] x; rand bit y;
randc bit [5:0] x;
rand bit y;
constraint c_x {
(y) -> {x inside {[10:13]}};
(!y) -> {x inside {[20:23]}};
}
我对它进行了测试,尽管每次randomize()调用的“y”都会改变,但x的排列顺序并没有改变。只是想了解randc的更详细信息。不,您只有一个约束表达式,所有变量都是随机的。
randc
变量的置换序列重置为on
- 对象的构造
- 变量rand_mode()的更改
- 更改约束的约束模式()
- 更改约束表达式中使用的非兰德变量的值
- 使用不同的
子句调用randomizewith{}
- 排列中没有剩余值
要使上述任何更改生效,必须依赖于randc变量 我认为它也会重置-当randc变量的约束改变时(例如,obj.randomize()和{})。它是否包含在你的“对象构造”案例中?我希望排列顺序会在“y”改变时重新生成。但事实并非如此,所以我正试图清楚地理解这种行为。下面的答案让我明白了。