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
  • Part 12: Bug Economics8
  • Part 13: Debug7
  • Part 14: Sign-Off7
  • Part 15: Verification in Context8
  • Part 16: Case Studies5
    • How to Read an Escape
    • The Pentium FDIV Bug
    • A Chipset Recall
    • Speculative Execution Attacks
    • Writing a Post-Mortem
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 16: Case Studies
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 16: Case Studies
  4. Writing a Post-Mortem

Part 16 · Case Studies · Principal (P)

Writing a Post-Mortem

A post-mortem turns an escape into changes: to the plan, the checks and the process, for this project and the next. Most fail by stopping at the fix, by blaming people, or by listing actions nobody owns. The structure of a useful post-mortem, the questions that get past the first cause, and a worked example on a DCRouter escape.

On this page

    Note

    Level: Principal (P) · Answers: What can real projects teach us?

    Before this: Speculative Execution Attacks, Root Cause and Fix Quality

    The three case studies were read from outside, through public facts. A team's own escapes can be read from inside, with every log, waveform and decision available. That is the post-mortem, and it is where most of a verification organisation's learning either happens or is lost.

    How do you write a post-mortem that actually changes what happens next time?

    The obvious answer, and why it breaks

    The obvious post-mortem records the bug, the fix and a new regression test. That stops this bug from returning and nothing else. Post-mortems also fail in two other common ways: by naming a person ("the engineer did not run the test"), which teaches people to hide escapes, and by listing actions ("improve coverage") with no owner, no date and no way to know they were done.

    The idea: a structure that forces the useful questions

    Section

    Content

    Common failure

    Summary

    What escaped, where it was found, impact

    Too long, or missing the impact

    Timeline

    When introduced, when it could have been caught, when found, when fixed

    Skipped, so the gap between introduction and detection is never seen

    Mechanism

    The bug's trigger and effect, with evidence (waveform, log)

    Hypotheses written as facts

    Why not caught

    For each technique: unreached, masked, unchecked or unspecified (lesson 11.7)

    Stops at the first cause

    Similar risks

    Where else the same class can occur (the sweep)

    Missing: the next escape is the cousin

    Actions

    Each with an owner, a date and a check that it is done

    Vague, unowned, never closed

    • Blameless: describe decisions and conditions, not people; the question is what made the escape possible.

    • Several whys, through the techniques: why did the stimulus not reach it, why did no check see it, why was it not in the plan?

    • Facts and hypotheses separated, as in lesson 16.1.

    Worked example: a DCRouter escape (illustrative)

    Suppose DCRouter had been signed off with the random-hunt testbenches of Parts 4 and 5 but without Part 6's coverage model, and a customer found that PKT_CNT3 never clears (BUG_16: the clear condition skips port 3). In the course's final bug-catch matrix (lesson 14.6), BUG_16 is caught only by the covered hunt, so this is a realistic escape for a team without that coverage.

    Section

    Content

    Summary

    Writing PKT_CNT3 does not clear it; ports 0-2 are correct. Found by a customer's driver; counter values for port 3 are wrong after clearing. No data corruption.

    Timeline

    Introduced in the counter rewrite; reachable by any test from then on; found after delivery; fixed in the next release.

    Mechanism

    The clear condition contains k != 3, a leftover from an earlier debug change; evidence: register write and read-back on port 3.

    Why not caught

    Stimulus: random tests wrote counter registers rarely and never cleared every counter. Checking: no check compared each counter with the model after a clear. Coverage: no bin for "PKT_CNT3 cleared", so nobody saw the hole. Plan: "clear each counter" was a feature with no evidence.

    Similar risks

    ERR_CNT clears; any per-port register written in a loop; any condition with a port-specific exception.

    Actions

    Add a check of every counter after every clear (owner: checker lead, this sprint). Add per-port clear bins to coverage (coverage owner, this sprint). Review all per-port registers for port-specific conditions (designer, two weeks). Add "every per-port register exercised per port" to the plan template (verification lead, next project).

    Notice that the fix to the RTL is one line and is not an action: it is already done. Every action is about why it escaped and where else it can happen, and each has an owner and a way to check it is done. The covered hunt in lesson 6.9 contains exactly these checks and bins, which is why it catches BUG_16.

    How real teams run post-mortems

    Practice

    Purpose

    A post-mortem for every escape past the planned stage

    Learning is routine, not reserved for disasters

    Blameless format agreed in advance

    People report escapes early and fully

    Actions tracked like bugs, reviewed until closed

    Changes actually happen

    Lessons added to plan templates and checklists

    The next project starts with them

    What breaks

    A team (illustrative) wrote thorough post-mortems, each ending with a list of improvements. A year later, a review found that fewer than a third of the actions had been done, and two escapes in the year belonged to classes already analysed. The documents were good; the actions had no owners and nobody tracked them. Post-mortem actions that are not tracked like bugs are not actions.

    Why this matters

    Principal lens. Run a blameless post-mortem for every escape, with a timeline, evidence, a why-not-caught analysis per technique, a sweep for similar risks and owned, dated, checkable actions. Track the actions to closure and add the lessons to the plan templates, so the next project starts where this one learned.

    Interview

    Asked: "How do you write a post-mortem for a bug that escaped?"

    Weak answer: Document the bug and the fix, and add a test.

    Strong answer: Blameless, with a fixed structure: summary and impact; a timeline from introduction to detection; the mechanism with evidence; then why it wasn't caught, technique by technique: was it unreached by stimulus, masked before a check, unchecked, or unspecified? Then a sweep for the same class elsewhere, and actions, each with an owner, a date and a check that it's done, tracked like bugs. The fix itself isn't an action; the actions are about why it escaped. Finally the lesson goes into plan templates so the next project starts with it.

    Follow-ups: (1) Why blameless? (2) What makes an action item useful?

    Check yourself Why is the RTL fix not one of the post-mortem's actions?

    It is already done and only stops this bug; the actions address why it escaped and where similar bugs could be.

    Check yourself What three properties does a useful action have?

    An owner, a date and a check that shows it is done.

    Key takeaways

    • A post-mortem's value is its actions, not its description of the bug.

    • Analyse why it was not caught per technique, and sweep for similar risks.

    • Keep it blameless, give every action an owner and a date, and track them to closure.

    Keep going

    Next: Part 17: Capstones. Can you apply all of it?

    Related topics

    • Part 16 overview: Case Studies

    Previous

    149 / 160

    Next: Part 17: Capstones

    Up next

    Up nextPart 17: Capstones

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • How to Read an Escape
    • The Pentium FDIV Bug
    • A Chipset Recall