DDR3L calibration

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

DDR3L calibration

1,521 Views
mrudangshelat
Contributor IV

Hi Igor,

Even I am facing the same issue. Not able to calibrate my DDR3L.

We are trying to load uboot usig imx_usb USB loader, but uboot failed to load.   

We are able to boot half only and getting upto below consol message.

------

U-Boot 2014.07-08942-g515451c (Jan 02 2018 - 16:53:52)

CPU: Freescale i.MX6D rev1.5 at 792 MHz
Reset cause: POR
Board: Nitrogen6_max
I2C: ready
DRAM: 2 GiB

------

Kindly help us to solve this issue.

Regards,

Mrudang

0 Kudos
5 Replies

1,157 Views
Yuri
NXP Employee
NXP Employee

Hello,

 

  Please check PCB design, using Chapter 3 (i.MX6 Layout Recommendations) of the Hardware

Development Guide for i.MX6

 

https://www.nxp.com/docs/en/user-guide/IMX6DQ6SDLHDG.pdf 

 

  In particular, please use to Excel page named “MX6 DRAM Bus Length Check” in “HW Design Checking

List for i.Mx6”, linked below.

 

https://community.nxp.com/docs/DOC-93819 


Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

1,157 Views
mrudangshelat
Contributor IV

Hi Yuri,

Thes board was working fine before, but from past couple of days, I am

facing the boot-up fail issue. We are able to flash u-boot image in RAM

using imx_usb loader utility, but dongle is not able to load uboot image

from the RAM.

We are trying to load uboot using imx_usb USB loader, but uboot failed to

load.

I tried to calibrate the DDR but it is failing. We are Micron's using

DDR3L: MT41K512M16HA-125:A. I guess it may have an issue of

identifying Mode Register 1 (MR1) value.

Kindly provide your view.

Thanks & Regards,

Mrudang Shelat

0 Kudos

1,157 Views
mrudangshelat
Contributor IV

Hi,

My faulty board issue is similar with Serial downloader jump error issue.

Thanks & Regards,

 

Mrudang Shelat

0 Kudos

1,157 Views
Yuri
NXP Employee
NXP Employee

Hello,

 

  In addition to checking the design, as mentioned earlier, You may try 

to use different drive strength for memory signals.

 

Have a great day,

Yuri

 

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

Note: If this post answers your question, please click the Correct Answer

button. Thank you!

0 Kudos

1,154 Views
mrudangshelat
Contributor IV

Hi Yuri,

I have tried with changing drive strength but facing the same issue as calibration fail. Please see below reading.

I am using MT41K512M16HA-125:A DDR3L.

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


============================================
DDR Stress Test (2.6.0)
Build: Aug 1 2017, 17:33:25
NXP Semiconductors.
============================================

============================================
Chip ID
CHIP ID = i.MX6 Dual/Quad (0x63)
Internal Revision = TO1.5
============================================

============================================
Boot Configuration
SRC_SBMR1(0x020d8004) = 0x18000030
SRC_SBMR2(0x020d801c) = 0x02000001
============================================

ARM Clock set to 1GHz

============================================
DDR configuration
BOOT_CFG3[5-4]: 0x00, Single DDR channel.
DDR type is DDR3
Data width: 32, bank num: 8
Row size: 16, col size: 10
Chip select CSD0 is used
Density per chip select: 2048MB
============================================

Current Temperature: 27
============================================

DDR Freq: 396 MHz

ddr_mr1=0x00000000
Start write leveling calibration...
running Write level HW calibration
Write leveling calibration completed, update the following registers in your initialization script
MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00130016
MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00180010
Write DQS delay result:
Write DQS0 delay: 22/256 CK
Write DQS1 delay: 19/256 CK
Write DQS2 delay: 16/256 CK
Write DQS3 delay: 24/256 CK

