Add regression test for invalid parameter overrides

Check that invalid parameter overrides generate an error.

There are some cases that are not handled correctly today. The test will be
updated once they are addressed.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
This commit is contained in:
Lars-Peter Clausen 2022-01-23 21:11:19 +01:00
parent 0ab1ed916f
commit 880f4927bf
3 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,21 @@
./ivltests/parameter_invalid_override.v:28: error: Cannot override localparam `C` in `test.i_a`.
./ivltests/parameter_invalid_override.v:29: error: Cannot override localparam `D` in `test.i_a`.
./ivltests/parameter_invalid_override.v:31: error: Cannot override localparam `F` in `test.i_a`.
./ivltests/parameter_invalid_override.v:32: error: Cannot override localparam `G` in `test.i_a`.
./ivltests/parameter_invalid_override.v:33: error: Cannot override localparam `H` in `test.i_a`.
./ivltests/parameter_invalid_override.v:34: error: Cannot override localparam `I` in `test.i_a`.
./ivltests/parameter_invalid_override.v:35: error: parameter `Z` not found in `test.i_a`.
./ivltests/parameter_invalid_override.v:52: error: Cannot override localparam `C` in `test.i_b`.
./ivltests/parameter_invalid_override.v:53: error: Cannot override localparam `D` in `test.i_b`.
./ivltests/parameter_invalid_override.v:54: error: parameter `Z` not found in `test.i_b`.
./ivltests/parameter_invalid_override.v:40: error: Cannot override localparam `C` in `test.i_a`.
./ivltests/parameter_invalid_override.v:41: error: Cannot override localparam `D` in `test.i_a`.
./ivltests/parameter_invalid_override.v:43: error: Cannot override localparam `F` in `test.i_a`.
./ivltests/parameter_invalid_override.v:44: error: Cannot override localparam `G` in `test.i_a`.
./ivltests/parameter_invalid_override.v:45: error: Cannot override localparam `H` in `test.i_a`.
./ivltests/parameter_invalid_override.v:46: error: Cannot override localparam `I` in `test.i_a`.
./ivltests/parameter_invalid_override.v:47: error: parameter `Z` not found in `test.i_a`.
./ivltests/parameter_invalid_override.v:59: error: Cannot override localparam `C` in `test.i_b`.
./ivltests/parameter_invalid_override.v:60: error: Cannot override localparam `D` in `test.i_b`.
./ivltests/parameter_invalid_override.v:61: error: parameter `Z` not found in `test.i_b`.
21 error(s) during elaboration.

View File

@ -0,0 +1,63 @@
// Check that invalid parameter overrides generate an error
module a #(
parameter A = 1, B = 2,
localparam C = 3, localparam D = 4, // TODO: D should be localparam even when the keyword omitted
parameter E = 5
);
// TODO: parameter here should be treated as a localparam since the module has a
// parameter port list
/*parameter*/ localparam F = 6, G = 7;
localparam H = 8, I = 9;
endmodule
module b;
parameter A = 1, B = 2;
localparam C = 3, D = 4;
endmodule
module test;
a #(
.A(10),
.B(20),
.C(30),
.D(40),
.E(50),
.F(60),
.G(70),
.H(80),
.I(90),
.Z(99)
) i_a();
defparam i_a.A = 100;
defparam i_a.B = 200;
defparam i_a.C = 300;
defparam i_a.D = 400;
defparam i_a.E = 500;
defparam i_a.F = 600;
defparam i_a.G = 700;
defparam i_a.H = 800;
defparam i_a.I = 900;
defparam i_a.Z = 999;
b #(
.A(10),
.B(20),
.C(30),
.D(40),
.Z(99)
) i_b();
defparam i_b.A = 100;
defparam i_b.B = 200;
defparam i_b.C = 300;
defparam i_b.D = 400;
defparam i_b.Z = 999;
endmodule

View File

@ -311,6 +311,7 @@ named_fork normal,-g2009 ivltests
named_fork_fail CE,-g2009 ivltests
packeda normal,-g2009 ivltests
packeda2 normal,-g2009 ivltests
parameter_invalid_override CE,-g2005-sv ivltests gold=parameter_invalid_override.gold
parameter_type2 normal,-g2009 ivltests
parpkg_test normal,-g2009 ivltests
parpkg_test2 normal,-g2009 ivltests