连接不同的端口宽度
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
就警告了。理想情况下,我想要一个不会发出警告的解决方案。
这是我的想法:
- 使用
.out(b)
,位 使用b[0]
- 创建未使用的逻辑变量
unused
并使用有效的 .out({unused, b})
- 使用
assign
语句(我想避免这种情况)
还有比这些更好的解决方案吗?
您可以使用流媒体运营商:
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));
假设我的模块有一个 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)
,位 使用 - 创建未使用的逻辑变量
unused
并使用有效的.out({unused, b})
- 使用
assign
语句(我想避免这种情况)
b[0]
还有比这些更好的解决方案吗?
您可以使用流媒体运营商:
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));