约束条件更改时的 system verilog randc 行为
system verilog randc behavior when constraint condition changes
我读到当对变量的约束改变时,randc 变量的排列顺序改变。但是考虑到下面的例子,约束没有重新定义但是条件 (y) 改变了——是否有机会重新计算 randc 变量的排列序列?
randc bit [5:0] x;
rand bit y;
constraint c_x {
(y) -> {x inside {[10:13]}};
(!y) -> {x inside {[20:23]}};
}
我测试了它,即使 'y' 每次 randomize() 调用都会发生变化 - x 的排列顺序没有变化。只是想了解 randc 的更详细信息。
不,你只有一个约束表达式,所有变量都是随机的。 randc
变量的排列序列在
上重置
- 构建对象
- 变量的改变 rand_mode()
- 更改约束的 constraint_mode()
- 更改约束表达式中使用的非随机变量的值
- 使用不同的
with {}
子句调用随机化
- 排列中没有剩余值
要使上述任何更改生效,必须依赖于 randc 变量。
我读到当对变量的约束改变时,randc 变量的排列顺序改变。但是考虑到下面的例子,约束没有重新定义但是条件 (y) 改变了——是否有机会重新计算 randc 变量的排列序列?
randc bit [5:0] x;
rand bit y;
constraint c_x {
(y) -> {x inside {[10:13]}};
(!y) -> {x inside {[20:23]}};
}
我测试了它,即使 'y' 每次 randomize() 调用都会发生变化 - x 的排列顺序没有变化。只是想了解 randc 的更详细信息。
不,你只有一个约束表达式,所有变量都是随机的。 randc
变量的排列序列在
- 构建对象
- 变量的改变 rand_mode()
- 更改约束的 constraint_mode()
- 更改约束表达式中使用的非随机变量的值
- 使用不同的
with {}
子句调用随机化 - 排列中没有剩余值
要使上述任何更改生效,必须依赖于 randc 变量。