diff --git a/ivtest/ivltests/sv_array_cassign10.v b/ivtest/ivltests/sv_array_cassign10.v new file mode 100644 index 000000000..5a5fa6856 --- /dev/null +++ b/ivtest/ivltests/sv_array_cassign10.v @@ -0,0 +1,39 @@ +// Check that continuous assignments to unpacked arrays preserve drive strength. + +module test; + + reg failed; + reg [8*3-1:0] s; + + wire driven[0:1]; + wire resolved[0:1]; + + assign (weak1, weak0) driven = '{1'b1, 1'b0}; + assign resolved[0] = 1'b0; + assign resolved[1] = 1'b1; + assign (weak1, weak0) resolved = '{1'b1, 1'b0}; + + `define check_str(val, exp) begin \ + $swrite(s, "%v", val); \ + if (s != exp) begin \ + $display("FAILED(%0d). '%s' expected %s, got %s", `__LINE__, \ + `"val`", exp, s); \ + failed = 1'b1; \ + end \ + end + + initial begin + failed = 1'b0; + + #0; + `check_str(driven[0], "We1"); + `check_str(driven[1], "We0"); + `check_str(resolved[0], "St0"); + `check_str(resolved[1], "St1"); + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/ivltests/sv_array_cassign9.v b/ivtest/ivltests/sv_array_cassign9.v new file mode 100644 index 000000000..4db9f0d05 --- /dev/null +++ b/ivtest/ivltests/sv_array_cassign9.v @@ -0,0 +1,44 @@ +// Check that continuous assignments to unpacked arrays preserve delay. + +module test; + + reg failed; + + wire delayed[0:1]; + reg value[0:1]; + + assign #5 delayed = value; + + `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; + value[0] = 1'b1; + value[1] = 1'b0; + + #5; + `check(delayed[0], 1'b1) + `check(delayed[1], 1'b0) + + value[0] = 1'b0; + value[1] = 1'b1; + + #4; + `check(delayed[0], 1'b1) + `check(delayed[1], 1'b0) + + #1; + `check(delayed[0], 1'b0) + `check(delayed[1], 1'b1) + + if (!failed) begin + $display("PASSED"); + end + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 36d22f512..09f0498cf 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -242,6 +242,8 @@ sv_array_assign_single_fail1 vvp_tests/sv_array_assign_single_fail1.json sv_array_cassign6 vvp_tests/sv_array_cassign6.json sv_array_cassign7 vvp_tests/sv_array_cassign7.json sv_array_cassign8 vvp_tests/sv_array_cassign8.json +sv_array_cassign9 vvp_tests/sv_array_cassign9.json +sv_array_cassign10 vvp_tests/sv_array_cassign10.json sv_array_cassign_single vvp_tests/sv_array_cassign_single.json sv_array_cassign_single_fail1 vvp_tests/sv_array_cassign_single_fail1.json sv_automatic_2state vvp_tests/sv_automatic_2state.json diff --git a/ivtest/vvp_tests/sv_array_cassign10.json b/ivtest/vvp_tests/sv_array_cassign10.json new file mode 100644 index 000000000..0c3331289 --- /dev/null +++ b/ivtest/vvp_tests/sv_array_cassign10.json @@ -0,0 +1,9 @@ +{ + "type" : "normal", + "source" : "sv_array_cassign10.v", + "iverilog-args" : [ "-g2005-sv" ], + "vlog95" : { + "__comment" : "Array nets are not supported", + "type" : "CE" + } +} diff --git a/ivtest/vvp_tests/sv_array_cassign9.json b/ivtest/vvp_tests/sv_array_cassign9.json new file mode 100644 index 000000000..1b8bd91eb --- /dev/null +++ b/ivtest/vvp_tests/sv_array_cassign9.json @@ -0,0 +1,9 @@ +{ + "type" : "normal", + "source" : "sv_array_cassign9.v", + "iverilog-args" : [ "-g2005-sv" ], + "vlog95" : { + "__comment" : "Array nets are not supported", + "type" : "CE" + } +}