如何在 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)};