From 070fc2aedcdb324c926dfe26f16e9fac8fcee8a7 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sat, 1 Oct 2022 19:15:07 +0200 Subject: [PATCH] Add regression tests for invalid non-blocking writes to SV constructs Current regression tests only cover checking for invalid non-blocking writes to constructs that are valid in Verilog. Add two tests to additionally cover some SystemVerilog constructs. * Non-blocking writes to members of a struct typed variable with automatic lifetime * Non-blocking writes to class typed variables with automatic lifetime Signed-off-by: Lars-Peter Clausen --- ivtest/ivltests/automatic_error14.v | 18 ++++++++++++++++++ ivtest/ivltests/automatic_error15.v | 19 +++++++++++++++++++ ivtest/regress-sv.list | 2 ++ 3 files changed, 39 insertions(+) create mode 100644 ivtest/ivltests/automatic_error14.v create mode 100644 ivtest/ivltests/automatic_error15.v diff --git a/ivtest/ivltests/automatic_error14.v b/ivtest/ivltests/automatic_error14.v new file mode 100644 index 000000000..2c1de6000 --- /dev/null +++ b/ivtest/ivltests/automatic_error14.v @@ -0,0 +1,18 @@ +// Check that it is not possible to perform non-blocking assignments to fields +// of structs with automatic lifetime. + +module test; + + task automatic auto_task; + struct packed { + logic x; + } s; + s.x <= 10; + $display("FAILED"); + endtask + + initial begin + auto_task; + end + +endmodule diff --git a/ivtest/ivltests/automatic_error15.v b/ivtest/ivltests/automatic_error15.v new file mode 100644 index 000000000..b3235bb29 --- /dev/null +++ b/ivtest/ivltests/automatic_error15.v @@ -0,0 +1,19 @@ +// Check that it is not possible to perform non-blocking assignments to a class +// object variable with automatic lifetime. + +module test; + + class C; + endclass + + task automatic auto_task; + C c1, c2; + c1 <= c2; + $display("FAILED"); + endtask + + initial begin + auto_task; + end + +endmodule diff --git a/ivtest/regress-sv.list b/ivtest/regress-sv.list index 9e133585b..35b55dfd1 100644 --- a/ivtest/regress-sv.list +++ b/ivtest/regress-sv.list @@ -104,6 +104,8 @@ assign_op_oob normal,-g2009 ivltests assign_op_real_array normal,-g2009 ivltests assign_op_real_array_oob normal,-g2009 ivltests assign_op_type normal,-g2009 ivltests +automatic_error14 CE,-g2005-sv ivltests +automatic_error15 CE,-g2005-sv ivltests bitp1 normal,-g2005-sv ivltests bits normal,-g2005-sv ivltests bits2 normal,-g2005-sv ivltests