This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5748: EMIF DDR3 Write Leveling

Part Number: AM5748

Our customer checked the result of full leveling and then have a question about the result of write leveling. The result of write leveling in the EMIF_PHY_STATUS_x registers is as follows:

 EMIF1_EMIF_PHY_STATUS_17.PHY_REG_WRLVL_DQ_RATIO0 = 98
 EMIF1_EMIF_PHY_STATUS_18.PHY_REG_WRLVL_DQ_RATIO2 = 95
 EMIF1_EMIF_PHY_STATUS_19.PHY_REG_WRLVL_DQ_RATIO4 = 109
 EMIF1_EMIF_PHY_STATUS_20.PHY_REG_WRLVL_DQ_RATIO6 = 107
 EMIF1_EMIF_PHY_STATUS_21.PHY_REG_WRLVL_DQ_RATIO8 = 120

 EMIF1_EMIF_PHY_STATUS_22.PHY_REG_WRLVL_DQS_RATIO0 = 66
 EMIF1_EMIF_PHY_STATUS_23.PHY_REG_WRLVL_DQS_RATIO2 = 63
 EMIF1_EMIF_PHY_STATUS_24.PHY_REG_WRLVL_DQS_RATIO4 = 77
 EMIF1_EMIF_PHY_STATUS_25.PHY_REG_WRLVL_DQS_RATIO6 = 75
 EMIF1_EMIF_PHY_STATUS_26.PHY_REG_WRLVL_DQS_RATIO8 = 88

WRLVL_DQS_RATIOx for DQS, WRLVL_DQ_RATIOx for the DQ, each of them will indicate a delay value from the rising edge of CK. The goal of write leveling is to locate the delay between the rising edge of the write DQS signal and the rising edge of the SDRAM memory clock (CK), but does not mention the DQ signal.

1) Does the write leveling locate the delay between the rising edge of the DQ signal and the rising edge of CK?

The difference between WRLVL_DQS_RATIOx and WRLVL_DQ_RATIOx in each of data macro indicates the same value for all data macros.

 WRLVL_DQ_RATIO0 - WRLVL_DQS_RATIO0 =  98 - 66 = 32
 WRLVL_DQ_RATIO2 - WRLVL_DQS_RATIO2 =  95 - 63 = 32
 WRLVL_DQ_RATIO4 - WRLVL_DQS_RATIO4 = 109 - 77 = 32
 WRLVL_DQ_RATIO6 - WRLVL_DQS_RATIO6 = 107 - 75 = 32
 WRLVL_DQ_RATIO8 - WRLVL_DQS_RATIO8 = 120 - 88 = 32

Each of delay values is the fraction of a clock cycle in units of 256ths. So that the difference between WRLVL_DQS_RATIOx and WRLVL_DQ_RATIOx is 32 indicates that the phase difference between DQS signal and DQ signal is 45 degrees (32/256 = 1/8).

2) Is WRLVL_DQ_RATIOx calculated based on WRLVL_DQS_RATIOx?

3) In this case, was the value of WRLVL_DQS_RATIOx plus 32 (45 degree phase difference) used for?

Our customer is testing whether the HW leveling is better than SW leveling because the HW leveling was not supported on products older than AM574x. The value of WRLVL_DQ_RATIOx is very different between the result of HW leveling and the result of SW leveling.

Best regards,

Daisuke

  • Daisuke,
    1. The goal of write leveling is strictly to align the rising edge of DQS with the rising edge of the clock
    2. WRLVL_DQ_RATIOx and WRLVL_DQS_RATIOx are independent
    3. The WRLVL_DQS_RATIO value is used for launching the DQS signal, and WRLVL_DQ_RATIO is used to launch the data.
    Since DQS is center aligned to DQ on writes, the 45deg phase difference makes sense between DQS and DQ.
    HW leveling is mandatory on AM574x. SW leveling is not supported.

    Regards,
    James
  • Hi James-san,

    Thank you for your reply.

    JJD said:

    Since DQS is center aligned to DQ on writes, the 45deg phase difference makes sense between DQS and DQ.

    For DQS to be center aligned to DQ, the phase difference should be 90 deg instead of 45 deg.

    Why is it the 45 deg phase difference?

    Is it possible that the skew between DQS and DQ on our customer's board has the 45 deg phase difference?

    Best regards,

    Daisuke

  • Daisuke, you are right, it should be 90deg.

    What is the value of PHY_HALF_DELAYS? If it is 1, then the slave delay lines need to be adjusted by a factor of 2, so a value of 32 really represents a 90deg shift if PHY_HALF_DELAYS=1

    Regards,
    James
  • Hi James-san,

    Thank you for your reply.

    I strongly recommend HW leveling to our customer but the customer wants to use SW leveling. So they want to know how to configure the registers correctly for SW leveling.

    The reason the customer wants to use SW leveling instead of HW leveling is that they want to clarify the timing margin for each of their boards. In their experience, they know that DRAM has a timing margin variation and a high defect rate. SW leveling can know the timing margin while process which it is running, but HW leveling cannot.

    There are some questions for SW leveling: http://e2e.ti.com/support/processors/f/791/t/769815

    Best regards,

    Daisuke