如何在系统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可以以某种方式扩展吗?

我也试过$sformatf,但它的行为是一样的。

使用$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 Std 1800-2017 第 21.2.1.2 节格式规范中描述了$displayh

但是,我在使用Cadence时遇到编译错误。

最新更新