diff --git a/ivtest/ivltests/nb_ec_repeat_auto.v b/ivtest/ivltests/nb_ec_repeat_auto.v new file mode 100644 index 000000000..c9e7dff87 --- /dev/null +++ b/ivtest/ivltests/nb_ec_repeat_auto.v @@ -0,0 +1,46 @@ +// Check that non-blocking event control repeat counts can use automatic terms. + +module test; + + reg clk; + reg failed; + reg [3:0] result; + + `define check(val, exp) \ + if (val !== exp) begin \ + $display("FAILED(%0d). '%s' expected %b, got %b", `__LINE__, \ + `"val`", exp, val); \ + failed = 1'b1; \ + end + + task automatic schedule_update; + input integer count; + begin + result <= repeat(count) @(posedge clk) 4'ha; + end + endtask + + always #5 clk = ~clk; + + initial begin + clk = 1'b0; + failed = 1'b0; + result = 4'h0; + + schedule_update(2); + + @(posedge clk); + #1; + `check(result, 4'h0); + + @(posedge clk); + #1; + `check(result, 4'ha); + + if (!failed) begin + $display("PASSED"); + end + $finish; + end + +endmodule diff --git a/ivtest/regress-vvp.list b/ivtest/regress-vvp.list index 424ce1cc6..353a668c7 100644 --- a/ivtest/regress-vvp.list +++ b/ivtest/regress-vvp.list @@ -174,6 +174,7 @@ module_port_array1 vvp_tests/module_port_array1.json module_port_array_fail1 vvp_tests/module_port_array_fail1.json module_port_array_init1 vvp_tests/module_port_array_init1.json monitor4 vvp_tests/monitor4.json +nb_ec_repeat_auto vvp_tests/nb_ec_repeat_auto.json named_event_edge_fail vvp_tests/named_event_edge_fail.json named_event_negedge_fail vvp_tests/named_event_negedge_fail.json named_event_posedge_fail vvp_tests/named_event_posedge_fail.json diff --git a/ivtest/vvp_tests/nb_ec_repeat_auto.json b/ivtest/vvp_tests/nb_ec_repeat_auto.json new file mode 100644 index 000000000..382425f56 --- /dev/null +++ b/ivtest/vvp_tests/nb_ec_repeat_auto.json @@ -0,0 +1,8 @@ +{ + "type" : "normal", + "source" : "nb_ec_repeat_auto.v", + "vlog95" : { + "__comment" : "Automatic tasks are not supported", + "type" : "CE" + } +}