From 91579c7c79bcf8cbd20eead1f2148e0481191d2a Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sat, 12 Feb 2022 09:43:49 +0100 Subject: [PATCH] Add regression tests for parameters without default SystemVerilog supports parameters without default values in parameter port list. Add regression tests to check this feature. Also add a regression test to check that modules without a default parameter are not automatically picked as a toplevel module. Signed-off-by: Lars-Peter Clausen --- ivtest/ivltests/parameter_no_default.v | 20 +++++++++++++++++++ ivtest/ivltests/parameter_no_default_fail1.v | 16 +++++++++++++++ ivtest/ivltests/parameter_no_default_fail2.v | 16 +++++++++++++++ ivtest/ivltests/parameter_no_default_toplvl.v | 14 +++++++++++++ ivtest/regress-fsv.list | 1 + ivtest/regress-sv.list | 4 ++++ ivtest/regress-vlg.list | 1 + 7 files changed, 72 insertions(+) create mode 100644 ivtest/ivltests/parameter_no_default.v create mode 100644 ivtest/ivltests/parameter_no_default_fail1.v create mode 100644 ivtest/ivltests/parameter_no_default_fail2.v create mode 100644 ivtest/ivltests/parameter_no_default_toplvl.v diff --git a/ivtest/ivltests/parameter_no_default.v b/ivtest/ivltests/parameter_no_default.v new file mode 100644 index 000000000..88e4dbb1a --- /dev/null +++ b/ivtest/ivltests/parameter_no_default.v @@ -0,0 +1,20 @@ +// SystemVerilog allows parameters without default values in the parameter port +// list. Check that this is supported. The test should fail in Verilog mode. + +module a #( + parameter A +); + +initial begin + if (A == 1) begin + $display("PASSED"); + end else begin + $display("FAILED"); + end +end + +endmodule + +module test; + a #(.A(1)) i_a(); +endmodule diff --git a/ivtest/ivltests/parameter_no_default_fail1.v b/ivtest/ivltests/parameter_no_default_fail1.v new file mode 100644 index 000000000..975c510cc --- /dev/null +++ b/ivtest/ivltests/parameter_no_default_fail1.v @@ -0,0 +1,16 @@ +// Check that not providing a value during module instantiation for a parameter +// without a default value generates an error. + +module a #( + parameter A +); + +initial begin + $display("FAILED"); +end + +endmodule + +module test; + a i_a(); +endmodule diff --git a/ivtest/ivltests/parameter_no_default_fail2.v b/ivtest/ivltests/parameter_no_default_fail2.v new file mode 100644 index 000000000..8bb164045 --- /dev/null +++ b/ivtest/ivltests/parameter_no_default_fail2.v @@ -0,0 +1,16 @@ +// Check that parameters without default values outside the parameter port list +// generate an error. + +module a; + +parameter A; + +initial begin + $display("FAILED"); +end + +endmodule + +module test; + a #(.A(10)) i_a(); +endmodule diff --git a/ivtest/ivltests/parameter_no_default_toplvl.v b/ivtest/ivltests/parameter_no_default_toplvl.v new file mode 100644 index 000000000..417d97094 --- /dev/null +++ b/ivtest/ivltests/parameter_no_default_toplvl.v @@ -0,0 +1,14 @@ +// Check that modules with undefined parameters do not get picked as top-level +// modules. + +module a #( + parameter A +); + initial $display("FAILED"); +endmodule + +module b #( + parameter B = 1 +); + initial $display("PASSED"); +endmodule diff --git a/ivtest/regress-fsv.list b/ivtest/regress-fsv.list index a25e451c6..2b847a618 100644 --- a/ivtest/regress-fsv.list +++ b/ivtest/regress-fsv.list @@ -78,6 +78,7 @@ br_gh567 normal ivltests check_constant_3 normal ivltests function4 normal ivltests parameter_in_generate1 normal ivltests +parameter_no_default normal ivltests parameter_omit1 normal ivltests parameter_omit2 normal ivltests parameter_omit3 normal ivltests diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index 4f4a5d78c..945873c52 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -317,6 +317,10 @@ 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_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 d8352af04..127c60b07 100644 --- a/ivtest/regress-vlg.list +++ b/ivtest/regress-vlg.list @@ -696,6 +696,7 @@ param_test4 normal ivltests param_times normal ivltests # param has multiplication. parameter_type normal ivltests gold=parameter_type.gold parameter_in_generate1 CE ivltests +parameter_no_default CE ivltests parameter_omit1 CE ivltests parameter_omit2 CE ivltests parameter_omit3 CE ivltests