iverilog/ivtest/ivltests/struct_packed_sysfunct2.v

47 lines
723 B
Verilog

// Check that the signedness of a struct member is handled correctly when passed
// to a system function
module test;
bit failed = 1'b0;
struct packed {
int s;
int unsigned u;
} x;
int s;
int unsigned u;
logic [16*8-1:0] s1;
logic [16*8-1:0] s2;
initial begin
u = -10;
s = -20;
x.u = u;
x.s = s;
$swrite(s1, s);
$swrite(s2, x.s);
if (s1 != s2) begin
failed = 1'b1;
$display("FAILED. Expected %s, got %s.", s1, s2);
end
$swrite(s1, u);
$swrite(s2, x.u);
if (s1 != s2) begin
failed = 1'b1;
$display("FAILED. Expected %s, got %s.", s1, s2);
end
if (!failed) begin
$display("PASSED");
end
end
endmodule