Part Number: AM3351
Hi!
It has been a while on the DDR2 topic, before our equipment was not good and also time was limited to analyze in-depth, but lately we have had time to measure integrity and timing of the DDR2. The previous question about the Vswing is not applicable anymore, we solved the amplitude with an parallel termination on the clock differential and series termination. (Not sure why this is not added in the datasheet as a requirement on the differential clock to the DDR2 device.)
Now we almost finalized the qualification successfully but we run into a few points which are not okay yet. (Below the measurement I'll share details about the design).
1. When measuring read bursts timing fails on:
- tAC-Diff, CK, DQ which is required to be +/- 500 ps. Measurement results show between -628.75 ps and -282.71 ps.
Where the signals are (all measured close to the CPU):
- C1 -> CK_p/n
- C2 -> DQS1_p/n
- C3 -> DQ8
2. Second measurement on read burst where timing fails:
- tDQSQ-Diff, DQ, DQS which is required to be less than +300ps. Measurement results show +396.45ps (with an average of 288.93ps and a low of -387.77ps).
Signals are same as the previous measurement.
3. The third measurement is an signal integrity measurement where we do not meet the JEDEC:
- Vox(ac)DQS, DQS, DQS# where the low limit is 775mV and high limit 1.025V. From the measurement result we see the low limit is not met and results in 421.89mV.
As shown in the histogram we do not meet this JEDEC spec.
Can you advice on these measurements and fails?
The design consist of a DDR2 (ISSI) device (IS43DR16640C-25DBLI) connected to the CPU (AM3351).
The DDR2 settings in the Sitara CPU are as follow:
arch/arm/include/asm/arch-am33xx/ddr_defs.h:28:#define IS43DR16640C25DBLI_EMIF_READ_LATENCY 0x100306
arch/arm/include/asm/arch-am33xx/ddr_defs.h:29:#define IS43DR16640C25DBLI_EMIF_SDCFG 0x43845732
arch/arm/include/asm/arch-am33xx/ddr_defs.h:30:#define IS43DR16640C25DBLI_EMIF_SDREF 0x2000040d
arch/arm/include/asm/arch-am33xx/ddr_defs.h:31:#define IS43DR16640C25DBLI_EMIF_TIM1 0x0666a392
arch/arm/include/asm/arch-am33xx/ddr_defs.h:32:#define IS43DR16640C25DBLI_EMIF_TIM2 0x142431ca
arch/arm/include/asm/arch-am33xx/ddr_defs.h:33:#define IS43DR16640C25DBLI_EMIF_TIM3 0x0000021f
arch/arm/include/asm/arch-am33xx/ddr_defs.h:34:#define IS43DR16640C25DBLI_INVERT_CLKOUT 0x0
arch/arm/include/asm/arch-am33xx/ddr_defs.h:35:#define IS43DR16640C25DBLI_IOCTRL_VALUE 0x373
arch/arm/include/asm/arch-am33xx/ddr_defs.h:36:#define IS43DR16640C25DBLI_PHY_FIFO_WE 0x5d
arch/arm/include/asm/arch-am33xx/ddr_defs.h:37:#define IS43DR16640C25DBLI_PHY_WR_DATA 0x40
arch/arm/include/asm/arch-am33xx/ddr_defs.h:38:#define IS43DR16640C25DBLI_RATIO 0x80
arch/arm/include/asm/arch-am33xx/ddr_defs.h:39:#define IS43DR16640C25DBLI_RD_DQS 0x40
arch/arm/include/asm/arch-am33xx/ddr_defs.h:40:#define IS43DR16640C25DBLI_WR_DQS 0x6
PCB trace lengths between CPU (U2000) and DDR2 (U4001) are as follow:
Net | Length | Time |
DDR2_ADD0 | 30.654 | |
U2000.F3:U4001.M8 | 30.654 | 0.18765 |
DDR2_ADD1 | 29.890 | |
U2000.J2:U4001.M3 | 29.889 | 0.18297 |
DDR2_ADD2 | 30.391 | |
U2000.D1:U4001.M7 | 30.391 | 0.18604 |
DDR2_ADD3 | 29.966 | |
U2000.B3:U4001.N2 | 29.966 | 0.18344 |
DDR2_ADD4 | 30.377 | |
U2000.E5:U4001.N8 | 30.377 | 0.18596 |
DDR2_ADD5 | 30.258 | |
U2000.A2:U4001.N3 | 30.258 | 0.18523 |
DDR2_ADD6 | 30.559 | |
U2000.B1:U4001.N7 | 30.559 | 0.18707 |
DDR2_ADD7 | 30.033 | |
U2000.D2:U4001.P2 | 30.032 | 0.18385 |
DDR2_ADD8 | 30.570 | |
U2000.C3:U4001.P8 | 30.570 | 0.18714 |
DDR2_ADD9 | 30.016 | |
U2000.B2:U4001.P3 | 30.016 | 0.18375 |
DDR2_ADD10 | 30.270 | |
U2000.E2:U4001.M2 | 30.270 | 0.1853 |
DDR2_ADD11 | 29.976 | |
U2000.G4:U4001.P7 | 29.976 | 0.1835 |
DDR2_ADD12 | 29.727 | |
U2000.F4:U4001.R2 | 29.727 | 0.18198 |
DDR2_ADD13 | 30.044 | |
U2000.H1:U4001.R8 | 30.044 | 0.18392 |
DDR2_BA0 | 29.997 | |
U2000.A3:U4001.L2 | 29.997 | 0.18363 |
DDR2_BA1 | 30.262 | |
U2000.E1:U4001.L3 | 30.262 | 0.18525 |
DDR2_BA2 | 30.175 | |
U2000.B4:U4001.L1 | 30.175 | 0.18472 |
DDR2_CAS_N | 30.260 | |
U2000.F1:U4001.L7 | 30.260 | 0.18524 |
DDR2_CKE | 30.046 | |
U2000.G3:U4001.K2 | 30.046 | 0.18394 |
DDR2_CK_N | 29.028 | |
U2000.C1:U4001.K8 | 29.029 | 0.1774 |
DDR2_CK_P | 30.298 | |
U2000.C2:U4001.J8 | 30.298 | 0.18515 |
DDR2_CS0_N | 30.306 | |
U2000.H2:U4001.L8 | 30.306 | 0.18552 |
DDR2_ODT | 29.862 | |
U2000.G1:U4001.K9 | 29.862 | 0.18281 |
DDR2_RAS_N | 30.384 | |
U2000.F2:U4001.K7 | 30.384 | 0.186 |
DDR2_WE_N | 30.282 | |
U2000.A4:U4001.K3 | 30.283 | 0.18538 |
DDR2_BYTE0(11) | ||
DDR2_DAT0 | 17.647 | |
U2000.N4:U4001.C8 | 17.647 | 0.10803 |
DDR2_DAT1 | 16.709 | |
U2000.P4:U4001.C2 | 16.709 | 0.10229 |
DDR2_DAT2 | 16.851 | |
U2000.P2:U4001.D7 | 16.851 | 0.10316 |
DDR2_DAT3 | 17.329 | |
U2000.P1:U4001.D3 | 17.329 | 0.10608 |
DDR2_DAT4 | 16.085 | |
U4001.D1:U2000.P3 | 16.085 | 0.09847 |
DDR2_DAT5 | 17.386 | |
U2000.T1:U4001.D9 | 17.386 | 0.10643 |
DDR2_DAT6 | 15.816 | |
U2000.T2:U4001.B1 | 15.816 | 0.09682 |
DDR2_DAT7 | 18.325 | |
U2000.R3:U4001.B9 | 18.325 | 0.11218 |
DDR2_DQM0 | 16.827 | |
U2000.N3:U4001.B3 | 16.827 | 0.10301 |
DDR2_DQS0_N | 15.926 | |
U2000.R2:U4001.A8 | 15.926 | 0.09733 |
DDR2_DQS0_P | 15.876 | |
U2000.R1:U4001.B7 | 15.876 | 0.09703 |
DDR2_BYTE1(11) | ||
DDR2_DAT8 | 16.606 | |
U2000.K2:U4001.G8 | 16.606 | 0.10166 |
DDR2_DAT9 | 15.269 | |
U2000.K1:U4001.G2 | 15.269 | 0.09347 |
DDR2_DAT10 | 16.170 | |
U2000.M3:U4001.H7 | 16.170 | 0.09899 |
DDR2_DAT11 | 15.871 | |
U2000.M4:U4001.H3 | 15.871 | 0.09716 |
DDR2_DAT12 | 14.279 | |
U2000.M2:U4001.H1 | 14.279 | 0.08741 |
DDR2_DAT13 | 16.648 | |
U2000.M1:U4001.H9 | 16.648 | 0.10192 |
DDR2_DAT14 | 14.158 | |
U2000.N2:U4001.F1 | 14.158 | 0.08667 |
DDR2_DAT15 | 16.420 | |
U2000.N1:U4001.F9 | 16.420 | 0.10052 |
DDR2_DQM1 | 16.364 | |
U2000.K3:U4001.F3 | 16.364 | 0.10017 |
DDR2_DQS1_N | 15.674 | |
U2000.L2:U4001.E8 | 15.674 | 0.0958 |
DDR2_DQS1_P | 15.727 | |
U2000.L1:U4001.F7 | 15.727 | 0.09612 |
Thank you in advance!
Francois.