Syntax 如何在SystemVerilog中以十六进制显示/打印未打包的类型?

Syntax 如何在SystemVerilog中以十六进制显示/打印未打包的类型?,syntax,integer,hex,verilog,system-verilog,Syntax,Integer,Hex,Verilog,System Verilog,我有一个未打包的int数组: int wanna_print []; wanna_print = new[1]; 它可以这样打印: $display("in hex: c86E [in dec: 51310] == %p", wanna_print[0]); 它将以十进制打印,但我需要十六进制 我尝试了%0h,%h而不是%p,但出现了以下错误: 参数2是未打包类型,只能以“%p”格式打印。 如何以十六进制打印? %p是否可以扩展 我也尝试了$sformaf,但它的行为是相

我有一个未打包的
int
数组:

int wanna_print [];
wanna_print = new[1];
它可以这样打印:

$display("in hex: c86E [in dec: 51310] == %p", wanna_print[0]);
它将以十进制打印,但我需要十六进制

我尝试了
%0h
%h
而不是
%p
,但出现了以下错误:

参数2是未打包类型,只能以“%p”格式打印。

如何以十六进制打印?
%p
是否可以扩展


我也尝试了
$sformaf
,但它的行为是相同的。

使用
$displayh
对我来说适用于VCS:

module tb;

int wanna_print [];

initial begin
    wanna_print = new[1];
    wanna_print[0] = 51310;
    $displayh("in hex: c86E [in dec: 51310] == %p", wanna_print[0]);
end

endmodule
产出:

in hex: c86E [in dec: 51310] == 0000c86e
IEEE标准1800-2017第21.2.1.2节格式规范中描述了“
$displayh


但是,Cadence出现编译错误。

我曾与西门子/Mentor Questa合作,并在那里工作,谢谢!这是LRM中的一个公开问题