在System Verilog中打印打包的结构

Vis*_*adh 5 printing struct verilog system-verilog packed

我有一个打包的结构,如下所示

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

MyPackedStruct myPackedStruct;
Run Code Online (Sandbox Code Playgroud)

是否有任何SV内置函数,我可以使用它来打印类似于上面的结构,但有更多的字段,而不必编写我自己的方法来打印每个字段使用一个

$display(...,myPackedStruct.field_name)

dwi*_*kle 7

您可以使用%p格式元素.

$display("%p", myPackedStruct);
Run Code Online (Sandbox Code Playgroud)

Modelsim的输出:

 # '{bit1:x, byte1:x}
Run Code Online (Sandbox Code Playgroud)

21.2.1.7 Assignment pattern formatIEEE 1800至2012年的SystemVerilog语言规范.


dav*_*_59 7

您可以使用 %p - 漂亮的打印:

$displayb("%p",myPackedStruct);

'{bit1:x, byte1:xxxxxxxx}
Run Code Online (Sandbox Code Playgroud)

这会将其打印为分配模式,但您将无法选择字段或其顺序,或应用任何其他单独的格式。%p 适合快速简单的显示,但大多数人最终会编写一种方法来完全按照他们想要的方式对其进行格式化。