Write Latency Calibration - 1.0 English

Versal Adaptive SoC Soft DDR4 SDRAM Memory Controller LogiCORE IP Product Guide (PG353)

Document ID
PG353
Release Date
2023-10-18
Version
1.0 English

Write Latency Calibration is required to align DQS to the correct CK edge. During write leveling, DQS is aligned to the nearest rising edge of CK. However, this might not be the edge that captures the write command.

Depending on the interface type (UDIMM, RDIMM, LRDIMM, or component), the DQS could either be one CK cycle earlier than, two CK cycles earlier than, or aligned to the CK edge that captures the write command.

This is a pattern based calibration where coarse adjustments are made on a per byte basis until the expected on time write pattern is read back. The process is as follows:

  1. Issue extended writes followed by a single read.
  2. Check the pattern readback against the expected patterns.
  3. If necessary add coarse adjustments.
  4. Repeat until the on time write pattern is read back, signifying DQS is aligned to the correct CK cycle, or an incorrect pattern is received resulting in a Write Latency failure.

The following data is written at address 0x000:

  • Data pattern before (with extra DQS pulses): 0000000000000000
  • Data pattern written to address 0x000: FF00AA5555AA9966
  • Data pattern after (with extra DQS pulses): FFFFFFFFFFFFFFFFFF

Reads are then performed where the following patterns can be calibrated:

  • On time write pattern read back: FF00AA5555AA9966 (no adjustments needed)
  • One DQS early write pattern read back: AA5555AA9966FFFF
  • Two DQS early write pattern read back: 55AA9966FFFFFFFF
  • Three DQS early write pattern read back: 9966FFFFFFFFFFFF
  • Write Latency Calibration can fail for the following cases and signify a board violation between DQS and CK trace matching:

    • Four DQS early pattern FFFFFFFFFFFFFFFF
    • One DQS late write pattern read back: 0000FF00AA5555AA
    • Two DQS late write pattern read back: 00000000FF00AA55
    • Three DQS late write pattern read back: 000000000000FF00