SystemVerilog $bits() return 类型?

SystemVerilog $bits() return type?

我从 SystemVerilog 3.1a 语言参考手册中了解到“$bits 系统函数 returns 将表达式保存为比特流所需的位数。”

  1. 这个函数是什么类型returns?
  2. 这种类型的机器依赖于最大尺寸吗?
  3. 这个最大的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