sv2v/test/core/struct_pattern_cast.sv

33 lines
964 B
Systemverilog

module top;
typedef struct packed {
integer x;
byte y;
} S;
typedef struct packed {
byte x;
shortint y;
S z;
} T;
var T a;
initial a = T'{ x: 5, y: 6, z: '{ x: 7, y: 8 } };
var T b;
T c;
assign c = T'{ x: 9, y: 10, z: '{ x: 11, y: 12 } };
initial begin
b = T'{ x: 13, y: 14, z: '{ x: 15, y: 16 } };
#1;
$display("a %b", a);
$display("b %b", b);
$display("c %b", c);
$display("x %b", T'{ x: 1, y: 2, z: '{ x: 3, y: 4 } });
$display("$bits(S) = %0d", $bits(S));
$display("$bits(T) = %0d", $bits(T));
$display("$bits(a) = %0d", $bits(a));
$display("$bits(a.x) = %0d", $bits(a.x));
$display("$bits(a.y) = %0d", $bits(a.y));
$display("$bits(a.z) = %0d", $bits(a.z));
$display("$bits(a.z.x) = %0d", $bits(a.z.x));
$display("$bits(a.z.y) = %0d", $bits(a.z.y));
end
endmodule