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 Path
  • Cache Coherency Glossary
  • The Shared Course Model
  • Cache Coherency Revision Sheet
  • Why Coherence Exists8
  • States and Protocols12
  • Transactions12
  • Races and Controller Design8
  • Progress and the Fabric16
  • Ordering and Synchronization12
  • Performance and Scalability12
  • Real Protocols12
  • SoC Integration12
  • Power, Clocking and Reliability12
  • Verification12
    • Coherency Scoreboards and Reference Models
      • Check Values, Not States
      • A Reference Model in Python
      • Random Traffic and Injected Bugs
      • Scoreboard Architecture
    • Formal Properties for Coherency Safety
    • Coverage Closure and Waiver Governance
  • Debug and Bring-up12
  • Interview and Design Review17
  • Capstone: A Coherent Model Lab5
Loading lesson

‹Verification
  1. Topics
  2. Cache Coherency
  3. Verification
  4. Coherency Scoreboards and Reference Models

Part 11 · Verification · All levels

Coherency Scoreboards and Reference Models

Judge a coherence design by the values its loads return, with an executable reference model, injected bugs and a testbench scoreboard built around them.

  • 4topics
  • 4lessons

A coherence testbench has to answer one question after every load: was that value allowed? This topic builds the answer in four steps: the specification a checker compares against, a runnable reference model of the course protocol with a golden-memory checker, three injected bugs the checker must catch, and the scoreboard that carries the same checks into a real testbench. The Python model in the second lesson is the course's central executable model: the course protocol and its invariants in a form you can run.

Lesson

After it you can...

Check Values, Not States

Write the per-location specification a load is checked against, and show a run whose states all look legal but whose load is wrong.

A Reference Model in Python

Build and run an MSI model with a home directory, unordered delivery and a checker that asserts SWMR and every value after every event.

Random Traffic and Injected Bugs

Inject three classic protocol bugs, show each one is caught, and explain why some need a particular interleaving.

Scoreboard Architecture

Place monitors, a write-order tracker, a value checker, protocol checkers and end-of-test checks in a real testbench.

Read in order. You need the data-value invariant, the MSI protocol and the race lessons of Part 4. The general testbench ideas (what a scoreboard is, how deep a reference model should go) are taught in the First Principles of Verification Strategy course and linked from each lesson; this topic applies them to coherence.

Check yourself A regression checks after every event that at most one cache is in M and that the directory agrees with the cache tags. Is that enough to sign off coherence?

No. Both checks look at labels. A design can keep every label legal and still hand a reader an old value, for example by sending the wrong buffer's data with a correct S grant. The sign-off check is the value every load returns, compared against the write order of that location.

Related topics

  • Shared course model

  • Prerequisite: the data-value invariant

  • First Principles of Verification Strategy: Scoreboards

PreviousNext: Check Values, Not States

Up next

Up nextCheck Values, Not States

Sign in to save progress

Practice this lessonReport an error

See also

  • Formal Properties for Coherency Safety
  • Coverage Closure and Waiver Governance