28 UVM Interview Questions and Answers for Freshers
The UVM questions asked in verification interviews, from phases and the factory to sequences, TLM, scoreboards and RAL.
Updated 05 November 2026 · Written by Semicon Weekly in our own words · 28 questions
Practise these 28 questions free : type, speak or pick from 4 options and get an instant AI score.
Start practising →
Questions on this page Why do we need UVM? Difference between uvm_object and uvm_component? Difference between uvm_transaction and uvm_sequence_item? List the main UVM phases and which ones consume time. Why is build_phase top-down? What is the UVM factory and why do we register classes? Callback vs factory override: when do you use each? How do uvm_config_db set and get work? How do sequence, sequencer and driver communicate? Difference between get_next_item() and get() in the driver? What is the difference between m_sequencer and p_sequencer? What is a virtual sequence and virtual sequencer? What are lock() and grab()? Difference between `uvm_do and start_item/finish_item? What is an objection? What if an objection is raised but never dropped? What is an analysis port? How is a scoreboard connected? Why use TLM ports instead of mailboxes? What is an active and a passive agent? Where should the reference model sit? What are in-order and out-of-order scoreboards? Difference between uvm_subscriber and uvm_scoreboard? What are severity and verbosity in UVM? How do you select and run a particular test? What does a typical tb_top module contain? What is RAL? Difference between front-door and back-door access? Difference between copy() and clone()? Early vs late randomization in sequences? You own a new IP for verification. What steps do you follow until sign-off? What are uvm_event, uvm_barrier, uvm_pool and heartbeat used for?
easy Basics theory
1. Why do we need UVM?Show answer Standard methodology so testbenches are reusable across projects and teams Gives base classes, phasing, factory, config DB, TLM, reporting, sequences and RAL Supports constrained random and coverage driven verification Answer this in the AI interview bot → easy Basics theory
2. Difference between uvm_object and uvm_component?Show answer uvm_component: quasi-static, created once in build phase, part of hierarchy, has phases, constructor new(name, parent) uvm_object: dynamic data like transactions/sequences/configs, no phases, constructor new(name) Answer this in the AI interview bot → easy Basics theory
3. Difference between uvm_transaction and uvm_sequence_item?Show answer Uvm_sequence_item extends uvm_transaction and adds the IDs and hooks needed to work with sequences and sequencers Always extend uvm_sequence_item for stimulus Answer this in the AI interview bot → medium Phasing theory
4. List the main UVM phases and which ones consume time.Show answer Build, connect, end_of_elaboration, start_of_simulation (functions, zero time) Run_phase (task) with parallel run-time sub-phases reset/configure/main/shutdown (and pre/post), all tasks Extract, check, report, final (functions) Interviewer may ask next: Why is build_phase top-down and connect_phase bottom-up?
Answer this in the AI interview bot → medium Phasing theory
5. Why is build_phase top-down?Show answer A parent must exist and build its children Parent may set config or factory overrides that children read in their build Other function phases run bottom-up Answer this in the AI interview bot → medium Factory theory
6. What is the UVM factory and why do we register classes?Show answer Factory creates objects via type_id::create() instead of new(), so a test can replace a class with a derived one (type or instance override) without editing the environment Registration with `uvm_component_utils / `uvm_object_utils is required for this Interviewer may ask next: Write a type override from a test.
Answer this in the AI interview bot → medium Factory theory
7. Callback vs factory override: when do you use each?Show answer Factory: replace the whole class with an extended one callback: add small pieces of behaviour at pre-defined hook points without replacing the class, and multiple callbacks can be stacked Answer this in the AI interview bot → medium Config DB theory
8. How do uvm_config_db set and get work?Show answer set(context, inst_path, field_name, value) stores the value with a scope get(context, inst_path, field_name, var) retrieves it and returns 1 if found Typical use: virtual interface from top to driver/monitor Higher-level set wins during build Can be set many times, the last matching set at the same level wins Interviewer may ask next: How do you share one variable between a test and a sequence?
Answer this in the AI interview bot → medium Sequences theory
9. How do sequence, sequencer and driver communicate?Show answer Sequence: start_item(req), randomize, finish_item(req) Sequencer arbitrates and passes it on driver: seq_item_port.get_next_item(req), drive pins, item_done() Response can be sent back with put_response/rsp Answer this in the AI interview bot → medium Sequences theory
10. Difference between get_next_item() and get() in the driver?Show answer Get_next_item blocks until an item is available and must be followed by item_done() get() fetches the item and calls item_done internally, so the sequence is released immediately Answer this in the AI interview bot → Reading is not enough. Say your answer out loud or type it, and get a score out of 10 with what you missed.
Practise free → medium Sequences theory
11. What is the difference between m_sequencer and p_sequencer?Show answer M_sequencer is the generic uvm_sequencer_base handle set automatically when the sequence starts P_sequencer is a typed handle declared with `uvm_declare_p_sequencer, used to reach fields of a specific (virtual) sequencer Answer this in the AI interview bot → hard Sequences theory
12. What is a virtual sequence and virtual sequencer?Show answer Virtual sequence coordinates sequences on multiple agents' sequencers (e.g. configure over APB, then send data over AXI) It does not generate items itself Virtual sequencer holds handles to the real sequencers Virtual sequencer is optional, handles can be passed directly Answer this in the AI interview bot → hard Sequences theory
13. What are lock() and grab()?Show answer Both give a sequence exclusive access to a sequencer Lock waits in the arbitration queue for its turn, grab jumps to the front of the queue Release with unlock()/ungrab() Answer this in the AI interview bot → medium Sequences theory
14. Difference between `uvm_do and start_item/finish_item?Show answer `uvm_do macro does create + start_item + randomize + finish_item in one line Explicit start_item/finish_item gives control to set fields, use inline constraints and check randomize() result Macros are discouraged in many teams Answer this in the AI interview bot → medium Objections theory
15. What is an objection? What if an objection is raised but never dropped?Show answer Objections tell the phase it is not done: raise_objection at start, drop_objection at end Run phase ends when all are dropped If never dropped, simulation hangs until the global timeout (set_timeout) fires a fatal fix: drop in all paths, use drain time Answer this in the AI interview bot → medium TLM theory
16. What is an analysis port? How is a scoreboard connected?Show answer Analysis port is a one-to-many broadcast with a non-blocking write() Monitor writes transactions Scoreboard and coverage subscriber implement write() via analysis_imp or analysis FIFO Connected in connect_phase: mon.ap.connect(scb.exp) Answer this in the AI interview bot → medium TLM theory
17. Why use TLM ports instead of mailboxes?Show answer TLM is standard and component-to-component with clear port/export/imp roles Connections are made in connect_phase without sharing handles Supports broadcast (analysis) and different blocking styles Better reuse and SystemC interoperability Answer this in the AI interview bot → easy Agents theory
18. What is an active and a passive agent?Show answer Active agent has sequencer, driver and monitor and drives the DUT Passive agent has only a monitor and just observes (e.g. at system level) Set by is_active (UVM_ACTIVE/UVM_PASSIVE) Answer this in the AI interview bot → medium Scoreboard theory
19. Where should the reference model sit? What are in-order and out-of-order scoreboards?Show answer Reference model goes in the scoreboard (or a separate predictor component), never in the driver In-order: expected and actual compared in arrival order (FIFO) Out-of-order: match by ID/address using associative arrays, for protocols like AXI with reordering Answer this in the AI interview bot → easy Scoreboard theory
20. Difference between uvm_subscriber and uvm_scoreboard?Show answer Uvm_subscriber has one built-in analysis_export and a write() to implement, typically used for coverage collection Uvm_scoreboard has no built-in export, you add as many as needed for checking Answer this in the AI interview bot → Reading is not enough. Say your answer out loud or type it, and get a score out of 10 with what you missed.
Practise free → easy Reporting theory
21. What are severity and verbosity in UVM?Show answer Severity: UVM_INFO, UVM_WARNING, UVM_ERROR, UVM_FATAL (fatal ends sim) Verbosity applies to INFO messages: UVM_NONE, LOW, MEDIUM, HIGH, FULL, DEBUG Set with +UVM_VERBOSITY Answer this in the AI interview bot → easy Running theory
22. How do you select and run a particular test?Show answer Call run_test() in the top initial block and pass +UVM_TESTNAME=my_test at runtime, so no recompile is needed run_test("my_test") hardcodes it Answer this in the AI interview bot → easy Running theory
23. What does a typical tb_top module contain?Show answer Clock and reset generation, interface instance, DUT instance connected to the interface, uvm_config_db set of the virtual interface, run_test() call, optional dump commands and bind statements for assertions Answer this in the AI interview bot → hard RAL theory
24. What is RAL? Difference between front-door and back-door access?Show answer Register Abstraction Layer models DUT registers and lets tests use reg.write/read/mirror Front-door goes through the bus protocol (takes time, real path) Back-door accesses the register directly by HDL path in zero time (fast setup/checking but skips the bus logic) Answer this in the AI interview bot → medium Copy/clone theory
25. Difference between copy() and clone()?Show answer Copy needs an existing destination object and copies fields into it Clone creates a new object and copies into it, returns uvm_object so you must $cast to the right type Answer this in the AI interview bot → hard Sequences theory
26. Early vs late randomization in sequences?Show answer Early: item randomized before start_item, before the driver is ready late: randomized after start_item returns (driver has requested an item), so constraints can use current DUT/environment state Late is recommended Answer this in the AI interview bot → hard Sign-off scenario
27. You own a new IP for verification. What steps do you follow until sign-off?Show answer Read spec, write verification plan (features, checks, coverage) Build testbench architecture Directed sanity tests Constrained random tests and regressions Assertions Code and functional coverage closure Bug tracking Reviews Sign-off when coverage goals met, no open critical bugs, regressions clean Answer this in the AI interview bot → hard Misc theory
28. What are uvm_event, uvm_barrier, uvm_pool and heartbeat used for?Show answer uvm_event: synchronization between components with optional data uvm_barrier: makes several processes wait until all reach a point uvm_pool: global associative-array style storage shared by components heartbeat: detects a hang if components stop showing activity Answer this in the AI interview bot →