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.

DDR3 Issues on 6678

Hello,

Please help!!

We see glitches on the read and write access to the DDR3. We are using a
DDR3 SODIMM module.

With our Rev 0 (we begin our counting in proper fashion here, from 0 and not
1) board we felt our issue may have been crosstalk.

So for our Rev 1 board we added extra power/gnd planes to shield the DDR3 signal layers; we added 18+ mils of separation between DDR3 traces; and we moved everything that was not DDR3 related completely away from the DDR3 area on the PCB. Essentially we followed TI's guidelines.

We obtained almost the exact same results with the Rev 1 board as we did the Rev 0 board.

We noticed in some of TI's documentation for the C6678/Keystone devices they talk about the use of UDIMMs and then in another document they say the address/ctl lines cannot exceed 4.5" (or thereabouts). And the DDR3 UDIMM alone will exceed that! But what are we to make of the docs that talk about how to connect a DDR3 UDIMM? So for Rev 2 we are dumping the SODIMM module and going to go with discrete DDR3 SDRAMs.

But other than that, we don't know what else to do at this point.

From Rev 0 on, every other component on the PCB has worked, ethernet, I2C, PCIe, etc. And we have done many DDR and DDR2 layouts in the past.

Thanks so much!

  • Amy,

    When you state "glitches on the read and write access to the DDR3", are you indicating that you have occasional write and read failures or are you indicating that you have signal integrity problems where a glitch is observed on a waveform capture?

    The statement in the DDR3 layout recommendations limiting address, command, control and clock nets to 4.5" is an error.  The documentation is currently being revised.  The very next section in that document discusses the true length limitations which are much longer.  This maximum length rules are also restated at the bottom of the Instructions page of the PHY_CALC spreadsheet.  Fly-by routing of a DDR3 layout almost always results in these nets being longer than 4.5".

    Also, we fully support single-rank UDIMMs and SODIMMs.  Be aware that the PCB layout varies from part number to part number.  The SPD memory must be queried to determine the routing lengths of the module.  Your software will need to have a table of initialization values associated with the modules supported on your design.

    We recently released a revised KeyStone DDR3 Initialization Application Report (SPRABL2A) with updated REG_CALC and PHY_CALC spreadsheets.  Please review them and update your configuration settings.  The previous versions resulted in initial values that occastionally failed.

    You indicated the same customer initiated the following post: http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/208215/744291.aspx#744291.  In that post the workaround that made the memory function was to configure the memory, then access it and then configure it again.  We have seen problems like that before.  These are normally traced to delay software problems.  The DDR3 initialization sequence has multiple "wait" steps.  These waits are required.  We have seen multiple implementations where the delay loops were implemented in such a way that the compiler optimized them away.  We recommend that delay loops be implemented with an inline assembly "NOP" to force the compiler to leave the delay loop in place.

    If these suggestions are not sufficent to resolve your problems then we will need to see your completed spreadsheets.

    Tom