Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog SystemVerilog数组随机种子洗牌函数_System Verilog - Fatal编程技术网

System verilog SystemVerilog数组随机种子洗牌函数

System verilog SystemVerilog数组随机种子洗牌函数,system-verilog,System Verilog,我每次运行下面的代码都会得到相同的输出 module array_shuffle; integer data[10]; initial begin foreach (data[x]) begin data[x] = x; end $display("------------------------------\n"); $display("before shuffle, data contains:\n");

我每次运行下面的代码都会得到相同的输出

module array_shuffle;
   integer data[10];

   initial begin
      foreach (data[x]) begin
         data[x] = x;
      end

      $display("------------------------------\n");
      $display("before shuffle, data contains:\n");

      foreach (data[x]) begin
         $display("data[%0d] = %0d", x, data[x]);
      end

      data.shuffle();
      $display("------------------------------\n");
      $display("after shuffle, data contains:\n");

      foreach (data[x]) begin
         $display("data[%0d] = %0d", x, data[x]);
      end

   end
endmodule
输出:

------------------------------

before shuffle, data contains:

data[0] = 0
data[1] = 1
data[2] = 2
data[3] = 3
data[4] = 4
data[5] = 5
data[6] = 6
data[7] = 7
data[8] = 8
data[9] = 9
------------------------------

after shuffle, data contains:

data[0] = 8
data[1] = 6
data[2] = 7
data[3] = 9
data[4] = 5
data[5] = 0
data[6] = 1
data[7] = 4
data[8] = 2
data[9] = 3

有没有一种方法可以对随机洗牌函数进行种子设定?

洗牌每次都返回相同的结果,因为您可能使用相同的种子运行模拟器。这是预期的行为,因为当您运行模拟并发现bug时,您希望能够重现它,而不管任何设计(以及某种程度上的测试台)更改。要查看不同的输出,请尝试在模拟器命令行上设置种子。对于Incisive,这是:

irun -svseed 1    // sets the seed to 1
irun -svseed random   // will set a random seed

也可以使用set_randstate操纵随机数生成器的种子,但我不会搞砸。Shuffle每次都返回相同的结果,因为您可能使用相同的种子运行模拟器。这是预期的行为,因为当您运行模拟并发现bug时,您希望能够重现它,而不管任何设计(以及某种程度上的测试台)更改。要查看不同的输出,请尝试在模拟器命令行上设置种子。对于Incisive,这是:

irun -svseed 1    // sets the seed to 1
irun -svseed random   // will set a random seed

也可以使用set_randstate操作随机数生成器的种子,但我不会弄乱它。

这是一个特定于供应商的解决方案,尽管我认为没有标准方法。我不太清楚您的意思。所有模拟器都有一个从命令行控制种子的机制。基于该种子生成的随机值肯定是特定于供应商的,因为标准没有明确定义随机化引擎的实现。这是特定于供应商的解决方案,尽管我认为没有标准的方法。不确定您的意思。所有模拟器都有一个从命令行控制种子的机制。基于该种子生成的随机值肯定是特定于供应商的,因为标准没有明确定义随机化引擎的实现。