假设我的模块具有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
语句(我想避免这种情况)有没有比这些更好的解决方案了?
答案 0 :(得分:1)
您可以使用流式运算符:
MyModule M (.in(a), .out({<<{b}}));
但是我认为您的第一个想法是最简单的。
答案 1 :(得分: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));