如何随机化verilog中的位数组数组?

How to randomize an array of bit arrays in verilog?

我是 Verilog 新手。

如何随机化以下内容:

 bit [7:0] data [];

*未使用 systemVerilog 的 randomize()。

将数组的大小限制在所需的范围内并调用随机化。它应该生成一个包含随机数据的数组(在下面的示例中,大小在 30 到 40 之间)

class rand_gen ;

rand bit [7:0]   data[];
constraint db { data.size inside  {[30:40]}; }

task generate ();
 randomize(data);
end task

endclass

SystemVerilog 不会更改动态数组的大小,除非您对其施加约束。因此,您要么需要在调用 randomize() 之前分配数组,要么使用约束来随机化大小。

bit [7:0] data [];

data = new[10];
randomize(data);

bit [7:0] data [];

randomize(data) with {data.size inside {[5:15]} ;};

或者如果您无权访问 randomize() SystemVerilog,您可以

  data = new[10];
  foreach(data[ii]) data[ii] = $urandom;