如何在SystemVerilog中以十六进制显示/打印解压缩类型?

问题描述 投票:2回答:1

我有一个未压缩的int数组:

int wanna_print [];
wanna_print = new[1];

可以这样打印:

$display("in hex: c86E [in dec: 51310] == %p", wanna_print[0]);

它将以十进制打印,但我需要以十六进制打印。

ofc我尝试了%0h,%h而不是%p,但它给出了此错误:参数2是解压缩类型,只能以'%p'格式打印。如何在十六进制中打印?%p可以以某种方式扩展吗?

我也尝试过$ sformatf,但其行为相同。

syntax int hex verilog system-verilog
1个回答
1
投票

使用$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

$displayh在IEEE Std 1800-2017的21.2.1.2节格式规范中进行了描述。

但是,我遇到了Cadence的编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.