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

  1. sequencer-role - exact sequencer responsibilities and boundaries relative to driver/sequence.

  2. arbitration-policies - FIFO, weighted, random, strict priorities, and starvation prevention patterns.

  3. sequence-routing - request and response routing with IDs, parent/child sequence contexts.

  4. seq-library-default - sequence libraries, default sequence startup, and phased bring-up flows.

  5. virtual-sequencer-bridge - coordinating multiple agent sequencers from a virtual sequence layer.

  6. sequencer-debug-patterns - deterministic triage for deadlocks, starvation, and missing responses.

Big-picture sequencer map

diagram
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
diagram
[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 space

Key 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.