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.

AM4378: DDR3 trace length question

Part Number: AM4378

I am using the spreadsheet to figure out the values and i am at the point of including the trace lengths for the board. i am reading  to understand the details. i have 2 questions about this

1) we have 2 16 bit DDR3 chips attached to the ARM to make it 32 bits. is the trace length meant to be the total trace for the memory? so for example if chip 1 is 1 inch away and chip 2 is 1.5 inches away (.5 inches from chip 1) my lengths would be 1 inch for byte 1 and 2 and 1.5 inches for bytes 3 and 4, correct?

2) is there a DDR leveling procedure that i have to do the first time powering up the board or is that all handled by linux during boot up?

  • addition to the question: when trying to enter in the trace length values (which some art larger than 1") i get "Routing Limit Exceeded" from the tool "SPRAC70_AM437x_EMIF_CONFIGURATION_TOOL_V20. i get this anywhere i try to use 1 or greater as a value, even though i see the pre-loaded values are over 1. what am i doing wrong here?
  • Actually i'll make a new post for this question

     

  • Input total lengths from processor to each memory.

    So if you have the 2 x16 memories in a fly-by topology, CLK length for byte 0/1 will be the same (for example 1inch) if its the first memory in the chain, and CLK length for byte 2/3 will also be the same (for example 1.5in) if it is second in the chain. If you have a T-topology, typicially the CLK lengths for byte 0/1 and 2/3 will be very close to the same lengths.

    For DQS, these are point to point connections to each memory, so input this total length for each byte.

    AM437x requires h/w leveling for DDR3, so the bootloader will enable and handle this during each boot up. I would recommend that you use the output from the tool to modify a GEL file to ensure you have the right configuration, then transfer that config to code. It is difficult to debug DDR issues in linux.

    The tool has some data checks which may give you errors depending on the order you input data. Try zeroing out all of the lengths, then input your data.

    Regards,
    James
  • thanks that does clear it up

    as for the tool i zero'd out all the values and tried to enter the byte 0 microstrip as a value of 1 and it gave me the same error. i made a new post for that issue, however

    i worked with the 3352 a little bit and it had a dedicated ddr leveling gel file you could download. is there a similar gel file for the am437x?

  • Thanks for the new post. I tried exactly as you said, but i don't get an error. Let's continue the discussion on the other post.

    AM437x is different than AM335x in that AM437x supports H/W leveling (AM335x does not). There is no need to run a leveling algorithm in AM437x. Once DDR controller and PHY are configured (with the help of the EMIF tool), the controller is triggered to start the H/W leveling. The GEL and other s/w offerings from TI handle this.

    Regards,
    James
  • cobsonchael said:
    i worked with the 3352 a little bit and it had a dedicated ddr leveling gel file you could download. is there a similar gel file for the am437x?

    In general the gel files contain code that configures the DPLL's and DDR.  That is true for both AM335x and AM437x.  Those gel files ship with CCS.  The AM335x uses software leveling and so there was an executable that was used to find those values.  AM437x uses hardware leveling which eliminates that step.

  • thanks brad. it has been a while so i forgot it was an executable, not a Gel file. my bad