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
    • Controllability
    • Observability
    • Bug Propagation and Masking
    • Black Box, White Box, Grey Box
    • Hooks and Test Modes
    • Design for Verification
    • Drills: Observability and Controllability
  • 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 3: Observability and Controllability
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 3: Observability and Controllability
  4. Design for Verification

Part 3 · Observability and Controllability · Principal (P)

Design for Verification

Verification cost is decided partly by the design: hidden state, fixed depths, long timers and tangled interfaces make every test harder. What designers can build in to make verification cheaper (status visibility, parameterised limits, clean interfaces, designer-owned assertions), what each costs, and what a verification lead would ask DCRouter's designer for.

On this page

    Note

    Level: Principal (P) · Answers: Can we see and steer what matters?

    Before this: Hooks and Test Modes

    Manufacturing test learned decades ago that a chip must be designed to be testable: scan chains make every flip-flop controllable and observable, at a small area cost, because testing without them is hopeless. Functional verification has the same problem and a weaker habit. Designs arrive with hidden credit counters, hard-coded depths and 16-bit timers, and the verification team spends months working around choices that would have cost the designer an afternoon to change.

    What can designers build in to make verification cheaper, and what would you ask for?

    The obvious answer, and why it breaks

    The obvious division of labour is that designers design and verifiers verify whatever arrives. That makes every controllability and observability problem the verifier's, solved with workarounds: backdoors into private signals, long tests to reach deep states, fragile white-box checks. Many of these problems are far cheaper to remove in the design than to work around in every test, for every derivative, for the life of the block.

    The idea: features that pay for themselves

    Feature

    What it buys

    Typical cost

    Status registers for important hidden state (credits, occupancy, state machines)

    Observability at a documented point; grey-box checks that survive redesign

    A few register bits and read muxing

    Parameterised depths, widths and counts

    Small test configurations where limits are close (a 2-entry FIFO fills at once)

    Careful parameterisation; the shipped values must still be verified

    Programmable or shortened timers

    Timeouts, idle detection and watchdogs reachable in simulation

    A register or parameter; the full value still needs one test or a proof

    Designer-written assertions on internal intent

    Bugs caught at the source by the person who knows the intent

    Designer time; assertions move with the RTL

    Clean, standard interfaces between blocks

    Reusable monitors, bind points and protocol checkers

    Discipline more than area

    Deterministic reset of all state

    No X-dependent behaviour; reset bugs visible

    Reset wiring for every flop that matters

    Debug counters and event traces

    Observability in simulation, emulation and silicon (Part 11)

    Area and power, often gated off in production

    What a verification lead would ask DCRouter's designer for

    Ask

    Why

    Lesson that needed it

    Credit counts in STATUS

    BUG_9 and BUG_22 lose credits invisibly; today only a credit audit sees them

    Observability (3.2)

    Parameter for FIFO depth

    A depth-2 configuration fills in two flits, making R1's boundary easy to reach

    Controllability (3.1)

    Idle-cycle threshold as a parameter

    Sleep entry (8 cycles) is reachable already; a larger threshold in a derivative would not be

    Controllability (3.1)

    Assertions on the FIFO, lock and credit logic, written by the designer

    Internal state is checked at its source and kept current by its owner

    Black, white, grey box (3.4)

    Round-robin pointers readable for debug

    Starvation (BUG_5) is otherwise visible only through fairness statistics

    Observability (3.2)

    Where to draw the line

    • Prefer features that also help debug and silicon bring-up: status visibility pays three times (simulation, emulation, lab).

    • Parameterise, then verify the shipped values: small configurations find logic bugs; the real configuration must still be run.

    • Avoid verification-only modes that change behaviour: every mode is more logic to verify and a mode that could be left on by mistake.

    • Ask early: features requested at specification review cost an afternoon; requested after RTL freeze they cost a change request.

    How real teams do it

    Practice

    Purpose

    Design-for-verification review alongside the specification review

    Asks are made while they are cheap (lesson 2.5)

    Designers own block-level assertions

    Intent is checked by the people who hold it

    Parameterised IP with verification configurations

    Small configurations for bugs, shipped configurations for sign-off

    What breaks

    A team (illustrative) inherited a block with a hard-coded 1,024-entry buffer and no status visibility. Reaching full took 1,024 transactions under stalled downstream traffic in every test that needed it, and wrong occupancy was visible only as data corruption much later. A depth parameter and an occupancy register, added in the next derivative at negligible cost, cut those tests from minutes to milliseconds and made the occupancy bug class directly checkable.

    Why this matters

    Principal lens. Make design-for-verification a line item in every specification review. Each request should name the controllability or observability problem it removes and the tests it makes cheaper. Small, early design changes are the highest-leverage verification work there is, because their savings repeat in every test and every derivative.

    Interview

    Asked: "What would you ask a designer to add to make verification easier?"

    Weak answer: More comments in the RTL.

    Strong answer: Things that remove controllability and observability problems at the source: status registers for hidden state like credit counts, FIFO occupancy and state-machine state; parameterised depths and timers so small configurations reach limits quickly; designer-written assertions on internal intent; clean standard interfaces I can bind monitors to; deterministic reset; and debug counters that also help in the lab. I'd ask at specification review, and for each one I'd say which tests it makes cheaper, while still verifying the shipped configuration.

    Follow-ups: (1) What is the risk of a small test configuration? (2) Why should designers write internal assertions?

    Check yourself Why does a parameterised FIFO depth help verification, and what must still be done?

    A small depth makes full and wrap-around easy to reach, finding logic bugs quickly; the shipped depth must still be verified, since bugs can depend on the real size.

    Check yourself Which DCRouter bugs would credit counts in STATUS make directly observable?

    BUG_9, BUG_10 and BUG_22: each leaves the wrong number of credits, visible as a wrong STATUS value instead of only through a credit audit.

    Key takeaways

    • Many verification problems are cheaper to remove in the design than to work around in every test.

    • Ask for status visibility, parameterised limits, designer assertions, clean interfaces and deterministic reset.

    • Ask at specification review, and still verify the shipped configuration.

    Keep going

    Next: Drills: Observability and Controllability. Interview questions, a whiteboard exercise and a ten-question checkpoint for Part 3.

    Related topics

    • Part 3 overview: Observability and Controllability

    • DFT course: Scan Fundamentals

    Previous

    38 / 160

    Next: Drills: Observability and Controllability

    Up next

    Up nextDrills: Observability and Controllability

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Controllability
    • Observability
    • Bug Propagation and Masking