【发布时间】:2016-07-28 12:01:03
【问题描述】:
我是 Verilog 的新手。
如何随机化以下内容:
bit [7:0] data [];
*不使用systemVerilog的randomize()。
【问题讨论】:
-
您的问题说您是 Verilog 的新手,但您问的是如何随机化一个动态数组,它是一种 SystemVerilog 数据类型。也许你应该改变它以避免任何混淆。
我是 Verilog 的新手。
如何随机化以下内容:
bit [7:0] data [];
*不使用systemVerilog的randomize()。
【问题讨论】:
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;
【讨论】:
bit 类型并且您使用了 SystemVerilog 标记。我在不使用randomize() 的情况下添加了答案。
将数组的大小限制在所需范围内并调用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
【讨论】: