FREE — INTERVIEW QUESTIONS

FPGA interview questions, with worked answers, RTL and numericals

90+ free FPGA questions, from LUTs and RTL coding to timing closure, CDC, memories, AXI and lab debugging. Includes 18 worked answers with code, 8 solved numericals, a timing-report walkthrough and a FIFO depth calculator.

550+ FPGA Interview Questions ebook cover
FPGA INTERVIEW QUESTIONS EBOOK · 570 QUESTIONS · 25 CHAPTERS

Get the full FPGA question bank, every question answered

570 questions with interview-ready answers and tips, 25 coding exercises with solutions, 25 solved numericals and 30 debugging scenarios.

INSTANT PDF DOWNLOAD · 10 FREE PREVIEW PAGES
See the ebook

FPGA interviews are practical. Beyond "what is a LUT?", you'll be asked to write RTL on a whiteboard, explain why a design fails timing, pick a CDC technique, size a FIFO, or say why a board works in simulation but not in the lab.

This page is built around that. Start with the formula sheet and the FIFO calculator, browse 50 questions across ten topics, then work through the worked answers, numericals and the timing-report walkthrough. Try each one aloud, or on paper for the coding ones, before opening the answer.

HOW IT'S STRUCTURED

What an FPGA interview actually looks like

ROUND 1

Fundamentals & RTL coding

LUTs, flops, BRAM and DSP, blocking vs non-blocking, latches, resets, then a short coding task: a synchroniser, a clock enable, an FSM or a counter, written on paper or a shared editor.

ROUND 2

Design: clocks, CDC, memory, timing

MMCM/PLL settings, async FIFOs, BRAM sizing, fixed point, XDC constraints and timing closure, often with a quick calculation like FIFO depth or fmax.

ROUND 3

Debug & system design

"Works in simulation, not on the board", "the bug vanishes with an ILA", "design a video pipeline". They're testing your method and your trade-offs.

HOW TO ANSWER

Six habits that make FPGA answers land

01

Think in hardware, not software

Every line of RTL becomes LUTs, flops, BRAM or DSP. Say what your code infers; that's what interviewers are really checking.

02

Clock enables, not new clocks

Slow logic runs on the main clock with an enable. Real clocks come from MMCMs/PLLs on global buffers. Saying this unprompted is a strong signal.

03

Validate constraints first

When timing fails, check clocks, clock groups, exceptions and I/O delays before touching RTL. Many violations are constraint bugs.

04

Match the CDC technique to the traffic

Single bit: two-flop synchroniser. Pulse: toggle synchroniser. Occasional words: handshake. Streams: async FIFO. Counters: Gray code.

05

Do the back-of-envelope maths

Bandwidth, FIFO depth, BRAM count, fmax. A quick, correct number with units makes any design answer more convincing.

06

Debug from basics up

Right bitstream? Clocks running, MMCMs locked? Reset released? Pins correct? Then timing, CDC and logic. Most "nothing works" cases are setup issues.

FORMULA SHEET

Every FPGA number you'll be asked to work out

The calculations that come up in FPGA design rounds and real design reviews.

MAX FREQUENCYfmax = 1 / (Tco + Tlogic + Troute + Tsu + Tunc − Tskew)In FPGAs, routing is often more than half the path.
SETUP SLACK(T + Tclk,dest − Tsu − Tunc) − (Tclk,src + Tco + Tdata)
PIPELININGTstage ≈ Tpath/N + Tco + Tsu;  latency = N cycles; throughput = fclk / II
MMCM / PLLFVCO = Fin × M / D (must be in range);  Fout = FVCO / O
FIFO DEPTHdepth ≥ B − B × fread / fwrite + margin  (B = burst length)
SYNCHRONISERMTBF = etr/τ / (T0 · fclk · fdata)
FIXED POINTQm.n value = integer / 2n;  Qa.b × Qc.d = Q(a+c).(b+d)
BIT GROWTHadd: +1 bit · N×M multiply: N+M bits · sum of K terms: +⌈log2K⌉
NCOfout = tuning word × fclk / 2N; resolution = fclk / 2N
BANDWIDTHwidth × fclk × efficiency;  DDR: MT/s × bytes
LINE CODING8b/10b = 80% · 64b/66b ≈ 97% · 128b/130b ≈ 98.5%
DYNAMIC POWERP ≈ α · C · V2 · f
TRY IT

