使用ModelSim看起来使用$srandom
的种子随机调用不适用于$urandom_range
的后续随机值生成。
运行流程:
initial
begin
$srandom(42);
$display("1: %0d, %0d, %0d", $urandom_range(1, 10), $urandom_range(1, 10), $urandom_range(1, 10));
$srandom(42);
$display("2: %0d, %0d, %0d", $urandom_range(1, 10), $urandom_range(1, 10), $urandom_range(1, 10));
$srandom(42);
$display("3: %0d, %0d, %0d", $urandom_range(1, 10), $urandom_range(1, 10), $urandom_range(1, 10));
end
输出是:
# 1: 3, 1, 7
# 2: 9, 7, 2
# 3: 6, 4, 8
但是,我原本以为第1,2和3行是相同的,因为$srandom
被称为具有相同的种子值。
为什么生成的值不一样?
答案 0 :(得分:2)
您需要使用process::self().srandom()
代替$srandom
。然后,您将获得所需的结果。