Part 6 · Agents & Protocol IP · Intermediate
uvm_sequencer Hub: Arbitration, Routing, and Virtual Coordination
Hub - sequencer role, arbitration control, sequence routing APIs, default sequence libraries, virtual-sequencer bridging, and practical sequencer debug patterns.
Overview
The sequencer is the transaction traffic controller between high-level sequence intent and driver execution. It arbitrates competing sequences, delivers items, and optionally routes responses back to producers.
Strong sequencer design is about policy and observability: fair arbitration, deterministic startup behavior, safe response handling, and clear integration with virtual sequencing at environment level.
Sub-lessons in this topic
sequencer-role - exact sequencer responsibilities and boundaries relative to driver/sequence.
arbitration-policies - FIFO, weighted, random, strict priorities, and starvation prevention patterns.
sequence-routing - request and response routing with IDs, parent/child sequence contexts.
seq-library-default - sequence libraries, default sequence startup, and phased bring-up flows.
virtual-sequencer-bridge - coordinating multiple agent sequencers from a virtual sequence layer.
sequencer-debug-patterns - deterministic triage for deadlocks, starvation, and missing responses.
Big-picture sequencer map
Legend: [UVM] [AGT] [SEQ] [DRV] [MON]
[UVM] test starts sequence(s)
│
▼
[SEQ] uvm_sequencer arbitration queue
├─ choose next granted sequence
├─ deliver req item via seq_item_port
└─ route rsp to originating sequence
│
▼
[DRV] driver gets item, drives DUT protocol pins
│
▼
[MON] monitor observes DUT behavior and publishes analysis
sequencer controls item flow policy
driver controls protocol timing
monitor reports observed behavior[SEQ][UVM][AGT] one item lifecycle
t0 sequence creates req item
t1 sequence calls start_item/finish_item
t2 sequencer arbitrates among pending sequences
t3 driver get_next_item() receives granted req
t4 driver drives protocol and item_done()/put_response()
t5 sequencer routes response to owning sequence
ownership and arbitration happen in sequencer spaceKey takeaways
Sequencer is policy control for request/response item flow, not protocol pin driving.
Arbitration behavior determines fairness, throughput, and reproducibility.
Response routing must preserve sequence ownership and ordering intent.
Virtual sequencing scales this model across multiple coordinated agents.
Common pitfalls
Putting protocol timing details into sequencer instead of driver.
Assuming arbitration defaults match project fairness requirements.
Ignoring response ownership and causing mismatched sequence callbacks.
Treating virtual sequencer as a data path instead of coordination layer.