Setup: New DMA block hangs after 100 transfers. Waveform: valid and ready both low forever after stall. Block worked in previous revision.
Diff RTL: new engineer connected valid = downstream_ready & internal_valid.
First 100 transfers: consumer always ready — no stall, no bug.
With the next item pending, the consumer lowers READY and changes to a policy that waits to observe VALID before raising READY again.
READY gates VALID low, so the consumer never observes the pending item. Both stay low despite internal_valid=1. If an existing stalled offer was withdrawn, that is an additional handshake violation.
Fix: retain the pending item and assert VALID independently of READY; hold its payload until accepted. Add storage if registered backpressure permits extra input acceptances.
Outcome: The bug is exposed by a simulation that combines a pending item with a destination waiting for VALID. An always-ready test hides it.
Lesson: Directed tests without backpressure are insufficient for handshake validation.
Setup: Illustrative full-width 64-bit AXI read path at 1.25 GHz: theoretical peak 10 GB/s, observed 3.2 GB/s. The team proposes a 128-bit variant before examining request admission.
Count accepted full-width R beats: 32% of measured cycles. Separate cycles with RVALID=0 from those with RVALID=1 and RREADY=0.
In the illustrative trace, RREADY remains high but data arrives in groups separated by gaps. Four requests occupy all of the master's tracking slots; request issuance pauses until a completion frees a slot.
Assume the controller and all intermediate trackers can support 16 requests. A controlled replay increasing the master limit from four to 16 measures 7.8 GB/s at the same width and clock, below the 10 GB/s ceiling.
The improvement supports the limited-concurrency hypothesis for this replay. It does not establish that wider data could never help, or predict performance for another traffic pattern.
Outcome: The replay improved from 32% to 78% of its data-channel peak after changing request capacity alone. No unmeasured gain for a width change is claimed.
Lesson: Measure which channel stalls and why before any width/frequency change.