From 2b67d9f7540191454a91361c0e5f220b5364bd5a Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Sat, 4 Jul 2026 12:17:25 -0700 Subject: [PATCH] Add regression tests for UDP names shadowing type identifiers Check that UDP primitive and port names can shadow visible type identifiers. Cover old-style UDP declarations, including input and output declarations and the initial target, as well as ANSI-style UDP port declarations. Signed-off-by: Lars-Peter Clausen --- .../sv_type_identifier_udp_ansi_name.v | 25 ++++++++++++++++ ivtest/ivltests/sv_type_identifier_udp_name.v | 29 +++++++++++++++++++ ivtest/regress-vvp.list | 2 ++ .../sv_type_identifier_udp_ansi_name.json | 5 ++++ .../sv_type_identifier_udp_name.json | 5 ++++ 5 files changed, 66 insertions(+) create mode 100644 ivtest/ivltests/sv_type_identifier_udp_ansi_name.v create mode 100644 ivtest/ivltests/sv_type_identifier_udp_name.v create mode 100644 ivtest/vvp_tests/sv_type_identifier_udp_ansi_name.json create mode 100644 ivtest/vvp_tests/sv_type_identifier_udp_name.json diff --git a/ivtest/ivltests/sv_type_identifier_udp_ansi_name.v b/ivtest/ivltests/sv_type_identifier_udp_ansi_name.v new file mode 100644 index 000000000..4b44eee0d --- /dev/null +++ b/ivtest/ivltests/sv_type_identifier_udp_ansi_name.v @@ -0,0 +1,25 @@ +// Check that ANSI-style UDP names can shadow visible type identifiers. + +package p; + typedef int ANSI_UDP; + typedef int Y; + typedef int I0; + typedef int I1; +endpackage + +import p::*; + +primitive ANSI_UDP (output Y, input I0, input I1); + table + 00 : 0; + 01 : 0; + 10 : 0; + 11 : 1; + endtable +endprimitive + +module test; + initial begin + $display("PASSED"); + end +endmodule diff --git a/ivtest/ivltests/sv_type_identifier_udp_name.v b/ivtest/ivltests/sv_type_identifier_udp_name.v new file mode 100644 index 000000000..666dd4053 --- /dev/null +++ b/ivtest/ivltests/sv_type_identifier_udp_name.v @@ -0,0 +1,29 @@ +// Check that old-style UDP names can shadow visible type identifiers. + +package p; + typedef int OLD_UDP; + typedef int Q; + typedef int A; + typedef int B; +endpackage + +import p::*; + +primitive OLD_UDP (Q, A, B); + output reg Q; + input A, B; + initial Q = 0; + + table + 00 : ? : 0; + 01 : ? : 0; + 10 : ? : 0; + 11 : ? : 1; + endtable +endprimitive + +module test; + initial begin + $display("PASSED"); + end +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 85cfa1dda..26594699e 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -403,6 +403,8 @@ sv_type_identifier_port_name vvp_tests/sv_type_identifier_port_name.json sv_type_identifier_specparam_name vvp_tests/sv_type_identifier_specparam_name.json sv_type_identifier_task_function_argument_name vvp_tests/sv_type_identifier_task_function_argument_name.json sv_type_identifier_task_name vvp_tests/sv_type_identifier_task_name.json +sv_type_identifier_udp_ansi_name vvp_tests/sv_type_identifier_udp_ansi_name.json +sv_type_identifier_udp_name vvp_tests/sv_type_identifier_udp_name.json sv_type_identifier_variable_name vvp_tests/sv_type_identifier_variable_name.json sv_type_param_restrict_class1 vvp_tests/sv_type_param_restrict_class1.json sv_type_param_restrict_class2 vvp_tests/sv_type_param_restrict_class2.json diff --git a/ivtest/vvp_tests/sv_type_identifier_udp_ansi_name.json b/ivtest/vvp_tests/sv_type_identifier_udp_ansi_name.json new file mode 100644 index 000000000..dd6b8e056 --- /dev/null +++ b/ivtest/vvp_tests/sv_type_identifier_udp_ansi_name.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_type_identifier_udp_ansi_name.v", + "iverilog-args" : [ "-g2005-sv" ] +} diff --git a/ivtest/vvp_tests/sv_type_identifier_udp_name.json b/ivtest/vvp_tests/sv_type_identifier_udp_name.json new file mode 100644 index 000000000..8291d8798 --- /dev/null +++ b/ivtest/vvp_tests/sv_type_identifier_udp_name.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_type_identifier_udp_name.v", + "iverilog-args" : [ "-g2005-sv" ] +}