RTL Design & Verilog Interview Questions

Essential Verilog/SystemVerilog RTL interview questions with correct answers — blocking vs non-blocking, latches, FSMs, CDC, reset strategies and more.

Master RTL Design

RTL design interviews test your grasp of synthesizable Verilog, sequential vs combinational logic, and common pitfalls. Here are the questions that come up again and again.

Interview Questions & Answers

What is the difference between blocking and non-blocking assignments?

Blocking (=) executes sequentially; non-blocking (<=) schedules RHS and assigns at the time-step end, modeling parallel updates. Use non-blocking for sequential (always_ff) and blocking for combinational (always_comb).

What is the difference between a latch and a flip-flop?

A latch is level-sensitive (transparent when enabled); a flip-flop is edge-triggered. Unintended latches from incomplete if/case are a common RTL bug.

How do you avoid inferring a latch?

Assign every output in all branches: default assignment at the top of always_comb, complete if-else, and a default in case statements.

What is an FSM and what are the encoding styles?

A Finite State Machine has states, transitions, outputs. Encodings: binary (fewest flops), one-hot (fast decode, FPGA-friendly), gray (low glitch/power). Moore outputs depend on state only; Mealy on state+inputs.

What is clock domain crossing (CDC) and how is it handled?

CDC passes a signal between async clocks, risking metastability. Single bits use 2-flop synchronizers; buses use gray-code, handshakes, or async FIFOs.

What is the difference between wire and reg?

wire is a continuous connection (assign/output); reg holds a value in procedural blocks. reg is not always a hardware register. SystemVerilog logic unifies both.

What is a parameterized module?

A module with overridable parameters (width, depth) enabling reusable, scalable IP — one design serves many configurations without duplication.

What is the difference between generate and a procedural for loop?

generate (genvar) elaborates hardware structurally at compile time (replicating instances). A procedural for loop describes repeated behavior inside an always block.

What is the difference between always_comb, always_ff, and always_latch?

SystemVerilog intent-specific blocks: always_comb for combinational, always_ff for edge-triggered sequential, always_latch for latches. They let tools check that your code matches intent, catching accidental latches.

What is a synchronous vs asynchronous reset?

Synchronous reset is sampled on the clock edge (cleaner timing, needs a running clock). Asynchronous reset acts immediately regardless of clock (faster, but needs reset-recovery/removal timing and synchronized de-assertion).

What is a setup/hold violation at RTL level and how do you prevent it?

RTL itself does not have setup/hold (that is post-synthesis timing), but poor RTL (long combinational paths, missing pipelining) causes violations later. Prevent by pipelining critical paths and balancing logic depth.

What is the difference between casex, casez, and case?

case does exact matching. casez treats Z (and ?) as dont-care. casex treats both X and Z as dont-care — casex is dangerous in simulation (X masking real bugs) and generally discouraged; prefer case or casez.

What is a one-hot FSM and why is it used in FPGAs?

One-hot uses one flip-flop per state (only one bit high). FPGAs have abundant flops and it gives fast, simple next-state decode logic, improving timing — preferred over binary in FPGA designs.

What is the difference between a Mealy and Moore FSM?

Moore outputs depend only on the current state (registered, glitch-free, one cycle later). Mealy outputs depend on state and inputs (faster response, fewer states, but can glitch). Choice depends on timing and output requirements.

What is RTL lint and why run it?

Lint (e.g., Spyglass) statically checks RTL for issues like latches, multi-driven signals, incomplete sensitivity, CDC problems, and unsynthesizable constructs — catching bugs before synthesis.

What is the difference between $display and $monitor?

$display prints once when executed. $monitor prints automatically whenever any of its listed variables change. Both are testbench/debug tasks, not synthesizable.

Get Job-Ready

Our course includes hands-on labs, real projects, and mock interview sessions.

Master RTL Design

Key Facts at a Glance

TopicRTL Design & Verilog Interview Questions (2026)
PlatformCourseTron — India's #1 Electronics & Semiconductor Learning Platform
CoverageVLSI, FPGA, Embedded Systems, PCB Design, Analog IC, AI Hardware, Nano Fab, Post-Silicon, Quantum Computing
Courses135+ industry-led courses with hands-on labs
Engineers Trained300,000+ across India and worldwide
Top Hiring CompaniesIntel, NVIDIA, TSMC, Qualcomm, AMD, Apple, Samsung, Broadcom, MediaTek, ARM
YearUpdated 2026
Chat with us