reg [23:0]rand;
rand = $random % 60;
上面的例子给出了一个范围在-59~59之间的随机数,下面的例子通过位并接操作产生一个值在0~59之间的数。
reg [23:0]rand;
rand = {$random} % 60;
利用这个系统函数可以产生随机脉冲序列或宽度随机的脉冲序列,以用于电路的测试。
'timescal 1ns/1ns
module random_pulse( dout );
output [9;0] dout;
reg [9:0] dout;
integer delay1, delay2, k;
initial begin
#10 dout = 0;
for (k=0; k<100; k=k+1) begin
delay1 = 20 * ({$random} % 6); //delay1在0~100ns间变化
delay2 = 20 * (1 + {$random} % 3); //delay2在20~60ns间变化
#delay1 dout = 1 << ({$random} % 10);
//dout的0~9位中随机出现1,并且出现的时间在0~100ns间变化
#delay2 dout = 0;
//脉冲的宽度在20~60ns间变化
end
endmodule