System layout and timing uncertainties should be considered in how your custom
controller sets minimum CAS command spacing. The controller must space the CAS commands
so that there are no DRAM timing violations and no
DQ
/DQS
bus drive fights. When a DDR4 SDRAM generated memory controller is instantiated,
the layout guidelines are considered and command spacing is adjusted accordingly for a
worst case layout.
Consider Read to Write command spacing, the JEDEC DRAM specification shows the component requirement as:
RL + BL/2 + 2 - WL. This formula only spaces the Read DQS
post-amble and Write DQS
preamble by
one DRAM clock on an ideal bus with no timing skews. Any DQS
flight time, write leveling uncertainty, jitter, etc. reduces this
margin. When these timing errors add up to more than one DRAM clock, there is a drive
fight at the Versal adaptive SoC DQS
pins which likely corrupts the Read transaction. A
DDR4 SDRAM generated controller uses the
following formula to delay Write CAS after a Read CAS to allow for a worst case timing
budget for a system following the layout guidelines: RL + BL/2 + 4 - WL.
Read CAS to Read CAS commands to different ranks must also be spaced by your custom controller to avoid drive fights, particularly when reading first from a "far" rank and then from a "near" rank. A DDR4 SDRAM generated controller spaces the Read CAS commands to different ranks by at least six DRAM clock cycles.
Write CAS to Read CAS to the same rank is defined by the JEDEC DRAM specification. Your controller must follow this DRAM requirement, and it ensures that there is no possibility of drive fights for Write to Read to the same rank. Write CAS to Read CAS spacing to different ranks, however, must also be limited by your controller. This spacing is not defined by the JEDEC DRAM specification directly.
Write to Read to different ranks can be spaced much closer together than Write to Read to the same rank, but factors to consider include write leveling uncertainty, jitter, and tDQSCK. A DDR4 SDRAM generated controller spaces Write CAS to Read CAS to different ranks by at least six DRAM clocks.