Starting DQS gating calibration
. HC_DEL=0x00000000 result[00]=0x00001111
. HC_DEL=0x00000001 result[01]=0x00000011
. HC_DEL=0x00000002 result[02]=0x00000000
. HC_DEL=0x00000003 result[03]=0x00000000
. HC_DEL=0x00000004 result[04]=0x00001111
. HC_DEL=0x00000005 result[05]=0x00001111
. HC_DEL=0x00000006 result[06]=0x00001111
. HC_DEL=0x00000007 result[07]=0x00001111
. HC_DEL=0x00000008 result[08]=0x00001111
. HC_DEL=0x00000009 result[09]=0x00001111
. HC_DEL=0x0000000A result[0A]=0x00001111
. HC_DEL=0x0000000B result[0B]=0x00001111
. HC_DEL=0x0000000C result[0C]=0x00001111
. HC_DEL=0x0000000D result[0D]=0x00001111
DQS HC delay value low1 = 0x01010202, high1=0x03030303

loop ABS offset to get HW_DG_LOW
. ABS_OFFSET=0x00000000 result[00]=0x00001111
. ABS_OFFSET=0x00000004 result[01]=0x00001111
. ABS_OFFSET=0x00000008 result[02]=0x00001111
. ABS_OFFSET=0x0000000C result[03]=0x00001100
. ABS_OFFSET=0x00000010 result[04]=0x00001100
. ABS_OFFSET=0x00000014 result[05]=0x00001111
. ABS_OFFSET=0x00000018 result[06]=0x00001111
. ABS_OFFSET=0x0000001C result[07]=0x00001111
. ABS_OFFSET=0x00000020 result[08]=0x00001111
. ABS_OFFSET=0x00000024 result[09]=0x00001111
. ABS_OFFSET=0x00000028 result[0A]=0x00001111
. ABS_OFFSET=0x0000002C result[0B]=0x00001111
. ABS_OFFSET=0x00000030 result[0C]=0x00001111
. ABS_OFFSET=0x00000034 result[0D]=0x00001111
. ABS_OFFSET=0x00000038 result[0E]=0x00001111
. ABS_OFFSET=0x0000003C result[0F]=0x00001100
. ABS_OFFSET=0x00000040 result[10]=0x00001100
. ABS_OFFSET=0x00000044 result[11]=0x00001100
. ABS_OFFSET=0x00000048 result[12]=0x00001100
. ABS_OFFSET=0x0000004C result[13]=0x00001100
. ABS_OFFSET=0x00000050 result[14]=0x00001111
. ABS_OFFSET=0x00000054 result[15]=0x00001100
. ABS_OFFSET=0x00000058 result[16]=0x00001111
. ABS_OFFSET=0x0000005C result[17]=0x00001100
. ABS_OFFSET=0x00000060 result[18]=0x00001100
. ABS_OFFSET=0x00000064 result[19]=0x00001100
. ABS_OFFSET=0x00000068 result[1A]=0x00001100
. ABS_OFFSET=0x0000006C result[1B]=0x00001100
. ABS_OFFSET=0x00000070 result[1C]=0x00001100
. ABS_OFFSET=0x00000074 result[1D]=0x00001100
. ABS_OFFSET=0x00000078 result[1E]=0x00001100
. ABS_OFFSET=0x0000007C result[1F]=0x00001111

