use*_*020 1 verilog hdl register-transfer-level system-verilog digital-logic
考虑以下示例:
parameter BITWIDTH = 16;
Run Code Online (Sandbox Code Playgroud)
这有效:
logic [1:0][BITWIDTH-1:0] var = {16'h30, 16'h40};
Run Code Online (Sandbox Code Playgroud)
这不起作用:
logic [1:0][BITWIDTH-1:0] var = {BITWIDTH'h30, BITWIDTH'h40};
Run Code Online (Sandbox Code Playgroud)
如何在上面的代码行中使用参数?
SystemVerilog 将按照明确定义的规则将数字文字大小调整为正确的大小,因此无需定义大小:
logic [1:0][BITWIDTH-1:0] x = '{'h30, 'h40};
Run Code Online (Sandbox Code Playgroud)
但是,某些工具确实会发出警告,因此您可以将文字转换为正确的大小,如下所示:
logic [1:0][BITWIDTH-1:0] x = '{BITWIDTH'('h30), BITWIDTH'('h40)};
Run Code Online (Sandbox Code Playgroud)