我在循环中生成一个0到10000之间的verilog数字,如下所示:
wire rand;
integer i, seed;
initial
begin
i=1;
seed=0;
while (i<10)
begin
force rand = $random(seed) % 10000;
end
end
种子只改变一次并在其余迭代中保持不变的问题。 (我在ModelSim中看到了值)。
答案 0 :(得分:2)
它应该可以进行一些微小的修改,如果需要,随机数大于1位,并且不会在0时间内执行。 for循环优于while循环。
integer i, seed;
reg [31:0] rand;
initial begin
seed=0;
for(i=0; i<10; i=i+1) begin
rand = $random(seed) % 10000;
$display("rand %d", rand);
#1ns; //Stop loop executing in 0 time
end
end
答案 1 :(得分:1)
你不需要在那个循环中有某种延迟吗? AFAIK它会瞬间迭代所有10次迭代,最终会强制rand
到最终生成的值。
另外,你在哪里增加i
?或者你在粘贴代码之前修改了它?