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.
ACE Verification Strategy
How do we guarantee that multi-core systems don't have data corruption?
The Main Goal
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.