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
    • Verification, Validation and Test
    • The Cost of an Escape
    • Intent, Design and Implementation
    • You Cannot Test Everything
    • Confidence, Not Proof
    • The Verification Stack
    • Meet DCRouter
    • Drills: What Verification Is
  • 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
  • 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 0: What Verification Is
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 0: What Verification Is
  4. The Cost of an Escape

Part 0 · What Verification Is · Foundation (F)

The Cost of an Escape

A bug costs little to fix in a block testbench and enormously in silicon or in customers' hands. An illustrative model of two projects with the same 200 bugs shows that the few late escapes dominate the total cost, which is why verification gets so much of a chip's effort.

On this page

    Note

    Level: Foundation (F) · Answers: What does it mean for a chip to work?

    Before this: Verification, Validation and Test

    The same bug can be fixed in a minute or cost a company millions. In a block testbench, a designer sees the failing assertion, edits one line and reruns. In silicon, the same mistake means debugging with almost no visibility, a new mask set and months of delay. In customers' hands, it means replacements, workarounds and reputation. Nothing about the bug changed; only when it was found.

    Why does a bug cost so much more when it is found late, and what does that mean for how verification effort is spent?

    The obvious answer, and why it breaks

    The obvious view is to count bugs: a project that finds 200 bugs has done its job. Counting treats every bug as equal. They are not: the cost of a bug depends almost entirely on where it is found. Two projects can find the same number of bugs and differ fivefold in what verification cost them, because a handful found late outweigh hundreds found early.

    The idea: cost grows with each stage

    Stage found

    What finding and fixing costs

    Block testbench

    Full visibility, fast reruns: an edit and a rerun

    SoC or subsystem test

    Slower runs, more people involved, harder to localise

    Emulation or prototype

    Long runs to reproduce, debug with limited visibility

    First silicon

    Debug with almost no visibility, then a respin: new masks and months of schedule

    In the field

    Replacements or recalls, software workarounds, lost customers

    Build it: two projects with the same bugs

    Illustrative numbers: each project has 200 bugs, and each stage has a cost per bug, in thousands of dollars. Project "early" finds most bugs at block level; project "late" leaves more for later stages.

    example.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    """The cost of an escape: where bugs are found decides what verification costs.
    
    Illustrative cost to find and fix one bug at each stage, in thousands of dollars:
      block test 2, SoC test 10, emulation 40, first silicon 800 (a share of a respin and its
      schedule slip), field 8,000 (replacement, recall, reputation). The numbers are
      illustrative; the ratios between stages are what matter.
    Two projects each have 200 bugs. Project "early" finds most of them at block level;
    project "late" leaves more for SoC, emulation and silicon. The model prints the share of
    bugs found at each stage, the cost of each stage and the totals.
    """
    STAGES = ["block", "SoC", "emulation", "silicon", "field"]
    COST_K = [2, 10, 40, 800, 8000]
    BUGS = 200
    projects = {
        "early": [0.70, 0.20, 0.08, 0.015, 0.005],
        "late":  [0.40, 0.30, 0.20, 0.07, 0.03],
    }
    print("stage:            " + " ".join(f"{s:>10s}" for s in STAGES) + "      total")
    print("cost per bug ($k):" + " ".join(f"{c:>10,d}" for c in COST_K))
    totals = {}
    for name, share in projects.items():
        counts = [BUGS * f for f in share]
        costs = [n * c for n, c in zip(counts, COST_K)]
        totals[name] = sum(costs)
        print(f"{name:6s} bugs:      " + " ".join(f"{n:>10.0f}" for n in counts))
        print(f"{name:6s} cost ($k): " + " ".join(f"{c:>10,.0f}" for c in costs) + f" {totals[name]:>10,.0f}")
    late_tail = sum(BUGS * f * c for f, c in zip(projects["late"][3:], COST_K[3:]))
    print(f"late project: silicon and field bugs are {100 * (projects['late'][3] + projects['late'][4]):.0f}% of bugs and {100 * late_tail / totals['late']:.0f}% of cost")
    print(f"late / early total cost: {totals['late'] / totals['early']:.1f}x")
    assert totals["late"] > 3 * totals["early"]
    assert late_tail / totals["late"] > 0.9
    print("PASS: the few bugs that reach silicon and the field dominate the cost; finding them earlier cuts it several times over")

    It prints:

    Diagram
    stage:                 block        SoC  emulation    silicon      field      total
    cost per bug ($k):         2         10         40        800      8,000
    early  bugs:             140         40         16          3          1
    early  cost ($k):        280        400        640      2,400      8,000     11,720
    late   bugs:              80         60         40         14          6
    late   cost ($k):        160        600      1,600     11,200     48,000     61,560
    late project: silicon and field bugs are 10% of bugs and 96% of cost
    late / early total cost: 5.3x
    PASS: the few bugs that reach silicon and the field dominate the cost; finding them earlier cuts it several times over
    The model's numbers: almost all of each project's cost sits in its few silicon and field bugs; the late project's six field bugs alone cost $48 million.

    How to read it: the two projects found the same 200 bugs. The late project's 14 silicon bugs and 6 field bugs are 10% of its bugs and 96% of its cost, and it spends 5.3 times as much in total. The ratios between stages are what matter; the dollar figures are illustrative.

    What this means for spending effort

    • Shift left: every bug moved from silicon to block level saves orders of magnitude, so most verification effort goes into block and subsystem levels.

    • Spend more where escapes are expensive: features whose bugs cannot be worked around in software deserve the most rigour.

    • Count where bugs are found, not just how many: a rising share found late is a warning, even if the total looks healthy (Part 12).

    • Accept some cost: driving the late share to zero is impossible (lesson 0.4); the goal is to make it small and known.

    How real teams act on it

    Practice

    Purpose

    Block-level verification with full checking before integration

    Catch most bugs where they are cheapest

    Emulation and prototypes before tape-out

    Find bugs that need long runs or software while they are still cheap compared with silicon

    Software workaround and patch paths

    Lower the cost of the escapes that do happen

    Tracking the stage where each bug was found

    Measure whether effort is landing early enough

    What breaks

    A team (illustrative) cut its block-level verification to meet a schedule, reasoning that SoC tests would catch whatever block tests missed. The SoC environment ran a thousand times slower and could not reach many block-level corners. Two of those corner bugs reached silicon; one needed a respin. The months saved on block verification cost more months of schedule than they saved.

    Why this matters

    Principal lens. Budget verification as insurance against escapes: the question is not "how many bugs will we find?" but "what is the expected cost of the bugs we will miss, and what reduces it most cheaply?" That framing explains why teams spend heavily on block-level checking, emulation and formal on critical blocks, and why cutting early verification to save schedule is usually the most expensive decision a project can make.

    Interview

    Asked: "Why spend so much on verification?"

    Weak answer: Because bugs are bad.

    Strong answer: Because the cost of a bug grows by orders of magnitude with how late it's found: an edit and a rerun at block level, harder debug at SoC level, long reproductions on an emulator, a respin and months of delay in silicon, and recalls or workarounds in the field. Two projects with the same number of bugs can differ several times in total cost, because the few late escapes dominate. So effort goes where it moves bugs earlier: thorough block-level checking, emulation before tape-out, and the most rigour on features that can't be worked around in software.

    Follow-ups: (1) How would you measure whether verification is finding bugs early enough? (2) Where does software help reduce escape cost?

    Check yourself Using the model's costs, which is more expensive: 50 bugs found in emulation or 3 found in silicon?

    3 in silicon: 3 × 800 = $2,400k, against 50 × 40 = $2,000k (illustrative numbers).

    Check yourself A project's total bug count is falling but the share found in emulation is rising. Is that good news?

    Not necessarily: bugs are being found later, where each costs more, which suggests block-level verification is missing them.

    Key takeaways

    • The cost of a bug grows by orders of magnitude with how late it is found.

    • A few late escapes dominate total cost; count where bugs are found, not just how many.

    • Verification effort pays most where it moves bugs earlier.

    Keep going

    Next: Lesson 0.3, Intent, Design and Implementation. Three things that can disagree: what was wanted, what was specified, what was built.

    Related topics

    • Part 0 overview: What Verification Is

    Previous

    7 / 160

    Next: Intent, Design and Implementation

    Up next

    Up nextIntent, Design and Implementation

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • You Cannot Test Everything
    • Confidence, Not Proof
    • The Verification Stack