verilog 中的数组位参数范围 - 下溢或 -1
array bit parameter range in verilog - underflow or -1
在这种情况下,参数 init
的索引范围应该是什么:
parameter zero = 0;
parameter bit[31:0] size = 32'b01;
parameter bit[((zero * size) - 1):0] init = 2'b11;
应该是[-1:0]
或[4294967295:0]
,为什么?这种行为是标准化的还是取决于工具?
根据 LRM,数组声明中的范围是有符号整数表达式。它应该将 32 位无符号表达式转换为有符号整数。所以结果是-1。您可以通过显示 $left(init)
的结果来测试它
是否所有工具开发人员都阅读了 LRM 是另一个问题。
在这种情况下,参数 init
的索引范围应该是什么:
parameter zero = 0;
parameter bit[31:0] size = 32'b01;
parameter bit[((zero * size) - 1):0] init = 2'b11;
应该是[-1:0]
或[4294967295:0]
,为什么?这种行为是标准化的还是取决于工具?
根据 LRM,数组声明中的范围是有符号整数表达式。它应该将 32 位无符号表达式转换为有符号整数。所以结果是-1。您可以通过显示 $left(init)
是否所有工具开发人员都阅读了 LRM 是另一个问题。