我们更希望把随机变量用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
本文探讨了在Verilog中如何使用rand和randc修饰符对随机变量进行封装,并通过实例演示了如何在randomize函数中指定参数来控制随机化过程,以及变量间的约束关系如何影响随机结果。
第六章——随机化(三)随机函数&spm=1001.2101.3001.5002&articleId=105649763&d=1&t=3&u=a0da6cb5e9ed4343a6ba2e246e2a224c)
2万+

被折叠的 条评论
为什么被折叠?



