我无法解决 Verilog 中的“无法绑定参数”错误。
我有一个 2D 数组
weights
,其中包含一些使用 $readmemh
读入其中的值。然后,我想实例化已知数量的名为 pe
的模块实例,每个实例必须在数组中索引 i
处获取一个值,并将其通用参数 weight
设置为 weights[i]
。
这是代码和我收到的错误。我做错了什么?
reg [data_size-1:0] weights [0:(array_size * array_size) - 1];
genvar i;
generate
// Read the weights
$readmemh(array_weights,weights);
for (i = 0; i < array_size*array_size; i = i + 1) begin : pe_cells
pe #(.weight(weights[i]), .data_size(data_size)) pe_cells_i (
.clk(clk)
);
end
endgenerate
error: Unable to bind parameter `weights[i]' in `array.pe_cells[0]'
weights
被声明为 reg
,这意味着它是一个变量,但您不能将变量值传递给模块实例参数 (weight
)。您只能将常量类型连接到参数。您可以使用 parameter
数组,但不能使用 $readmemh
分配给该数组。