diff --git a/ivtest/ivltests/sv_package_import_order_typedef.v b/ivtest/ivltests/sv_package_import_order_typedef.v new file mode 100644 index 000000000..035f5bc59 --- /dev/null +++ b/ivtest/ivltests/sv_package_import_order_typedef.v @@ -0,0 +1,39 @@ +// Check package import ordering for types in nested scopes. + +package p1; + typedef logic [1:0] type_t; +endpackage + +package p2; + typedef logic [3:0] type_t; +endpackage + +module test; + + import p1::type_t; + + reg failed; + + `define check(val, exp) \ + if (val !== exp) begin \ + $display("FAILED(%0d). '%s' expected %b, got %b", `__LINE__, \ + `"val`", exp, val); \ + failed = 1'b1; \ + end + + initial begin : b + type_t value_before; + import p2::type_t; + type_t value_after; + + failed = 1'b0; + + `check($bits(value_before), 2); + `check($bits(value_after), 4); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 4a871549d..199e737c9 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -399,6 +399,7 @@ sv_module_port3 vvp_tests/sv_module_port3.json sv_module_port4 vvp_tests/sv_module_port4.json sv_net_array_decl_assign vvp_tests/sv_net_array_decl_assign.json sv_net_decl_assign vvp_tests/sv_net_decl_assign.json +sv_package_import_order_typedef vvp_tests/sv_package_import_order_typedef.json sv_package_lifetime vvp_tests/sv_package_lifetime.json sv_package_lifetime_fail vvp_tests/sv_package_lifetime_fail.json parameter_omit1 vvp_tests/parameter_omit1.json diff --git a/ivtest/vvp_tests/sv_package_import_order_typedef.json b/ivtest/vvp_tests/sv_package_import_order_typedef.json new file mode 100644 index 000000000..635c9cbda --- /dev/null +++ b/ivtest/vvp_tests/sv_package_import_order_typedef.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_package_import_order_typedef.v", + "iverilog-args" : [ "-g2005-sv" ] +}