FIFO depth calculator

A burst is written at the write clock while the reader drains it. Values update as you type.

BURST DURATION–
WORDS READ MEANWHILE–
MINIMUM DEPTH–
CHOOSE (POWER OF 2)–

 

STORAGESIZEREADBEST FORWATCH OUT
Flip-flopsBitsImmediateControl, pipelinesNo bulk storage
Distributed (LUT) RAMUp to a few hundred deepAsynchronousSmall RAMs, register filesUses LUTs
SRL shift register16–32 per LUTTap selectDelay linesNo reset
Block RAM18–36 Kb (M20K: 20 Kb)SynchronousFIFOs, buffers1–2 cycle latency
UltraRAM-type~288 KbSynchronousLarge on-chip buffersFewer configurations
External DDR / HBMGBHigh latencyFrame buffers, big dataEfficiency, calibration
BROWSE BY TOPIC

50 FPGA interview questions across 10 topics

A sample of what interviewers draw from most. The full 570-question ebook covers each topic in much more depth, with every question answered.

FPGA Fundamentals & Architecture

What's inside the device and how logic maps onto it.

  • When would you choose an FPGA over an ASIC, and vice versa?
  • How does a 6-input LUT implement any function of six inputs?
  • What is a carry chain, and why are adders faster with it?
  • What is the difference between SRAM-based, flash-based and antifuse FPGAs?
  • Why is routing delay often larger than logic delay in an FPGA?

RTL Coding

Writing HDL that becomes the hardware you meant.

  • What goes wrong if you use blocking assignments for a shift register?
  • How are latches inferred unintentionally, and how do you prevent them?
  • Why avoid initial values or # delays in synthesizable code (and when are initial values fine on FPGAs)?
  • Write a 4-to-1 mux, a parameterised counter and a rising-edge detector.
  • How do you code a RAM so the tool infers block RAM instead of LUTs?

FSMs & Datapaths

Control logic, pipelines and flow control.

  • Moore vs Mealy: which one has registered outputs and why does that matter?
  • One-hot vs binary state encoding on an FPGA: which is usually faster?
  • What is the difference between latency, throughput and initiation interval?
  • Explain valid/ready handshaking. Why must valid not depend on ready?
  • What is a skid buffer, and why does it need two entries?

Synthesis & Implementation

From RTL to bitstream.

  • Walk through the FPGA flow from RTL to bitstream.
  • What does synthesis optimise away, and how do you stop it removing debug logic?
  • What are keep, dont_touch and max_fanout attributes for?
  • What's the difference between project and non-project (scripted) flows?
  • How do you read a utilization report? What's a healthy LUT utilization?

Timing Constraints & Closure

XDC/SDC and making the design meet its clocks.

  • Write create_clock for a 125 MHz input. Do MMCM output clocks need constraints?
  • When do you use set_clock_groups -asynchronous?
  • How do you constrain a source-synchronous DDR input?
  • A path is 65% routing delay. What does that suggest?
  • List timing-closure techniques in the order you'd try them.

Clocking, CDC & Resets

The source of most hard-to-find FPGA bugs.

  • Why not generate clocks in logic? What should you use instead?
  • How does a two-flop synchroniser work, and what is ASYNC_REG for?
  • How do you pass a single-cycle pulse from a fast to a slow domain?
  • How does an async FIFO compute full and empty safely?
  • Sync, async, or async-assert/sync-deassert reset: which do you use and why?

Memory & DSP

Block RAM, FIFOs, multipliers and fixed point.

  • Block RAM vs distributed RAM vs SRL: when do you use each?
  • How many 36 Kb BRAMs does a 4K × 32 memory need?
  • What is a DSP slice, and what code helps the tool infer it with pipelining?
  • What is the result format of multiplying Q1.15 by Q1.15?
  • How wide must the accumulator be for a 64-tap FIR with 16-bit data and coefficients?

I/O, Transceivers & Interfaces

Getting data on and off the chip.

  • What do IOB registers and IDELAY/ODELAY do for I/O timing?
  • What's the difference between line rate and payload rate for 64b/66b?
  • Explain the five AXI4 channels. Why are reads and writes independent?
  • AXI4 vs AXI4-Lite vs AXI4-Stream: when do you use each?
  • How would you debug a transceiver link that won't come up?

Verification & On-Chip Debug

