原文链接:https://verificationguide.com/systemverilog/systemverilog-struct/
PACKED STRUCT EXAMPLE
module struct_tb;
typedef struct packed {
bit [7:0] addr;
bit valid;
bit [31:0] data;
} mem_pkt;
mem_pkt pkt;
initial begin
// Initializing Struct
pkt = '{8'h6, 1'b1, 32'hC001_0FAB};
$display ("pkt = %p", pkt);
// Change the struct field value
pkt.addr = 8'h8;
$display ("pkt = %p", pkt);
// Change the struct field value
pkt.data = 32'hFFF0_0FFF;
$display ("pkt = %p", pkt);
end
endmodule
Simulator Output
pkt = '{addr:'h6, valid:'h1, data:'hc0010fab}
pkt = '{addr:'h8, valid:'h1, data:'hc0010fab}
pkt = '{addr:'h8, valid:'h1, data:'hfff00fff}