Hello TI team...
Background
¨ One of our designs uses TI’s SOC (TCI6638K2K).
¨ DDR3A interface of the SOC is equipped with four 16-bit TwinDie DDR3 devices (Datasheet attached in the previous email).
- Single Rank design.
- ECC is not used in the design.
- DDR3B interface is not equipped in the design.
¨ The memory absolutely works fine at 1333 MT/s
Issue Definition (@ 1600 MT/s)
¨ We see corrupted data during the 1st and 4th beats of every read burst (Burst-8). Data for the remaining 6 beats is intact.
- Training and Levelling are successful and do not throw up any errors.
- Read/Write Memory tests also pass.
Our Observations and Conclusions
¨ 64-bit Data (pertaining to Beats-1,4) keeps getting modified on consecutive reads. The data read out during the remaining beats stays consistent to the written data.
¨ Majority of bytes in the 64 bit data (pertaining to Beats-1,4) keep showing up with the written values once in a while indicating that this is a read issue.
¨ R0DGSL (Rank-0 DQS Gating System Latency) is not getting properly resolved during the automatic DQS training.
- When we set this parameter manually (‘value read in the failure mode’ – 1) , we are able to get the memory working consistently.
Queries
¨ What is the exact definition for DGSL ? How do we statically calculate this parameter based on the board routing delays ?
¨ Can we set this parameter manually ? If not, how do we ensure proper resolution every time during automatic DQS training ?
¨ Please indicate if T_RTW is an important parameter ? Currently, this value is set to 0x0.
- Please provide more details on how we can calculate this value. The description in the data sheet is not very clear.
¨ Is there any relation between T_RTW and DGSL ?
¨ Any other suggestions to resolve this issue are most welcome.
DDR3_SDRAM_DATA_SHEET.pdfK2 DDR3 Register Calc v1p60_31_01_V1_DDR1600_CL11_CWL8_17MAY.xlsx
C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: PLL Control Register (PLLCR) C66xx_0: GEL Output: DDR3A_PLLCR: 0x0001C000 (Address: 0x02329018) C66xx_0: GEL Output: FRQSEL[19:18]: PLL Reference clock ranges from 335MHz to 533MHz (0) C66xx_0: GEL Output: Note: PLL Reference Clock should be 1/4 of DDR data rate. (i.e. 400MHz -> 1600MTs) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: DRAM Timing Parameters Register 0 (DTPR0) C66xx_0: GEL Output: DDR3A_DTPR0: 0xA19DBB66 (Address: 0x02329048) C66xx_0: GEL Output: tRFC[31:26]: Activate to Activate command delay (same bank) is 40 cycles C66xx_0: GEL Output: tRRD[25:22]: Activate to Activate command delay (diff banks) is 6 cycles C66xx_0: GEL Output: tRAS[21:16]: Activate to Precharge command delay is 29 cycles C66xx_0: GEL Output: tRCD[15:12]: Activate to Read/Write (on activated row) command delay is 11 cycles C66xx_0: GEL Output: tRP[11:8]: Precharge command period is 11 cycles C66xx_0: GEL Output: tWTR[7:4]: Internal write to read command delay is 6 cycles C66xx_0: GEL Output: tRTP[3:0]: Internal read to precharge command delay is 6 cycles C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: DRAM Timing Parameters Register 1 (DTPR1) C66xx_0: GEL Output: DDR3A_DTPR1: 0x32868400 (Address: 0x0232904C) C66xx_0: GEL Output: tWLO[29:26]: Write leveling output delay is 12 cycles C66xx_0: GEL Output: tWLMRD[25:20]: Min delay from write leveling mode to first DQS edge is 40 cycles C66xx_0: GEL Output: tRFC[19:11]: Refresh to Refresh command delay is 208 cycles C66xx_0: GEL Output: tFAW[10:5]: 4-bank activate period is 32 cycles C66xx_0: GEL Output: tMOD[4:2]: Load mode update delay is 12 cycles (0) C66xx_0: GEL Output: tMRD[1:0]: Load mode cycle time is 0 cycles C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: DRAM Timing Parameters Register 2 (DTPR2) C66xx_0: GEL Output: DDR3A_DTPR2: 0x5002D200 (Address: 0x02329050) C66xx_0: GEL Output: tCCD[31]: Read to read and write to write command delay is 4 cycles (0) C66xx_0: GEL Output: tRTW[30]: Read to write command delay is standard bus turn around delay +1 clock (1) C66xx_0: GEL Output: tRTODT[29]: Read to ODT delay is 0, may come immediately after read post-amble (0) C66xx_0: GEL Output: tDLLK[28:19]: DLL locking time is 512 cycles C66xx_0: GEL Output: tCKE[28:19]: CKE minimum pulse width (tCKESR) is 5 cycles C66xx_0: GEL Output: tXP[14:10]: Power down exit delay is 20 cycles C66xx_0: GEL Output: tXS[9:0]: Self refresh exit delay is 512 cycles C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Mode Register 0 (MR0) C66xx_0: GEL Output: DDR3A_MR0: 0x00001C70 (Address: 0x02329054) C66xx_0: GEL Output: PD[12]: Fast power down exit (DLL on) (1) C66xx_0: GEL Output: WR[11:9]: Write Recovery is 12 cycles (6) C66xx_0: GEL Output: CL[6:4,2]: 11 cycles (14) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Mode Register 1 (MR1) C66xx_0: GEL Output: DDR3A_MR1: 0x00000006 (Address: 0x02329058) C66xx_0: GEL Output: AL[4:3]: AL Disabled (0) C66xx_0: GEL Output: RTT[9,6,2]: ODT is RZQ/4 on SDRAM (1) C66xx_0: GEL Output: DIC[5,1]: Output Drive is RZQ/7 on SDRAM (1) C66xx_0: GEL Output: DE[0]: DLL Enabled on SDRAM (0) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Mode Register 2 (MR2) C66xx_0: GEL Output: DDR3A_MR2: 0x00000058 (Address: 0x0232905C) C66xx_0: GEL Output: RTTWR[10:9]: Dynamic ODT is Disabled (0) C66xx_0: GEL Output: CWL[5:3]: CAS Write Latency is 8 cycles (3) C66xx_0: GEL Output: SRT[7]: Normal Operating Temperature Range (0) C66xx_0: GEL Output: ASR[6]: Auto Self-Refresh Power Management Enabled (64) C66xx_0: GEL Output: PASR[2:0]: Partial Array Self-Refresh is set to Full Array (0) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Impedance Control Register 1 (Address/Command/Control signals) (ZQ0CR1) C66xx_0: GEL Output: DDR3A_ZQ0CR1: 0x0001005B (Address: 0x02329184) C66xx_0: GEL Output: ZPROG-ODT[7:4]: On-Die Termination is set to N/A (5) C66xx_0: GEL Output: ZPROG-ZO[3:0]: Output Impedance is set to 40ohms (11) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Impedance Control Register 1 (Data Lanes 0-3) (ZQ1CR1) C66xx_0: GEL Output: DDR3A_ZQ1CR1: 0x0001005B (Address: 0x02329194) C66xx_0: GEL Output: ZPROG-ODT[7:4]: On-Die Termination is set to 60ohms (5) C66xx_0: GEL Output: ZPROG-ZO[3:0]: Output Impedance is set to 40ohms (11) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Impedance Control Register 1 (Data Lanes 4-7) (ZQ2CR1) C66xx_0: GEL Output: DDR3A_ZQ2CR1: 0x0001005B (Address: 0x023291A4) C66xx_0: GEL Output: ZPROG-ODT[7:4]: On-Die Termination is set to 60ohms (5) C66xx_0: GEL Output: ZPROG-ZO[3:0]: Output Impedance is set to 40ohms (11) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: DDR3A_PGCR0: 0xA8003E3F (Address: 0x02329008) C66xx_0: GEL Output: DDR3A_PGCR1: 0x0280C425 (Address: 0x0232900C) C66xx_0: GEL Output: DDR3A_PGCR2: 0x00F07A12 (Address: 0x0232908C) C66xx_0: GEL Output: DDR3A_PLLCR: 0x0001C000 (Address: 0x02329018) C66xx_0: GEL Output: DDR3A_MR0: 0x00001C70 (Address: 0x02329054) C66xx_0: GEL Output: DDR3A_MR1: 0x00000006 (Address: 0x02329058) C66xx_0: GEL Output: DDR3A_MR2: 0x00000058 (Address: 0x0232905C) C66xx_0: GEL Output: DDR3A_MR3************************** C66xx_0: GEL Output: DDR3A_DTPR0: 0xA19DBB66 (Address: 0x02329048) C66xx_0: GEL Output: DDR3A_DTPR1: 0x32868400 (Address: 0x0232904C) C66xx_0: GEL Output: DDR3A_DTPR2: 0x5002D200 (Address: 0x02329050) C66xx_0: GEL Output: DDR3A_PTR0: 0x42C21590 (Address: 0x0232901C) C66xx_0: GEL Output: DDR3A_PTR1: 0xD05612C0 (Address: 0x02329020) C66xx_0: GEL Output: DDR3A_PTR2: 0x00083DEF (Address: 0x02329024) C66xx_0: GEL Output: DDR3A_PTR3: 0x0D861A80 (Address: 0x02329028) C66xx_0: GEL Output: DDR3A_PTR4: 0x0C827100 (Address: 0x0232902C) C66xx_0: GEL Output: DDR3A_DCR: 0x0000040B (Address: 0x02329044) C66xx_0: GEL Output: DDR3A_DTCR: 0x710035C7 (Address: 0x02329068) C66xx_0: GEL Output: DDR3A_ZQ0CR1: 0x0001005B (Address: 0x02329184) C66xx_0: GEL Output: DDR3A_ZQ1CR1: 0x0001005B (Address: 0x02329194) C66xx_0: GEL Output: DDR3A_ZQ2CR1: 0x0001005B (Address: 0x023291A4) C66xx_0: GEL Output: DDR3A_ZQ3CR1************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: **************************************************************************************************************** C66xx_0: GEL Output: ***************** DDR3A Leveling Errors ********************* C66xx_0: GEL Output: PGSR0[27]: WEERR has ** No Error ** C66xx_0: GEL Output: PGSR0[26]: REERR has ** No Error ** C66xx_0: GEL Output: PGSR0[25]: WDERR has ** No Error ** C66xx_0: GEL Output: PGSR0[24]: RDERR has ** No Error ** C66xx_0: GEL Output: PGSR0[23]: WLAERR has ** No Error ** C66xx_0: GEL Output: PGSR0[22]: QSGERR has ** No Error ** C66xx_0: GEL Output: PGSR0[21]: WLERR has ** No Error ** C66xx_0: GEL Output: PGSR0[20]: ZCERR has ** No Error ** C66xx_0: GEL Output: PGSR0[11]: WEDONE is ** Set ** C66xx_0: GEL Output: PGSR0[10]: REDONE is ** Set ** C66xx_0: GEL Output: PGSR0[9]: WDDONE is ** Set ** C66xx_0: GEL Output: PGSR0[8]: RDDONE is ** Set ** C66xx_0: GEL Output: PGSR0[7]: WLADONE is ** Set ** C66xx_0: GEL Output: PGSR0[6]: QSGDONE is ** Set ** C66xx_0: GEL Output: PGSR0[5]: WLDONE is ** Set ** C66xx_0: GEL Output: PGSR0[4]: DIDONE is ** Set ** C66xx_0: GEL Output: PGSR0[3]: ZCDONE is ** Set ** C66xx_0: GEL Output: PGSR0[2]: DCDONE is ** Set ** C66xx_0: GEL Output: PGSR0[1]: PLDONE is ** Set ** C66xx_0: GEL Output: PGSR0[0]: IDONE is ** Set ** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: Leveling Errors by Byte Lane: C66xx_0: GEL Output: Byte Lane 0: C66xx_0: GEL Output: DX0GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX0GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX0GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX0GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX0GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX0GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX0GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 1: C66xx_0: GEL Output: DX1GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX1GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX1GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX1GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX1GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX1GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX1GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 2: C66xx_0: GEL Output: DX2GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX2GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX2GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX2GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX2GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX2GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX2GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 3: C66xx_0: GEL Output: DX3GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX3GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX3GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX3GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX3GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX3GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX3GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 4: C66xx_0: GEL Output: DX4GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX4GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX4GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX4GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX4GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX4GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX4GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 5: C66xx_0: GEL Output: DX5GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX5GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX5GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX5GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX5GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX5GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX5GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 6: C66xx_0: GEL Output: DX6GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX6GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX6GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX6GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX6GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX6GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX6GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 7: C66xx_0: GEL Output: DX7GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX7GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX7GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX7GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX7GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX7GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX7GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: Byte Lane 8: C66xx_0: GEL Output: DX8GSR2[6]: WEERR has ** No Error ** C66xx_0: GEL Output: DX8GSR2[4]: REERR has ** No Error ** C66xx_0: GEL Output: DX8GSR2[2]: WDERR has ** No Error ** C66xx_0: GEL Output: DX8GSR2[0]: RDERR has ** No Error ** C66xx_0: GEL Output: DX8GSR0[25]: QSGERR on Rank1 has ** No Error ** C66xx_0: GEL Output: DX8GSR0[24]: QSGERR on Rank0 has ** No Error ** C66xx_0: GEL Output: DX8GSR0[6]: WLERR has ** No Error ** C66xx_0: GEL Output: **************************************************************************************************************** C66xx_0: GEL Output: **************************************************************************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: DDR SDRAM Configuration Register (SDCFG) C66xx_0: GEL Output: DDR3AEMIF_SDCFG: 0x6200CE62 (Address: 0x21010008) C66xx_0: GEL Output: SDRAM Type[31:29]: DDR3 (3) C66xx_0: GEL Output: SDRAM Drive[27:25]: RZQ/4 (1) C66xx_0: GEL Output: Dynamic ODT[23:22]: OFF (0) C66xx_0: GEL Output: CAS Write Latency[16:14]: 8 (3) C66xx_0: GEL Output: Data Bus Width[13:12]: 64-bit (0) C66xx_0: GEL Output: CAS Latency[11:8]: 11 (14) C66xx_0: GEL Output: Banks per SDRAM[6:5]: 8 (3) C66xx_0: GEL Output: Chip Select Setup[3]: DCE0# (0) C66xx_0: GEL Output: Page Size[1:0]: 1024 word page (2) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Refresh Control Register (SDRFC) C66xx_0: GEL Output: DDR3AEMIF_SDRFC: 0x00000C34 (Address: 0x21010010) C66xx_0: GEL Output: INITREF_DIS[31]: Normal operation C66xx_0: GEL Output: REFRESH_RATE[15:0]: 3124 (REFRESH_RATE = Refresh period * DDR3 clock frequency.) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Timing 1 Register (SDTIM1) C66xx_0: GEL Output: DDR3AEMIF_SDTIM1: 0x166C9875 (Address: 0x21010018) C66xx_0: GEL Output: T_WR[29:25]: 11 cycles (+1) C66xx_0: GEL Output: T_RAS[24:18]: 27 cycles (+1) C66xx_0: GEL Output: T_RC[17:10]: 38 cycles (+1) C66xx_0: GEL Output: T_RRD[9:4]: 7 cycles (+1) C66xx_0: GEL Output: T_WTR[3:0]: 5 cycles (+1) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Timing 2 Register (SDTIM2) C66xx_0: GEL Output: DDR3AEMIF_SDTIM2: 0x0000014A (Address: 0x2101001C) C66xx_0: GEL Output: T_RTW[12:10]: 0 cycles (+1) C66xx_0: GEL Output: T_RP[9:5]: 10 cycles (+1) C66xx_0: GEL Output: T_RCD[4:0]: 10 cycles (+1) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Timing 3 Register (SDTIM3) C66xx_0: GEL Output: DDR3AEMIF_SDTIM3: 0x435DFF53 (Address: 0x21010020) C66xx_0: GEL Output: T_XP[31:28]: 4 cycles (+1) C66xx_0: GEL Output: T_XSNR[27:18]: 215 cycles (+1) C66xx_0: GEL Output: T_XSRD[17:8]: 511 cycles (+1) C66xx_0: GEL Output: T_RTP[7:4]: 5 cycles (+1) C66xx_0: GEL Output: T_CKE[3:0]: 3 cycles (+1) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Timing 4 Register (SDTIM4) C66xx_0: GEL Output: DDR3AEMIF_SDTIM4: 0x543F0CFF (Address: 0x21010028) C66xx_0: GEL Output: T_CSTA[31:28]: 4 cycles (+1) C66xx_0: GEL Output: T_CKESR[27:24]: 3 cycles (+1) C66xx_0: GEL Output: ZQ_ZQCS[23:16]: 93 cycles (+1) C66xx_0: GEL Output: T_RFC[13:4]: 1013 cycles (+1) C66xx_0: GEL Output: T_RAS_MAX[3:0]:(should be 0xF) 3 cycles C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: SDRAM Output Impedance Calibration Configuration Register (ZQCFG) C66xx_0: GEL Output: DDR3AEMIF_ZQCFG: 0x70073200 (Address: 0x210100C8) C66xx_0: GEL Output: ZQ_CS1EN[31]: ZQ calibration for Rank 2 is Disabled (0) C66xx_0: GEL Output: ZQ_CS0EN[31]: ZQ calibration for Rank 1 is Enabled (1) C66xx_0: GEL Output: ZQ_DUALCALEN[29]: Dual ZQ calibration is Enabled (1) C66xx_0: GEL Output: ZQ_SFEXITEN[28]: ZQ calibration on self-refresh, Active power-down and precharge power-down exit is Enabled (1) C66xx_0: GEL Output: ZQ_ZQCL_MULT[18:16]: 7 cycles C66xx_0: GEL Output: ZQ_REFINTERVAL[15:0]: Refresh periods between ZQCS commands is 12800 (+1) C66xx_0: GEL Output: ******************************************************** C66xx_0: GEL Output: ****************************************************************************************************************