I am having problems successfully calibrating the iMX6 dual DDR memory interface on our custom board using the DDR Stress Tester V1.0.3 application tool. We have built 3 of our custom boards, each of which contains 2 iMX6 dual processors. Each of the processors interfaces to a pair of 512MB DDR3 chips (T-topology) for a 1GB total DDR memory per processor. Of the 6 total processors on the 3 boards, only 3 will successfully calibrate using the tool.
The 3 processors that fail DDR calibration are reporting write-leveling calibration values over the 0x2F limit specified in the Stress Tester User Guide. For example, when I calibrated at 396MHz, I get the following results:
"MMDC_MPWLDECTRL0 ch0 after write level cal: 0x0009000C"
"MMDC_MPWLDECTRL1 ch0 after write level cal: 0x0003017F"
I have tried setting WALAT = 1 in the init script (see attached 'gf_default.inc') as suggested by the User Guide, then re-running the cal test but it does not seem to make any difference, I always get value of 0x7F (or very close) for the WL_DL_ABS_OFFSET2. It seems to me that the cal results should change if WALAT is changed? I have also tried calibrating at multiple different freqs throughout the range 350MHz to 528MHz allowed by the tool, with the same results - 0x7F in the WL_DL_ABS_OFFSET2 result. This problem does not occur for the 3 processors that pass calibration - I get write-leveling results well under 0x2F like 0x09, 0x0C etc. I do not think the issue is a layout issue since it occurs for some processors but not others on 3 boards that have identical layouts. Maybe I need to mess with the WL_CYC_DEL setting in the same write leveling delay control register?
I have also tried ignoring the above write-leveling calibration result and proceeding with the DQS gating cal using the tool. When I do this the DQS gating cal fails with the following error message:
"Starting DQS gating calibration...
.............................................ERROR FOUND, we can't get suitable value !!!!
dram test fails for all values."
Does anyone have any idea what I could be doing wrong? I have attached the stress tester tool init script. It uses all the original Freescale script settings except for the WALAT =1 change, and MMDC0_MDCTL register changes necessary for our custom board. Thanks in advance for any help.
Original Attachment has been moved to: gf_default.inc.zip