Skip to interview questions

Verification intent to evidence

Design Verification Interview Questions and Answers

These design verification interview questions emphasize protocol reasoning, testbench architecture, and the edge cases interviewers use to probe real experience. Start with each public teaching summary, then use the full bank to work through implementation details.

Describe a verification strategy in terms of contracts, observability, ordering, failure modes, and the evidence needed to trust a result.

Public answers
15 high-value questions
Answer format
Concise result plus deeper reasoning
Next step
Practice each full prompt in the bank

Interview answer library

Questions worth explaining clearly

Question 01MediumUVM Components

How to Drive a Ready/Valid Interface Correctly

Implement the core of a UVM driver for a single-beat ready/valid interface. Present one sequence item, hold its payload stable while stalled, and finish the item only after a real handshake.

Concise answer

The driver should fetch one item, drive its payload and valid once, and wait at clocking-block sample points until ready is exactly 1. It must keep every driven field unchanged during backpressure, lower valid after acceptance, and call item_done only after the handshake edge.

Question 02MediumRTL Design

How to Build a Synchronous FIFO in SystemVerilog

Design a parameterized synchronous FIFO, then write a small bus-functional model that can reset it, push one item, and pop one item without testbench races.

Concise answer

Model occupancy from accepted reads and writes, not raw requests. Permit a write at full only when a read also succeeds, register the popped word, update count from the push/pop combination, and wrap pointers explicitly at DEPTH - 1. In the BFM, use a clocking block and sample registered read data on the following edge.

Question 03MediumClock Domain Crossing

Clock-Domain Crossing Strategies for ASIC Interviews

Given a single-bit level, a narrow pulse, a slowly changing multi-bit setting, and a sustained data stream, choose an appropriate clock-domain crossing (CDC) architecture and implement representative single-bit level and pulse synchronizers.

Concise answer

Use a two-flop synchronizer for a stable one-bit level; convert a short pulse into a source toggle and acknowledge it before accepting another event. Hold multi-bit control data stable under a bundled-data handshake, and carry continuous traffic through an asynchronous FIFO. Each destination domain also needs its own reset-release synchronization.

Question 04EasyReset Design

Async Assert, Sync Deassert Reset

Design an active-low reset conditioner that asserts immediately but releases only after two clean destination-clock edges. Explain when synchronous and asynchronous reset styles are appropriate.

Concise answer

Clear both stages of a two-flop chain asynchronously when arst_n falls. After arst_n rises, shift a 1 through the chain on destination-clock edges and derive srst_n from the second stage. Instantiate this conditioner separately for every unrelated clock, and reset only state that the design contract requires.

Question 05HardRTL Design

How a Ready/Valid Skid Buffer Handles Backpressure

Design a two-entry ready/valid skid buffer that can accept one extra item after downstream stalls, keeps output data stable while stalled, and removes the combinational ready path from downstream to upstream.

Concise answer

Implement the buffer as a two-entry FIFO with registered occupancy. Set upstream ready whenever occupancy is below two, output the head entry whenever occupancy is nonzero, and update storage from the four push/pop combinations. A stalled output keeps its head value unchanged; a full buffer may insert one bubble because ready cannot anticipate a same-edge pop.

Question 06MediumVerification Utilities

Why UVM Uses SystemVerilog Virtual Interfaces

Why is a virtual interface commonly placed into a class-based driver's configuration?

Concise answer

A virtual interface gives the class-based driver a typed reference to an already-elaborated interface instance. Supplying that reference through configuration avoids fixed hierarchical names and lets the same driver connect to different interfaces; the `.master` modport preserves its intended access directions.

Question 07EasyUVM Components

How to Pass a Virtual Interface with uvm_config_db

A top-level module must make one virtual bus_if available to both an agent's driver and monitor. Which pattern is most idiomatic?

Concise answer

Publish the concrete interface handle through `uvm_config_db#(virtual bus_if)` using a scope that covers the agent’s driver and monitor, then retrieve it during each component’s build phase. The UVM factory cannot create an HDL interface instance.

Question 08EasyUVM Components

uvm_object vs. uvm_component

A reusable packet configuration has no hierarchy, ports, or phase behavior. Why is extending uvm_object usually preferable to extending uvm_component?

Concise answer

Use `uvm_object` because the configuration is data rather than a structural testbench element. It needs neither a hierarchical parent nor phase callbacks, ports, or persistent component lifetime. Choosing an object keeps construction and reuse simpler without preventing factory registration or randomization.

Question 09EasyUVM Components

UVM build_phase vs. connect_phase

Which allocation of work follows normal UVM phase intent?

Concise answer

Create child components during `build_phase`, then bind their TLM connections during `connect_phase`. Construction must finish before connections are made, so every required port, export, and child instance exists when the testbench wiring is established.

Question 10EasyUVM Components

How UVM Phase Objections Work

What is the primary effect of a component raising an objection on run_phase?

Concise answer

A raised run-phase objection keeps that task phase from completing until the objection is dropped. Simulation time and concurrent component tasks continue normally; the objection changes the phase-ending decision, not the scheduler, clock, or execution order.

Question 11EasyUVM Components

How UVM Factory Type Overrides Work

A type override from base_pkt to crc_pkt is installed before any packets are created. Which creation is eligible to return a crc_pkt?

Concise answer

`base_pkt::type_id::create("p")` is eligible to produce a `crc_pkt`. The type override participates only when a new request goes through the UVM factory; direct `new` calls and objects allocated before the override remain unaffected.

Question 12EasyUVM Components

How to Connect a UVM Sequencer and Driver

Which connection enables a uvm_driver to pull sequence items from its sequencer?

Concise answer

Connect `driver.seq_item_port` to `sequencer.seq_item_export`. The driver initiates the pull operations through its port, while the sequencer exposes the implementation that arbitrates and supplies items. This connection normally belongs in the active agent’s `connect_phase`.

Question 13MediumUVM Components

UVM get_next_item and item_done Handshake

What is wrong with this driver loop?

Concise answer

The loop requests a second item before completing the first. After each successful `get_next_item(req)`, the driver must finish driving that request and call `item_done()` exactly once before another `get_next_item`. Otherwise the sequencer-driver handshake can stall or report a protocol violation.

Question 14EasyUVM Components

How a UVM Analysis Port Works

Which statement best describes uvm_analysis_port::write?

Concise answer

`uvm_analysis_port::write` distributes one transaction handle to every connected subscriber without a return handshake. It is a function-based observation broadcast, permits zero subscribers, performs no arbitration, and does not automatically clone the transaction for each recipient.

Question 15HardReference Models

How to Build an Out-of-Order UVM Scoreboard

A DUT can return responses out of order and may reuse transaction IDs after reset. Which scoreboard design is most robust?

Concise answer

Use identity-based matching keyed by transaction ID plus a reset generation, and define what reset does to outstanding expectations. This supports out-of-order completion while preventing a post-reset response from matching stale pre-reset state that happened to use the same ID.

Turn reading into recall

Work through the complete interview bank.

Filter by topic and difficulty, attempt each prompt, and open the reviewed member solution when you are ready to compare reasoning.Practice all design verification questions