Symptom: Intermittent read timeouts. Training passes. Directed memory tests pass. Mixed workload fails.
Check whether timeouts correlate with refresh commands and rank availability; correlation narrows the timing window but does not by itself prove an illegal controller command.
Compare training margins at fail temperature vs pass temperature.
Profile bank state and command timing; a high conflict rate can add service work but does not by itself prove the scheduler is unable to keep up.
Check DFI interface: is PHY reporting ready when controller sends commands?
Capture failing read's bank/row/col — is it always the same bank?
Assigning the fault to the PHY before checking the controller command trace and the selected device's timing constraints.
Assuming boot-time training guarantees margin at every operating corner; check the selected PHY's tracking and recalibration requirements.
Ignoring address interleave when profiling bank conflicts.