我有以下综合问题:
// Variable instantiation
read_port_if #() mem_rp [N_INST*2] (); // Memory read port interface (each element in array is a single readport)
// module instantiation
memory #(
.N_RPORT(N_INST*2)
) modMem (.*,
.rPort(mem_rp)
);
generate
for (genvar iInst=0;iInst<N_INST;iInst++) begin
accelerator #(
.I_INST(iInst),
.N_INST(N_INST)
) accelerator (.*,
.mod_rp(mem_rp[(iInst*2)+:2]) // Expects an read port array of size 2
);
end
endgenerate
此代码功能齐全,但综合抱怨: &#34;构造&#39;接口阵列切片索引&#39;不受支持&#34;。
如何在不切片界面的情况下将此子阵列传递给模块? 我不想像this blog post那样重写我的界面以允许切片,因为这会花费很多时间。
提前致谢!
答案 0 :(得分:0)
您是否尝试过创建中间信号而不在端口中切片?一些Verilog模拟器对此有问题(例如,VCS和Questa)。
// module instantiation
memory #(
.N_RPORT(N_INST*2)
) modMem (.*,
.rPort(mem_rp)
);
generate
for (genvar iInst=0;iInst<N_INST;iInst++) begin
wire mem_rp_sliced = mem_rp[(iInst*2)+:2];
accelerator #(
.I_INST(iInst),
.N_INST(N_INST)
) accelerator (.*,
.mod_rp(mem_rp_sliced) // Expects an read port array of size 2
);
end
endgenerate