verilator/test_regress/t/t_event_dynamic_wait.v

46 lines
860 B
Systemverilog
Raw Permalink Normal View History

// DESCRIPTION: Verilator: dynamic wait on stale class event
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2026 Wilson Snyder
// SPDX-License-Identifier: CC0-1.0
class EventHolder;
2026-05-14 03:00:34 +02:00
event ev;
time t_wait = '0;
2026-05-14 03:00:34 +02:00
task wait_once;
@ev;
t_wait = $time;
endtask
endclass
module t;
2026-05-14 03:00:34 +02:00
EventHolder h;
initial begin
h = new;
// Leave the event in the fired state before a class-method event control
// starts. Dynamic waits must pre-clear this stale state before evaluating.
->h.ev;
#10;
fork
begin
#10->h.ev;
end
2026-05-14 03:00:34 +02:00
begin
h.wait_once;
end
join
if (h.t_wait != 20) begin
$display("%%Error: wait time=%0d expected=20", h.t_wait);
$stop;
end
2026-05-14 03:00:34 +02:00
$write("*-* All Finished *-*\n");
$finish;
end
endmodule