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
    • A Taxonomy of Bugs
    • Specification Bugs
    • Corner Cases and Boundaries
    • Concurrency and Races
    • Integration and Interface Bugs
    • Configuration and Mode Bugs
    • Performance Bugs
    • Reset, Clock and Power Bugs
    • Where Bugs Hide
    • Classifying the Bug Zoo
    • Drills: What Can Go Wrong
  • 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 1: What Can Go Wrong
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 1: What Can Go Wrong
  4. Classifying the Bug Zoo

Part 1 · What Can Go Wrong · Working (W)

Classifying the Bug Zoo

DCRouter step 2: sort the 24 Bug Zoo bugs into the Part 1 classes, then predict, before running anything, which verification technique is most likely to catch each class. The predictions become the hypotheses every later part tests.

On this page

    Note

    Level: Working (W) · Answers: What can go wrong?

    Before this: A Taxonomy of Bugs, Meet DCRouter

    A verification lead starting a new block does something before writing any test: they ask what could be wrong, sort the possibilities into kinds, and decide which technique will hunt each kind. That table becomes the backbone of the plan. You can now do the same for DCRouter, with one advantage real projects never have: the Bug Zoo will tell you, part by part, whether your predictions were right.

    Which classes of bug does DCRouter contain, and which technique should find each?

    The obvious answer, and why it breaks

    The obvious approach is to start writing tests and see what fails. That finds the bugs your first tests happen to reach, usually the easy classes, and gives no warning about classes nobody is hunting. Predicting first turns the plan into a set of testable claims: if a technique you expected to catch a class misses it, you have learned something about the technique or the class before silicon teaches you.

    The idea: classify, then predict

    The Bug Zoo's 24 bugs by class (from the DCRouter specification). Lessons 0.7 to 1.8 have already described many of them as examples; the full bug-catch matrix comes in Part 14.

    Class

    Bugs

    Count

    Rules involved

    Corner case and boundary

    1, 3, 8, 12, 15

    5

    R1, R3, R4, R8, R9

    Concurrency and race

    2, 9, 11, 24

    4

    R2, R3, R7, R10

    Configuration and mode

    6, 7, 13, 23

    4

    R1, R6, R8

    Performance and fairness

    5, 10

    2

    R6, R7

    Error handling and specification

    4, 18

    2

    R5, R12

    Registers and integration

    14, 16, 19

    3

    R9, R10

    Reset

    17

    1

    R11

    Low power

    20, 21, 22

    3

    R13

    Predictions to test

    These are predictions, made before any run, of how likely each technique is to catch each class: high, medium or low. Write your own before reading this table; later parts measure the truth.

    Class

    Smoke test (0.7)

    Directed tests (4.1)

    Constrained random (4.10)

    Assertions (5.3)

    Scoreboard (5.4)

    Formal (7.9)

    Corner case and boundary

    low

    medium

    medium

    medium

    high

    high

    Concurrency and race

    low

    low

    high

    medium

    high

    high

    Configuration and mode

    low

    medium

    medium

    low

    medium

    medium

    Performance and fairness

    low

    low

    low

    medium

    low

    medium

    Error handling and specification

    low

    high

    medium

    low

    high

    low

    Registers and integration

    low

    high

    low

    low

    low

    low

    Reset

    medium

    high

    low

    low

    low

    medium

    Low power

    low

    medium

    low

    medium

    medium

    medium

    Step 1 has already tested the first column: the smoke test caught one concurrency bug (BUG_2), one corner case (BUG_8) and the reset bug (BUG_17), 3 of 24, consistent with "low" everywhere and "medium" for reset.

    Reasoning behind the predictions

    • Scoreboards catch data corruption of any cause, so they rate high for corner cases and races that corrupt packets, but low for bugs that corrupt nothing (performance, registers).

    • Random traffic creates simultaneous events constantly, so it rates high for races, but rarely writes registers or idles long enough to sleep.

    • Directed tests catch what someone listed: registers, reset values and error codes are easy to list.

    • Formal is strong on small control logic (FIFOs, arbiters, credit counters) and weak on registers and integration that span the design.

    • Performance bugs need performance checks: no technique that compares data will see them.

    How real teams use a prediction table

    Practice

    Purpose

    Class-by-technique matrix in the plan

    Shows which classes have a strong technique and which have none

    Revisiting it as bugs are found

    Corrects wrong assumptions early

    Escapes mapped onto it

    Shows which cell failed

    What breaks

    A plan (illustrative) listed random simulation as the technique for "everything". Mapped onto a class matrix, its column was empty for performance, power and registers. The team added a fairness monitor, sleep-and-wake scenarios and a register test sequence; each found bugs within a week.

    Why this matters

    Senior lens. Make predictions explicit and falsifiable. A plan that says "random simulation will find corner-case bugs" can be checked against coverage and the bug tracker; one that says "we will run lots of tests" cannot. Every surprise in the bug-catch matrix is a lesson about your techniques that is far cheaper to learn now than from an escape.

    Interview

    Asked: "How do you decide which verification technique to use for which part of a design?"

    Weak answer: Use random simulation for everything and formal if there's time.

    Strong answer: Start from what could go wrong. I sort the likely bugs into classes, corner cases, races, configuration, performance, errors, registers, reset and power, and for each class pick the technique that sees it best: biased random or formal for corners, random timing and scoreboards for races, randomised setup and configuration coverage for modes, performance monitors for fairness, directed tests for registers and error codes, power-aware tests for sleep and wake. Then I treat that table as predictions and check them against what actually finds bugs.

    Follow-ups: (1) Which class has no good technique in most plans? (2) What would make you change the table?

    Check yourself Which Bug Zoo classes would a scoreboard comparing packets probably miss entirely?

    Performance (nothing is corrupted), registers (packets are fine, counts are wrong) and some configuration bugs that change behaviour but not data.

    Check yourself Why predict before running the techniques?

    So the results test a hypothesis: a miss where you expected a catch reveals a weakness in the technique or your understanding, before silicon does.

    Key takeaways

    • DCRouter's 24 bugs span eight classes; each class favours different techniques.

    • Predict which technique catches each class before running anything.

    • Every later part measures one column of the bug-catch matrix against these predictions.

    Keep going

    Next: Drills: What Can Go Wrong. Interview questions, a whiteboard exercise and a ten-question checkpoint for Part 1.

    Related topics

    • Part 1 overview: What Can Go Wrong

    • Meet DCRouter

    Previous

    23 / 160

    Next: Drills: What Can Go Wrong

    Up next

    Up nextDrills: What Can Go Wrong

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • A Taxonomy of Bugs
    • Specification Bugs
    • Corner Cases and Boundaries