Печать упакованных структур в системе Verilog

У меня есть упакованная структура, определенная как показано ниже

typedef struct packed {
    logic bit1;
    logic [7:0] byte1;
} MyPackedStruct;

MyPackedStruct myPackedStruct;

Существует ли какая-либо встроенная функция SV, которую я мог бы использовать для печати структур, аналогичных приведенным выше, но имеющих гораздо больше полей, без необходимости писать собственный метод для печати каждого из полей с использованием

$display(...,myPackedStruct.field_name)?

2 ответа

Решение

Вы можете использовать%p - красивая печать:

$displayb("%p",myPackedStruct);

'{bit1:x, byte1:xxxxxxxx}

который напечатает его как шаблон назначения, но вы не сможете выбрать поля или их порядок, или применить любое другое индивидуальное форматирование. %p хорош для быстрого и удобного отображения, но большинство людей в конечном итоге придут к написанию метода для форматирования именно так, как они хотят.

Вы можете использовать %p элемент форматирования.

$display("%p", myPackedStruct);

Выход из Modelsim:

 # '{bit1:x, byte1:x}

Смотрите раздел 21.2.1.7 Assignment pattern format в спецификации языка SystemVerilog IEEE 1800-2012

Другие вопросы по тегам