diff --git a/ivtest/ivltests/sv_package_import_order_dotstar.v b/ivtest/ivltests/sv_package_import_order_dotstar.v new file mode 100644 index 000000000..f050bed34 --- /dev/null +++ b/ivtest/ivltests/sv_package_import_order_dotstar.v @@ -0,0 +1,40 @@ +// Check package import ordering for implicit named port connections. + +package p; + integer value = 2; +endpackage + +module child(input integer value = 1, output wire [31:0] result); + + assign result = value; + +endmodule + +module test; + + wire [31:0] result; + child i_child(.result(result), .*); + + import p::value; + + 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 + failed = 1'b0; + #1; + + `check(result, 1); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/ivltests/sv_package_import_order_explicit.v b/ivtest/ivltests/sv_package_import_order_explicit.v new file mode 100644 index 000000000..adfb46766 --- /dev/null +++ b/ivtest/ivltests/sv_package_import_order_explicit.v @@ -0,0 +1,36 @@ +// Check that an explicit package import only affects following references. + +package p; + parameter value = 2; +endpackage + +parameter value = 1; + +module test; + + localparam value_before = value; + import p::value; + localparam value_after = value; + import p::value; + + 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 + failed = 1'b0; + + `check(value_before, 1); + `check(value_after, 2); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/ivltests/sv_package_import_order_wildcard.v b/ivtest/ivltests/sv_package_import_order_wildcard.v new file mode 100644 index 000000000..b317b3ebb --- /dev/null +++ b/ivtest/ivltests/sv_package_import_order_wildcard.v @@ -0,0 +1,35 @@ +// Check that a wildcard package import only affects following references. + +package p; + parameter value = 2; +endpackage + +parameter value = 1; + +module test; + + localparam value_before = value; + import p::*; + localparam value_after = value; + + 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 + failed = 1'b0; + + `check(value_before, 1); + `check(value_after, 2); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 199e737c9..89e41da1c 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -399,7 +399,10 @@ 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_dotstar vvp_tests/sv_package_import_order_dotstar.json +sv_package_import_order_explicit vvp_tests/sv_package_import_order_explicit.json sv_package_import_order_typedef vvp_tests/sv_package_import_order_typedef.json +sv_package_import_order_wildcard vvp_tests/sv_package_import_order_wildcard.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_dotstar.json b/ivtest/vvp_tests/sv_package_import_order_dotstar.json new file mode 100644 index 000000000..d1485d6c0 --- /dev/null +++ b/ivtest/vvp_tests/sv_package_import_order_dotstar.json @@ -0,0 +1,8 @@ +{ + "type" : "normal", + "source" : "sv_package_import_order_dotstar.v", + "iverilog-args" : [ "-g2005-sv" ], + "vlog95" : { + "iverilog-args" : [ "-pallowsigned=1" ] + } +} diff --git a/ivtest/vvp_tests/sv_package_import_order_explicit.json b/ivtest/vvp_tests/sv_package_import_order_explicit.json new file mode 100644 index 000000000..eaa2b8f59 --- /dev/null +++ b/ivtest/vvp_tests/sv_package_import_order_explicit.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_package_import_order_explicit.v", + "iverilog-args" : [ "-g2005-sv" ] +} diff --git a/ivtest/vvp_tests/sv_package_import_order_wildcard.json b/ivtest/vvp_tests/sv_package_import_order_wildcard.json new file mode 100644 index 000000000..87f96da61 --- /dev/null +++ b/ivtest/vvp_tests/sv_package_import_order_wildcard.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_package_import_order_wildcard.v", + "iverilog-args" : [ "-g2005-sv" ] +}