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.

Keystone I DDR3 Leveling Issue

Other Parts Discussed in Thread: TMS320C6678

For the Keystone I Devices, there are some leveling issue described in Silicon Errata below.

TMS320C6678 Multcore Fixed & Floating-Point DSP Silicon Errata (Revs 1.0, 2.0) (Rev. F)
http://www.ti.com/lit/er/sprz334f/sprz334f.pdf
Advisory 9  DDR3 Automatic Leveling Issue
Advisory 26 DDR3 Incremental Write Leveling Issue

Advisory 9 describes the Read Data Eye Training issue. There are the three leveling types in the Automatic Leveling, i.e. Write Leveling, Read DQS Gate Training and Read Data Eye Training. This issue is only related to the Read Data Eye Training.
For Workaround 1 in Advisory 9, the Partial Automatic Leveling is used.
For Workaround 3 in Advisory 9, the Partial Automatic Leveling with the Incremental Leveling is used.
These details are described in Application Note below.
In addition, the Application Note describes using the Full Automatic Leveling with the Incremental Leveling for the latest KeyStone devices.
The devices supporting these leveling mode are described in the Table 3.

KeyStone DDR3 Initialization (Rev. A)
http://www.ti.com/lit/an/sprabl2a/sprabl2a.pdf
Table 3  Leveling Modes Supported
3.2 Partial Automatic Leveling
3.2.1 Executing Partial Automatic Leveling
3.2.2 Enabling Incremental Leveling with Partial Automatic Leveling
3.3 Full Automatic Leveling

For the more optimum leveling, which of these leveling modes should be used? Should the Full Automatic Leveling with the Incremental Leveling be used?

The timeout register bits in the DDR3 Memory Controller Status Register can be read to verify that the leveling completed as expected.

DDR3 Memory Controller for KeyStone Devices User's Guide (Rev. C)
http://www.ti.com/lit/ug/sprugv8c/sprugv8c.pdf
4.2 DDR3 Memory Controller Status Register (STATUS)

Can the reading these bits ensure the detection of the failure of the leveling? Should the data written be verified? If so, how should it be verified? Should all addresses be verified?

For the DDR3 Register values and the DDR3 PHY initial values, two spreadsheets below are used.

DDR3-Register-Calc-v4
http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/639/6013.DDR3-Register-Calc-v4.xlsx

DDR3-PHY-Calc-v10
http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/639/8130.DDR3-PHY-Calc-v10.xlsx

Are these spreadsheets the latest version?

Best regards,

