Печать упакованных структур в системе 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