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
    • Levels and What They See
    • What to Verify Where
    • Reuse up the Hierarchy
    • Standard Interfaces and VIP
    • SoC and Software-Driven Tests
    • Hardware-Software Co-Verification
    • Performance and Power Verification
    • Drills: Verification Levels and Reuse
  • 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 8: Verification Levels and Reuse
  1. Topics
  2. First Principles of Verification Strategy
  3. Part 8: Verification Levels and Reuse
  4. Levels and What They See

Part 8 · Verification Levels and Reuse · Working (W)

Levels and What They See

A chip is verified at several levels at once: unit, block, subsystem and full chip. Each level trades speed and controllability against realism. Why DCRouter's 24 bugs were cheap to find at block level, which bugs no block test can find, and why verifying everything at chip level is the slowest way to find most bugs.

On this page

    Note

    Level: Working (W) · Answers: At which level should each thing be verified?

    Before this: Part 8 overview, Controllability

    Every DCRouter testbench in this course drives the router's own pins directly: any packet, any timing, any register write, every cycle. Now place DCRouter inside a chip: its inputs come from four DMA engines, its outputs go to memory controllers, and its registers are written by firmware on a processor. Reaching the state where all four inputs send length-15 packets to output 0 means programming four DMA engines through software. The bug is the same; the cost of reaching it is not.

    Why verify at several levels, and what does each level see?

    The obvious answer, and why it breaks

    One obvious answer is "verify at chip level, because that is what ships". It is realistic and painfully slow: simulations run thousands of times slower, every block's corners must be reached through its neighbours and software, and failures are hard to localise. The opposite answer, "block level only", is fast and blind to integration: the neighbours were modelled by the verifier's assumptions (lesson 1.5). Each level sees what the others cannot.

    The idea: four levels, four trade-offs

    Level

    What it is

    Strength

    Weakness

    Unit

    A small module (a FIFO, an arbiter), often by its designer

    Very fast; full control; formal works well

    Sees nothing of the block's interactions

    Block

    A complete IP such as DCRouter, with its interfaces driven by agents

    Fast; every corner controllable; precise checks

    Neighbours are models, written from assumptions

    Subsystem

    Several blocks together (DCRouter with its DMA engines and memory controllers)

    Real interactions between neighbours

    Slower; less control over each block's corners

    Chip (SoC)

    Everything, with processors running software

    Real integration, real software, real configuration

    Slowest; hardest to control and debug; long runs

    DCRouter at each level

    Bug or risk

    Cheapest level

    Why

    The 24 Bug Zoo bugs

    Block (and unit for FIFO and arbiter)

    All visible at DCRouter's pins; every corner is one testbench line away

    A DMA engine that drops valid mid-packet, which DCRouter does not tolerate

    Subsystem

    A disagreement between two real blocks; block models of each were written by different people

    Firmware that enables low power before the credits are initialised

    Chip

    A sequence across software and hardware no block test contains

    The sleeping output not connected to the power controller

    Chip, or a connectivity check (lesson 7.7)

    A wiring fact that exists only at integration

    Guidelines

    • Find each bug at the lowest level that can see it: lower levels are faster, more controllable and easier to debug.

    • Use higher levels for what only they can see: interactions, integration, software, end-to-end performance.

    • Do not repeat lower-level work higher up: a chip test that re-verifies FIFO corners wastes the slowest cycles there are.

    • Carry checks upward: assertions and monitors from block level keep working inside the chip (lesson 8.3).

    How real teams organise levels

    Practice

    Purpose

    Block-level environments for every IP, with sign-off criteria

    Corners closed where they are cheap

    Subsystem environments for tightly coupled blocks

    Interactions verified before the full chip exists

    SoC tests focused on integration, flows and software

    Chip cycles spent on what only the chip shows (lesson 8.5)

    What breaks

    A team (illustrative) skipped block-level verification of a small interrupt aggregator, reasoning that SoC tests would exercise it. They did, for the common cases. A corner, two interrupts asserted in the same cycle from different domains, needed precise timing that no software-driven test could produce reliably, and it was found in the lab. A one-day block testbench would have reached it in minutes.

    Why this matters

    Senior lens. Map every risk to the lowest level that can see it, and spend chip-level cycles only on what lower levels cannot. Levels are not stages to pass through; they are different instruments, each pointed at a different class of bug.

    Interview

    Asked: "Why not verify everything at SoC level?"

    Weak answer: Because SoC simulation is slow.

    Strong answer: Speed is part of it: chip simulations are orders of magnitude slower. The bigger issue is control and visibility: reaching a block's corner through software and neighbours is hard, often impossible to do reliably, and failures are hard to localise. So each bug should be found at the lowest level that can see it: block-level corners at block level, interactions at subsystem level, and at chip level only what needs the chip: integration, software flows, end-to-end performance. In the course's router, all 24 planted bugs were visible at the block's pins.

    Follow-ups: (1) What can only the chip level find? (2) What do you carry from block to chip level?

    Check yourself Why is the DMA engine dropping valid mid-packet a subsystem-level bug rather than a block-level one?

    Each block's own testbench uses a model of the other written from assumptions; the disagreement only appears when the two real blocks are connected.

    Check yourself Why would re-running DCRouter's FIFO corner tests at chip level be poor use of effort?

    The block testbench already reaches them in a fraction of the time with full control; chip cycles are slow and should go to integration and software.

    Key takeaways

    • Unit, block, subsystem and chip levels trade speed and control against realism.

    • Find each bug at the lowest level that can see it.

    • Spend chip-level effort on integration, software and end-to-end behaviour, and carry block checks upward.

    Keep going

    Next: Lesson 8.2, What to Verify Where. Assigning each feature to a level.

    Related topics

    • Part 8 overview: Verification Levels and Reuse

    Previous

    82 / 160

    Next: What to Verify Where

    Up next

    Up nextWhat to Verify Where

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Reuse up the Hierarchy
    • Standard Interfaces and VIP
    • SoC and Software-Driven Tests