loop ABS offset to get HW_DG_HIGH
. ABS_OFFSET=0x00000000 result[00]=0x00000000
. ABS_OFFSET=0x00000004 result[01]=0x00000000
. ABS_OFFSET=0x00000008 result[02]=0x00000000
. ABS_OFFSET=0x0000000C result[03]=0x00000000
. ABS_OFFSET=0x00000010 result[04]=0x00000000
. ABS_OFFSET=0x00000014 result[05]=0x00000000
. ABS_OFFSET=0x00000018 result[06]=0x00000000
. ABS_OFFSET=0x0000001C result[07]=0x00000000
. ABS_OFFSET=0x00000020 result[08]=0x00000000
. ABS_OFFSET=0x00000024 result[09]=0x00000000
. ABS_OFFSET=0x00000028 result[0A]=0x00000000
. ABS_OFFSET=0x0000002C result[0B]=0x00000000
. ABS_OFFSET=0x00000030 result[0C]=0x00000100
. ABS_OFFSET=0x00000034 result[0D]=0x00001100
. ABS_OFFSET=0x00000038 result[0E]=0x00001100
. ABS_OFFSET=0x0000003C result[0F]=0x00001100
. ABS_OFFSET=0x00000040 result[10]=0x00001110
. ABS_OFFSET=0x00000044 result[11]=0x00001110
. ABS_OFFSET=0x00000048 result[12]=0x00001110
. ABS_OFFSET=0x0000004C result[13]=0x00001111
. ABS_OFFSET=0x00000050 result[14]=0x00001111
. ABS_OFFSET=0x00000054 result[15]=0x00001111
. ABS_OFFSET=0x00000058 result[16]=0x00001111
. ABS_OFFSET=0x0000005C result[17]=0x00001111
. ABS_OFFSET=0x00000060 result[18]=0x00001111
. ABS_OFFSET=0x00000064 result[19]=0x00001111
. ABS_OFFSET=0x00000068 result[1A]=0x00001111
. ABS_OFFSET=0x0000006C result[1B]=0x00001111
. ABS_OFFSET=0x00000070 result[1C]=0x00001111
. ABS_OFFSET=0x00000074 result[1D]=0x00001111
. ABS_OFFSET=0x00000078 result[1E]=0x00001111
. ABS_OFFSET=0x0000007C result[1F]=0x00001111


BYTE 0:
Start: HC=0x01 ABS=0x5C
End: HC=0x03 ABS=0x48
Mean: HC=0x02 ABS=0x52
End-0.5*tCK: HC=0x02 ABS=0x48
Final: HC=0x02 ABS=0x52
BYTE 1:
Start: HC=0x01 ABS=0x5C
End: HC=0x03 ABS=0x3C
Mean: HC=0x02 ABS=0x4C
End-0.5*tCK: HC=0x02 ABS=0x3C
Final: HC=0x02 ABS=0x4C
BYTE 2:
Start: HC=0x01 ABS=0x00
End: HC=0x03 ABS=0x2C
Mean: HC=0x02 ABS=0x16
End-0.5*tCK: HC=0x02 ABS=0x2C
Final: HC=0x02 ABS=0x2C
BYTE 3:
Start: HC=0x01 ABS=0x00
End: HC=0x03 ABS=0x30
Mean: HC=0x02 ABS=0x18
End-0.5*tCK: HC=0x02 ABS=0x30
Final: HC=0x02 ABS=0x30

DQS calibration MMDC0 MPDGCTRL0 = 0x024C0252, MPDGCTRL1 = 0x0230022C

Note: Array result[] holds the DRAM test result of each byte.
0: test pass. 1: test fail
4 bits respresent the result of 1 byte.
result 0001:byte 0 fail.
result 0011:byte 0, 1 fail.

Starting Read calibration...

