verilog $random() $urandom()函数随机特性

$random()、$random(seed)

在同一次仿真中,每次调用可以得到不一样的随机值。
但是每次不同的仿真,相同次数的调用会得到相同的随机值,即使在命令行中添加选项 -seed xxx,改变种子也是这样。

$urandom()

在同一次仿真中,每次调用可以得到不一样的随机值。
命令行中不添加选项 -seed xxx,每次不同的仿真,相同次数的调用会得到相同的随机值。
在命令行中添加选项 -seed xxx,改变种子,可以得到不同的随机值,-seed 可以改变初始种子值。

$urandom(seed)

指定seed值的情况下,在同一次仿真中, 每次调用会得到相同的随机值!
每次不同的仿真,即使调用次数不同,也会得到相同的随机值。

引用自:verilog $random $urandom

注意

假设在一个子模块中用$urandom()生成随机值,在top中多次调用子模块,会得到相同的随机值。
举例:

module sub_a(
	input              clk,
	output  reg [31:0] data_out
);
always@(posedge clk) data_out <= $urandom();
endmodule

module top();
reg clk=0;always #5 clk=~clk;

wire [31:0] data_0;
wire [31:0] data_1;

sub_a sub_a0(
	.clk      ( clk    ),
	.data_out ( data_0 )
);
sub_a sub_a1(
	.clk      ( clk    ),
	.data_out ( data_1 )
);

其中data_0和data_1的值将完全相同。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值