我是Verilog的新手 .
我如何随机化以下内容:
bit [7:0] data [];
*不使用systemVerilog的randomize() .
除非对其进行约束,否则SystemVerilog不会更改动态数组的大小 . 因此,您需要在调用 randomize() 之前分配数组,或使用约束来随机化大小 .
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;
将数组的大小约束到所需的范围并调用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
2 回答
除非对其进行约束,否则SystemVerilog不会更改动态数组的大小 . 因此,您需要在调用
randomize()
之前分配数组,或使用约束来随机化大小 .要么
或者,如果您无权访问randomize()SystemVerilog,则可以执行此操作
将数组的大小约束到所需的范围并调用randomize . 它应该生成一个包含随机数据的数组(在下面的例子中,大小在30到40之间)