端口数量动态时的模块实例化

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

我正在尝试进行模块实例化。但是,问题是我的模块(x)中的端口数量可能会根据

parameter
发生变化。我使用此参数生成此模块(x)作为模块设计,然后在 Vivado 中导出包装器。

如果我的参数 (NUM_INSTANCES) = 2,我的实例化将如下所示:

x inst(
.a (something),
.b (something)

如果是 3:

x inst(
.a (something),
.b (something),
.c (something)

因此,我必须为每个参数保留不同的 .sv 文件。有什么办法可以在旅途中做到这一点吗?就像在实例化内部有一个循环一样?

我尝试在实例化中添加循环。看来是行不通了。像这样的东西:

x inst(
 for(int i=0;i<NUM_INSTANCES;i++) begin
  .a[i] (something)
module verilog generate
1个回答
0
投票

如您所见,您不能简单地根据

parameter
更改端口数量。

但是,您可以使用声明为数组的端口,其中端口数由

parameter
设置。请参阅 IEEE Std 1800-2017,第 23.3.3.5 节 未打包的阵列端口和实例数组

module x #(parameter N=3) (input [3:0] a [N]);
© www.soinside.com 2019 - 2024. All rights reserved.