Add regression test for signed struct
Add a test that checks that signing annotations on structs are supported and that signed structs are properly evaluated as a signed value. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
09ac7c207e
commit
e176ce0776
|
|
@ -0,0 +1,58 @@
|
|||
// Tests that packed structs can have signed/unsigned modifier and that signed
|
||||
// packed structs when used as a primary behave correctly.
|
||||
|
||||
module test;
|
||||
|
||||
// Unsigned by default
|
||||
struct packed {
|
||||
logic [15:0] x;
|
||||
} s1;
|
||||
|
||||
// Explicitly unsigned
|
||||
struct packed unsigned {
|
||||
logic [15:0] x;
|
||||
} s2;
|
||||
|
||||
// Explicitly signed
|
||||
struct packed signed {
|
||||
logic [15:0] x;
|
||||
} s3;
|
||||
|
||||
|
||||
bit failed = 1'b0;
|
||||
|
||||
`define check(x) \
|
||||
if (!(x)) begin \
|
||||
$display("FAILED: ", `"x`"); \
|
||||
failed = 1'b1; \
|
||||
end
|
||||
|
||||
initial begin
|
||||
s1 = -1;
|
||||
s2 = -1;
|
||||
s3 = -1;
|
||||
|
||||
`check(!$is_signed(s1));
|
||||
`check(!$is_signed(s2));
|
||||
`check($is_signed(s3));
|
||||
|
||||
// These evaluate as signed
|
||||
`check($signed(s1) < 0);
|
||||
`check($signed(s2) < 0);
|
||||
`check(s3 < 0);
|
||||
|
||||
// These all evaluate as unsigned
|
||||
`check(s1 > 0);
|
||||
`check(s2 > 0);
|
||||
`check(s3.x > 0)
|
||||
`check(s3[15:0] > 0)
|
||||
`check({s3} > 0)
|
||||
`check($unsigned(s3) > 0)
|
||||
`check(s3 > 16'h0)
|
||||
|
||||
if (!failed) begin
|
||||
$display("PASSED");
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
|
|
@ -383,6 +383,7 @@ struct_packed_array2 normal,-g2009 ivltests
|
|||
struct_packed_sysfunct normal,-g2009 ivltests
|
||||
struct_packed_write_read2 normal,-g2009 ivltests
|
||||
struct_invalid_member CE,-g2009 ivltests gold=struct_invalid_member.gold
|
||||
struct_signed normal,-g2009 ivltests
|
||||
sv-constants normal,-g2005-sv ivltests
|
||||
sv_array_assign_pattern2 normal,-g2009 ivltests
|
||||
sv_cast_integer normal,-g2005-sv ivltests
|
||||
|
|
|
|||
|
|
@ -838,6 +838,7 @@ size_cast3 normal,-g2009,-pallowsigned=1 ivltests
|
|||
size_cast5 normal,-g2009,-pallowsigned=1 ivltests
|
||||
struct_packed_array normal,-g2009,-pallowsigned=1 ivltests
|
||||
struct_packed_array2 normal,-g2009,-pallowsigned=1 ivltests
|
||||
struct_signed normal,-g2009,-pallowsigned=1 ivltests
|
||||
sv_for_variable normal,-g2009,-pallowsigned=1 ivltests
|
||||
sv_foreach1 normal,-g2009,-pallowsigned=1 ivltests
|
||||
sv_foreach5 normal,-g2009,-pallowsigned=1 ivltests
|
||||
|
|
|
|||
|
|
@ -2158,6 +2158,7 @@ test_mos_strength_reduction: Passed.
|
|||
struct_packed_sysfunct: Passed.
|
||||
struct_packed_write_read2: Passed.
|
||||
struct_invalid_member: Passed - CE.
|
||||
struct_signed: Passed.
|
||||
sv-constants: Passed.
|
||||
sv_array_assign_pattern2: Passed.
|
||||
sv_cast_integer: Passed.
|
||||
|
|
@ -2565,4 +2566,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2563, Passed=2557, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
Total=2564, Passed=2558, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
|
|
|
|||
|
|
@ -2165,6 +2165,7 @@ test_mos_strength_reduction: Passed.
|
|||
struct_packed_sysfunct: Passed.
|
||||
struct_packed_write_read2: Passed.
|
||||
struct_invalid_member: Passed - CE.
|
||||
struct_signed: Passed.
|
||||
sv-constants: Passed.
|
||||
sv_array_assign_pattern2: Passed.
|
||||
sv_cast_integer: Passed.
|
||||
|
|
@ -2565,4 +2566,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2563, Passed=2543, Failed=17, Not Implemented=3, Expected Fail=0
|
||||
Total=2564, Passed=2544, Failed=17, Not Implemented=3, Expected Fail=0
|
||||
|
|
|
|||
|
|
@ -2154,6 +2154,7 @@ test_mos_strength_reduction: Passed.
|
|||
struct_packed_sysfunct: Passed.
|
||||
struct_packed_write_read2: Passed.
|
||||
struct_invalid_member: Passed - CE.
|
||||
struct_signed: Passed.
|
||||
sv-constants: Passed.
|
||||
sv_array_assign_pattern2: Passed.
|
||||
sv_cast_integer: Passed.
|
||||
|
|
@ -2562,4 +2563,4 @@ test_mos_strength_reduction: Passed.
|
|||
ufuncsynth1: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2560, Passed=2554, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
Total=2561, Passed=2555, Failed=3, Not Implemented=0, Expected Fail=3
|
||||
|
|
|
|||
|
|
@ -664,6 +664,7 @@ Running vlog95 compiler/VVP tests for Icarus Verilog version: 12.
|
|||
size_cast5: Passed.
|
||||
struct_packed_array: Passed.
|
||||
struct_packed_array2: Passed.
|
||||
struct_signed: Passed.
|
||||
sv_for_variable: Passed.
|
||||
sv_foreach1: Passed.
|
||||
sv_foreach5: Passed.
|
||||
|
|
@ -2565,4 +2566,4 @@ test_mos_strength_reduction: Passed.
|
|||
synth_if_no_else: Passed.
|
||||
============================================================================
|
||||
Test results:
|
||||
Total=2563, Passed=2524, Failed=2, Not Implemented=3, Expected Fail=34
|
||||
Total=2564, Passed=2525, Failed=2, Not Implemented=3, Expected Fail=34
|
||||
|
|
|
|||
Loading…
Reference in New Issue