Proving it works, in simulation and on the board.

  • Behavioural vs post-synthesis vs timing simulation: when do you use each?
  • How do you verify a design with several clock domains?
  • What is an ILA, and what does adding one change in your design?
  • Simulation passes but hardware output is all zeros. What do you check first?
  • How do you build a self-checking testbench?

SoC FPGAs, HLS & Power

Processors, high-level synthesis and power.

  • How does the processor system talk to programmable logic in a Zynq-class SoC?
  • What does HLS do well, and where does hand-written RTL still win?
  • What does the HLS PIPELINE II=1 directive ask for?
  • What are the main levers for reducing FPGA dynamic power?
  • What is partial reconfiguration, and what are its constraints?

This is a sample. The full bank goes much deeper.

570 questions across 25 chapters, all answered: 25 coding exercises with solutions, 25 solved numericals, 30 debugging scenarios, plus transceivers, SoC FPGAs, security and partial reconfiguration.

See the full question bank
N1 · MAX FREQUENCYBEGINNERTco 0.30 ns, logic 1.00 ns, routing 1.90 ns, setup 0.05 ns, uncertainty 0.08 ns, zero skew. What's fmax?Show solution ↓
Tmin = 0.30 + 1.00 + 1.90 + 0.05 + 0.08 = 3.33 ns
fmax = 1 / 3.33 ns ≈ 300 MHz

Note: routing is 57% of the path, so placement and fanout are the first things to look at.

N2 · PIPELININGINTERMEDIATEA path needs 6.0 ns of logic and routing plus 0.4 ns register overhead. Split it into three equal stages. New fmax and latency?Show solution ↓
Before: 6.0 + 0.4 = 6.4 ns → 156 MHz, latency 6.4 ns
After : 2.0 + 0.4 = 2.4 ns → 417 MHz
Speed-up ≈ 2.67× (not 3×), latency 3 × 2.4 = 7.2 ns

Note: register overhead is paid in every stage, and total latency goes up. Always mention both.

N3 · MMCM SETTINGSINTERMEDIATEFrom a 100 MHz input, generate 250 MHz and 125 MHz. The VCO must be 600–1,200 MHz. Choose M, D and the output dividers.Show solution ↓
M = 10, D = 1 → VCO = 100 × 10 / 1 = 1,000 MHz  (in range)
O1 = 1,000 / 250 = 4  → 250 MHz
O2 = 1,000 / 125 = 8  → 125 MHz

Note: both outputs share one VCO, so they're related clocks with a known phase relationship.

N4 · FIFO DEPTHINTERMEDIATEA writer bursts 800 words at 200 MHz; the reader reads one word per cycle at 150 MHz. Minimum FIFO depth?Show solution ↓
Burst time  = 800 / 200 MHz = 4.0 µs
Words read  = 4.0 µs × 150 MHz = 600
Depth ≥ 800 − 600 = 200 → choose 256

Note: 256 leaves 56 words of margin for synchroniser latency and read start-up. These are the default values in the calculator above.

N5 · BRAM COUNTBEGINNERHow many 36 Kb block RAMs does an 8,192 × 16-bit memory need?Show solution ↓
A 36 Kb BRAM can be 2K × 18 (or 4K × 9, 8K × 4 …)
Width: 16 bits fits one 2K × 18 block
Depth: 8,192 / 2,048 = 4 → 4 BRAMs

Note: 2 bits per word go unused. Shapes that match the BRAM aspect ratios waste nothing.

N6 · FIXED POINTINTERMEDIATEMultiply 0.5 by 0.25, both in Q1.15. What's the product format, its raw value, and the result back in Q1.15?Show solution ↓
0.5  → 0x4000 (16,384)    0.25 → 0x2000 (8,192)
Q1.15 × Q1.15 = Q2.30, 32 bits
16,384 × 8,192 = 134,217,728 = 0x0800_0000
÷ 2^30 = 0.125
Back to Q1.15: shift right 15 → 4,096 = 0x1000 = 0.125

Note: when going back, round instead of truncating and saturate on overflow.

N7 · BANDWIDTHINTERMEDIATEPeak throughput of a 128-bit AXI-Stream at 250 MHz? And of a 32-bit DDR4-3200 interface at about 70% efficiency?Show solution ↓
AXI-Stream: 128 × 250 MHz = 32 Gb/s = 4 GB/s (TVALID and TREADY always high)
DDR4-3200 ×32: 3,200 MT/s × 4 B = 12.8 GB/s peak
At ~70%: ≈ 9.0 GB/s

