diff --git a/ivtest/gold/parameter_invalid_override.gold b/ivtest/gold/parameter_invalid_override.gold new file mode 100644 index 000000000..029fc3262 --- /dev/null +++ b/ivtest/gold/parameter_invalid_override.gold @@ -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. diff --git a/ivtest/ivltests/parameter_invalid_override.v b/ivtest/ivltests/parameter_invalid_override.v new file mode 100644 index 000000000..32843690c --- /dev/null +++ b/ivtest/ivltests/parameter_invalid_override.v @@ -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 diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index a0bfc15e6..f11026406 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -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