From b37636e4fcda093951864e35944ddd6b6e214335 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 15 Feb 2022 15:26:34 +0100 Subject: [PATCH] Add regression test for invalid declarations in generate blocks Check that the following declarations inside a generate block generate an error: * module, program or interface * specparam * specify block * timeunit Signed-off-by: Lars-Peter Clausen --- ivtest/ivltests/generate_module.v | 16 ++++++++++++++++ ivtest/ivltests/generate_specify.v | 18 ++++++++++++++++++ ivtest/ivltests/generate_specparam.v | 17 +++++++++++++++++ ivtest/ivltests/generate_timeunit.v | 17 +++++++++++++++++ ivtest/regress-sv.list | 2 ++ ivtest/regress-vlg.list | 2 ++ 6 files changed, 72 insertions(+) create mode 100644 ivtest/ivltests/generate_module.v create mode 100644 ivtest/ivltests/generate_specify.v create mode 100644 ivtest/ivltests/generate_specparam.v create mode 100644 ivtest/ivltests/generate_timeunit.v diff --git a/ivtest/ivltests/generate_module.v b/ivtest/ivltests/generate_module.v new file mode 100644 index 000000000..9a0be9b49 --- /dev/null +++ b/ivtest/ivltests/generate_module.v @@ -0,0 +1,16 @@ +// Check that declaring a module inside a generate block is an error + +module test #( + parameter A = 1 +); + +generate + if (A) begin + // Error + module inner; + initial $display("FAILED"); + endmodule + end +endgenerate + +endmodule diff --git a/ivtest/ivltests/generate_specify.v b/ivtest/ivltests/generate_specify.v new file mode 100644 index 000000000..c99a6421b --- /dev/null +++ b/ivtest/ivltests/generate_specify.v @@ -0,0 +1,18 @@ +// Check that a specify block inside a generate block is an error + +module test #( + parameter A = 1 +); + +generate + if (A) begin + specify // Error + endspecify + end +endgenerate + +initial begin + $display("FAILED"); +end + +endmodule diff --git a/ivtest/ivltests/generate_specparam.v b/ivtest/ivltests/generate_specparam.v new file mode 100644 index 000000000..cd9c9629f --- /dev/null +++ b/ivtest/ivltests/generate_specparam.v @@ -0,0 +1,17 @@ +// Check that declaring a specparam inside a generate block is an error + +module test #( + parameter A = 1 +); + +generate + if (A) begin + specparam x = 10; // Error + end +endgenerate + +initial begin + $display("FAILED"); +end + +endmodule diff --git a/ivtest/ivltests/generate_timeunit.v b/ivtest/ivltests/generate_timeunit.v new file mode 100644 index 000000000..658eb4173 --- /dev/null +++ b/ivtest/ivltests/generate_timeunit.v @@ -0,0 +1,17 @@ +// Check that declaring a timeunit inside a generate block is an error + +module test #( + parameter A = 1 +); + +generate + if (A) begin + timeunit 10ns/1ns; // Error + end +endgenerate + +initial begin + $display("FAILED"); +end + +endmodule diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index b0e865eb5..9467635ad 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -269,6 +269,8 @@ function10 CO,-g2005-sv ivltests function11 CE,-g2005-sv ivltests function12 normal,-g2005-sv ivltests gold=function12.gold genvar_inc_dec normal,-g2009 ivltests +generate_module CE,-g2005-sv ivltests +generate_timeunit CE,-g2005-sv ivltests ibit_test normal,-g2005-sv ivltests ibyte_test normal,-g2005-sv ivltests iint_test normal,-g2005-sv ivltests diff --git a/ivtest/regress-vlg.list b/ivtest/regress-vlg.list index 127c60b07..6aad76074 100644 --- a/ivtest/regress-vlg.list +++ b/ivtest/regress-vlg.list @@ -570,6 +570,8 @@ generate_case normal ivltests generate_case2 normal ivltests generate_case3 normal ivltests generate_multi_loop normal ivltests gold=generate_multi_loop.gold +generate_specify CE,-g2005-sv ivltests +generate_specparam CE,-g2005-sv ivltests genloop normal ivltests genvar_scopes normal ivltests hello1 normal ivltests