ABS_OFFSET=0x00000000 result[00]=0x1111
ABS_OFFSET=0x04040404 result[01]=0x1111
ABS_OFFSET=0x08080808 result[02]=0x1011
ABS_OFFSET=0x0C0C0C0C result[03]=0x1011
ABS_OFFSET=0x10101010 result[04]=0x1011
ABS_OFFSET=0x14141414 result[05]=0x0011
ABS_OFFSET=0x18181818 result[06]=0x0011
ABS_OFFSET=0x1C1C1C1C result[07]=0x0000
ABS_OFFSET=0x20202020 result[08]=0x0000
ABS_OFFSET=0x24242424 result[09]=0x0000
ABS_OFFSET=0x28282828 result[0A]=0x0000
ABS_OFFSET=0x2C2C2C2C result[0B]=0x0000
ABS_OFFSET=0x30303030 result[0C]=0x0000
ABS_OFFSET=0x34343434 result[0D]=0x0000
ABS_OFFSET=0x38383838 result[0E]=0x0000
ABS_OFFSET=0x3C3C3C3C result[0F]=0x0000
ABS_OFFSET=0x40404040 result[10]=0x0000
ABS_OFFSET=0x44444444 result[11]=0x0000
ABS_OFFSET=0x48484848 result[12]=0x0000
ABS_OFFSET=0x4C4C4C4C result[13]=0x0000
ABS_OFFSET=0x50505050 result[14]=0x0000
ABS_OFFSET=0x54545454 result[15]=0x0000
ABS_OFFSET=0x58585858 result[16]=0x0000
ABS_OFFSET=0x5C5C5C5C result[17]=0x0000
ABS_OFFSET=0x60606060 result[18]=0x0000
ABS_OFFSET=0x64646464 result[19]=0x0010
ABS_OFFSET=0x68686868 result[1A]=0x0110
ABS_OFFSET=0x6C6C6C6C result[1B]=0x1111
ABS_OFFSET=0x70707070 result[1C]=0x1111
ABS_OFFSET=0x74747474 result[1D]=0x1111
ABS_OFFSET=0x78787878 result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C result[1F]=0x1111

Byte 0: (0x1c - 0x68), middle value:0x42
Byte 1: (0x1c - 0x60), middle value:0x3e
Byte 2: (0x08 - 0x64), middle value:0x36
Byte 3: (0x14 - 0x68), middle value:0x3e

MMDC0 MPRDDLCTL = 0x3E363E42

Starting Write calibration...

ABS_OFFSET=0x00000000 result[00]=0x1111
ABS_OFFSET=0x04040404 result[01]=0x1111
ABS_OFFSET=0x08080808 result[02]=0x0011
ABS_OFFSET=0x0C0C0C0C result[03]=0x0001
ABS_OFFSET=0x10101010 result[04]=0x0011
ABS_OFFSET=0x14141414 result[05]=0x0011
ABS_OFFSET=0x18181818 result[06]=0x0011
ABS_OFFSET=0x1C1C1C1C result[07]=0x0011
ABS_OFFSET=0x20202020 result[08]=0x0011
ABS_OFFSET=0x24242424 result[09]=0x0011
ABS_OFFSET=0x28282828 result[0A]=0x0011
ABS_OFFSET=0x2C2C2C2C result[0B]=0x0011
ABS_OFFSET=0x30303030 result[0C]=0x0011
ABS_OFFSET=0x34343434 result[0D]=0x0001
ABS_OFFSET=0x38383838 result[0E]=0x0001
ABS_OFFSET=0x3C3C3C3C result[0F]=0x0001
ABS_OFFSET=0x40404040 result[10]=0x0001
ABS_OFFSET=0x44444444 result[11]=0x0001
ABS_OFFSET=0x48484848 result[12]=0x0001
ABS_OFFSET=0x4C4C4C4C result[13]=0x0001
ABS_OFFSET=0x50505050 result[14]=0x0001
ABS_OFFSET=0x54545454 result[15]=0x0001
ABS_OFFSET=0x58585858 result[16]=0x0001
ABS_OFFSET=0x5C5C5C5C result[17]=0x0001
ABS_OFFSET=0x60606060 result[18]=0x0001
ABS_OFFSET=0x64646464 result[19]=0x0001
ABS_OFFSET=0x68686868 result[1A]=0x0001
ABS_OFFSET=0x6C6C6C6C result[1B]=0x0001
ABS_OFFSET=0x70707070 result[1C]=0x0001
ABS_OFFSET=0x74747474 result[1D]=0x1111
ABS_OFFSET=0x78787878 result[1E]=0x1111
ABS_OFFSET=0x7C7C7C7C result[1F]=0x1111

ERROR FOUND, we can't get suitable value !!!!
dram test fails for all values.

Error: failed during ddr calibration

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

Please go through attached files and provide me your valuable feedback.

Thanks,

Mrudang

0 Kudos