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.

About the "Software Leveling procedure"

Hi

I did the "Software Leveling procedure" with the wiki page below.

http://processors.wiki.ti.com/index.php/AM335x_DDR_PHY_register_configuration_for_DDR3_using_Software_Leveling

When I  determine the initial seed values to input in the program by using the Ratio Seed spreadsheet,

about the  PHY_INVERT_CLKOUT, the description like below:

  • If (DDR_CK length) < (DDR_DQS length), program this register to 1
  • If (DDR_CK length) > (DDR_DQS length), program this register to 0

But In our condition, the DDR_DQS length of byte0 is longer than DDR_CK length, and the DDR_DQS length of byte1 is short than DDR_CK length.

In particular, the DDR_DQS length of byte0 is 1.249,  the DDR_DQS length of byte1 is 1.005, and the DDR_CK length is 1.123 .

What value should be input to PHY_INVERT_CLKOUT?

In this condition, Is the "Software Leveling procedure" available?

Thanks!

 

  • Your CK length is right in the middle. Try both values for PHY_INVERT_CLKOUT and check which will yield good results.

  • Hi Biser 

    Thanks for reply.

    When PHY_INVERT_CLKOUT = 1, Optimal values are all zero:

    ***************************************************************

            The Slave Ratio Search Program Values are...

    ***************************************************************

    PARAMETER                       MAX  |  MIN  | OPTIMUM |  RANGE

    ***************************************************************

    DATA_PHY_RD_DQS_SLAVE_RATIO    0x000 | 0x000 |  0x000  | 0x000

    DATA_PHY_FIFO_WE_SLAVE_RATIO   0x000 | 0x000 |  0x000  | 0x000

    DATA_PHY_WR_DQS_SLAVE_RATIO    0x000 | 0x000 |  0x000  | 0x000

    DATA_PHY_WR_DATA_SLAVE_RATIO   0x000 | 0x000 |  0x000  | 0x000

    ***************************************************************

    ------------------------------

    When PHY_INVERT_CLKOUT = 0, Optimal values are not zero:

    ***************************************************************

            The Slave Ratio Search Program Values are...

    ***************************************************************

    PARAMETER                       MAX  |  MIN  | OPTIMUM |  RANGE

    ***************************************************************

    DATA_PHY_RD_DQS_SLAVE_RATIO    0x067 | 0x003 |  0x035  | 0x064

    DATA_PHY_FIFO_WE_SLAVE_RATIO   0x13a | 0x000 |  0x09d  | 0x13a

    DATA_PHY_WR_DQS_SLAVE_RATIO    0x06b | 0x009 |  0x03a  | 0x062

    DATA_PHY_WR_DATA_SLAVE_RATIO   0x0a7 | 0x03f |  0x073  | 0x068

    ***************************************************************

    Why the optimal values became zero? Is that error?

    Which values should be used?

    Thanks!

     

  • The non-zero values (PHY_INVERT_CLKOUT = 0) should be the good ones. You should try with them.

  • Hi Biser
     
    I also became zero as this quetion.
    Why the optimal values became zero? Is that error?






    When PHY_INVERT_CLKOUT = 1, Optimal values are all zero:
    ***************************************************************
            The Slave Ratio Search Program Values are...
    ***************************************************************
    PARAMETER                       MAX  |  MIN  | OPTIMUM |  RANGE
    ***************************************************************
    DATA_PHY_RD_DQS_SLAVE_RATIO    0x000 | 0x000 |  0x000  | 0x000
    DATA_PHY_FIFO_WE_SLAVE_RATIO   0x000 | 0x000 |  0x000  | 0x000
    DATA_PHY_WR_DQS_SLAVE_RATIO    0x000 | 0x000 |  0x000  | 0x000
    DATA_PHY_WR_DATA_SLAVE_RATIO   0x000 | 0x000 |  0x000  | 0x000
    ***************************************************************

    Best Regards,
    Ogo
  • Have you tried with PHY_INVERT_CLKOUT = 0?

  • Yes. I have.
    The optimal value was not non zero when PHY_INVERT_CKOKUT= 0.
    But the board is (DDR_CK length < DDR_DQS lengh), so I think PHY_INVERT_CKOKUT should be 1.
    What do you think?
    Also I' like to know the reason why the optimal value become all zero.
    Best Regards,
    Ogo
  • Please use the non-zero values. I cannot say why you obtain all zero values, but this isn't correct and shouldn't be used.

  • Test your memory with the non-zero values. These should be the ones that work.