i.MX6 DDR Stress Test Tool Fails

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

i.MX6 DDR Stress Test Tool Fails

Jump to solution
2,183 Views
weiqing
Contributor II

Hello all,

 

I'm using the DDR Stress Test tool to optimize our DDR configuration. The tool is downloaded from: i.MX6/7 DDR Stress Test Tool V2.70 .

The U-Boot is already up and running, the Stress test tool is loaded via U-Boot and executed.

 

The tool runs success on the board with i.MX6 quad + 2GB memory.

It fails to run on the board with i.MX6 dual + 1GB memory, and the board with i.MX6 solo + 1GB memory.

The error message show:

"Starting DQS gating calibration

. . . . . . . . . . . . . . ERROR FOUND, we can't get suitable value !!!!

dram test fails for all values. "

a complete log is attached.

 

 

The binary used for testing is:

i.MX6 quad  :  ddr-test-uboot-jtag-mx6dq.bin

i.MX6 dual   :  ddr-test-uboot-jtag-mx6dq.bin

i.MX6 solo   :   ddr-test-uboot-jtag-mx6dl.bin

Am I using the correct binary file?

 

 

2) Repeating the DDR Stress Test, the results are different, then how should I use this tool?

e.g.: test on i.MX6 dual + 1GB memory:

1st run:

   MMDC registers updated from calibration

 

   Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00010001

   MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00010001

 

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x021b083c) = 0x43300330

   MPDGCTRL1 PHY0 (0x021b0840) = 0x03300330

 

   Read calibration

   MPRDDLCTL PHY0 (0x021b0848) = 0x40303638

 

   Write calibration

   MPWRDLCTL PHY0 (0x021b0850) = 0x3A3C423C

 

2nd run

   MMDC registers updated from calibration

 

   Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00080022

   MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00460046

 

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x021b083c) = 0x431C034C

   MPDGCTRL1 PHY0 (0x021b0840) = 0x034C034C

 

   Read calibration

   MPRDDLCTL PHY0 (0x021b0848) = 0x40323438

 

   Write calibration

   MPWRDLCTL PHY0 (0x021b0850) = 0x3C34423E

 

3rd run

   MMDC registers updated from calibration

 

   Write leveling calibration

   MMDC_MPWLDECTRL0 ch0 (0x021b080c) = 0x00010001

   MMDC_MPWLDECTRL1 ch0 (0x021b0810) = 0x00010001

 

   Read DQS Gating calibration

   MPDGCTRL0 PHY0 (0x021b083c) = 0x4400033C

   MPDGCTRL1 PHY0 (0x021b0840) = 0x033C033C

 

   Read calibration

   MPRDDLCTL PHY0 (0x021b0848) = 0x4030343A

 

   Write calibration

   MPWRDLCTL PHY0 (0x021b0850) = 0x3A3C423C

 

 

Thanks,

weiqing

Original Attachment has been moved to: DDR_Stress_Test_log.txt.zip

Labels (1)
0 Kudos
Reply
1 Solution
1,320 Views
igorpadykov
NXP Employee
NXP Employee

Hi weiking

regarding "ERROR FOUND, we can't get suitable value", this may be caused

by improper MR1 value: from log seems you did not set it.

Note, with uboot option all ddr initialization in performed in uboot dcd header (*.cfg file)

init script is not used. So all data from init script should be moved to *.cfg file.

Also recommended to set the WALAT value on MMDCx_MDMISC register to 1.

Check that MR1=4 set in init script:

setmem /32 0x021b001c = 0x00048031 // MMDC0_MDSCR, MR1 write, CS0

The MR1 value is upper 4 hex bits written to MMDCx_MDSCR

If results are different, one can average them. Difference may be caused

by board conditions, like temperature, noise..

Best regards

igor

View solution in original post

0 Kudos
Reply
3 Replies
1,321 Views
igorpadykov
NXP Employee
NXP Employee

Hi weiking

regarding "ERROR FOUND, we can't get suitable value", this may be caused

by improper MR1 value: from log seems you did not set it.

Note, with uboot option all ddr initialization in performed in uboot dcd header (*.cfg file)

init script is not used. So all data from init script should be moved to *.cfg file.

Also recommended to set the WALAT value on MMDCx_MDMISC register to 1.

Check that MR1=4 set in init script:

setmem /32 0x021b001c = 0x00048031 // MMDC0_MDSCR, MR1 write, CS0

The MR1 value is upper 4 hex bits written to MMDCx_MDSCR

If results are different, one can average them. Difference may be caused

by board conditions, like temperature, noise..

Best regards

igor

0 Kudos
Reply
1,320 Views
weiqing
Contributor II

Hello Igor,

Thanks for you answer.

I'm still not fully understanding the test. I repeat the same test, and expect to see similar results, but the parameters differs a lot.

For example, the MPDGCTRL0 register, its value is:

MPDGCTRL0 PHY0 (0x021b083c) = 0x43300330

MPDGCTRL0 PHY0 (0x021b083c) = 0x431C034C

MPDGCTRL0 PHY0 (0x021b083c) = 0x4400033C

I choose an average value from them, it works on our board.

But I do not know the margin, I am thinking there is a range in which the memory works, is it possible to find out where are we in the range?

Is there another tool(free or commercial), which can show the margin?

regards,

weiqing

0 Kudos
Reply
1,320 Views
igorpadykov
NXP Employee
NXP Employee

Hi weiqing

I am afraid there are no tools showing margin.

Best regards

igor

0 Kudos
Reply