verilog仿真random选择

verilog仿真 random 的选择

在verilog仿真中常用的random有如下三个:
$random
$urandom
$urandom_range(low,high)

做如下实验

initial begin

  repeat(5) begin
    $display("random %d", $random);
  end

  repeat(5) begin
    $display("urandom %d", $urandom);
  end

  repeat(5) begin
    $display("urandom_range %d", $urandom_range(0,100));
  end

  $stop;
end

默认情况下的执行结果:(且每次执行结果都是一致的)

random   303379748
random -1064739199
random -2071669239
random -1309649309
random   112818957
urandom 3948585912
urandom  393546790
urandom 2634922342
urandom 3166299062
urandom 1359874246
urandom_range         82
urandom_range         17
urandom_range         27
urandom_range         68
urandom_range         30

设置sv_seed为0,结果同默认值:

vsim -sv_seed 0 -coverage -voptargs="+acc" random_test
random   303379748
random -1064739199
random -2071669239
random -1309649309
random   112818957
urandom 3948585912
urandom  393546790
urandom 2634922342
urandom 3166299062
urandom 1359874246
urandom_range         82
urandom_range         17
urandom_range         27
urandom_range         68
urandom_range         30

设置sv_seed为1,结果变化了:

vsim -sv_seed 1 -coverage -voptargs="+acc" random_test
random   303379748
random -1064739199
random -2071669239
random -1309649309
random   112818957
urandom 2759368181
urandom 1434791088
urandom 1064164155
urandom 1102810988
urandom 1088122873
urandom_range         49
urandom_range         86
urandom_range          9
urandom_range         94
urandom_range         15

设置sv_seed为2,结果变化了:

vsim -sv_seed 2 -coverage -voptargs="+acc" random_test
random   303379748
random -1064739199
random -2071669239
random -1309649309
random   112818957
urandom 3261231164
urandom 1624405655
urandom  596997159
urandom 1965739945
urandom  600027335
urandom_range         47
urandom_range         14
urandom_range         63
urandom_range         81
urandom_range         91

结论

$random的结果不随sv_seed的变化而变化,而$urandom和$urandom_range的结果随着sv_seed的变化而变化,因此我们可以在代码中使用$urandom和$urandom_range,然后在命令里面改变随机种子,这样就可以使用不同的种子来进行仿真了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值