我使用$ random获取其他数字,但是现在需要无符号随机数,因此我将$ random更改为$ urandom。

module Tb();
   int seed;
   integer num;
  initial begin
      $display("========================================================");
       begin
         $display("$RANDOM: With Seed Value = 2  With Variable");
           seed = 2;
           repeat (5) begin
             num = $random(seed);
             $display("seed = %d |num  = %d ",seed, num);
           end
       end
      $display ("------------------------------");
       begin
         $display("$U-RANDOM: With Seed Value = 2  With Variable");
           seed = 2;
           repeat (5) begin
             num = $urandom(seed);
             $display("seed = %d |num  = %d ",seed, num);
           end
       end
      $display ("========================================================");
   end
endmodule


结果如下:(作为显示添加到代码中)。

========================================================
$RANDOM: With Seed Value = 2  With Variable
seed =      138139 |num  = -2147345408
seed =   951188000 |num  = -1196295055
seed =  1784212385 |num  =  -363270956
seed = -1731404562 |num  =   416079665
seed = -1607270249 |num  =   540214080
------------------------------
$U-RANDOM: With Seed Value = 2  With Variable
seed =           2 |num  =  -541627016
seed =           2 |num  =  -541627016
seed =           2 |num  =  -541627016
seed =           2 |num  =  -541627016
seed =           2 |num  =  -541627016



预期结果:种子和num的值应以$ urandom更改。
由于在$ random的情况下它正在变化。


我是否缺少有关“ $ urandom如何与种子一起工作?”的内容?
在$ random的情况下,它是种子变量的inout端口。

最佳答案

的行为

x = $urandom(seed);


相当于

process p;
p = process::self();
p.srandom(<urandom_seed>);
x = $urandom;


$urandom的参数仅是input,而$random的参数是inout。该信息需要在LRM中进行说明。见https://accellera.mantishub.io/view.php?id=5902

关于system-verilog - 为什么即使使用seed(int或任何其他)作为变量,$ urandom也会给出相同的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55546687/

10-10 02:59