Как отобразить / распечатать распакованный тип как шестнадцатеричный в SystemVerilog? - PullRequest
3 голосов
/ 29 мая 2020

У меня есть распакованный массив int:

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

Его можно напечатать так:

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

Он напечатает его в десятичном виде, но мне нужно в шестнадцатеричном .

of c Я пробовал% 0h,% h вместо% p, но он дает следующую ошибку: Аргумент номер 2 является распакованным типом и может быть напечатан только с '% p 'формат. Как мне распечатать его в шестнадцатеричном ? Может быть,% p как-то расширен?

Я тоже пробовал $ sformatf, но он ведет себя так же.

1 Ответ

3 голосов
/ 29 мая 2020

Использование $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.

...