如何在verilog中随机化一组位数组?

时间:2016-07-28 12:01:04

标签: verilog system-verilog

我是Verilog的新手。

我如何随机化以下内容:

 bit [7:0] data [];

*不使用systemVerilog的randomize()。

2 个答案:

答案 0 :(得分:4)

除非您对动态数组设置约束,否则SystemVerilog不会更改动态数组的大小。因此,您需要在调用If s2_pos <> 0 then temp_swap = s1 m1.Cells(s1_pos, col).Value = s2 m1.Cells(s2_pos, col).Value = temp_swap End If 之前分配数组,或使用约束来随机化大小。

randomize()

bit [7:0] data [];

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

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

bit [7:0] data [];

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

答案 1 :(得分:2)

将数组的大小限制在所需范围内并调用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