Skip to UVM questions

UVM interview preparation

Refresh the UVM concepts, SystemVerilog patterns, and verification reasoning you need before a design verification interview.

UVM Testbench architecture Know what lives where.

Separate persistent structure from transient data, then explain how an agent packages a protocol without mixing stimulus, observation, and checking.

Concept model

UVM component hierarchy and object flow

Persistent structureComponent hierarchy
componentuvm_test
componentuvm_env
Active agent
sequencer
driver
monitor
Passive agent
monitor
Transient intentObject stream
scenario objectsequence
transaction objectsequence item
componentdriver

A configuration object can live for the full test. Object does not automatically mean short-lived.

Components form the persistent hierarchy. Objects carry configuration and transactions through that hierarchy. An active agent drives and observes; a passive agent only observes.

Strong answer

A uvm_component is a persistent, hierarchical testbench element that participates in phasing. A uvm_object is a non-hierarchical data or behavior object used for items, sequences, and configuration.

Reason it through

  • Components have a parent, a hierarchical path, phase callbacks, and report context. Drivers, monitors, agents, environments, scoreboards, and tests are components.
  • Objects have names but no component parent or phase callbacks. Sequence items, sequences, register transactions, and configuration objects are typical examples.
  • Call components structural and objects transactional, but do not call components compile-time static. Both are SystemVerilog class instances; their ownership and lifecycle contracts differ.
Component and object comparison
Dimensionuvm_componentuvm_object
Primary rolePersistent testbench structureData, policy, or scenario
HierarchyHas parent and full pathNo component hierarchy
PhasingReceives phase callbacksDoes not participate directly
Examplesagent, driver, monitor, envitem, sequence, config

UVM Phasing and end of test Know when time may pass.

Explain the ordered function phases, the two concurrent run-time schedules, and the objection contract that decides when a time-consuming phase may finish.

Concept model

The UVM lifecycle has order and concurrency

top-downbuild
bottom-upconnect + elaborate
bottom-upstart of simulation
time advancesrun
bottom-upextract + check + report
top-downfinal
Common domainrun_phaseAlways-on drivers, monitors, and scoreboards
Runs concurrently
Run-time schedule12 ordered task phasesExplicit reset, configure, main, and shutdown synchronization
  1. 01pre_reset
  2. 02reset
  3. 03post_reset
  4. 04pre_configure
  5. 05configure
  6. 06post_configure
  7. 07pre_main
  8. 08main
  9. 09post_main
  10. 10pre_shutdown
  11. 11shutdown
  12. 12post_shutdown

Construction and cleanup are ordered across the hierarchy. The common run phase executes concurrently with the twelve-phase run-time schedule, so a team needs one consistent phase policy.

UVM Factory and configuration Swap behavior without rewiring.

Use the factory to replace types at creation time and the configuration database to deliver typed settings by scope, while keeping both mechanisms predictable.

Concept model

Two late-binding paths, two different jobs

Factory pathChange the created type
test installs override
factory resolver
error_driver
agent.driver

The environment still requests base_driver. The factory selects the compatible override before creation.

Configuration pathChange component policy
typed set()
scope + field
checked get()
agent config

The component type is unchanged. A typed value, often a config object or virtual interface, controls its behavior.

A factory override changes what gets created. A config_db entry changes how an existing component behaves. Both must be installed before the consumer needs them.

UVM Sequences and drivers Follow one request end to end.

Trace arbitration, request delivery, pin driving, completion, and multi-interface coordination without confusing sequences, sequencers, items, or drivers.

Concept model

A request moves; ownership changes

system scenariovirtual sequence
control busregister sequencer
data busstream sequencer
creates intentsequence
arbitratessequencer
drives pinsdriver
observes signalsDUT
  1. 01start_item()wait for grant
  2. 02finish_item()send request
  3. 03get_next_item()receive request
  4. 04drive()honor protocol
  5. 05item_done()release sequence

The sequence creates intent, the sequencer arbitrates, the driver converts the granted item to signal activity, and the DUT sees only the interface protocol.

UVM TLM and checking paths Separate actual from expected.

Treat the monitor as the source of observed behavior, use analysis connections for fan-out, and keep prediction independent from the actual-data path.

Concept model

Observation is a broadcast; checking is a comparison

pin behaviorDUT
reconstructmonitor
broadcastanalysis port
sample actualcoverage
create expectedpredictor
diagnosticstrace sink
from predictorexpected stream
from monitoractual stream
comparescoreboard

The monitor publishes a fresh observed transaction. Coverage samples it, the predictor creates expected behavior, and the scoreboard compares expected with actual.

UVM Reports, debug, and RAL Close the loop with evidence.

Choose report severity by recoverability, debug hangs from phase control outward, and use RAL as a synchronized model rather than a magical mirror.

Concept model

RAL frontdoor and prediction path

Register evidence pathKeep the mirror synchronized
named intentreg model
bus itemadapter
frontdoorDUT register
update mirrorpredictor

Register intent travels through the map and adapter to the DUT. Prediction keeps the model mirror aligned with observed bus activity.