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

AboutRoadmapCareersInternshipsFAQContactPrivacyTerms
Skip to lesson

Course contents

  • Start Here4
  • UVM Foundations14
  • UVM Phases & Simulation Lifecycle26
  • Factory & Configuration15
    • UVM Factory: Registration, Overrides and Debug
    • config_db and Resources
  • 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 Verification
  1. Topics
  2. UVM Verification
  3. Factory & Configuration
On this page

    Part 3 of 15Part 3 of 15/Factory & ConfigurationIntermediate

    Factory & Configuration

    How a test changes which classes a reusable bench builds (the factory) and how each instance is configured (config_db), taught on the DMA bench.

    • 2topics
    • 15lessons

    A reusable testbench is written once and then bent by every test that uses it. In the DMA bench, dma_truncate_test swaps the stream driver for one that cuts packets short, dma_drain_test swaps the scoreboard for one that owns end of test, and dma_rand_test picks up a job description if someone published one. Not one of them edits the env. Two mechanisms make that possible: the factory decides which class each create call builds, and config_db decides how each instance is configured.

    What you will be able to do

    • Swap a component, a sequence item or a sequence from a test or the command line, and predict which override wins.

    • Explain why an override that is clearly registered never runs, and fix it.

    • Write config_db sets and gets that match, and state who wins when two settings collide, during build and after.

    • Design config objects, keep config out of hot paths, and configure sequences per path.

    Where both meet: the test's build_phase

    Flow: the test sets overrides and config, the env is created and builds its agents, each agent reads its config and creates its children through the factory.
    Build runs top-down, so policy set in the test reaches every create and get below it. Overrides and config sets go first in the test's build_phase.

    The two topics

    Topic

    Lessons

    What it covers

    UVM Factory: registration, overrides and debug

    8

    Registration, create, override resolution (instance first, first match wins, chaining), timing and debug, parameterized and abstract classes, command-line overrides, items and sequences.

    config_db and resources

    7

    The set/get contract, paths and wildcards, precedence at build and after, config objects, performance, auto-config, configuring sequences.

    Read the factory topic first: config_db lessons use overrides in their examples. The two rule-heavy lessons, Override resolution and config_db resolution order, are the single homes for their rules; every other lesson links to them.

    Two different "who wins" rules live in this part, and interviewers like to mix them up. Factory: instance overrides before type overrides, and the first matching instance override wins. config_db: during build the setter higher in the hierarchy wins, otherwise the last set wins. Neither rule looks at how specific a path is.

    Typical questions from this part: type versus instance override and two competing instance overrides; why a derived scoreboard's methods never ran after an override; who wins when the agent and the test both set the same field; why env.agt.* does not configure the agent; what super.build_phase does for config; and how a sequence reads config_db.

    Related topics

    • Up: UVM course hub

    • Previous: Phases

    • Next: TLM

    PreviousNext: UVM Factory: Registration, Overrides and Debug

    Up next

    Up nextUVM Factory: Registration, Overrides and Debug

    Sign in to save progress

    Practice this lessonPrevious lessonReport an error

    See also

    • Start Here
    • UVM Foundations
    • UVM Phases & Simulation Lifecycle