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
    • Verification, Validation and Test
    • The Cost of an Escape
    • Intent, Design and Implementation
    • You Cannot Test Everything
    • Confidence, Not Proof
    • The Verification Stack
    • Meet DCRouter
    • Drills: What Verification Is
  • 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
  • Part 17: Capstones5
  • Part 18: Interview Preparation6
Loading lesson

‹Part 0: What Verification Is
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 0: What Verification Is
  4. Intent, Design and Implementation

Part 0 · What Verification Is · Working (W)

Intent, Design and Implementation

A chip goes wrong in the gaps between what was wanted, what was written down and what was built. Why a design can pass every test and still be wrong, and why independence between the people who write the design and the checks matters.

On this page

    Note

    Level: Working (W) · Answers: What does it mean for a chip to work?

    Before this: Verification, Validation and Test

    An architect wants DCRouter to give high-priority packets precedence, but never let low-priority traffic starve. The specification says "high priority wins". The designer implements exactly that. The verification engineer, reading the same sentence, writes a check that high priority always wins. Every test passes. In the lab, a stream of high-priority traffic locks out low-priority packets for seconds. Design and checks agree perfectly; both disagree with what was wanted.

    Where do the gaps between intent, specification and implementation come from, and how does verification close them?

    The obvious answer, and why it breaks

    The obvious model is a single comparison: the testbench checks the design, and passing means correct. But a testbench encodes somebody's reading of the specification, and the specification encodes somebody's reading of the intent. If the design and the testbench are built from the same misreading, they agree, and the bug is invisible. Passing tests show agreement between two descriptions, not correctness.

    The idea: three descriptions that can disagree

    Description

    Who holds it

    How it goes wrong

    Intent

    Architects, customers, system teams

    Never fully written down; assumptions stay in people's heads

    Specification

    The document

    Ambiguous, incomplete or simply wrong about the intent

    Implementation

    The RTL

    Wrong about the specification, or right about a misreading of it

    Verification finds a bug when two independent readings of the specification disagree; if both readings share a mistake, nothing fails.

    How verification closes the gaps

    • Independent readings: the checks and the reference model are written from the specification by someone other than the designer, so a misreading shows up as a mismatch.

    • Specification review: questions raised while writing checks feed back into the specification (Part 2).

    • Validation scenarios: real workloads compare the whole product with intent, catching specification gaps (lesson 0.1).

    • Explicit rules for intent: unwritten assumptions ("low priority must not starve") become numbered, checkable rules.

    How real teams keep independence

    Practice

    Why

    Separate design and verification engineers

    Two readings of the specification instead of one

    Verification IP for standard interfaces

    An independent reading already tested on many designs

    Architect review of the verification plan

    Checks the plan against intent, not only the document

    Bugs filed against the specification

    Treats ambiguity as a bug to fix, not a judgment call to bury

    What breaks

    The opening priority bug (illustrative) was fixed by adding the missing intent to the specification as a rule: "a low-priority packet waiting at an output is served within 64 packets". That rule became an assertion, and the arbiter got a starvation limit. DCRouter's own rule R6 (round-robin within each class) is the kind of statement that would have been checked against the wrong reading if nobody had asked what the architect meant.

    Why this matters

    Senior lens. When a design and its testbench were written by the same person, or from the same notes, treat a clean regression with suspicion: it shows self-consistency, not correctness. Build independence in deliberately, through separate authors, reference models, VIP and review against intent, and record every ambiguity you find as a specification bug.

    Interview

    Asked: "Can a design pass every test and still be wrong?"

    Weak answer: Only if the tests didn't cover enough cases.

    Strong answer: Yes, even with complete coverage. Tests check the design against someone's reading of the specification. If the designer and the verifier misread the spec the same way, or the spec itself doesn't capture the intent, design and tests agree and nothing fails. That's why verification relies on independent readings, with checks and models written by someone other than the designer, VIP for standard interfaces, spec reviews driven by the questions verification raises, and validation against real use to catch gaps between the spec and the intent.

    Follow-ups: (1) How do you get independence on a small team? (2) What do you do when you find an ambiguity?

    Check yourself The designer wrote both the RTL and its testbench, and every test passes. What can you conclude?

    Only that the RTL and the testbench agree; any misreading of the specification is shared by both, so it cannot fail.

    Check yourself Which gap does a perfect verification process still miss?

    The gap between intent and specification: verification checks against the specification, so a specification that misstates the intent passes.

    Key takeaways

    • Intent, specification and implementation are three descriptions that can each disagree with the others.

    • Passing tests show agreement between design and checks, not correctness; shared misreadings stay invisible.

    • Independent readings, specification review and validation close the gaps.

    Keep going

    Next: Lesson 0.4, You Cannot Test Everything. Why even DCRouter cannot be tested exhaustively.

    Related topics

    • Part 0 overview: What Verification Is

    Previous

    8 / 160

    Next: You Cannot Test Everything

    Up next

    Up nextYou Cannot Test Everything

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Verification, Validation and Test
    • Confidence, Not Proof
    • The Verification Stack