如何随机化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;
我是 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;