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
    • The Cost of Bugs by Stage
    • Bug-Discovery Curves
    • Diminishing Returns
    • Triage and Severity
    • Root Cause and Fix Quality
    • Estimating Remaining Bugs
    • Investing in Infrastructure
    • Drills: Bug Economics
  • 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 12: Bug Economics
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 12: Bug Economics
  4. Triage and Severity

Part 12 · Bug Economics · Working (W)

Triage and Severity

Not every bug deserves the same urgency. Triage ranks bugs by severity (what happens), likelihood (how often real use meets it), detectability and workaround, so fixing and re-verification effort go where the risk is. A triage scheme, applied to DCRouter's Bug Zoo, and the mistakes that make bug databases lie.

On this page

    Note

    Level: Working (W) · Answers: How do we spend verification effort wisely?

    Before this: Diminishing Returns

    Forty open bugs, two weeks to tape-out, one designer who can fix perhaps fifteen. The bug database lists them in the order they were filed, half marked "high" by whoever found them. Fixing the first fifteen on the list would be easy and would leave the router able to lose packets. Triage decides which fifteen.

    How do you prioritise bugs?

    The obvious answer, and why it breaks

    The obvious orders are first come first served, or the finder's own severity label. Finders rate bugs by how hard they were to find or how alarming the waveform looked; neither measures what the bug does to a product. Triage needs a common scale and a few separate questions, answered by people who know the use cases.

    The idea: four questions per bug

    Question

    Levels (typical)

    Why it matters

    Severity: what happens?

    Critical (data corruption, hang, security) · Major (feature broken) · Minor (degraded) · Cosmetic

    The consequence if it is met

    Likelihood: how often does real use meet it?

    Common path · Specific configuration · Rare corner · Unreachable in supported use

    Severity times likelihood is risk

    Detectability: does anyone notice?

    Loud (crash, error flag) · Silent (wrong data, lost throughput)

    Silent bugs are worse: they escape and corrupt

    Workaround: can it be avoided?

    None · Software sequence · Configuration · Documentation

    A good workaround lowers urgency

    Priority comes from all four together, decided in a regular triage meeting with design, verification, software and architecture, so the scale means the same thing for every bug.

    DCRouter's Bug Zoo, triaged as if found late

    Bug

    Severity

    Likelihood

    Detectable?

    Workaround

    Priority

    BUG_2 FIFO count wrong on push and pop together

    Critical: corruption

    Common under streaming

    Silent

    None

    Fix now

    BUG_24 back-to-back packet misrouted

    Critical: misrouting

    Common

    Silent

    Insert gaps (costly)

    Fix now

    BUG_20 sleeps mid-packet

    Critical: corruption

    Needs idle mid-packet

    Silent

    Disable low power

    Fix now or workaround

    BUG_5 round-robin stuck

    Major: starvation

    Under contention

    Silent (only latency)

    None

    Fix now

    BUG_13 no out_err for high priority

    Major: errors unreported

    Bad CRCs on high priority

    Silent

    None

    Fix

    BUG_19 one clear clears all

    Minor: statistics lost

    When software clears

    Visible in statistics

    Read all before clearing

    Workaround and erratum

    BUG_18 no pslverr for unmapped

    Minor

    Only buggy software

    Silent

    None needed in correct software

    Fix if cheap

    The two most dangerous properties appear together in the top rows: high severity and silent. A loud bug finds itself; a silent one ships.

    Keeping a bug database honest

    • One scale, applied in triage, not by the finder alone.

    • Duplicates merged, root causes linked: ten failures can be one bug (lesson 13.5).

    • "Not a bug" and "won't fix" recorded with reasons, reviewed at sign-off.

    • Bugs in the testbench tracked too: they cost time and hide design bugs (lesson 13.6).

    • Re-triage when facts change: a new use case can turn a minor bug critical.

    How real teams triage

    Practice

    Purpose

    Regular cross-functional triage meetings

    Consistent priorities, informed by use cases

    Severity definitions written down

    Labels comparable across finders and projects

    Open bugs by severity in sign-off criteria (lesson 14.2)

    No critical bug left open without a decision

    What breaks

    A team (illustrative) let finders set severity. Assertion failures were usually filed as critical because they halted the regression; a silent throughput bug found by a performance monitor was filed as minor because "everything still passes". At tape-out the critical list was mostly fixed testbench noise, and the throughput bug, the one customers would have measured, was still open.

    Why this matters

    Senior lens. Triage with four questions, not one label: severity, likelihood, detectability and workaround, decided together by people who know the use cases. Give silent, high-severity bugs the top of the list, and make every open bug's decision visible at sign-off.

    Interview

    Asked: "How do you prioritise bugs?"

    Weak answer: By the severity the finder assigned.

    Strong answer: In a cross-functional triage with four questions: severity (corruption, hang, security, broken feature, degradation, cosmetic), likelihood (how often real use meets it), detectability (loud or silent) and workaround (none, software, configuration, documentation). Silent high-severity bugs on common paths go first; minor bugs with good software workarounds may become errata. One written scale, duplicates merged by root cause, and every 'won't fix' recorded with a reason for sign-off.

    Follow-ups: (1) Why does detectability matter? (2) Who should be in triage?

    Check yourself Why is BUG_2 ranked above BUG_19 even though both affect counts?

    BUG_2 silently corrupts packet data on a common path with no workaround; BUG_19 loses statistics only when software clears counters and has a simple software workaround.

    Check yourself Why should finders not set final severity alone?

    Finders judge by how alarming the failure looked or how hard it was to find; severity depends on use cases and consequences that triage brings together.

    Key takeaways

    • Triage each bug by severity, likelihood, detectability and workaround.

    • Silent, high-severity bugs on common paths come first.

    • Use one written scale in a cross-functional meeting; record every decision for sign-off.

    Keep going

    Next: Lesson 12.5, Root Cause and Fix Quality. Fixes that add bugs, and verifying a fix.

    Related topics

    • Part 12 overview: Bug Economics

    Previous

    118 / 160

    Next: Root Cause and Fix Quality

    Up next

    Up nextRoot Cause and Fix Quality

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • The Cost of Bugs by Stage
    • Bug-Discovery Curves
    • Estimating Remaining Bugs