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
    • What Is UVM?
    • Testbench Architecture and Environment Composition
      • The Four Layers
      • The Agent as the Reuse Unit
      • The Env Owns the Infrastructure
      • Coordinating Agents
      • Active-Passive Mixes and Composition Debug
  • UVM Phases & Simulation Lifecycle26
  • 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 Foundations
  1. Topics
  2. UVM Verification
  3. UVM Foundations
  4. Testbench Architecture and Environment Composition

Part 1 · Foundations · Intermediate

Testbench Architecture and Environment Composition

How a UVM testbench is layered, what the env owns, how agents are reused active or passive, how agents are coordinated, and how to debug a composed bench.

  • 5topics
  • 5lessons

Every UVM interview has a whiteboard moment: draw the testbench. Anyone can draw boxes. What the interviewer is really checking is whether you know which box changes when the requirements change: a new scenario, a new protocol, the same block inside a chip. This topic answers that for the DMA bench, one boundary at a time.

What you will be able to do

  • Draw the four layers of a UVM testbench and say what crosses each boundary.

  • Build an agent that works active at block level and passive at chip level without a code change.

  • Wire an env so build creates and connect connects, with analysis traffic fanning out to every checker.

  • Coordinate several agents into one scenario, with or without a virtual sequencer.

  • Debug a composition problem in a fixed order instead of by guesswork.

Component tree: the test contains the env; the env contains an active APB agent, an active input stream agent, a passive output stream agent and a scoreboard, with an optional virtual sequencer and register model.
The DMA bench's component tree. Solid lines are parent-child; dotted boxes are pieces later chapters add; dotted arrows are analysis traffic from each agent's monitor to the scoreboard.

Layer

Owns

In the DMA bench

Test

The scenario, overrides, the top-level stimulus

dma_smoke_test, dma_truncate_test, ...

Env

Agents, checkers, coverage, the register model

dma_env

Agent

Driver, sequencer and monitor for one interface

apb_agent, axis_agent (twice)

Interface

The pins, reached through a virtual interface

apb_if, axis_if, irq_if

Lesson

What it covers

The four layers

What each layer owns, what crosses each boundary, and how virtual interfaces reach the right components.

The agent as the reuse unit

Active and passive builds, the agent's public analysis port, and block-to-chip reuse.

The env owns the infrastructure

Build creates, connect wires, analysis fan-out, and the two ways to hand config down.

Coordinating agents

Turning a DMA job into one virtual sequence, and the ordering bug that coordination prevents.

Active-passive mixes and composition debug

The same env at block and subsystem level, and a fixed triage order with UVM's own debug calls.

Related topics

  • Up: UVM Foundations

  • Before this: Your first UVM testbench

  • Next part: Phases

PreviousNext: The Four Layers

Up next

Up nextThe Four Layers

Sign in to save progress

Practice this lessonReport an error

See also

  • What Is UVM?