Note: DDR efficiency depends on access patterns: refresh, row misses and read/write turnarounds.

N8 · UART DIVIDERBEGINNERFrom a 50 MHz clock, what divider gives 9,600 baud with 16× oversampling, and what's the error?Show solution ↓
Divider = 50,000,000 / (16 × 9,600) = 325.5 → 326
Actual  = 50,000,000 / (16 × 326) ≈ 9,586 baud
Error   ≈ −0.15%

Note: UARTs tolerate roughly ±2–3% total, so this is fine. A fractional divider helps when it isn't.

Slack (VIOLATED) :  -0.370ns  (required time - arrival time)
  Source:      u_ctrl/acc_en_reg/C   (rising edge-triggered cell FDRE clocked by clk_250)
  Destination: u_dsp/acc_reg[31]/CE  (rising edge-triggered cell FDRE clocked by clk_250)
  Path Group:  clk_250        Path Type: Setup (Max at Slow Process Corner)
  Requirement:       4.000ns  (clk_250 rise@4.000ns - clk_250 rise@0.000ns)  (1)
  Data Path Delay:   4.200ns  (logic 1.350ns (32.1%)  route 2.850ns (67.9%))     (2)
  Logic Levels:      5  (CARRY8=1 LUT6=4)
  Clock Path Skew:  -0.040ns                                                   (3)
  Clock Uncertainty: 0.070ns

  Location   Delay type          Incr(ns)  Netlist Resource(s)
  ---------------------------------------------------------------
  SLICE_X40  FDRE (Prop_C_Q)        0.450  u_ctrl/acc_en_reg/Q
             net (fo=1240, routed)  1.320  u_ctrl/acc_en                      (4)
  SLICE_X88  LUT6 (Prop_I0_O)       0.120  u_dsp/sel_i_1/O
             net (fo=3, routed)     0.380
  SLICE_X89  LUT6 (Prop_I2_O)       0.150  u_dsp/sum_i_7/O
             net (fo=1, routed)     0.410
  SLICE_X90  CARRY8 (Prop_S_CO)     0.380  u_dsp/cmp_carry/CO
             net (fo=2, routed)     0.290
  SLICE_X91  LUT6 (Prop_I3_O)       0.120  u_dsp/ce_i_2/O
             net (fo=1, routed)     0.250
  SLICE_X92  LUT6 (Prop_I1_O)       0.130  u_dsp/ce_i_1/O
             net (fo=32, routed)    0.200  u_dsp/acc_ce
  SLICE_X93  FDRE                          u_dsp/acc_reg[31]/CE
  ---------------------------------------------------------------
  Arrival  = 4.200ns   Required = 4.000 - 0.040 - 0.070 - 0.060 (setup) = 3.830ns
  Slack = 3.830 - 4.200 = -0.370ns                                   (5)
  1. Same clock on both ends, single-cycle path at 250 MHz: a 4 ns budget.
  2. Routing is 68% of the path. Five logic levels at 4 ns isn't excessive; distance is the problem.
  3. Small negative skew: the capture clock arrives 40 ps earlier, which slightly hurts setup.
  4. The outlier: one net, fanout 1,240, costs 1.32 ns, almost a third of the path.
  5. Required = period + skew − uncertainty − setup. Arrival exceeds it by 370 ps.
What's the root cause, in one sentence?

A single enable register drives 1,240 loads spread across the device, so its net alone takes 1.32 ns, and the remaining routing between five levels of logic uses up the rest of the 4 ns budget.

What fix would you try first?

Replicate acc_en_reg so each copy drives a local group of loads (max_fanout on the register, or physical-optimisation replication). If the logic allows one more cycle of latency, register the enable once more near the DSP block. Either one removes most of the 1.32 ns.

Would a different implementation strategy fix it?

Maybe partly, but it's the wrong first move. The report shows a structural cause, fanout, that will keep coming back as the design changes. Fix the structure, then use strategies for the last few tens of picoseconds.

What else would you check in the report?

Whether other failing paths share the same source (one fix may clear many), whether acc_en is really a reset-like signal that half its loads don't need, and whether the DSP accumulator is using the DSP slice's internal pipeline registers. The ebook covers report_timing_summary and closure in two full chapters.

How many functions can a LUT6 implement?

