我正在尝试进行模块实例化。但是,问题是我的模块(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)
如您所见,您不能简单地根据
parameter
更改端口数量。
但是,您可以使用声明为数组的端口,其中端口数由
parameter
设置。请参阅 IEEE Std 1800-2017,第 23.3.3.5 节 未打包的阵列端口和实例数组。
module x #(parameter N=3) (input [3:0] a [N]);