AnsweredAssumed Answered

DDR3 Calibration Frequency

Question asked by David de Haaij on Jan 13, 2015
Latest reply on Sep 2, 2016 by Vivek Kaushik

Hello iMX6 specialists,


We are developing a iMX6Solo based platform and we are using DDR3 @ 528Mhz. I have  DCD which was copied from a different iMX platform with different DDR and it is working fine with my new platform as well. However configuration values are not adjusted for the current DDR.

Then I used DDR stress tester to calibrate new DDR. With those calibrated values, stress test was running for 10 hours with no errors. However, if I use same values in u-boot DCD, it does not boot at all. It was found that if following value,

Read calibration0x021b08480x42464C44

is replaced with, 0x484B4B49, it started working despite the fact that deviation is very small.

Then I re calibrate the DDR at 400Mhz and replaced MPDGCTRL0, MPDGCTRL1 , MPRDDLCTL PHY0 , MPWDDLCTL PHY0 with new values, u-boot started working.

The reason why I use 400Mhz is following statement in "i.MX6 DDR Stress Tester User’s Guide"

7. Select DDR frequency for Calibration
The default DDR calibration frequency is 400MHz for i.MX6DL, i.MX6S, and i.MX6SL.
And, the default DDR calibration frequency for i.MX6Q and i.MX6D is 528MHz. The user
can also press ‘n’ and input a calibration frequency which is between 350MHz and 528MHz
for debugging purpose.

According to that, calibration is supposed to be done at 400 Mhz for iMX solo. However, "i.MX 6 Series DDR Calibration application note" says,

4 Calibration over Frequency Range
Calibration, as any other aspect of the DDR setup, is frequency dependent. Changing DDR clock
frequency requires running the various calibration sequences and obtaining new set of delay values.
The empirical rule is that a DDR setup for a target frequency, including a measured set of delay values at
that frequency, is expected to be stable at frequency range of ±10% around this point.

My questions are,

1. Do we need to calibrate at 528Mhz using the stress tester tool, if DDR3 working frequency is 528Mhz?

2. Is there a delay between DCD registry setting to properly initialize the DDR? The reason why I asked it that newly calibrated value at 528Mhz works fine with stress tester but not with u-boot. The way stress tester initialize the DDR my be slightly different that the way u-boot starts)