SystemVerilog $bits() return 类型?
SystemVerilog $bits() return type?
我从 SystemVerilog 3.1a 语言参考手册中了解到“$bits 系统函数 returns 将表达式保存为比特流所需的位数。”
- 这个函数是什么类型returns?
- 这种类型的机器依赖于最大尺寸吗?
- 这个最大的systemverilog类型是longint吗?
任何 link 规范或文档揭示这个谜团将不胜感激。
就位数而言,您可以使用这样的代码在您的模拟器中进行测试
`define inspect(arg) \
$display(`"arg = %b = %d (%0d bits)`", arg, arg, $bits(arg));
module bit_width;
reg [4:0] x;
reg [4'd4:4'd0] y;
initial begin
`inspect($bits(x));
`inspect($bits(y));
end
endmodule
在 Icarus Verilog 中打印
$bits(x) = 00000000000000000000000000000101 = 5 (32 bits)
$bits(y) = 00000000000000000000000000000101 = 5 (32 bits)
建议两者都给出 32 位,固定大小。
说实话,在阅读你的问题后,在测试之前,我希望 $bits(y)
有 4 位。
根据System Verilog标准:
20.6.2 Expression size system function
The $bits system function returns the number of bits required to hold an expression as a bit stream. The
return type is integer
6.11 Integer data types
integer -- 4-state data type, 32-bit signed integer
我从 SystemVerilog 3.1a 语言参考手册中了解到“$bits 系统函数 returns 将表达式保存为比特流所需的位数。”
- 这个函数是什么类型returns?
- 这种类型的机器依赖于最大尺寸吗?
- 这个最大的systemverilog类型是longint吗?
任何 link 规范或文档揭示这个谜团将不胜感激。
就位数而言,您可以使用这样的代码在您的模拟器中进行测试
`define inspect(arg) \
$display(`"arg = %b = %d (%0d bits)`", arg, arg, $bits(arg));
module bit_width;
reg [4:0] x;
reg [4'd4:4'd0] y;
initial begin
`inspect($bits(x));
`inspect($bits(y));
end
endmodule
在 Icarus Verilog 中打印
$bits(x) = 00000000000000000000000000000101 = 5 (32 bits)
$bits(y) = 00000000000000000000000000000101 = 5 (32 bits)
建议两者都给出 32 位,固定大小。
说实话,在阅读你的问题后,在测试之前,我希望 $bits(y)
有 4 位。
根据System Verilog标准:
20.6.2 Expression size system function The $bits system function returns the number of bits required to hold an expression as a bit stream. The return type is integer
6.11 Integer data types integer -- 4-state data type, 32-bit signed integer