连接不同的端口宽度

Connect different port width

假设我的模块有一个 8 位输入和 8 位输出

module MyModule (input logic [7:0] in, output logic [7:0] out);
    ...
endmodule : MyModule

如果我想连接一个 1 位输入并将其他位保留为零,则以下工作:

MyModule (.in({7'b0, a}), .out(b))

如果我想要 1 位输出而忽略其他位,我该如何做同样的事情?像这样

MyModule (.in(a), .out({7'b0, b}))

vcs说无效,直接连接b就警告了。理想情况下,我想要一个不会发出警告的解决方案。

这是我的想法:

还有比这些更好的解决方案吗?

您可以使用流媒体运营商:

MyModule M (.in(a), .out({<<{b}}));

但我认为你的第一个想法是最直接的。

您也可以使用参数化模块:

module MyModule #(IN_WDT = 8, OUT_WDT = 8)
  (input logic[IN_WDT-1:0] in, output logic [OUT_WDT -1 : 0] out);

...

MyModule #(8,1) M1(a8, b1); 

MyModule #(.OUT_WDT(1)) M1(.in(a8), .out(b1));