2

假设我的模块有 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直接连接会给出警告。理想情况下,我想要一个不会发出警告的解决方案。

这是我的想法:

  • 使用.out(b)b[0]用于位
  • 创建未使用的逻辑变量unused并使用.out({unused, b})哪个有效
  • 使用assign声明(我想避免这种情况)

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

4

2 回答 2

2

您可以使用流式运营商:

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

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

于 2019-02-11T14:36:16.933 回答
0

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

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));
于 2019-02-11T17:12:51.613 回答