Q178FreeDesign Verification
Release reordered responses in request order
Interview prompt
Question
Responses may arrive out of order, but completed transactions must be emitted downstream in original global request order.
Starting point
Question code
function void on_req(int id, longint addr);
function bit on_rsp(int id);
function void drain_ready(ref longint released[$]);Reviewed example
Trace one case
Input
global requests A(id1),B(id2),C(id1); responses arrive for id2 then id1Expected output
after id2 response emit []; after id1 response emit [A,B]; C remains pendingB is complete but blocked behind A in global order; completing A releases the longest completed prefix without retiring C.
What to cover
Requirements
- Record global request order across all IDs.
- Assume responses remain FIFO within each ID.
- Mark a request complete without immediately removing it from global order.
- Emit and retire only the longest completed prefix.