Daisuke

 

  • Hi,

    I'm sorry, I made a mistake for the Workaround 3 in Advisory 9.

    For Workaround 3 in Advisory 9, the Full Automatic Leveling with the Incremental Leveling is used for the latest KeyStone devices. The details are described in Application Note below.

    KeyStone DDR3 Initialization (Rev. A)
    http://www.ti.com/lit/an/sprabl2a/sprabl2a.pdf
    3.3 Full Automatic Leveling

    In this leveling mode, Incremental leveling is used for the Read DQS Gate Training and the Read Data Eye Training and can work in substitution for Full Automatic Leveling that has the Read Data Eye Training issue. For the more optimum leveling, this leveling mode should be used.
    Note: Incremental leveling cannot be used for the Write Leveling because there is the Incremental Write Leveling Issue described in the Silicon Errata Advisory 26.

    Is my above-mentioned understanding correct?

    Please give me an answer for my questions as soon as possible.

    Daisuke Maeda said:

    The timeout register bits in the DDR3 Memory Controller Status Register can be read to verify that the leveling completed as expected.

    DDR3 Memory Controller for KeyStone Devices User's Guide (Rev. C)
    http://www.ti.com/lit/ug/sprugv8c/sprugv8c.pdf
    4.2 DDR3 Memory Controller Status Register (STATUS)

    Can the reading these bits ensure the detection of the failure of the leveling? Should the data written be verified? If so, how should it be verified? Should all addresses be verified?

    Daisuke Maeda said:

    For the DDR3 Register values and the DDR3 PHY initial values, two spreadsheets below are used.

    DDR3-Register-Calc-v4
    http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/639/6013.DDR3-Register-Calc-v4.xlsx

    DDR3-PHY-Calc-v10
    http://e2e.ti.com/cfs-file.ashx/__key/communityserver-discussions-components-files/639/8130.DDR3-PHY-Calc-v10.xlsx

    Are these spreadsheets the latest version?

    Your prompt reply would be appreciated.

    Best regards,

    Daisuke

     

  • Hi,

    I have some more questions.

    For Workaround 3 in Advisory 9, Incremental leveling is used only for the Read Data Eye Training.
    In the Application Note, Incremental leveling is used for both the Read DQS Gate Training and the Read Data Eye Training.

    For the more optimum leveling, should both the Read DQS Gate Training and the Read Data Eye Training be performed?

    For Workaround 3 in Advisory 9, if desired, the initialization routine can disable the Incremental leveling after it works.
    In the Application Note, it is highly recommended for long-term DDR3 operation stability at the higher operating rates that the Incremental leveling occurs periodically during normal operation.

    KeyStone DDR3 Initialization (Rev. A)
    http://www.ti.com/lit/an/sprabl2a/sprabl2a.pdf
    3 Leveling Execution

    For the more optimum leveling, should the Incremental leveling occur periodically during normal operation?

    Best regards,

    Daisuke

     

  • Hi,

    Some custom boards have the DDR3 issue. After initialization, the written data are verified. The following table shows those worst cases.

    For the more optimum leveling, after the Full Automatic Leveling, the Incremental Leveling with the Read DQS Gate Training and the Read Data Eye Training should be used. But this leveling mode may fail. Which of the leveling modes should be used?

    Please see DDR3Init() in the attached source file for the initialization sequence. Does it have any mistake?

    1616.Setup_Pllc.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    /******************************************************************************
    * Copyright (c) 2010-2011 Texas Instruments Incorporated - http://www.ti.com
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
    * are met:
    *
    * Redistributions of source code must retain the above copyright
    * notice, this list of conditions and the following disclaimer.
    *
    * Redistributions in binary form must reproduce the above copyright
    * notice, this list of conditions and the following disclaimer in the
    * documentation and/or other materials provided with the
    * distribution.
    *
    * Neither the name of Texas Instruments Incorporated nor the names of
    * its contributors may be used to endorse or promote products derived
    * from this software without specific prior written permission.
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Best regards,

    Daisuke

     

  • Daisuke,

    The KeyStone-I leveling errata and associated work-arounds are elaborated in the DDR3 Initialization document.  Both the Partial Automatic Leveling and the Full Automatic Leveling processes are fully verified and equally robust.  Continuous incremental leveling is optional, but not required.  All of this is explained in the  DDR3 Initialization document.  The PHY_CALC and REG_CALC worksheets associated with the DDR3 Initialization document are the latest revision and they must be used.

    1. That being said, what is the reported problem?
    2. What device are you using?
    3. Have you verified that the routing rules have been followed?  Can you provide a report showing that these rules have been met?
    4. Can you also provide completed PHY_CALC and REG_CALC worksheets?
    5. What memory are you using and at what frequency?  Have you measured the DDRCLKOUT signal to verify proper clock rate?

    Tom

  • Hi Tom,

    Thank you for your reply. Sorry for my late reply.

    1. The reported problem is that the read data do not sometimes accord with the written data.

    2. C6678 is used.

    3. It has not been verified properly. I confirm whether there is the report which can be provided.

    4. Our PHY_CALC is attached below. REG_CALC is not used because the using memory is not listed in REG_CALC.

    0066.DDR3 PHY Calc v10.xlsx 

    5. The model number of the using memory is "MT41K256M16HA-125:E" and the frequency is 666.67MHz. I confirm whether the DDRCLKOUT signal has been measured.

    For our boards, the Full Automatic Leveling can reduce the frequency that an error occurs in comparison with the Partial Automatic Leveling. The Incremental Leveling is used for workaround associated with Advisory 9.
    Here is the latest test result for the Incremental Leveling after the Full Automatic Leveling.

    It can detect all errors to verify the written data of the 32K bytes after at least 64 times of the Incremental Leveling was performed at end of an initialization routine, and, in the case of an error, it can avoid this problem to perform an initialization routine again.

    However, because the continuous incremental leveling reduces bandwidth our customer does not want to use it.

    Please tell me the procedure to disable the Incremental Leveling after at least 64 times of it was performed.

    Best regards,

    Daisuke

     

  • #1:  For the failures, is there any pattern?  Same location(s) on different test runs?  Errors always in certaain byte lanes or bit lanes?  Is it a write or read failure?  When you read a failed location after a write failure, you get the same wrong contents.  Alternately, read failures may intermittently return the value written but it is not always the correct value.

    #3:  A length matching report is needed like the one attached.

    8637.Shn_EVM_DDR3_Rules_1201.xls

    #4:  The REG_CALC worksheet allows you to enter the settings for any memory device in the last column.  Please populate a worksheet and verify that the values match the ones programmed.

    #6:  The incremental leveling is disabled by clearing the bits that enabled each incremental leveling mode.

    Tom

     

  • Hi Tom,

    Thank you for your reply. Sorry for my late reply.

    This problem seems to have been cleared. When only the Partial Automatic Leveling is used, any error have not occurred.
    We made many mistakes for our PHY_CALC. The fatal mistake is that the trace length of each byte lane was not input into the row corresponding to them. Our latest PHY_CALC is attached below.

    6471.DDR3 PHY Calc v10_20140106.xlsx

    If any problem occurs again I report it.

    Tom Johnson16214 said:

    #6:  The incremental leveling is disabled by clearing the bits that enabled each incremental leveling mode.

    Does it mean that a value of zero is set to each field in the RDWR_LVL_RMP_CTRL register? Those fields as follows:

     - RDLVLINC_RMP_INT
     - RDLVLGATEINC_RMP_INT
     - WRLVLINC_RMP_INT

    Best regards,

    Daisuke

     

  • Daisuke,

    You can write registers: RDWR_LVL_RMP_CTRL = 0x0; and RDWR_LVL_CTRL = 0x0; to end all incremental leveling actions.

    I am glad that you got it working.

    Tom

     

  • Hi Tom,

    Thank you for your reply. I am grateful for your cooperation.

    Best regards,

    Daisuke