I am trying to run the DDR Stress Test on four samples of our custom board with no success. This is our first DDR3 board so I was hoping someone might be able to help me.
Hardware:
I.MX6DL 1 GHz
MT41K128M16JT-125 XIT (4 chips totalling 1 GB)
Software:
DDR Stress Tester Version 1.0.3
I.MX6DQSDL DDR3 Script Aid V0.10
It always hangs on the DQS gating read/write delay calibration, on all four boards. Any ideas as to where I should start?
已解决! 转到解答。
We were able to pass the stress test by cranking the System ODT Settings up to 120 ohms.
Also, almost all of the boards boot into the Android OS now. The board we used as a reference design was the iMX6solo RIoTboard from Embest. In our design we switched to the iMX6DL but continued using the code base for the RIoTboard, modifying it to suit our board. I switched over to the code base for the SabreSD reference design and now almost all the boards we boot into the Android OS successfully.
Of course, we now have some new problems but I'll save those for a new topic as these issues are solved.
We were able to pass the stress test by cranking the System ODT Settings up to 120 ohms.
Also, almost all of the boards boot into the Android OS now. The board we used as a reference design was the iMX6solo RIoTboard from Embest. In our design we switched to the iMX6DL but continued using the code base for the RIoTboard, modifying it to suit our board. I switched over to the code base for the SabreSD reference design and now almost all the boards we boot into the Android OS successfully.
Of course, we now have some new problems but I'll save those for a new topic as these issues are solved.
Hi Chuanyan, my reference board is Mars board which uses mx6d and can do calibrations well. My own board was designed based on Mars but replaced the core by 6DL. Is your situation similar to mine?
Did you modify the script to cater for 6DL?
Yes, I agreed that it is most likely caused by SMT or layout issue. But my board can do DDR test in low frequency so at least I can confirm the Pins are connected? I am trying to find out any other possible reason.
Hi Luke Marvinand and Craig Comberbach, is your problem solved? Are you confirmed it is a layout issue?
My problem is quite similar to yours, it hangs on the DQS gating read/write delay calibration though the first Write leveling calibration is OK. Once the DQS calibration started, my device lost its connection with PC.
If I bypass the calibration and do test directly, the DDR can only run on 200M+ Hz.
Any reply is appreciated.
We reordered the boards from a different manufacturer and we used tin-lead solder paste instead of lead free. We still used a lead-free process so that the balls of the BGA would reflow correctly. We went from having a yield of 16% working, to a yield of 57%. We believe there are further issues with the way the board was panelized that made it more difficult to build that is accounting for the lower than expected yield.
Even though 57% are running and behaving as expected, they all failed the DDR3 stress test. To fix that, Luke systematically adjusted the numbers of the DDR3 script and managed to get the boards passing the DDR3 stress test. I would suggest looking here and confirming the numbers you enter.
Many thanks for your kindly reply. My understanding is
1. As you can see your low yield problem is mainly caused by manufacturer's process.
2. Your stress test problem is caused by the wrong numbers setting in calibration script. May I ask which values Luke adjusted?
3. You did not mention the DQS gating hang issue, how did you pass this?
Look forward to your reply.
We aren't totally convinced it is a manufacturing issue, or at least we are trying to rule out all other possibilities. We have several boards that pass the DDR3 Stress Test, but fail to boot fully, usually hanging near the end. I am slowly but surely eliminating them first, as it is really expensive to reorder the boards to fix the manufacturing issues, only to find out that the yields are still low.
Luke fiddled with the impedance values in the SI configuration section. The values he finally hit upon that made everything work were later validated by a response from Lin Wang (The maker of the DDR3 Script Aid spreadsheet). I was assuming I needed to enter the 100 ohms impedance of the differential pair, not realizing that they were in parallel and so they were actually 50 ohms. All of the settings were changed to 48 ohms (closest available option) except for the System ODT setting which is set to 120 ohms. I don't know why 120 ohms works and nothing lower does...
I don't know if Luke did anything specific about the DQS hanging issue, though my impression is that it fixed itself when we changed the impedance settings.
Please look at some hints below.
1.
Please try to decrease memory frequency, using memory type (Script Aid),
another than “DDR3-1600”.
2.
Please check PCB design regarding DDR signals, using Chapter 3 (i.MX 6 Series
Layout Recommendations) of the “Hardware Development Guide for i.MX 6Quad,
6Dual, 6DualLite, 6Solo Families …”
http://cache.freescale.com/files/32bit/doc/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.freescale.com/docs/DOC-93819
3.
You may try to skip the calibration phase in order to check if further
tests can be passed.
4.
Please try to use WALAT = 1 in memory initialization script.
Have a great day,
Yuri
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
I tried doing the following:
... with no success.
My hardware guy assures me that he designed the board to the specifications of the hardware guides.
One of our boards can fully boot into android, two have a segmentation fault when starting the Zygote process, and the last board hangs on Freeing init memory: 260K.
To me that sounds like a hardware problem with the memory.
Logcat of a board with segfault:
--------- beginning of /dev/log/system
I/Vold ( 2080): Vold 2.1 (the revenge) firing up
D/Vold ( 2080): Volume extsd state changing -1 (Initializing) -> 0 (No-Media)
D/Vold ( 2080): Volume udisk state changing -1 (Initializing) -> 0 (No-Media)
--------- beginning of /dev/log/main
I/AudioFlinger( 4570): loadHwModule() Loaded usb audio interface from USB audio HW HAL (audio) handle 3
E/AudioPolicyManagerBase( 4570): Not output found for attached devices 00000002
E/AudioPolicyManagerBase( 4570): Failed to open primary output
E/AudioPolicyManagerBase( 4570): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION
E/AudioPolicyManagerBase( 4570): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION
E/AudioPolicyService( 4570): couldn't init_check the audio policy (No such device)
D/AndroidRuntime( 4569):
D/AndroidRuntime( 4569): >>>>>> AndroidRuntime START com.android.internal.os.ZygoteInit <<<<<<
D/AndroidRuntime( 4569): CheckJNI is ON
I/AndroidRuntime( 4569): JNI options: '-Xjniopts:warnonly'
D/dalvikvm( 4569): Trying to load lib libjavacore.so 0x0
D/dalvikvm( 4569): Added shared lib libjavacore.so 0x0
D/dalvikvm( 4569): Trying to load lib libnativehelper.so 0x0
D/dalvikvm( 4569): Added shared lib libnativehelper.so 0x0
D/dalvikvm( 4569): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init
D/dalvikvm( 4569): Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods
E/memtrack( 4569): Couldn't load memtrack module (No such file or directory)
E/android.os.Debug( 4569): failed to load memtrack module: -2
I/SamplingProfilerIntegration( 4569): Profiling disabled.
I/Zygote ( 4569): Preloading classes...
D/dalvikvm( 4569): GC_EXPLICIT freed 39K, 8% free 520K/564K, paused 0ms+0ms, total 16ms
D/dalvikvm( 4569): GC_EXPLICIT freed 3K, 4% free 596K/616K, paused 0ms+1ms, total 31ms
D/dalvikvm( 4569): GC_EXPLICIT freed 16K, 3% free 640K/660K, paused 1ms+0ms, total 18ms
D/dalvikvm( 4569): GC_EXPLICIT freed 20K, 4% free 674K/696K, paused 1ms+0ms, total 15ms
D/dalvikvm( 4569): GC_EXPLICIT freed 10K, 2% free 718K/732K, paused 0ms+1ms, total 15ms
D/dalvikvm( 4569): GC_EXPLICIT freed 27K, 4% free 746K/776K, paused 0ms+1ms, total 15ms
D/dalvikvm( 4569): GC_EXPLICIT freed 35K, 5% free 816K/856K, paused 0ms+0ms, total 15ms
D/dalvikvm( 4569): GC_EXPLICIT freed 29K, 4% free 843K/876K, paused 0ms+0ms, total 16ms
D/TextLayoutCache( 4569): Using debug level = 0 - Debug Enabled = 0
D/dalvikvm( 4569): GC_EXPLICIT freed 19K, 3% free 884K/908K, paused 0ms+0ms, total 16ms
I/dalvikvm( 4569): threadid=1: recursive native library load attempt (/system/lib/libmedia_jni.so)
D/MtpDeviceJNI( 4569): register_android_mtp_MtpDevice
I/dalvikvm( 4569): threadid=1: recursive native library load attempt (/system/lib/libmedia_jni.so)
I/dalvikvm( 4569): threadid=1: recursive native library load attempt (/system/lib/libmedia_jni.so)
I/dalvikvm( 4569): threadid=1: recursive native library load attempt (/system/lib/libmedia_jni.so)
D/dalvikvm( 4569): GC_EXPLICIT freed 19K, 3% free 920K/940K, paused 0ms+1ms, total 17ms
D/dalvikvm( 4569): GC_EXPLICIT freed 21K, 3% free 955K/980K, paused 0ms+1ms, total 16ms
F/libc ( 4569): Fatal signal 11 (SIGSEGV) at 0x00000008 (code=1), thread 4569 (zygote)
I/DEBUG ( 2082): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 2082): Build fingerprint: 'Freescale/RIoTboard_6solo/RIoTboard_6solo:4.4.2/1.0.0-rc3/20140630:eng/dev-keys'
I/DEBUG ( 2082): Revision: '397329'
I/DEBUG ( 2082): pid: 4569, tid: 4569, name: zygote >>> zygote <<<
I/DEBUG ( 2082): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000008
I/DEBUG ( 2082): r0 41876dc8 r1 400533f8 r2 00000000 r3 00000001
I/DEBUG ( 2082): r4 00000000 r5 80000000 r6 4185e1e8 r7 00000000
I/DEBUG ( 2082): r8 400533f8 r9 417e34f0 sl 400533f8 fp 41876e00
I/DEBUG ( 2082): ip 00000000 sp bea3b568 lr 417e3408 pc 417e3244 cpsr a0070010
I/DEBUG ( 2082): d0 0000000000000000 d1 0000000000000000
I/DEBUG ( 2082): d2 0000000000000000 d3 0000000000000000
I/DEBUG ( 2082): d4 4022000000000000 d5 3f80000000000000
I/DEBUG ( 2082): d6 c11000003f800000 d7 42c80000496eef00
I/DEBUG ( 2082): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 2082): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 2082): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 2082): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 2082): d16 0000005b00000041 d17 000000600000005f
I/DEBUG ( 2082): d18 4008000000000000 d19 0000000100000001
I/DEBUG ( 2082): d20 0000000100000001 d21 0000000100000001
I/DEBUG ( 2082): d22 0000000000000000 d23 0000000000000000
I/DEBUG ( 2082): d24 0000000000000000 d25 0000000000000000
I/DEBUG ( 2082): d26 0000000000000000 d27 0000000000000000
I/DEBUG ( 2082): d28 0000000000000000 d29 0000000000000000
I/DEBUG ( 2082): d30 0000000000000000 d31 0000000000000000
I/DEBUG ( 2082): scr 60000010
I/DEBUG ( 2082):
I/DEBUG ( 2082): backtrace:
I/DEBUG ( 2082): #00 pc 00037244 /system/lib/libdvm.so
I/DEBUG ( 2082): #01 pc 00037404 /system/lib/libdvm.so
I/DEBUG ( 2082): #02 pc 00028ef8 /system/lib/libdvm.so (dvmHeapBitmapScanWalk(HeapBitmap*, void (*)(Object*, void*, void*), void*)+100)
I/DEBUG ( 2082): #03 pc 00037784 /system/lib/libdvm.so (dvmHeapScanMarkedObjects()+44)
I/DEBUG ( 2082): #04 pc 000293dc /system/lib/libdvm.so (dvmCollectGarbageInternal(GcSpec const*)+348)
I/DEBUG ( 2082): #05 pc 00055b07 /system/lib/libdvm.so (dvmCollectGarbage()+30)
I/DEBUG ( 2082): #06 pc 00026fe0 /system/lib/libdvm.so
I/DEBUG ( 2082): #07 pc 0002dfa0 /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
I/DEBUG ( 2082): #08 pc 0002b638 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
I/DEBUG ( 2082): #09 pc 00060581 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
I/DEBUG ( 2082): #10 pc 00049d0b /system/lib/libdvm.so
I/DEBUG ( 2082): #11 pc 0003cded /system/lib/libdvm.so
I/DEBUG ( 2082): #12 pc 0004ce4f /system/lib/libandroid_runtime.so
I/DEBUG ( 2082): #13 pc 0004db73 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
I/DEBUG ( 2082): #14 pc 0000105b /system/bin/app_process
I/DEBUG ( 2082): #15 pc 0000e423 /system/lib/libc.so (__libc_init+50)
I/DEBUG ( 2082): #16 pc 00000d7c /system/bin/app_process
I/DEBUG ( 2082):
I/DEBUG ( 2082): stack:
I/DEBUG ( 2082): bea3b528 00000000
I/DEBUG ( 2082): bea3b52c 00000000
I/DEBUG ( 2082): bea3b530 4184a5bd /system/lib/libdvm.so
I/DEBUG ( 2082): bea3b534 00000000
I/DEBUG ( 2082): bea3b538 00000000
I/DEBUG ( 2082): bea3b53c bea3b520 [stack]
I/DEBUG ( 2082): bea3b540 00000000
I/DEBUG ( 2082): bea3b544 00000001
I/DEBUG ( 2082): bea3b548 00000000
I/DEBUG ( 2082): bea3b54c 00000000
I/DEBUG ( 2082): bea3b550 00000000
I/DEBUG ( 2082): bea3b554 400533f8
I/DEBUG ( 2082): bea3b558 00000000
I/DEBUG ( 2082): bea3b55c 80000000
I/DEBUG ( 2082): bea3b560 4185f0e0 /dev/ashmem/dalvik-zygote (deleted)
I/DEBUG ( 2082): bea3b564 417e324c /system/lib/libdvm.so
I/DEBUG ( 2082): #00 bea3b568 41876dc8 /dev/ashmem/dalvik-zygote (deleted)
I/DEBUG ( 2082): bea3b56c 4185b1f0 /system/lib/libdvm.so
I/DEBUG ( 2082): bea3b570 00000000
I/DEBUG ( 2082): bea3b574 400533f8
I/DEBUG ( 2082): bea3b578 80000000
I/DEBUG ( 2082): bea3b57c 417e3408 /system/lib/libdvm.so
I/DEBUG ( 2082): #01 bea3b580 41876d00 /dev/ashmem/dalvik-zygote (deleted)
I/DEBUG ( 2082): bea3b584 00000634
I/DEBUG ( 2082): bea3b588 0000018e
I/DEBUG ( 2082): bea3b58c 00000000
I/DEBUG ( 2082): bea3b590 400534c4
I/DEBUG ( 2082): bea3b594 417d4efc /system/lib/libdvm.so (dvmHeapBitmapScanWalk(HeapBitmap*, void (*)(Object*, void*, void*), void*)+104)
I/DEBUG ( 2082): #02 bea3b598 00000000
I/DEBUG ( 2082): bea3b59c 41876d00 /dev/ashmem/dalvik-zygote (deleted)
I/DEBUG ( 2082): bea3b5a0 00004000
I/DEBUG ( 2082): bea3b5a4 400533e0
I/DEBUG ( 2082): bea3b5a8 400533f8
I/DEBUG ( 2082): bea3b5ac 402500c0 /system/lib/libcutils.so
I/DEBUG ( 2082): bea3b5b0 4185b1f0 /system/lib/libdvm.so
I/DEBUG ( 2082): bea3b5b4 40250028 /system/lib/libcutils.so
I/DEBUG ( 2082): bea3b5b8 00004000
I/DEBUG ( 2082): bea3b5bc 00017040
I/DEBUG ( 2082): bea3b5c0 00017041
I/DEBUG ( 2082): bea3b5c4 417e3788 /system/lib/libdvm.so (dvmHeapScanMarkedObjects()+48)
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r0:
I/DEBUG ( 2082): 41876da8 4185f0e0 00000000 41876cc8 00000000
I/DEBUG ( 2082): 41876db8 0000000f 00000007 00000000 000000ab
I/DEBUG ( 2082): 41876dc8 4185e1e8 00000000 00000000 00000000
I/DEBUG ( 2082): 41876dd8 00000000 00000000 63ae030c 00000000
I/DEBUG ( 2082): 41876de8 00030001 5000011d 414f6000 00000007
I/DEBUG ( 2082): 41876df8 00000000 00000001 00000014 00000000
I/DEBUG ( 2082): 41876e08 00000000 00000000 41876e70 00000000
I/DEBUG ( 2082): 41876e18 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e28 00000002 62950d30 00000000 00000000
I/DEBUG ( 2082): 41876e38 00000025 62951040 00000000 00000000
I/DEBUG ( 2082): 41876e48 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e58 00000000 e0000000 63b00397 00000000
I/DEBUG ( 2082): 41876e68 00000000 000000ab 4185e1e8 00000000
I/DEBUG ( 2082): 41876e78 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e88 63ae00b3 00000000 00030001 5000011e
I/DEBUG ( 2082): 41876e98 414f6000 00000007 00000000 00000001
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r1:
I/DEBUG ( 2082): 400533d8 00000000 00000063 40053440 00000000
I/DEBUG ( 2082): 400533e8 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 400533f8 400534c4 625dd000 5a5dd1f0 5a5dd000
I/DEBUG ( 2082): 40053408 08000000 00000000 41876e00 6260e000
I/DEBUG ( 2082): 40053418 00080000 00300000 00000030 00000001
I/DEBUG ( 2082): 40053428 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053438 00000000 000000c3 00000333 00800000
I/DEBUG ( 2082): 40053448 18000000 04000000 0016eef0 ffffffff
I/DEBUG ( 2082): 40053458 00080000 00800000 4185e008 04000000
I/DEBUG ( 2082): 40053468 000fc4e0 0014f000 00002a5a 4185e000
I/DEBUG ( 2082): 40053478 4585e000 4195b000 00000000 00000000
I/DEBUG ( 2082): 40053488 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053498 00000000 00000000 00000001 00000001
I/DEBUG ( 2082): 400534a8 4185e000 18000000 59fa2000 00600000
I/DEBUG ( 2082): 400534b8 00600000 4185e000 4195a810 598fa000
I/DEBUG ( 2082): 400534c8 00600000 00600000 4185e000 4195a810
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r5:
I/DEBUG ( 2082): 7fffffe0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 7ffffff0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000000 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000010 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000020 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000030 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000040 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000050 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000060 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000070 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000080 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 80000090 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 800000a0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 800000b0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 800000c0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082): 800000d0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r6:
I/DEBUG ( 2082): 4185e1c8 4185f000 000fc000 4185efe0 00000000
I/DEBUG ( 2082): 4185e1d8 00000000 00000000 00000000 000000c3
I/DEBUG ( 2082): 4185e1e8 4185e1e8 00000000 00000000 00000000
I/DEBUG ( 2082): 4185e1f8 00000000 00000000 63ae1851 00000000
I/DEBUG ( 2082): 4185e208 10030011 5000000c 414f6000 00000007
I/DEBUG ( 2082): 4185e218 00000000 00000001 00000018 00000000
I/DEBUG ( 2082): 4185e228 00000000 00000000 4185e890 00000000
I/DEBUG ( 2082): 4185e238 00000000 00000000 00000004 62910990
I/DEBUG ( 2082): 4185e248 00000018 62910a00 0000003e 62910f48
I/DEBUG ( 2082): 4185e258 00000048 62911e08 00000004 62911f30
I/DEBUG ( 2082): 4185e268 00000005 62911f58 00000004 00000001
I/DEBUG ( 2082): 4185e278 629109a8 80000000 63ad63da 00000001
I/DEBUG ( 2082): 4185e288 4185e1e8 63b2e50a 63ade57f 0000001a
I/DEBUG ( 2082): 4185e298 d9bf9553 2c7e5503 00000000 000000ab
I/DEBUG ( 2082): 4185e2a8 4185e1e8 00000000 00000000 00000000
I/DEBUG ( 2082): 4185e2b8 00000000 00000000 4183bb26 00000000
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r8:
I/DEBUG ( 2082): 400533d8 00000000 00000063 40053440 00000000
I/DEBUG ( 2082): 400533e8 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 400533f8 400534c4 625dd000 5a5dd1f0 5a5dd000
I/DEBUG ( 2082): 40053408 08000000 00000000 41876e00 6260e000
I/DEBUG ( 2082): 40053418 00080000 00300000 00000030 00000001
I/DEBUG ( 2082): 40053428 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053438 00000000 000000c3 00000333 00800000
I/DEBUG ( 2082): 40053448 18000000 04000000 0016eef0 ffffffff
I/DEBUG ( 2082): 40053458 00080000 00800000 4185e008 04000000
I/DEBUG ( 2082): 40053468 000fc4e0 0014f000 00002a5a 4185e000
I/DEBUG ( 2082): 40053478 4585e000 4195b000 00000000 00000000
I/DEBUG ( 2082): 40053488 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053498 00000000 00000000 00000001 00000001
I/DEBUG ( 2082): 400534a8 4185e000 18000000 59fa2000 00600000
I/DEBUG ( 2082): 400534b8 00600000 4185e000 4195a810 598fa000
I/DEBUG ( 2082): 400534c8 00600000 00600000 4185e000 4195a810
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near r9:
I/DEBUG ( 2082): 417e34d0 e5840008 e5130004 ebffff73 e5943008
I/DEBUG ( 2082): 417e34e0 e594100c e1530001 8afffff6 e8bd8010
I/DEBUG ( 2082): 417e34f0 e5821018 e1a01002 eaffff6b e5900000
I/DEBUG ( 2082): 417e3500 e3500000 012fff1e e1a01003 e3a02001
I/DEBUG ( 2082): 417e3510 eaffff23 e5900000 e3500000 012fff1e
I/DEBUG ( 2082): 417e3520 e1a01003 e3a02000 eaffff1d e92d4038
I/DEBUG ( 2082): 417e3530 e1a05000 e59f3054 e59f2054 e08f3003
I/DEBUG ( 2082): 417e3540 e7930002 e5904384 fa00efa1 e30acaab
I/DEBUG ( 2082): 417e3550 e34acaaa e3a02000 e1a01100 e5940024
I/DEBUG ( 2082): 417e3560 e083c19c e1a011a3 ebff9726 e594c024
I/DEBUG ( 2082): 417e3570 e3a02000 e1a00005 e5842030 e584c020
I/DEBUG ( 2082): 417e3580 fa00efe9 e584002c e3a00001 e8bd8038
I/DEBUG ( 2082): 417e3590 00073730 fffffea0 e59f302c e59f202c
I/DEBUG ( 2082): 417e35a0 e08f3003 e92d4010 e7930002 e5904384
I/DEBUG ( 2082): 417e35b0 e594002c fa00eeb6 e59f1014 e08f0001
I/DEBUG ( 2082): 417e35c0 e2841018 e8bd4010 ea014a73 000736cc
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near sl:
I/DEBUG ( 2082): 400533d8 00000000 00000063 40053440 00000000
I/DEBUG ( 2082): 400533e8 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 400533f8 400534c4 625dd000 5a5dd1f0 5a5dd000
I/DEBUG ( 2082): 40053408 08000000 00000000 41876e00 6260e000
I/DEBUG ( 2082): 40053418 00080000 00300000 00000030 00000001
I/DEBUG ( 2082): 40053428 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053438 00000000 000000c3 00000333 00800000
I/DEBUG ( 2082): 40053448 18000000 04000000 0016eef0 ffffffff
I/DEBUG ( 2082): 40053458 00080000 00800000 4185e008 04000000
I/DEBUG ( 2082): 40053468 000fc4e0 0014f000 00002a5a 4185e000
I/DEBUG ( 2082): 40053478 4585e000 4195b000 00000000 00000000
I/DEBUG ( 2082): 40053488 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 40053498 00000000 00000000 00000001 00000001
I/DEBUG ( 2082): 400534a8 4185e000 18000000 59fa2000 00600000
I/DEBUG ( 2082): 400534b8 00600000 4185e000 4195a810 598fa000
I/DEBUG ( 2082): 400534c8 00600000 00600000 4185e000 4195a810
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near fp:
I/DEBUG ( 2082): 41876de0 63ae030c 00000000 00030001 5000011d
I/DEBUG ( 2082): 41876df0 414f6000 00000007 00000000 00000001
I/DEBUG ( 2082): 41876e00 00000014 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e10 41876e70 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e20 00000000 00000000 00000002 62950d30
I/DEBUG ( 2082): 41876e30 00000000 00000000 00000025 62951040
I/DEBUG ( 2082): 41876e40 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e50 00000000 00000000 00000000 e0000000
I/DEBUG ( 2082): 41876e60 63b00397 00000000 00000000 000000ab
I/DEBUG ( 2082): 41876e70 4185e1e8 00000000 00000000 00000000
I/DEBUG ( 2082): 41876e80 00000000 00000000 63ae00b3 00000000
I/DEBUG ( 2082): 41876e90 00030001 5000011e 414f6000 00000007
I/DEBUG ( 2082): 41876ea0 00000000 00000001 00000014 00000000
I/DEBUG ( 2082): 41876eb0 00000000 00000000 4185ede8 00000000
I/DEBUG ( 2082): 41876ec0 00000000 00000000 00000000 00000000
I/DEBUG ( 2082): 41876ed0 00000001 62950dc0 00000007 62950e00
I/DEBUG ( 2082):
I/DEBUG ( 2082): memory near sp:
I/DEBUG ( 2082): bea3b548 00000000 00000000 00000000 400533f8
I/DEBUG ( 2082): bea3b558 00000000 80000000 4185f0e0 417e324c
I/DEBUG ( 2082): bea3b568 41876dc8 4185b1f0 00000000 400533f8
I/DEBUG ( 2082): bea3b578 80000000 417e3408 41876d00 00000634
I/DEBUG ( 2082): bea3b588 0000018e 00000000 400534c4 417d4efc
I/DEBUG ( 2082): bea3b598 00000000 41876d00 00004000 400533e0
I/DEBUG ( 2082): bea3b5a8 400533f8 402500c0 4185b1f0 40250028
I/DEBUG ( 2082): bea3b5b8 00004000 00017040 00017041 417e3788
I/DEBUG ( 2082): bea3b5c8 00000000 41853c34 400533e0 417d53e0
I/DEBUG ( 2082): bea3b5d8 00017040 401a2e00 00000000 40250028
I/DEBUG ( 2082): bea3b5e8 4185b1f0 00000000 40053538 401a2d00
I/DEBUG ( 2082): bea3b5f8 bea3b600 7fffffff 00000263 00000000
I/DEBUG ( 2082): bea3b608 4195a810 00000000 00000000 41856c74
I/DEBUG ( 2082): bea3b618 400a5f2c 40053538 41883430 417c9d40
I/DEBUG ( 2082): bea3b628 00000006 400a5f00 bea3b7d8 41801b0b
I/DEBUG ( 2082): bea3b638 639b885c 417d2fe4 bea3b710 40053538
I/DEBUG ( 2082):
I/DEBUG ( 2082): code around pc:
I/DEBUG ( 2082): 417e3224 0a00000e e3540000 08bd81f0 e3a05102
I/DEBUG ( 2082): 417e3234 e16fcf14 e1a01008 e087210c e1c44c35
I/DEBUG ( 2082): 417e3244 e5920008 ebffffeb e3540000 1afffff7
I/DEBUG ( 2082): 417e3254 e8bd81f0 e5966048 e3560000 0a000010
I/DEBUG ( 2082): 417e3264 e596308c e5964090 e3530000 c3a05000
I/DEBUG ( 2082): 417e3274 dafffff7 e5940010 e1a01008 e2855001
I/DEBUG ( 2082): 417e3284 e2844014 e7970000 ebffffda e596108c
I/DEBUG ( 2082): 417e3294 e1510005 cafffff6 e5966048 e3560000
I/DEBUG ( 2082): 417e32a4 1affffee e8bd81f0 e92d40f8 e1a04000
I/DEBUG ( 2082): 417e32b4 e59f31ec e1a07001 e59f21e8 e08f3003
I/DEBUG ( 2082): 417e32c4 e5900000 e7935002 e595c0c4 e150000c
I/DEBUG ( 2082): 417e32d4 0a00003b e590e020 e31e0101 1a000024
I/DEBUG ( 2082): 417e32e4 ebffffc4 e1a00004 e1a01007 ebffffc5
I/DEBUG ( 2082): 417e32f4 e5940000 e5906020 e3160302 08bd80f8
I/DEBUG ( 2082): 417e3304 e5951298 e59532a4 e5955384 e7940001
I/DEBUG ( 2082): 417e3314 e7942003 e290c000 13a0c001 e3520000
I/DEBUG ( 2082):
I/DEBUG ( 2082): code around lr:
I/DEBUG ( 2082): 417e33e8 e1a01007 ebffff82 e594004c e1a01007
I/DEBUG ( 2082): 417e33f8 ebffff7f e1a00004 e1a01007 ebffff80
I/DEBUG ( 2082): 417e3408 e594309c e3530000 c1a05004 c3a06000
I/DEBUG ( 2082): 417e3418 ca000003 ea00000d e1560003 e2855018
I/DEBUG ( 2082): 417e3428 aa00000a e59500a8 e2866001 e5d01000
I/DEBUG ( 2082): 417e3438 e351005b 1351004c 1afffff6 e59500b0
I/DEBUG ( 2082): 417e3448 e1a01007 ebffff6a e594309c eafffff1
I/DEBUG ( 2082): 417e3458 e594202c e3520001 d8bd80f8 e594c058
I/DEBUG ( 2082): 417e3468 e35c0000 d8bd80f8 e3a05000 e594e05c
I/DEBUG ( 2082): 417e3478 e1a01007 e79e0105 e2855001 ebffff5c
I/DEBUG ( 2082): 417e3488 e5940058 e1550000 bafffff7 e8bd80f8
I/DEBUG ( 2082): 417e3498 e594003c e1a01007 ebffff55 eaffffcb
I/DEBUG ( 2082): 417e34a8 000739ac fffffea0 e5903008 e590200c
I/DEBUG ( 2082): 417e34b8 e92d4010 e1530002 e1a04000 98bd8010
I/DEBUG ( 2082): 417e34c8 e2430004 e1a01004 e5840008 e5130004
I/DEBUG ( 2082): 417e34d8 ebffff73 e5943008 e594100c e1530001
I am the hardware guy that Luke mentioned. This is not only our first DDR3 project, it is also our first hi-speed project, our first 6-layer project, and our first impedance matching project. Basically, this project is very far removed from our typical designs.
Unfortunately the way the DDR3 was laid out, we do not have easy access to most of the traces, so we have not been able to directly check the Signal Integrity or Timing. However, as Luke mentioned, I followed the DDR routing rules (Section 3.4) of the Hardware Development Guide very closely. Length tuning is within the the specified tolerances as of each stage of the branching.
I have two main concerns, the first is that we used a lead free process and I have seen some questionable solder joints on some of the boards. I have reflowed the ones that had questionable solder joints, but it has not helped. The second concern is that the individual traces were impedance matched to 100 or 50 ohms (depending on if it was a differential or single ended trace) that does not take into account the branching that is taking place. I had used a 12-layer reference design, but converted it to a 6-layer design. I believe the original design took the branching into account and the layer for those traces were adjusted to keep the impedance the same. The design has the Address/Command/Control lines branching twice (for the 4 chips) and the clock lines branching once.
Hi Craig,
This '12 layer to 6 layer' conversion is a risk. Are you sure that all DDR traces have the correct impedance? Is the stack up confirmed with your PCB vendor?
You might consider to do a signal integrity and timing analysis of your pcb design.