在这样的例子中
function module(
input [3:0] in
output out);
for(integer i = in; i < in+10; i += 1) begin
// do stuff
end
endfunction
如何将in
转换为i
?从我的理解,一个整数是一个32位的矢量,解释在2的补。那么verilog用28{in[3]}
填充位向量吗?
From LRM
如果需要,扩展右侧的大小,当且仅当右侧的类型有符号时执行符号扩展。
因此,在您的情况下,i
将用'0'填充,而不是在[3]中使用,因为in
没有签名。
要进行签名扩展,您需要在signed:input signed [3:0] in;