From 9bbdb0da0ebb2bd2d06fbfbe2cc85629d59cbd6a Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 30 Jun 2026 18:07:01 -0700 Subject: [PATCH] Add regression test for automatic terms in assignment patterns Check that automatic variables referenced through an assignment pattern in a procedural `force` statement are rejected. Signed-off-by: Lars-Peter Clausen --- .../sv_assign_pattern_auto_force_fail.v | 19 +++++++++++++++++++ ivtest/regress-vvp.list | 1 + .../sv_assign_pattern_auto_force_fail.json | 5 +++++ 3 files changed, 25 insertions(+) create mode 100644 ivtest/ivltests/sv_assign_pattern_auto_force_fail.v create mode 100644 ivtest/vvp_tests/sv_assign_pattern_auto_force_fail.json diff --git a/ivtest/ivltests/sv_assign_pattern_auto_force_fail.v b/ivtest/ivltests/sv_assign_pattern_auto_force_fail.v new file mode 100644 index 000000000..d260e122b --- /dev/null +++ b/ivtest/ivltests/sv_assign_pattern_auto_force_fail.v @@ -0,0 +1,19 @@ +// Check that assignment patterns cannot reference automatic variables in +// procedural force statements. + +module test; + + reg [3:0] result; + + task automatic t; + input [3:0] value; + begin + force result = '{value[3], value[2], value[1], value[0]}; + end + endtask + + initial begin + t(4'ha); + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 424ce1cc6..d9db19f54 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -259,6 +259,7 @@ sv_array_cassign9 vvp_tests/sv_array_cassign9.json sv_array_cassign10 vvp_tests/sv_array_cassign10.json sv_array_cassign_single vvp_tests/sv_array_cassign_single.json sv_array_cassign_single_fail1 vvp_tests/sv_array_cassign_single_fail1.json +sv_assign_pattern_auto_force_fail vvp_tests/sv_assign_pattern_auto_force_fail.json sv_automatic_2state vvp_tests/sv_automatic_2state.json sv_bad_member_lval_proc_fail vvp_tests/sv_bad_member_lval_proc_fail.json sv_byte_array_string1 vvp_tests/sv_byte_array_string1.json diff --git a/ivtest/vvp_tests/sv_assign_pattern_auto_force_fail.json b/ivtest/vvp_tests/sv_assign_pattern_auto_force_fail.json new file mode 100644 index 000000000..29f301d70 --- /dev/null +++ b/ivtest/vvp_tests/sv_assign_pattern_auto_force_fail.json @@ -0,0 +1,5 @@ +{ + "type" : "CE", + "source" : "sv_assign_pattern_auto_force_fail.v", + "iverilog-args" : [ "-g2005-sv" ] +}