创建以下逻辑的最佳方法是什么?
interface top_if(input rst_n[NUM_OF_modules],
input clk[NUM_OF_modules]);
simple_if i_simple_if[NUM_OF_modules](.reset_n(rst_n[?]), .clock(clk[?]));
我需要将rst_n[x]
和clk[x]
发送到相应的i_simple_if[x]
吗?什么是最好的方法。 reset_n
和clock
是simple_if的1位输入信号。
endinterface
答案 0 :(得分:1)
generate
循环怎么样:
interface top_if #(parameter NUM_OF_modules = 1)
(input rst_n[NUM_OF_modules],
input clk[NUM_OF_modules]);
generate
genvar i;
for (i=0; i<NUM_OF_modules; i++)
begin : NAME
simple_if i_simple_if(.reset_n(rst_n[i]), .clock(clk[i]));
end
endgenerate
endinterface
答案 1 :(得分:1)
我尝试了两种不同的方法: 1)为top_if内部的接口生成循环:simple_if。当我将生成的接口传递给模块时,VCS对它不满意并抛出非法连接的接口端口。 2)所以我不得不尝试以下方法。
interface top_if #(parameter NUM_OF_modules = 1)
(input rst_n[NUM_OF_modules],clk[NUM_OF_modules]);
simple_if i_simple_if[NUM_OF_modules]();
endinterface
top_if i_top_if();
generate
for (genvar i=0; i<NUM_OF_modules; i++) begin
assign i_top_if.i_simple_if[i].rst_n = xxx;
assign i_top_if.i_simple_if[i].clk = yyy;
end
endgenerate