Add regression tests for struct assignment patterns
Check that struct assignment patterns with only positional arguments are supported. Also check that invalid assignment patterns for structs report an error. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
parent
4fca564614
commit
6ae085812d
|
|
@ -0,0 +1,28 @@
|
||||||
|
// Check that positional assigment patterns are supported for structs.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef struct packed {
|
||||||
|
int x;
|
||||||
|
shortint y;
|
||||||
|
byte z;
|
||||||
|
} T;
|
||||||
|
|
||||||
|
T x = '{1'b1, 2.0, 2 + 1};
|
||||||
|
|
||||||
|
// Check nested assignment patterns
|
||||||
|
struct packed {
|
||||||
|
T x;
|
||||||
|
bit [2:0][3:0] y;
|
||||||
|
} y = '{'{1'b1, 2.0, 2 + 1}, '{4, 5, 6}};
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
if (x === 56'h00000001000203 &&
|
||||||
|
y === 68'h00000001000203456) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Check that positional assigment patterns are supported for structs are
|
||||||
|
// supported for parameters.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
typedef struct packed {
|
||||||
|
int x;
|
||||||
|
shortint y;
|
||||||
|
byte z;
|
||||||
|
} T;
|
||||||
|
|
||||||
|
localparam T x = '{1'b1, 2.0, 2 + 1};
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
if (x === 56'h00000001000203) begin
|
||||||
|
$display("PASSED");
|
||||||
|
end else begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Check that it is an error to provide less elements in a struct assignment
|
||||||
|
// pattern than there are members in the struct.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
struct packed {
|
||||||
|
int x;
|
||||||
|
shortint y;
|
||||||
|
byte z;
|
||||||
|
} x = '{1, 2}; // This should fail. Less elements than required.
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Check that it is an error to provide more elements in a struct assignment
|
||||||
|
// pattern than there are members in the struct.
|
||||||
|
|
||||||
|
module test;
|
||||||
|
|
||||||
|
struct packed {
|
||||||
|
int x;
|
||||||
|
shortint y;
|
||||||
|
byte z;
|
||||||
|
} x = '{1, 2, 3, 4}; // This should fail. More elements than required.
|
||||||
|
|
||||||
|
initial begin
|
||||||
|
$display("FAILED");
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
@ -525,6 +525,10 @@ sv_ap_parray2 normal,-g2005-sv ivltests
|
||||||
sv_ap_parray_fail1 CE,-g2005-sv ivltests
|
sv_ap_parray_fail1 CE,-g2005-sv ivltests
|
||||||
sv_ap_parray_fail2 CE,-g2005-sv ivltests
|
sv_ap_parray_fail2 CE,-g2005-sv ivltests
|
||||||
sv_ap_parray_fail3 CE,-g2005-sv ivltests
|
sv_ap_parray_fail3 CE,-g2005-sv ivltests
|
||||||
|
sv_ap_struct1 normal,-g2005-sv ivltests
|
||||||
|
sv_ap_struct2 normal,-g2005-sv ivltests
|
||||||
|
sv_ap_struct_fail1 CE,-g2005-sv ivltests
|
||||||
|
sv_ap_struct_fail2 CE,-g2005-sv ivltests
|
||||||
sv_assign_pattern_cast normal,-g2005-sv ivltests
|
sv_assign_pattern_cast normal,-g2005-sv ivltests
|
||||||
sv_assign_pattern_const normal,-g2005-sv ivltests
|
sv_assign_pattern_const normal,-g2005-sv ivltests
|
||||||
sv_assign_pattern_concat normal,-g2005-sv ivltests
|
sv_assign_pattern_concat normal,-g2005-sv ivltests
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue