diff --git a/ivtest/ivltests/sv_package_lifetime.v b/ivtest/ivltests/sv_package_lifetime.v new file mode 100644 index 000000000..12b3b3338 --- /dev/null +++ b/ivtest/ivltests/sv_package_lifetime.v @@ -0,0 +1,40 @@ +// Check that static lifetime can be specified for variables declared in a +// package. + +`define check(val, exp) \ + if (val !== exp) begin \ + $display("FAILED(%0d). '%s' expected %b, got %b", `__LINE__, `"val`", exp, val); \ + failed = 1'b1; \ + end + +package P; + static int x = 1; + const static int y = 2; + var static z; + var static logic [3:0] w = 4'h3; +endpackage + +package automatic Q; + int a = 4; + static int b = 5; +endpackage + +module test; + import P::*; + import Q::*; + + bit failed = 1'b0; + + initial begin + `check(x, 1) + `check(y, 2) + `check(z, 1'bx) + `check(w, 4'h3) + `check(a, 4) + `check(b, 5) + + if (!failed) begin + $display("PASSED"); + end + end +endmodule diff --git a/ivtest/ivltests/sv_package_lifetime_fail.v b/ivtest/ivltests/sv_package_lifetime_fail.v new file mode 100644 index 000000000..3b44251e3 --- /dev/null +++ b/ivtest/ivltests/sv_package_lifetime_fail.v @@ -0,0 +1,6 @@ +// Check that automatic lifetime cannot be specified for variables declared in +// a package. + +package P; + automatic int x; +endpackage diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 1dafa1a1f..e9c9a1633 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -280,6 +280,8 @@ sv_module_port1 vvp_tests/sv_module_port1.json sv_module_port2 vvp_tests/sv_module_port2.json sv_module_port3 vvp_tests/sv_module_port3.json sv_module_port4 vvp_tests/sv_module_port4.json +sv_package_lifetime vvp_tests/sv_package_lifetime.json +sv_package_lifetime_fail vvp_tests/sv_package_lifetime_fail.json sv_parameter_type vvp_tests/sv_parameter_type.json sv_queue_assign_op vvp_tests/sv_queue_assign_op.json sv_wildcard_import8 vvp_tests/sv_wildcard_import8.json diff --git a/ivtest/vvp_tests/sv_package_lifetime.json b/ivtest/vvp_tests/sv_package_lifetime.json new file mode 100644 index 000000000..b59df3399 --- /dev/null +++ b/ivtest/vvp_tests/sv_package_lifetime.json @@ -0,0 +1,5 @@ +{ + "type" : "normal", + "source" : "sv_package_lifetime.v", + "iverilog-args" : [ "-g2005-sv" ] +} diff --git a/ivtest/vvp_tests/sv_package_lifetime_fail.json b/ivtest/vvp_tests/sv_package_lifetime_fail.json new file mode 100644 index 000000000..8a0e7f1e4 --- /dev/null +++ b/ivtest/vvp_tests/sv_package_lifetime_fail.json @@ -0,0 +1,5 @@ +{ + "type" : "CE", + "source" : "sv_package_lifetime_fail.v", + "iverilog-args" : [ "-g2005-sv" ] +}