我有一个解压缩的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时遇到编译错误。