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
    • What Coverage Measures
    • Code Coverage
    • Functional Coverage Models
    • Crosses and the Combinatorial Explosion
    • Closure Curves
    • Holes and Unreachable Bins
    • Coverage-Driven Stimulus
    • Mutation Testing
    • A Coverage Model for DCRouter
    • Drills: Coverage
  • 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 6: Coverage
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 6: Coverage
  4. Holes and Unreachable Bins

Part 6 · Coverage · Senior (S)

Holes and Unreachable Bins

Every coverage hole ends one of three ways: hit it with new stimulus, prove it cannot happen and exclude it, or waive it with a documented reason and an owner. How to tell which, what evidence each needs, and DCRouter's four remaining holes after twelve merged seeds, decided one by one.

On this page

    Note

    Level: Senior (S) · Answers: How do we know we have tested enough?

    Before this: Closure Curves

    Lesson 6.9's DCRouter coverage model has 78 bins. Merged across twelve seeds of its final testbench, 74 are hit. Four are not: "CTRL lp_en 0", and "ERR_CNT0 saturated", "ERR_CNT1 saturated", "ERR_CNT3 saturated". Sign-off is next week. Someone suggests marking all four as excluded so the report says 100%. Each hole deserves a different answer, and one of them is not "exclude".

    What should be done with a coverage hole?

    The obvious answer, and why it breaks

    Two obvious answers are both wrong. "Hit every bin" ignores bins that cannot be hit, or that cost far more to hit than they are worth. "Exclude whatever is left" turns the coverage report into a document that agrees with itself. A hole is a question: did we not test this because it cannot happen, because it does not matter, or because we have not got to it yet? The answer must be recorded, with evidence.

    The idea: three endings, each with evidence

    Ending

    When

    Evidence required

    Hit

    The situation can occur and matters

    A test (directed, biased or coverage-driven) that hits it, in the regression, with its check active

    Exclude as unreachable

    No legal input can produce it

    A proof (formal, Part 7) or a design argument reviewed by the designer; the bin removed or marked illegal

    Waive

    It can occur but is judged not to need simulation

    A written reason, an owner, a reviewer, and where possible other evidence (formal, a related test, reuse)

    • Unreachable is a claim about the design, so it needs the design's authority: a proof or the designer's sign-off.

    • A waiver is a risk accepted by someone named: it appears in the sign-off review (Part 14).

    • An illegal bin is better than an excluded one when the situation must never occur: it becomes a check.

    DCRouter's four holes, decided

    Hole

    Can it occur?

    Decision

    CTRL lp_en 0

    Yes: software may disable low power

    Hit. A real mode never configured: add a phase with lp_en clear and check that DCRouter never sleeps (R13 says it sleeps only with lp_en)

    ERR_CNT0 saturated

    Yes

    Hit or waive. The four counters come from one loop in the RTL and ERR_CNT2's saturation is tested; a waiver citing that is defensible, but hitting the other three costs one loop of faulty packets per input

    ERR_CNT1 saturated

    Yes

    Same as ERR_CNT0

    ERR_CNT3 saturated

    Yes

    Same as ERR_CNT0

    None is unreachable, so none may be excluded. The cheap, honest choice is to hit all four; the waiver for the three counters is acceptable only with its reason written down, because "generated from the same loop" is an argument about the RTL that must stay true as the RTL changes.

    Signs a hole is really unreachable

    • Constraints are right and it still never occurs: check whether the environment's legal inputs can produce it at all.

    • The design logic prevents it: for example, a state reachable only from a state that is itself unreachable.

    • A formal tool proves the cover property unreachable: the strongest evidence (Part 7).

    • Never because "we have never seen it": rarity is not impossibility (lesson 6.5).

    How real teams manage holes

    Practice

    Purpose

    A hole list with owner, cause and decision for every empty bin

    No hole is silently ignored

    Formal unreachability checks on cover properties

    Proof instead of opinion for exclusions

    Waivers reviewed at sign-off, with their reasons

    Accepted risk visible to the people accountable (Part 14)

    What breaks

    A team (illustrative) excluded a coverage bin for a FIFO-overflow recovery path as "unreachable, the FIFO cannot overflow". A later change reduced the FIFO depth, and the path became reachable. The exclusion was still in place, the bin no longer counted, and the recovery logic, which had a bug, was never exercised. An exclusion backed by a formal proof would have been re-checked automatically after the change and failed.

    Why this matters

    Principal lens. Ask for the hole list, not the percentage: for every empty bin, the cause, the decision and the evidence. Treat exclusions as claims about the design that need proof, and waivers as risks that need a name beside them. A report that reaches 100% by exclusion has measured nothing.

    Interview

    Asked: "How do you handle unreachable coverage?"

    Weak answer: Exclude it from the report.

    Strong answer: First prove it is unreachable, not just unhit: check the constraints, reason from the design with the designer, and ideally prove the cover property unreachable with formal. Then exclude it with the reason recorded, or better mark it illegal so it becomes a check. Holes that can occur either get hit, by directed or steered stimulus, or are waived with a written reason, an owner and a reviewer, and appear in the sign-off review. On DCRouter, none of the four remaining holes was unreachable, so none could be excluded; one was a real mode never configured.

    Follow-ups: (1) Why prefer illegal bins to exclusions? (2) Who should approve a waiver?

    Check yourself Why is "CTRL lp_en 0" not a candidate for exclusion?

    It is a legal configuration software can choose; it can occur in the field, so it must be tested or explicitly waived, not declared unreachable.

    Check yourself What makes an exclusion backed by a formal proof safer than one backed by a comment?

    The proof is re-run when the design changes, so an exclusion that becomes wrong fails automatically; a comment stays wrong silently.

    Key takeaways

    • Every hole is hit, excluded as unreachable with proof, or waived with a reason and an owner.

    • Unreachable is a claim about the design; rarity is not impossibility.

    • Report the hole list with decisions, not just the percentage.

    Keep going

    Next: Lesson 6.7, Coverage-Driven Stimulus. Closing holes faster by steering stimulus.

    Related topics

    • Part 6 overview: Coverage

    Previous

    67 / 160

    Next: Coverage-Driven Stimulus

    Up next

    Up nextCoverage-Driven Stimulus

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • What Coverage Measures
    • Code Coverage
    • Functional Coverage Models