A protocol symptom crosses several contracts. Good debug follows one transaction through each boundary before assigning a cause.
Map software intent to transaction fields (ID, address, length, attributes, ordering).
Use symptoms to choose evidence, not to declare which layer owns the fault.
Carry transaction identity across waveform, VIP log, firmware trace, and analyzer capture.
Treat every bridge as a contract rewrite — attributes and IDs must survive or be explicitly remapped.
This is the foundation for every protocol in the course. Master it before AXI, DDR, or PCIe.
The target must supply the read result and the requester must receive the applicable transaction response.