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. Reuse up the Hierarchy

Part 8 · Verification Levels and Reuse · Senior (S)

Reuse up the Hierarchy

Block-level verification produces assets that keep working higher up: assertions inside the design, monitors and checkers on interfaces, scoreboards that can run passively, coverage models and register models. What travels from block to chip, what must change (drivers become monitors), and what DCRouter's testbench would contribute to an SoC environment.

On this page

    Note

    Level: Senior (S) · Answers: At which level should each thing be verified?

    Before this: What to Verify Where

    DCRouter's verification so far produced an environment with drivers and sinks, a per-flow scoreboard, seven pin assertions, an arbitration checker, a 78-bin coverage model and designer-owned formal properties. In an SoC, nobody drives DCRouter's pins: DMA engines do. Most of that work could be thrown away and rewritten for the chip, or most of it could keep running inside the chip, checking DCRouter in its real surroundings for free.

    What block-level verification can be reused at higher levels, and how?

    The obvious answer, and why it breaks

    The obvious view is that block testbenches are scaffolding, discarded once the block is integrated, since the chip has its own tests. That throws away the most precise checks the project owns, exactly when bugs become hardest to localise. A chip-level failure that a reused DCRouter assertion flags at the router's pins, naming the rule, saves days compared with a wrong result at the end of a software test.

    The idea: passive parts travel, active parts are replaced

    In the chip, real neighbours drive DCRouter; the block environment's passive parts keep observing and checking it.

    Asset

    Reused at higher levels?

    How

    Assertions inside the design (designer and formal properties)

    They travel with the RTL

    Simulation assertions run in every chip test; properties under ifdef FORMAL run only in formal unless also compiled for simulation

    Interface assertions and protocol checkers

    Yes

    Bound or instantiated on the same interfaces in the chip

    Monitors

    Yes

    Passive: they only observe pins

    Scoreboards

    Yes, if fed by monitors

    Predictions from monitored inputs, not from drivers (lesson 5.4)

    Coverage models

    Yes

    Sampled from monitors; shows what the chip tests exercised in the block

    Register models

    Yes

    The same model, accessed through the chip's bus

    Drivers, sinks, sequences

    Mostly no

    Real neighbours replace them; some sequences become software or virtual sequences

    What DCRouter's environment would contribute

    • dcr_sva.svh: once wrapped in a checker module and bound to the DCRouter instance, its pin assertions for R1, R8, R12 and R13 (quiet while asleep, wake) run unchanged in every chip test; the R13 sleep-timing assertion counts idle cycles from the block testbench's own queues and must first be rewritten to use monitored pins. The formal properties travel inside dcrouter.sv but sit under ifdef FORMAL, so they run in formal, not in chip simulation, unless also compiled with a simulation define.

    • The scoreboard, once it decodes predictions from monitored flits (below): every packet through the router in a software test is checked.

    • The coverage model: reveals which router situations software tests reach; holes stay assigned to block level.

    • Not reusable as is: queue_pkt(), timing knobs and the sinks' drain rates, replaced by real DMA engines and memory controllers.

    One change is needed first, and it is instructive. DCRouter's environment predicts at the moment a flit is accepted (in_vld and in_rdy), which is right, but it takes each flit's destination and expected error flag from its own driver's record of the packet. At chip level there is no driver record. A reusable scoreboard decodes both from the monitored flits instead: the destination from the header, the error flag by recomputing the CRC and checking the length. Designing for reuse means predicting from what the pins show, not from what the testbench intended.

    How real teams reuse verification

    Practice

    Purpose

    Agents with active and passive modes (UVM)

    The same agent drives at block level and only monitors at chip level

    Assertion and coverage libraries per interface

    Written once, used at every level and in every project

    Block scoreboards enabled in subsystem and chip tests

    Precise, localised failures in slow, large tests

    What breaks

    A team (illustrative) wrote block scoreboards that predicted from their drivers' transaction objects instead of from monitors. At chip level there were no drivers, so the scoreboards had nothing to predict from and were disabled. A chip-level bug in one block surfaced as a corrupted file system in a software test and took a week to trace back. Monitor-fed scoreboards would have flagged the block's wrong output on the cycle it happened.

    Why this matters

    Senior lens. Design block environments for reuse from day one: predict from monitors, keep checks passive, put assertions in the RTL or bind them to interfaces. The return comes at chip level, where precise, localised failures are worth the most.

    Interview

    Asked: "What can you reuse from block level?"

    Weak answer: The tests.

    Strong answer: Mostly the passive parts: assertions inside the RTL and on interfaces, monitors, monitor-fed scoreboards, coverage models and the register model. Drivers and sequences are mostly replaced by real neighbours and software. The key design decision is predicting from monitored inputs, not from the drivers, so the scoreboard keeps working when there are no drivers. Then chip-level failures are flagged at the block's pins with a named rule instead of as a wrong result at the end of a software test.

    Follow-ups: (1) What is a passive agent? (2) Why do driver-fed scoreboards break at chip level?

    Check yourself Which DCRouter checks travel to chip level with the least work?

    Assertions written purely on DCRouter's pins (most of dcr_sva.svh). Not quite all: the R13 timing assertion reads the block testbench's queues, and the formal properties inside dcrouter.sv travel with the RTL but run only in formal.

    Check yourself What does DCRouter's coverage model tell the chip team that the block team cannot see?

    Which router situations the chip's software tests actually reach; holes there show what integration testing never exercised.

    Key takeaways

    • Passive verification assets travel up the hierarchy: assertions, monitors, scoreboards, coverage, register models.

    • Active parts (drivers, sinks) are replaced by real neighbours and software.

    • Predict from monitors so scoreboards keep working without drivers.

    Keep going

    Next: Lesson 8.4, Standard Interfaces and VIP. Independent models of standard interfaces.

    Related topics

    • Part 8 overview: Verification Levels and Reuse

    • UVM course: Environments and Tests

    Previous

    84 / 160

    Next: Standard Interfaces and VIP

    Up next

    Up nextStandard Interfaces and VIP

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Levels and What They See
    • SoC and Software-Driven Tests
    • Hardware-Software Co-Verification