Selecting ZQPAD and ZQ resistor value for i.mx6SL and LPDDR2

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

Selecting ZQPAD and ZQ resistor value for i.mx6SL and LPDDR2

Jump to solution
1,970 Views
jayakumar2
Contributor V

Hi,

We're using a custom board with i.mx6sl ( MCIMX6L8DVN10AB ) and  EDB8132B4PM-1D-F-D LPDDR2 memory.

We found that on some large (maybe 25% or more) of boards we were getting memory test failures in Linux 4.1.15 (bitflip error with memtester). Running DDR calibration and stress test and changing the read/write calibration values did not cause the errors to go away.  That's detailed in another post: Bit flip errors on 6sl board with LPDDR2 memory 

Currently, our board had ZQPAD resistor value of 240 Ohm and DRAM ZQ of 240 Ohm also. When we changed both values to 120 Ohm, then 2 boards that previously exhibited the bit flip errors stopped exhibiting those errors. That seems to suggest that the problem has to do with ZQ resistor calibration value.

I am wondering what is the correct process to select the ZQPAD resistor value for 6sl and the LPDDR2 ZQ resistor value also.

a) should ZQ SW be set?

In the 6sl datasheet, there is:

MMDC_MPZQSWCTRL
USE_ZQ_SW_VAL
Use SW ZQ configured value for I/O pads resistor controls. This bit selects whether ZQ SW value or ZQ
HW value will be driven to the I/O pads resistor controls. By default this bit is cleared and MMDC drives
the HW ZQ status bits on the resistor controls of the I/O pads.

On solace, this bit is set to 0 so it is currently using the ZQ HW value.

root@imx6slevk:~# /unit_tests/memtool -32 0x21B0804 1
E
Reading 0x1 count starting at address 0x021B0804

0x021B0804: 00000002

I'm wondering if it should be set to use the ZQ SW value instead. If so, should that setting be done in u-boot?

b) how to select the resistor value

In the 6sl datasheet:

10.1 One-Time Forced Hardware ZQ Calibration Sequence
One-time ZQ calibration using hardware loop logic is performed by the following sequence:
• Make sure all accesses to DDR are finished.
• Set MMDC register fields according to Table 1.
...
Assert the ZQ_HW_FOR bit in MPZQHWCTRL register.
• Wait for ZQ_HW_FOR to be cleared by hardware.
• ZQ resistors are now calibrated. Pull-up, pull-down configured values can be read from
ZQ_HW_PD_RES and ZQ_HW_PU_RES fields of the MPZQHWCTRL register.


ZQ automatic calibration pull-up result. This field holds the pull-up resistor value calculated at the end of
the ZQ automatic calibration process with the i.MX ZQ calibration pad.
NOTE: An offset can be applied to this result, see MMDC_MPPDCMPR2[ZQ_PU_OFFSET]
00000 Min. resistance.
11111 Max. resistance.

That seems to suggest there is an automatic way to determine what the resistor value should be. Is there a tool (sort of like the ddr calibration tool) that I should run on the board in order to get that value?

Thanks!

Labels (2)
1 Solution
1,319 Views
jan_spurek
NXP Employee
NXP Employee

Hello Jaya,

if you are refering to the value of the resistor that is connected to the ZQ pad of the memory chip, then its value is 240 Ohm - do not change it. A 1% precision resistor should be connected to this pad as it serves as the reference for the ZQ calibration.

If you are refering to the drive strength of the pads (DSE field), then the number that is the closest to the characteristic impedance of the PCB trace should be chosen which is defined by our stackup and layout (most probably it is around 50 Ohm). This can be set in the Script Aid tool mentiontend by Igor.

Best Regards,

Jan

View solution in original post

2 Replies
1,320 Views
jan_spurek
NXP Employee
NXP Employee

Hello Jaya,

if you are refering to the value of the resistor that is connected to the ZQ pad of the memory chip, then its value is 240 Ohm - do not change it. A 1% precision resistor should be connected to this pad as it serves as the reference for the ZQ calibration.

If you are refering to the drive strength of the pads (DSE field), then the number that is the closest to the characteristic impedance of the PCB trace should be chosen which is defined by our stackup and layout (most probably it is around 50 Ohm). This can be set in the Script Aid tool mentiontend by Igor.

Best Regards,

Jan

1,319 Views
igorpadykov
NXP Employee
NXP Employee

Hi Jaya

>should ZQ SW be set

it is customer choice to use SW or HW option. Seems such routine can be

in uboot/board/freescale/mx6slevk/mx6slevk.c

> is an automatic way to determine what the resistor value should be. Is there a tool (sort of like the ddr calibration tool) that >I should run on the board in order to get that value?

one can look at i.MX6SL LPDDR2 Script Aid

i.MX6SL LPDDR2 Script Aid 

setmem /32    0x021b0800 =    0xA1390003    // DDR_PHY_P0_MPZQHWCTRL, enable both one-time & periodic HW ZQ calibration and it is implemented in uboot/board/freescale/mx6slevk/imximage.cfg

http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/board/freescale/mx6slevk/imximage.cfg?h... 

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

0 Kudos