我有一个模块,它的端口之一是一个解压缩的接口数组。我试图使用赋值模式将它连接到一些不同的单一接口,就像我想要一个简单的端口一样。
这样做会导致QuestaSim出错:
"预期接口实例为实际的' intf_out'。"
我需要什么语法糖才能使这个有效?
我写了一个小例子来说明问题。
interface example_interface #(
parameter SIZE = 4
);
logic [SIZE-1:0] example_signal;
endinterface
module example_module (
example_interface intf_in,
example_interface intf_out [0:2]
);
assign intf_out[0].example_signal = intf_in.example_signal;
assign intf_out[1].example_signal = intf_in.example_signal;
assign intf_out[2].example_signal = intf_in.example_signal;
endmodule
module example_port_connection ();
example_interface #(.SIZE(3)) a ();
example_interface #(.SIZE(4)) b ();
example_interface #(.SIZE(5)) c ();
example_interface #(.SIZE(6)) d ();
example_module uut (
.intf_in(a),
.intf_out('{b,c,d}) //error here
);
endmodule
答案 0 :(得分:1)
这不能使用接口在SystemVerilog中完成。除了没有任何接口串联的语法之外,当每个元素是不同的类型时,您不再拥有数组。