Verification #7 · 2026-09-30 · Processes · Medium · about 15 min

The timeout that outlives its wait

Tests talk to the DUT through ack_if in ack_if.sv. After raising req, a test calls bus.wait_ack(limit, ok), which waits for ack with a timeout:

  • If ack is 1 at one of the next limit rising edges, ok = 1 and the task returns at that edge.
  • Otherwise it counts one timeout in timeouts, sets ok = 0 and returns at the limit-th edge.
  • Tests call it from processes that have their own background threads, started with fork ... join_none. Those must keep running.

Every request in the current testbench is acked in time, yet timeouts keeps growing, with TIMEOUT messages in the middle of later requests. Fix wait_ack.

Write and run your answer in the browser. The hidden tests check it, and it’s free.