如何在 Verilog 中使用参数化位宽作为常量值?
How to use parameterized bitwidth for a constant value in Verilog?
考虑以下示例:
parameter BITWIDTH = 16;
这个有效:
logic [1:0][BITWIDTH-1:0] var = {16'h30, 16'h40};
这不起作用:
logic [1:0][BITWIDTH-1:0] var = {BITWIDTH'h30, BITWIDTH'h40};
如何在上面的代码行中使用参数?
SystemVerilog 将按照明确定义的规则将数字文字的大小调整为正确的大小,因此无需定义大小:
logic [1:0][BITWIDTH-1:0] x = '{'h30, 'h40};
但是,某些工具会抛出警告,因此您可以像这样将文字转换为正确的大小:
logic [1:0][BITWIDTH-1:0] x = '{BITWIDTH'('h30), BITWIDTH'('h40)};
考虑以下示例:
parameter BITWIDTH = 16;
这个有效:
logic [1:0][BITWIDTH-1:0] var = {16'h30, 16'h40};
这不起作用:
logic [1:0][BITWIDTH-1:0] var = {BITWIDTH'h30, BITWIDTH'h40};
如何在上面的代码行中使用参数?
SystemVerilog 将按照明确定义的规则将数字文字的大小调整为正确的大小,因此无需定义大小:
logic [1:0][BITWIDTH-1:0] x = '{'h30, 'h40};
但是,某些工具会抛出警告,因此您可以像这样将文字转换为正确的大小:
logic [1:0][BITWIDTH-1:0] x = '{BITWIDTH'('h30), BITWIDTH'('h40)};