The Verilog wrapper maintains the cycle state, and C parser becomes a combinational logic which Verilog queries to check if there is a request in the trace at a specific {cycle, core_id, thread_id}.