diff --git a/ivtest/ivltests/sv_type_identifier_enum_item_name.v b/ivtest/ivltests/sv_type_identifier_enum_item_name.v new file mode 100644 index 000000000..9be765a20 --- /dev/null +++ b/ivtest/ivltests/sv_type_identifier_enum_item_name.v @@ -0,0 +1,40 @@ +// Check that enum item names can shadow visible type identifiers. + +typedef int T; +typedef int U; +typedef int V; + +module test; + + reg failed; + + `define check(value, expected, error) \ + if ((value) !== (expected)) begin \ + $display("FAILED(%0d). %s", `__LINE__, error); \ + $display(" expected %0h, got %0h", expected, value); \ + failed = 1'b1; \ + end + + enum { + T = 3, + U[2] = 5, + V[3:4] = 9 + } e; + + initial begin + failed = 1'b0; + + e = T; + + `check(e, 3, "Enum item name did not hide typedef"); + `check(U0, 5, "Enum item sequence name did not hide typedef"); + `check(U1, 6, "Enum item sequence value mismatch"); + `check(V3, 9, "Enum item range name did not hide typedef"); + `check(V4, 10, "Enum item range value mismatch"); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index b7bf85cc5..2c8699b64 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -386,6 +386,7 @@ sv_soft_packed_union_fail1 vvp_tests/sv_soft_packed_union_fail1.json sv_super_member_fail vvp_tests/sv_super_member_fail.json sv_type_identifier_ams_name_fields vvp_tests/sv_type_identifier_ams_name_fields.json sv_type_identifier_config_name vvp_tests/sv_type_identifier_config_name.json +sv_type_identifier_enum_item_name vvp_tests/sv_type_identifier_enum_item_name.json sv_type_identifier_foreach_name vvp_tests/sv_type_identifier_foreach_name.json sv_type_identifier_genvar_name vvp_tests/sv_type_identifier_genvar_name.json sv_type_identifier_modport_name vvp_tests/sv_type_identifier_modport_name.json diff --git a/ivtest/vvp_tests/sv_type_identifier_enum_item_name.json b/ivtest/vvp_tests/sv_type_identifier_enum_item_name.json new file mode 100644 index 000000000..25adc3e46 --- /dev/null +++ b/ivtest/vvp_tests/sv_type_identifier_enum_item_name.json @@ -0,0 +1,9 @@ +{ + "type" : "normal", + "source" : "sv_type_identifier_enum_item_name.v", + "iverilog-args" : [ "-g2005-sv" ], + "vlog95" : { + "__comment" : "Enums are SystemVerilog", + "type" : "CE" + } +}