A client recently came to me with a DDR4 issue on a brand new board, having trouble bringing up its DDR4. I started by reviewing their software and controller configuration, all looked good. The board had no obvious issues with proper voltages and clocks.
Next step: signal integrity. At DDR4 speeds, even small discontinuities can wreak havoc. I reviewed the board layout and checked the signals with a scope. Control traces looked clean. Clock edges were sharp, terminations matched, no reflections or ringing. Signal integrity wasn’t the problem
Schematics passed an initial review. But then I spotted it: RAS and CAS were swapped in the schematic! Easy to miss. Fatal to DRAM.
Of course, the traces were on an inner layer and popped up on vias directly under the DDR component. I found a local BGA rework shop and sent them the board. They lifted the part, ran hair-thin wires under the chip to swap the lines, reballed the BGA, then placed it back down.

Once the board came back, I powered it up. Memory initialized cleanly. Training passed. Full read/write verified. Problem solved.
Lesson: Even with good design and clean signals, a small schematic mistake will ruin your day. Always mind your RAS and CAS.