如何将接口阵列端口连接到各个接口的串联?

时间:2017-12-05 20:22:23

标签: verilog system-verilog

我有一个模块,它的端口之一是一个解压缩的接口数组。我试图使用赋值模式将它连接到一些不同的单一接口,就像我想要一个简单的端口一样。

这样做会导致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

1 个答案:

答案 0 :(得分:1)

这不能使用接口在SystemVerilog中完成。除了没有任何接口串联的语法之外,当每个元素是不同的类型时,您不再拥有数组。