Sequences

In UVM, stimulus generation is decoupled from stimulus delivery through the sequence/sequencer/driver mechanism. A uvm_sequence is a class whose body() task generates one or more uvm_sequence_item transactions and sends them to a uvm_sequencer via start_item()/finish_item() (or the shorthand \uvm_do macros). The **sequencer** arbitrates between multiple sequences that may be running concurrently, and the **driver** pulls items from the sequencer (get_next_item()/item_done()`) and converts each one into pin-level signal activity over one or more clock cycles.

This random generation decoupling enables powerful reuse patterns. A low-level sequence might generate a single constrained-random transaction, while a higher-level sequence generates a stream of such transactions representing a realistic traffic pattern. Sequences can be composed hierarchically: a test-level sequence selects which traffic-pattern sequences to run and in what proportion.

Sequence layering supports composition and reuse. A virtual sequence running on a virtual sequencer can coordinate multiple sequences across multiple agents simultaneously — for example, driving a CPU-side write sequence on one interface while a memory-side response sequence runs on another, keeping them synchronized through events or shared configuration objects.

The factory pattern is heavily used here: a base test can register a default sequence for each sequencer, and a derived test can override it (via set_type_override or set_inst_override) to substitute error-injecting or corner-case sequences without touching the environment. Response handling — where the driver returns a response item back through the sequencer to the originating sequence via get_response() — lets sequences make decisions based on DUT feedback (e.g., retrying a transaction after a NACK). Mastering sequence layering, arbitration (grab/ungrab, priority), and virtual sequences is what lets a single UVM environment support everything from simple smoke tests to complex, multi-interface system-level scenarios.

Resume Tips

Join VLSI Korea

Follow vlsi.kr for semiconductor design career guides, tooling deep-dives, and updates to these roadmaps.

Roadmaps STA Physical Design RTL Design Design Verification vlsi.kr Blog

VLSI Korea Roadmaps

Interactive career roadmaps for semiconductor design — Static Timing Analysis, Physical Design, RTL Design, Verification, Analog Design, DFT, and EDA Toolflow Engineering. Built for students, junior engineers, and experienced professionals.

© VLSI Korea · vlsi.kr