diff --git a/ivtest/gold/parameter_invalid_override.gold b/ivtest/gold/parameter_invalid_override.gold deleted file mode 100644 index 029fc3262..000000000 --- a/ivtest/gold/parameter_invalid_override.gold +++ /dev/null @@ -1,21 +0,0 @@ -./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 deleted file mode 100644 index 32843690c..000000000 --- a/ivtest/ivltests/parameter_invalid_override.v +++ /dev/null @@ -1,63 +0,0 @@ -// 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/ivltests/parameter_override_invalid1.v b/ivtest/ivltests/parameter_override_invalid1.v new file mode 100644 index 000000000..37828f07b --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid1.v @@ -0,0 +1,19 @@ +// Check that trying to override a parameter that does not exist results in an +// error + +module a #( + parameter A = 1 +); + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a #( + .Z(10) // Error + ) i_a(); + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid2.v b/ivtest/ivltests/parameter_override_invalid2.v new file mode 100644 index 000000000..b31828ea0 --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid2.v @@ -0,0 +1,21 @@ +// Check that trying to override a parameter that does not exist results in an +// error + +module a #( + parameter A = 1 +); + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a #( + .A(10) + ) i_a(); + + defparam i_a.Z = 10; // Error + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid3.v b/ivtest/ivltests/parameter_override_invalid3.v new file mode 100644 index 000000000..4b11d0b14 --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid3.v @@ -0,0 +1,17 @@ +// Check that localparam can not be overridden + +module a; + localparam A = 1; + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a #( + .A(10) // Error + ) i_a(); + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid4.v b/ivtest/ivltests/parameter_override_invalid4.v new file mode 100644 index 000000000..ee25717eb --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid4.v @@ -0,0 +1,17 @@ +// Check that localparam can not be overridden by defparam + +module a; + localparam A = 1; + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a i_a(); + + defparam i_a.A = 10; // Error + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid5.v b/ivtest/ivltests/parameter_override_invalid5.v new file mode 100644 index 000000000..1031321f9 --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid5.v @@ -0,0 +1,22 @@ +// Check that parameter declared in the module body can not be overridden if the +// module has a parameter port list. + +module a #( + parameter A = 1 +); + // This behaves like a localparam + parameter B = 1; + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a #( + .A(10), + .B(20) // Error + ) i_a(); + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid6.v b/ivtest/ivltests/parameter_override_invalid6.v new file mode 100644 index 000000000..cf24fce9e --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid6.v @@ -0,0 +1,20 @@ +// Check that parameter declared in the module body can not be overridden by a +// defparam if the module has a parameter port list. + +module a #(parameter A = 1); + // This behaves like a localparam + parameter B = 2; + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a i_a(); + + defparam i_a.A = 10; + defparam i_a.B = 20; // Error + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid7.v b/ivtest/ivltests/parameter_override_invalid7.v new file mode 100644 index 000000000..3d45475ee --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid7.v @@ -0,0 +1,18 @@ +// Check that localparam declared in parameter port list can not be overridden + +module a #( + localparam B = 2 +); + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a #( + .A(10) // Error + ) i_a(); + +endmodule diff --git a/ivtest/ivltests/parameter_override_invalid8.v b/ivtest/ivltests/parameter_override_invalid8.v new file mode 100644 index 000000000..caf3ceab7 --- /dev/null +++ b/ivtest/ivltests/parameter_override_invalid8.v @@ -0,0 +1,19 @@ +// Check that localparam declared in parameter port list can not be overridden +// by defparam + +module a #( + localparam A = 1 +); + + initial begin + $display("FAILED"); + end +endmodule + +module test; + + a i_a(); + + defparam i_a.A = 10; // Error + +endmodule diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index b0e865eb5..6ac0eda0a 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -317,11 +317,12 @@ named_fork_fail CE,-g2009 ivltests packeda normal,-g2009 ivltests packeda2 normal,-g2009 ivltests parameter_in_generate2 CE,-g2005-sv ivltests -parameter_invalid_override CE,-g2005-sv ivltests gold=parameter_invalid_override.gold parameter_no_default CE,-g2005-sv ivltests parameter_no_default_fail1 CE ivltests parameter_no_default_fail2 CE ivltests parameter_no_default_toplvl normal,-g2005-sv ivltests +parameter_override_invalid7 CE,-g2005-sv ivltests +parameter_override_invalid8 CE,-g2005-sv ivltests parameter_type2 normal,-g2009 ivltests parpkg_test normal,-g2009 ivltests parpkg_test2 normal,-g2009 ivltests diff --git a/ivtest/regress-vlg.list b/ivtest/regress-vlg.list index 127c60b07..e49a9afd4 100644 --- a/ivtest/regress-vlg.list +++ b/ivtest/regress-vlg.list @@ -703,6 +703,12 @@ parameter_omit3 CE ivltests parameter_omit_invalid1 CE ivltests parameter_omit_invalid2 CE ivltests parameter_omit_invalid3 CE ivltests +parameter_override_invalid1 CE ivltests +parameter_override_invalid2 CE ivltests +parameter_override_invalid3 CE ivltests +parameter_override_invalid4 CE ivltests +parameter_override_invalid5 CE ivltests +parameter_override_invalid6 CE ivltests patch1268 normal ivltests pca1 normal ivltests # Procedural Continuous Assignment in a mux pic normal contrib pictest gold=pic.gold