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. The Verification Stack

Part 0 · What Verification Is · Working (W)

The Verification Stack

Unit, block, subsystem, SoC and system verification each trade speed and visibility against realism. Why a chip is verified at several levels, what each level can and cannot find, and how the levels hand evidence to each other.

On this page

    Note

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

    Before this: Confidence, Not Proof

    A system-on-chip contains hundreds of blocks. A team could verify the whole chip at once, running real software on the full design. That test would be realistic, and it would take hours to boot, see almost nothing inside each block, and reach almost none of each block's corner cases. Or the team could test each block alone: fast, thorough, and blind to how the blocks behave together. Real projects do both, and more levels in between.

    Why is a chip verified at several levels, and what is each level good for?

    The obvious answer, and why it breaks

    The obvious choice is one level: "test the whole chip, because that is what ships", or "test every block thoroughly, and the chip will work". The first cannot reach corners or debug quickly; the second misses everything that happens between blocks. Each level sees some bugs well and others not at all, so evidence has to be gathered at several.

    The idea: each level trades visibility for realism

    Lower levels are fast and see everything, so they reach corners; higher levels are slow and see little, but they are the only place integration and software bugs appear.

    Level

    Speed and visibility

    Finds well

    Misses

    Unit

    Fastest; every signal visible; formal practical

    Corner cases of small logic

    Anything involving context

    Block

    Fast; full checking at interfaces and inside

    Feature bugs, protocol violations, corners

    Integration with neighbours

    Subsystem

    Moderate

    Interactions between closely coupled blocks

    Whole-chip effects, software

    SoC

    Slow; limited visibility

    Connectivity, address maps, interactions, boot

    Deep corners of any one block

    System

    Real time in the lab

    Software, electrical and real-world behaviour

    Almost all internal detail

    How the levels hand off

    • Lower levels prove features; higher levels prove that features connect and cooperate.

    • Checks travel up: assertions and monitors written at block level keep running at SoC level (Part 8).

    • Each level trusts the one below, but only as far as its evidence goes: an SoC test should not retest block corners, and must test what blocks could not see.

    How real teams split the work

    Level

    Typical owner and method

    Unit and block

    Block DV engineers: constrained random, assertions, coverage, formal on control logic

    Subsystem

    Integration DV: reuse of block environments, interaction scenarios

    SoC

    SoC DV: software-driven tests, connectivity checks, emulation

    System

    Validation and silicon teams: real software and boards

    What breaks

    A project (illustrative) skipped subsystem verification between a DMA engine and a memory controller, each thoroughly verified alone. At SoC level, a rare ordering of a DMA write and a controller refresh corrupted data, and took two weeks to reproduce in the slow SoC environment. A subsystem testbench of the two blocks together reproduced it in minutes after the fact, the level where it should have been found first.

    Why this matters

    Senior lens. Assign each feature to the lowest level that can see it fully, and assign each level the bugs only it can find. Most waste in verification comes from testing the same thing at two levels, or nothing at the level where a class of bug first becomes visible.

    Interview

    Asked: "Why verify at more than one level?"

    Weak answer: To be extra thorough.

    Strong answer: Because each level trades speed and visibility against realism. Unit and block levels are fast and see everything, so they reach corner cases and debug quickly, but they can't see interactions with other blocks or software. SoC and system levels are realistic, the only place connectivity, address-map, integration and software bugs appear, but they're slow and nearly blind inside each block. So features are proven at the lowest level that sees them fully, checks are reused upward, and higher levels focus on what lower levels can't see.

    Follow-ups: (1) What would you not retest at SoC level? (2) What travels from block to SoC level?

    Check yourself Where would you look for a bug in how two blocks share an address map?

    At SoC (or subsystem) level: neither block's own testbench contains the shared address map.

    Check yourself Why not test a FIFO's full-and-empty corners at SoC level?

    SoC simulation is slow and the FIFO's internal state is hard to steer and see there; a unit test or formal proof reaches those corners in seconds.

    Key takeaways

    • Each verification level trades speed and visibility against realism.

    • Prove features at the lowest level that sees them fully; test integration where it first becomes visible.

    • Reuse checks upward and avoid retesting the same thing at two levels.

    Keep going

    Next: Lesson 0.7, Meet DCRouter. The router you will verify, and the 24 bugs hidden in it.

    Related topics

    • Part 0 overview: What Verification Is

    Previous

    11 / 160

    Next: Meet DCRouter

    Up next

    Up nextMeet DCRouter

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Verification, Validation and Test
    • The Cost of an Escape
    • Intent, Design and Implementation