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
  • Part 11: Post-Silicon Validation8
    • Pre-Silicon and Post-Silicon
    • Validation Strategy
    • Observability in Silicon
    • Debugging Silicon Failures
    • Margins and Characterisation
    • Errata and Workarounds
    • Closing the Loop
    • Drills: Post-Silicon Validation
  • 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 11: Post-Silicon Validation
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 11: Post-Silicon Validation
  4. Debugging Silicon Failures

Part 11 · Post-Silicon Validation · Senior (S)

Debugging Silicon Failures

Silicon debug runs from a symptom to a root cause with almost no visibility, by making the failure reproducible, narrowing where and when it happens, separating functional from electrical causes, and finally reproducing it in RTL. A step-by-step method, walked through for a DCRouter SoC that silently corrupts packets after hours of network traffic.

On this page

    Note

    Level: Senior (S) · Answers: What do we do when the chip comes back?

    Before this: Observability in Silicon

    A validation board running a network soak test starts failing after about six hours: a few packets an hour fail their end-to-end checksums, and DCRouter raises no alarm that anyone is watching. Two other boards ran the same test overnight without a failure. The team has STATUS and counter registers, a trace buffer on DCRouter's outputs, scan dump capability, and the RTL. This lesson walks through the failure from symptom to cause.

    Walk me through debugging a silicon failure.

    The obvious answer, and why it breaks

    The obvious instinct is to stare at the failing board and guess. With almost no visibility, guesses multiply and each experiment takes hours. Silicon debug works as a disciplined narrowing: make it fail reliably, then reduce where, when and under what conditions it fails, until the remaining space is small enough to see or to simulate.

    The idea: a narrowing procedure

    Each step reduces the space of possible causes, until the failure can be seen in a trace or reproduced in RTL.

    The DCRouter corruption, step by step (illustrative)

    Step

    What the team does

    What it learns

    1. Capture

    Read STATUS, ERR_CNT, PKT_CNT and the soak test's log of failing packets before resetting

    Every failing packet went to output 2 and arrived split: its first flits, then the rest as a separate packet with a nonsense header, not necessarily on output 2

    2. Reproduce

    Run traffic only to output 2, at maximum rate, with long idle gaps

    Corruption now within about 20 minutes on every board

    3. Functional or electrical

    Repeat at high and low voltage, hot and cold, half clock speed

    Same failure everywhere: functional, not a margin

    4. Localise

    Vary which inputs send to output 2; change idle gap length

    Needs idle gaps longer than 8 cycles in the middle of a packet: the sleep logic

    5. Capture

    Trigger the trace on sleeping rising while output 2 is locked

    The router entered sleep with output 2 locked mid-packet; the lock was dropped, so the rest of the packet was routed as a new one

    6. Reproduce in RTL

    Replay the captured window in simulation

    The idle detector ignores locks: Bug Zoo BUG_20's class, escaped in this story

    In the course's actual DCRouter, the R13 assertions and the back-pressure tests catch BUG_20 long before silicon. The walk-through shows how the same bug would be found if they had not existed: in hours of narrowing instead of seconds of simulation.

    Principles

    • Capture before reset: the failing state is the most valuable evidence and disappears at reset.

    • Reproduction first: a failure that happens every 20 minutes can be debugged; one that first appears after six hours, on one board in three, barely can.

    • Separate functional from electrical early: vary voltage, temperature and frequency (lesson 11.5).

    • Change one thing at a time, and keep a log of every experiment.

    • End in RTL: a root cause is confirmed when the RTL reproduces the failure and the fix removes it.

    How real teams debug silicon

    Practice

    Purpose

    Failure capture scripts run before any reset

    State preserved for analysis

    Reproduction suites shrinking failing tests

    Fast, reliable failures to work on

    Shmoo and margin experiments on every new failure

    Functional and electrical causes separated

    Replay of trace windows and scan dumps in simulation

    Root cause confirmed in RTL

    What breaks

    A team (illustrative) reset a hung board immediately each time to restart the test, hoping to catch the failure under a logic analyser. Each reset discarded the frozen state that a scan dump could have read. After two weeks they changed procedure: capture first, then reset. The next failure's scan dump showed a state machine in an illegal state in its first hour of analysis.

    Why this matters

    Senior lens. Run silicon debug as a narrowing procedure with a log: capture before reset, make the failure frequent, separate functional from electrical, localise, capture the window, and finish by reproducing in RTL. Every escape that reaches this point should also produce the pre-silicon check that would have caught it (lesson 11.7).

    Interview

    Asked: "Walk me through debugging a silicon failure."

    Weak answer: Reset the board and try again with more logging.

    Strong answer: First capture the state before any reset: status registers, counters, and a scan dump if the chip is frozen. Then make it reproducible and faster, by focusing the test on the suspected traffic. Separate functional from electrical by varying voltage, temperature and clock: a failure that doesn't move is functional. Localise to a block and interface by changing one condition at a time, then capture the window with a trigger on the trace buffer. Finally reproduce it in RTL simulation or emulation, confirm the fix there, and add the check that would have caught it pre-silicon.

    Follow-ups: (1) Why capture before reset? (2) How do you tell an electrical failure from a functional one?

    Check yourself In the walk-through, what told the team the failure was functional?

    It failed identically at high and low voltage, hot and cold, and at half clock speed; electrical margin failures move with those conditions.

    Check yourself Why is reproducing the failure in RTL the final step?

    It confirms the root cause and lets the fix be verified with full visibility before any change to silicon or software.

    Key takeaways

    • Silicon debug is a disciplined narrowing from symptom to root cause.

    • Capture before reset, reproduce reliably, separate functional from electrical, localise, capture the window.

    • Finish by reproducing in RTL and adding the check that would have caught it.

    Keep going

    Next: Lesson 11.5, Margins and Characterisation. Voltage, temperature and process: failures that move.

    Related topics

    • Part 11 overview: Post-Silicon Validation

    Previous

    110 / 160

    Next: Margins and Characterisation

    Up next

    Up nextMargins and Characterisation

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Pre-Silicon and Post-Silicon
    • Validation Strategy
    • Errata and Workarounds