Coherency bugs require correlating three views: the initiating transaction (ID, address), the snoop responses (which caches responded, what state), and the final data delivery (who provided data, from cache or memory).
Use litmus tests with explicit initial values, operation semantics and a named memory model. A forbidden observed outcome is useful counterexample evidence only if the test and observation are valid; passing sampled executions is not a general proof. Do not use undefined non-atomic C/C++ races as hardware memory-model evidence.
Log format: timestamp, txn ID, address[addr_bits:line_bits], snoop type, responder, final state.
Deadlock: build a wait-for graph using held/requested buffers, credits, transaction slots and message dependencies; channel names alone are not resources.
False sharing can raise line-ownership traffic; correlate line addresses, writers and performance before naming it.
Log format: timestamp, txn ID, address[addr_bits:line_bits], snoop type, responder, final state.
Deadlock: build a wait-for graph using held/requested buffers, credits, transaction slots and message dependencies; channel names alone are not resources.
False sharing can raise line-ownership traffic; correlate line addresses, writers and performance before naming it.