生成中的通用参数

问题描述 投票:0回答:1

我无法解决 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]'
verilog system-verilog
1个回答
0
投票

weights
被声明为
reg
,这意味着它是一个变量,但您不能将变量值传递给模块实例参数 (
weight
)。您只能将常量类型连接到参数。您可以使用
parameter
数组,但不能使用
$readmemh
分配给该数组。

© www.soinside.com 2019 - 2024. All rights reserved.