systemVerilog-如何在范围内使用$ urandom / $ random?

时间:2016-12-15 14:00:31

标签: random system-verilog

有没有办法在范围内使用$ urandom / $ random?

我成功地通过以下方式使用最大范围(在这种情况下,11是最大范围):

 temp = (($urandom(9)%11));

但我怎么能用max和min来做,例如max = 11,min = 8。

2 个答案:

答案 0 :(得分:1)

您需要$urandom_range,例如:

temp = $urandom_range(maxVal,minVal);

minVal是可选的;如果你把它排除在外,最小值就是零。

答案 1 :(得分:1)

另请注意,$ urandom_range的参数是int unsigned,因此-1将被视为非正数,如果minVal大于maxVal,则会自动交换它们。

$ urandom_range非常方便,但您也可以查看std :: randomize()并使用'inside'进行内联约束,例如:

ok = std::randomize(a) with {a inside {0, [12:23], 42}; };

查看https://www.edaplayground.com/x/3yEW

相关问题