【发布时间】:2017-04-22 21:43:31
【问题描述】:
我有以下合成问题:
// 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
此代码功能齐全,但综合抱怨: “不支持构造‘接口数组切片索引’”。
如何在不分割接口的情况下将此子数组传递给模块? 我不希望像this blog post 那样重写我的界面以允许切片,因为这会花费很多时间。
提前致谢!
【问题讨论】:
-
我已经为该问题创建了一个解决方法,但不是该问题的真正答案。解决方法:将接口数组传递给每个加速器块,并在加速器中选择正确的接口。
-
然而,这项工作给了我大量的 analyze_elaborate 警告类型:“xxxxx 端口 'xxxx' 没有按照其规定的方向使用”,因为很多这些端口根本没有被驱动/在那个块中使用。除了使日志文件膨胀之外,这不是问题。
标签: arrays interface system-verilog synthesis