Any function of 6 inputs: 264 of them.

Blocking or non-blocking in clocked blocks?

Non-blocking (<=).

What causes an unintended latch?

A signal not assigned on every path in a combinational block.

Is FPGA configuration memory volatile?

For SRAM-based FPGAs, yes: it reloads from flash at power-up.

One-hot or binary FSM encoding on FPGAs?

One-hot is usually faster: flops are plentiful and next-state logic is simpler.

What makes the tool infer block RAM?

A registered (synchronous) read, and no reset on the array.

What is an SRL?

A LUT used as a 16–32-bit shift register.

What does ASYNC_REG do?

Marks synchroniser flops so they're placed together and analysed for MTBF.

Why Gray code for FIFO pointers?

Only one bit changes per increment, so a mid-change sample is still valid.

How do you cross a single-cycle pulse to a slower clock?

Toggle synchroniser: toggle a flop, synchronise it, edge-detect on the other side.

VCO formula for an MMCM/PLL?

FVCO = Fin × M / D, kept inside the allowed range.

Constraint for unrelated clocks?

set_clock_groups -asynchronous, with real CDC in the RTL.

Q1.15 × Q1.15 gives?

Q2.30, 32 bits.

Bits added when summing 64 terms?

log264 = 6.

Efficiency of 8b/10b?

80%.

When does an AXI transfer happen?

On a clock edge where VALID and READY are both high.

What is an ILA?

An integrated logic analyser: on-chip capture of internal signals, viewed over JTAG.

What does II = 1 mean in HLS?

A new input is accepted every clock cycle.

Main lever for dynamic power?

Voltage (V2), then switching activity: clock gating and enables.

First check when timing fails?

The constraints.

COMMON MISTAKES

What costs candidates the most in FPGA rounds

×

Writing software, not hardware

Loops that can't unroll, sequential thinking in combinational blocks, and no idea what the code infers. Always say what each block becomes.

×

Making clocks in logic

Using a counter bit or a gated signal as a clock. Use a clock enable, or an MMCM/PLL for a real new frequency.

×

Synchronising a bus bit by bit

Two-flop synchronisers are for single bits. Multi-bit values need Gray code, a handshake or an async FIFO.

×

Blanket false paths between clocks

It makes the report clean and hides real problems. Use clock groups for truly async clocks and bounded max-delays for CDC buses.

×

Resetting everything

Resetting every datapath register creates huge fanout nets, blocks SRL and DSP inference, and hurts timing.

×

Debugging the complicated thing first

Most "nothing works on the board" problems are the wrong bitstream, a clock not locked, reset held, or a pin assignment. Check those first.

QUICK FAQ

Before you start preparing

How many rounds does an FPGA interview usually have?

Usually two or three: a fundamentals and RTL coding round, a design round on clocking, CDC, memories, timing and interfaces, and for experienced candidates a debugging or system-design round.

Will I have to write RTL in an FPGA interview?

Almost always. Common tasks are a synchroniser, a clock enable instead of a divided clock, a counter or PWM, an FSM, a debouncer, a Gray converter or a small FIFO. Write synthesizable code with non-blocking assignments in clocked blocks. Practise with our Verilog questions.

Do I need to know both Xilinx/AMD and Intel tools?

No. Know one tool flow well and the equivalent terms in the other. Concepts such as LUT mapping, BRAM inference, timing constraints and CDC transfer across vendors; interviewers care more about the concepts than the tool names.

Is FPGA a good career path compared with ASIC?

Yes. FPGA roles exist in telecom, defence, test and measurement, data centres, automotive, video and ASIC prototyping. The work is hands-on, combining RTL, timing, lab bring-up and often embedded software, and many engineers move between FPGA and ASIC.

How should a fresher prepare for FPGA questions?

Learn FPGA architecture (LUTs, flip-flops, BRAM, DSP), RTL coding rules, FSMs and timing basics first. Practise writing small modules on paper, then learn CDC, BRAM and FIFOs, and basic XDC constraints. Prepare one board project you can explain in detail.

Why should I avoid logic-generated clocks in an FPGA?

A clock made in fabric logic doesn't use the dedicated low-skew clock network, so it adds skew, can glitch and creates a new clock domain. Use a clock enable on the original clock, or generate real clocks with an MMCM/PLL.

Want to be tested on these live?

Book a 1:1 mock interview with a mentor working in this exact domain.

Book a mock interview