Part 6 · Agents & Protocol IP · Intermediate
uvm_driver Hub: Execution Contracts and Debug Discipline
Hub - flow semantics, completion boundaries, response handling, stall control, timing views, and hang triage patterns.
Overview
This hub defines a practical contract for uvm_driver : predictable ownership transfer, explicit completion semantics, and instrumentation that makes deadlocks diagnosable in minutes instead of hours.
The same patterns apply to simple bus drivers and complex VIP: keep pull/completion boundaries visible, classify failures deterministically, and make progress observable.
Sub-lessons in this topic
run-phase-loop - run_phase Loop.
virtual-interface-setup - Virtual Interface Setup.
protocol-drive-task - Protocol Drive Task.
reset-clock-discipline - Reset and Clock Discipline.
driver-error-handling - Driver Error Handling.
driver-debug-patterns - Driver Debug Patterns.
Architecture map
[DRV][TLM][UVM] handshake control spine
[UVM] sequence intent
-> [TLM] sequencer arbitration
-> [DRV] get_next_item
-> [DRV] protocol execution
-> [TLM] item_done / response
-> [UVM] sequence progress
invariants:
one grant -> one completion
bounded wait -> explicit status
identity-preserving responses[DRV][TLM][UVM] timeline anchors
- request granted
- transfer active
- completion emitted
- response consumed
these anchors should appear in logs and countersKey takeaways
Model handshake semantics as a protocol, not boilerplate.
Exactly-once completion is the top-level invariant.
Bounded waits and explicit statuses prevent silent hangs.
Minimal structured telemetry accelerates root-cause isolation.
Common pitfalls
Treating get_next_item/item_done as incidental implementation details.
Mixing response styles without clear sequence-side contract.
Ignoring reset/timeout branches in completion logic.
Debugging by waveform first without progress counters.