Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • How to Use This Course
  • Reading Paths
  • Concept Map
  • Meet DCRouter
  • Glossary
  • Part 0: What Verification Is8
  • Part 1: What Can Go Wrong11
  • Part 2: Specifications as Checkable Rules8
  • Part 3: Observability and Controllability7
  • Part 4: Stimulus11
  • Part 5: Checking11
  • Part 6: Coverage10
  • Part 7: Formal and Simulation10
  • Part 8: Verification Levels and Reuse8
  • Part 9: Planning and Risk9
  • Part 10: Emulation and Prototyping8
    • Why Cycles Matter
    • Simulation Speed and Its Limits
    • Emulation
    • FPGA Prototyping
    • Virtual Platforms and Hybrids
    • Debug at Scale
    • Choosing the Platform
    • Drills: Emulation and Prototyping
  • Part 11: Post-Silicon Validation8
  • Part 12: Bug Economics8
  • Part 13: Debug7
  • Part 14: Sign-Off7
  • Part 15: Verification in Context8
  • Part 16: Case Studies5
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 10: Emulation and Prototyping
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 10: Emulation and Prototyping
  4. FPGA Prototyping

Part 10 · Emulation and Prototyping · Senior (S)

FPGA Prototyping

An FPGA prototype implements the design on FPGAs and runs it at tens of millions of cycles per second, fast enough for real software, real peripherals and long runs. It differs from the final chip in clocking, memories, partitioning and visibility. What a prototype is good for, what it misses, and how to avoid mistaking the prototype's behaviour for the chip's.

On this page

    Note

    Level: Senior (S) · Answers: How do we run enough cycles?

    Before this: Emulation

    The software team gets an FPGA prototype of the SoC six months before silicon. It runs at 30 MHz, fast enough to boot the OS in minutes and run applications for hours, with real Ethernet cables plugged in. They find dozens of driver bugs. They also spend a week on a crash that turns out to be the prototype's own clock-domain crossing between two FPGAs, which does not exist in the real chip, where the logic sits in one clock domain.

    What is an FPGA prototype good for, and what does it miss?

    The obvious answer, and why it breaks

    The obvious view is that a prototype is the chip, only slower. It is the RTL, implemented differently: split across several FPGAs, with clocks divided down, ASIC memories replaced by FPGA memories, analogue replaced or missing, and only a small fraction of signals visible. Behaviour that depends on any of those differences can appear on the prototype and not in silicon, or the reverse.

    The idea: speed bought with fidelity and visibility

    Strength

    Limitation

    Tens of millions of cycles per second (fact V12)

    Long bring-up: synthesis, partitioning across FPGAs, timing closure

    Real peripherals and cables

    Clocks slower and differently related than in the chip

    Cheap enough for many software engineers

    Little visibility: only signals routed to probes can be seen

    Long runs: hours of real workloads

    Changes take hours to rebuild

    A stable platform for software development

    Partitioning adds delays and crossings the chip does not have

    What a prototype misses, and what it invents

    • Misses: timing-dependent bugs at the real clock speed; analogue and mixed-signal behaviour; real memory timing; power behaviour.

    • Invents: crossings and delays between FPGAs; memory behaviours of FPGA RAMs; reset and clock sequencing of the prototype board.

    • Treat every prototype-only failure as a question: is it a design bug, or a prototype artefact? Reproduce it in simulation or emulation before concluding.

    Using prototypes well

    Practice

    Purpose

    Prototype a stable RTL release, not every change

    Rebuild cost is hours; software needs stability

    Plan probe signals and on-chip logic analysers before building

    Visibility for the bugs you expect

    Keep a list of known prototype artefacts

    Software engineers do not chase them

    Reproduce prototype failures on emulation or simulation

    Separate design bugs from artefacts

    How real teams use prototypes

    Practice

    Purpose

    Prototypes for software teams months before silicon

    Drivers, firmware and OS ready at first silicon

    Real-world interface testing

    Cables, peripherals and compliance equipment connected

    Long-run stability tests

    Bugs that appear after hours, beyond emulation budgets

    What breaks

    The opening story is typical: a prototype artefact costing a week. The opposite also happens. A team (illustrative) saw a rare data corruption in silicon that had never appeared on the prototype: it depended on the real memory's read timing at full clock speed, which the prototype's FPGA memories did not model. The prototype had run for thousands of hours, all of them faithful to the RTL and none faithful to the timing.

    Why this matters

    Senior lens. Use FPGA prototypes for what they uniquely give (software at speed, real peripherals, long runs) and treat their failures and their silences with the same caution: list the differences from silicon, reproduce prototype-only failures elsewhere, and never count prototype hours as evidence for timing-dependent behaviour.

    Interview

    Asked: "What does an FPGA prototype miss?"

    Weak answer: Nothing, it runs the same RTL.

    Strong answer: Anything that depends on how the chip is built rather than on the RTL: timing at the real clock speed, real memory timing, analogue and mixed-signal blocks, power behaviour. It also invents things the chip doesn't have: crossings and delays between FPGAs, FPGA memory behaviour, board reset sequencing. And it shows very little of the inside. So I use it for software at speed, real peripherals and long runs, keep a list of known artefacts, and reproduce prototype-only failures in simulation or emulation before calling them design bugs.

    Follow-ups: (1) How would you debug a failure that only appears after hours on the prototype? (2) Why prototype a stable release?

    Check yourself Why can a prototype show a failure that silicon never will?

    The prototype adds structures the chip does not have, such as crossings between FPGAs or different clock relationships, which can fail on their own.

    Check yourself Why can thousands of prototype hours fail to find a silicon bug?

    The bug depends on real timing, memories or analogue behaviour that the prototype does not reproduce.

    Key takeaways

    • FPGA prototypes run the RTL at tens of millions of cycles per second, with real peripherals.

    • They miss timing, analogue and power behaviour, and add artefacts of their own.

    • Use them for software at speed and long runs; reproduce prototype-only failures elsewhere.

    Keep going

    Next: Lesson 10.5, Virtual Platforms and Hybrids. Models for software, and mixing them with RTL.

    Related topics

    • Part 10 overview: Emulation and Prototyping

    Previous

    102 / 160

    Next: Virtual Platforms and Hybrids

    Up next

    Up nextVirtual Platforms and Hybrids

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Why Cycles Matter
    • Simulation Speed and Its Limits
    • Debug at Scale