Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here4
  • UVM Foundations14
  • UVM Phases & Simulation Lifecycle26
    • The Phase System
    • UVM Phases: Build, Connect, Elaborate and Run
      • Why build_phase Is Top-Down
      • config_db Gets and Conditional Construction
      • Connect Phase: Bottom-Up TLM Wiring
      • Elaboration, Start and the Pre-Time-Zero Contract
      • The Run Phase: Parallel Execution and Duration
      • Runtime Sub-Phases: Reset, Configure, Main and Shutdown
      • What super.build_phase() Really Does
      • run_test, Timeouts and How a Simulation Ends
    • Objections Deep Dive: Drain Time and Propagation
    • Phase Debugging and End-of-Test Signoff
  • Factory & Configuration15
  • Transaction-Level Modeling (TLM)13
  • UVM Sequences & Stimulus21
  • UVM Agents & Protocol VIP21
  • Environment & Test Classes11
  • Checking & Coverage in UVM21
  • UVM Register Abstraction Layer (RAL)22
  • Advanced UVM in Practice13
  • Debug & Regression10
  • Coding Practice47
  • Verification in Industry Practice10
  • Senior Prep: Architecture, Leadership and Interviews32
Loading lesson

‹UVM Phases & Simulation Lifecycle
  1. Topics
  2. UVM Verification
  3. UVM Phases & Simulation Lifecycle
  4. UVM Phases: Build, Connect, Elaborate and Run

Part 2 · Phases & Lifecycle · Intermediate

UVM Phases: Build, Connect, Elaborate and Run

Each phase of the DMA bench in turn: top-down build and overrides, configuration, wiring, the time-0 audit, the run window, and how a simulation ends.

  • 8topics
  • 8lessons
On this page

    The Phase System topic explained the rules. This topic applies them, one phase at a time, to the course's DMA bench: how its tree is built and configured, how it is wired and audited at time 0, how its run window is owned, and how the simulation finally stops, cleanly or with a fatal.

    What you will be able to do

    • Place a factory override correctly in any test, and explain exactly when "before super" matters.

    • Debug a failed config_db get from the path, type and field name, including the wildcard that never matches the agent itself.

    • Wire agents and envs with the right port, export and imp rules, and read a binding error.

    • Use end_of_elaboration as an audit point, knowing that any error before it stops the test.

    • Say who owns the run window, what the runtime phases are for, and why drivers stay in run_phase.

    • Explain every way a UVM simulation ends: normal completion, a fatal, the quit count, and the timeout.

    Diagram: run_test, build, connect and end_of_elaboration at time 0, run from 0 to 655 ns, then check and report, then the report summary and $finish.
    The DMA smoke test from start to finish. Everything up to end_of_elaboration happens at time 0; run_phase owns the 655 ns of traffic; the cleanup phases and the final summary happen at the time run ends.

    Lessons in order

    Lesson

    What it answers

    Why build_phase Is Top-Down

    create versus build, and when a factory override is too late, measured on the bench.

    config_db Gets and Conditional Construction

    Checked gets, the wildcard trap, and building only what the configuration selects.

    Connect Phase: Bottom-Up TLM Wiring

    Port, export and imp rules, handle forwarding, and binding errors.

    Elaboration, Start and the Pre-Time-Zero Contract

    What happens when end_of_elaboration starts, and how to audit the tree.

    The Run Phase: Parallel Execution and Duration

    Who owns the run window, and what every component does inside it.

    Runtime Sub-Phases

    Reset, configure, main and shutdown, and why drivers stay in run_phase.

    What super.build_phase() Really Does

    The library's base phase methods, and the silent failure when super is skipped.

    run_test, Timeouts and How a Simulation Ends

    Test selection, the timeout, the quit count, report_summarize and who calls $finish.

    Interview

    Senior interviews often trace one symptom back through the phases: a null handle in connect is a build bug, a test that passes at time 0 is a missing objection, and a regression slot burned for hours is a missing timeout. Each lesson here ends with the questions you are likely to get.

    Related topics

    • Previous topic: The Phase System

    • Next topic: Objections

    PreviousNext: Why build_phase Is Top-Down

    Up next

    Up nextWhy build_phase Is Top-Down

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • The Phase System
    • Objections Deep Dive: Drain Time and Propagation
    • Phase Debugging and End-of-Test Signoff