我们更希望把随机变量用rand和randc修饰,之后把它们封装到 一个类里面。类是 一些变量的自洽体,可以把一些相关的变量放到这个软件的变量盒子中,变量 与变量之间的约束关系也可以放到类中。
如果我们在调用randomize时候,给randomize函数中添加一些参数,来指定随机化哪些变量。这时只有写进参数列表中的变量会被随机化,其他变量 都会被当做状态不会被随机化。其它变量即便有rand修饰符依然
此不行。所有约束依然有效, 只有使用constraint 关掉之后才失效。
同时,randomize()函数 中的参数不管 有没有被rand修饰都会被随机化。
class Rising;
byte low; //未被随机约束变量
rand byte med, hi; //随机化的变量,8位有符号值
constraint up
{ low < med; med < hi;}
endclass
initial begin
Rising r;
r = new();
r.randomize(); // 随机化hi,但是不改变low
r.randomize(med); // 只随机化med
r.randomize(low); // 只随机化low
end
上述代码中,例化了r之后,先调用r.randomize(low),那么low,med和hi的组合值可能是下面哪一组?
(A)low = -1,med=0, hi=0
(B)low = -1,med=1, hi=2
(C)low = 报错,med=0, hi=0
(D)low = 报错,med=null, hi=报错
此时 只随机low,而med和hi不被随机。 C