ACE Verification Strategy

How do we guarantee that multi-core systems don't have data corruption?

The Main Goal

In standard AXI, you check if Data `D` from Master reaches Slave. In ACE, you must check if Core A's modification invalidates Core B's cache line before the next read.

Common Verification Holes

  • Snoop Collision: A snoop request arrives at the same time the cache is trying to eviction the same line.
  • Deadlocks: The snoop channel depends on the read channel, which depends on the snoop channel (Circular dependency).
  • State Corruption: A cache line is marked "Unique" when Core B also has a copy.

Strategy: The "Self-Checking" Cache Model

The best way to verify ACE is to build a "Golden Model" of all caches in the system inside your Scoreboard. Every time a transaction happens, update the Golden Model and verify the protocol responses match.