This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
In the offline hardware testing of the factory, there is a problem of TDA4 DDR initialization failure,
especially in the case of repeated warm resets on a single ECU with a higher probability.
by debug, the software enters a while loop at Board_DDRInit function.
We used hynix's DDR H54G56BYYPX046(4G)
Please analyze the reasons based on the following two cases and determine if it is necessary to modify board_ddrRegInit.h? See attachment.
case1:
Board_DDRChangeFreqAck
while(regVal == 0x0)
{
regVal = HW_RD_REG32(BOARD_DDR_FSP_CLKCHNG_REQ_ADDR) & 0x80;
BOARD_DEBUG_LOG("Reg Value: %d \n", regVal);
}
case2:
LPDDR4_PollPhyIndepIrq
LPDDR4_CheckPhyIndepInterrupt
/* Loop until irqStatus found to be 1 or if value of 'result' !=CDN_EOK */
do {
if (++timeout == delay) {
result = CDN_EIO;
break;
}
CPS_DelayNs(10000000U);
result = LPDDR4_CheckPhyIndepInterrupt(pD, irqBit, &irqStatus);
} while ((irqStatus == false) && (result == (uint32_t)CDN_EOK));
Hi Zhang,
Is this a new board design / initial board bring-up or existing system that has just begin to fail? How many boards are failing (raw count and percentage)?
After the failure occurs, can you run the attached binary (from the R5 core) and provide the output? The binary loads through Code Composer Studio.
Thanks,
Kevin
hi,Kevin.
Perform the same 100 times soft reset tests on the same ECU and software version, may fail 3-4 times.
I cant run the binary, cause our ECU are special designed.
here are register information about DDR , stored when software stopped at
case1:
Board_DDRChangeFreqAck
while(regVal == 0x0)
{
regVal = HW_RD_REG32(BOARD_DDR_FSP_CLKCHNG_REQ_ADDR) & 0x80;
BOARD_DEBUG_LOG("Reg Value: %d \n", regVal);
}
please check the register and give some advice ,thank youTDA4_DDR.xlsx
During soft reset of soc ,the DDR0_RESETn will be pull down, then pull up
But sometimes DDR0_RESETn wont pull down, so the DDR_init failed .
Explain why?
Hello Kevin
this is UAES/VDC project issue, this project is very close to SOP, please handle this case as high priority,
Thanks
Semon
Hi Zhang,
Can you provide exact sequence being used to issue soft reset?
Hi Semon,
Understand, I will send you private email.
Regards,
Kevin
SOC TDA4 + PMIC TPS6594 + DDR H54G56BYYPX046(4G) when reset source detected , SOC call function Sciclient_pmDeviceReset(RESETM_TIMEOUT); ,then TDA4 restarted , but DDR reset pin sometimes failed to pull down .
we did not set PMIC TPS6594.
Hello Zhengyang
according to your words, it can occur on DRA821 too, I verified it on EVM with SDK 8.6, with attached patch.
not be able to re-produce it on 821 EVM with over 200 times test.
see log.
--------------------------
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 0 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
--->>> Frequency Change request handshake is completed... <<<---
LPDDR4_Start: PASS
--------------------------------
Regards
Semon
Hello Zhengyang
test on 821 EVM with SDK 8.0, can't reproduce it either
-------------------
SD Boot - File open fails
SBL Revision: 01.00.10.01 (Nov 21 2023 - 16:40:05)
TIFS ver: 21.5.0--v2021.05 (Terrific Llam
Board_DDRProbe: PASS
calling Board_DDRInitDrv...
Board_DDRInitDrv: PASS
calling LPDDR4_Start: start
0-infoType 1
1-infoType 1
--->>> LPDDR4 Initialization is in progress ... <<<---
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 0 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 0 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 1 request from Controller
Reg Value: 0
Reg Value: 128
Frequency Change type 2 request from Controller
--->>> Frequency Change request handshake is completed... <<<---
LPDDR4_Start: PASS
---------------------------------
Regards
Semon
During soft reset of soc ,the DDR0_RESETn will be pull down, then pull up
But sometimes DDR0_RESETn wont pull down, so the DDR_init failed .
Hi Zhengyang
can you confirm for each DDR_init failed, DDR0_RESETn wont pull down??
Regards
Semon
Yes, this has been measured with an oscilloscope.
The current important thing is to analyze why RESET has not been pulled down.
whether the evaluation board can reproduce it is not important.
Hello Kevin
this case has a patch, can it be used to reset DDR controller
----------------------------------
Thanks
Semon
Hi Zhang,
How is the DDR_RET pin connected on the board? Can you also probe this signal to see if it is being driven high?
Can you provide the portion of the schematic which illustrates the DDR_RESETn connections?
Regards,
Kevin
Hi Zhang,
In addition, do you see failures if you power cycle your board / system completely (as opposed to calling function Sciclient_pmDeviceReset(RESETM_TIMEOUT))?
Thanks,
Kevin
Hello Kevin
the patch in the refered e2e works in this case.
------------------------------------
+ *(volatile unsigned int*)(0x400A3C) = (*(volatile unsigned int*)(0x400A3C) & 0xFFFFFF00) | 0x1;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A38) = (*(volatile unsigned int*)(0x400A38) & 0xFFFFFF00) | 0x1;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A3C) = (*(volatile unsigned int*)(0x400A3C) & 0xFFFFFF00) | 0x3;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A38) = (*(volatile unsigned int*)(0x400A38) & 0xFFFFFF00) | 0x3;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
--------------------------------------------------------------------------------
for DRA821 has the same issue but much harder to re-produce it.
want to know whether this patch can also be applied to DRA821?
if need to change the address when applied to DRA821?
Thanks
Semon
Hi Semon,
I previously sent this via email but since this ticket was still open also adding here. Is this issue now resolved?
want to know whether this patch can also be applied to DRA821?
Yes, addressing of PSC0 registers should be the same according to latest TRMs. Base address of both devices is 0x40 0000, and the LPSC index of LPSC_EMIF_DATA and LPSC_EMIF_CFG should be the same between TDA4VM and DRA821 as well (14/15 respectively).
Regards,
Kevin
Hi Zhang,
(14/15 respectively) what does that mean?
Those are the LPSC index values of LPSC_EMIF_DATA and LPSC_EMIF_CFG (see table 5-1345 in section 5.2.2.3.1.3.2 PSC0 Device-Specific Information of the DRA821 TRM, revision B Oct 2023).
If you look at table 5-1519 PSC0 Registers, there are a group of registers whose address are determined by a formula. For instance, the module control register address is 0x0040 0A00 + formula, where the formula is 4 * LPSC index.
Thus for LPSC_EMIF_DATA, the register address is 0x0040 0A00 + (4 * 14) = 0x0040 0A38 (which is used in the code snippet in this thread)
Regards,
Kevin
I previously sent this via email but since this ticket was still open also adding here. Is this issue now resolved?
Hi Kevin
this patch works for DRA821 and TDA4VM, the issue is fixed,
but whether there has some root cause analysis for this issue, seems this issue occurs on many projects
Thanks
Semon
+ *(volatile unsigned int*)(0x400A3C) = (*(volatile unsigned int*)(0x400A3C) & 0xFFFFFF00) | 0x1;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A38) = (*(volatile unsigned int*)(0x400A38) & 0xFFFFFF00) | 0x1;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A3C) = (*(volatile unsigned int*)(0x400A3C) & 0xFFFFFF00) | 0x3;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
+
+ *(volatile unsigned int*)(0x400A38) = (*(volatile unsigned int*)(0x400A38) & 0xFFFFFF00) | 0x3;
+ *(volatile unsigned int*)(0x400120) = 0x1;
+
+ while(*(volatile unsigned int*)(0x400128) != 0);
Hello Kevin
according the test result in customer hardware platform, sometimes the above patch can cause the watchdog timeout, for there has "while loop" in the patch,
is it possible to improve this patch for the watchdog issue?
Thanks
Semon
Hello Zhengyang
I test the executing time for this patch, see the test capture
it's about 5 us, seems not be able to cause watchdog timeout
Regards
Semon
hello Kevin
in customer factory, there has 110 boards, one board has this issue, warm reset can't boot up, and hung in DDR
update the status of this case:
the DDR RESET_n signal can pull down then pull up after warm reset, it is caused by the hardware design, there is a capacitor connected to this pin,
after remove this capasitor, RESET_n can capture the correct signal when warm reset the board,
but the DDR INITIALIZATION failed occasionally yet.
please give suggestion how to debug it
Thanks
Semon
In the offline hardware testing of the factory, there is a problem of TDA4 DDR initialization failure,
especially in the case of repeated warm resets on a single ECU with a higher probability.
by debug, the software enters a while loop at Board_DDRInit function.
We used hynix's DDR H54G56BYYPX046(4G)
Please analyze the reasons based on the following two cases and determine if it is necessary to modify board_ddrRegInit.h? See attachment.
case1:
Board_DDRChangeFreqAck
while(regVal == 0x0)
{
regVal = HW_RD_REG32(BOARD_DDR_FSP_CLKCHNG_REQ_ADDR) & 0x80;
BOARD_DEBUG_LOG("Reg Value: %d \n", regVal);
}
case2:
LPDDR4_PollPhyIndepIrq
LPDDR4_CheckPhyIndepInterrupt
/* Loop until irqStatus found to be 1 or if value of 'result' !=CDN_EOK */
do {
if (++timeout == delay) {
result = CDN_EIO;
break;
}
CPS_DelayNs(10000000U);
result = LPDDR4_CheckPhyIndepInterrupt(pD, irqBit, &irqStatus);
} while ((irqStatus == false) && (result == (uint32_t)CDN_EOK));
upload the hardware design doc and DDR configuration file for this VDC project
upload the CCS DDR init log for this issue when DDR can't boot up
[MCU_Cortex_R5_0] Training Results; Frequency 0; CS 0 PHY Vref Training: DQ Lane 0 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 1 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 2 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 3 Vref Mode: 0x7 Vref Sel: 0x2b ACC Vref Control: 0x7ab CA Training: LP4 CA Programmed Delays: CA Bit 0 delay: 445 CA Bit 1 delay: 414 CA Bit 2 delay: 45b CA Bit 3 delay: 425 CA Bit 4 delay: 454 CA Bit 5 delay: 439 Write Leveling: DQ Lane 0 WRDQS: 0x164 DQ Lane 1 WRDQS: 0x194 DQ Lane 2 WRDQS: 0x80 DQ Lane 3 WRDQS: 0xb4 DQ Lane 0 Write Path Latency Add: 0x0 DQ Lane 1 Write Path Latency Add: 0x0 DQ Lane 2 Write Path Latency Add: 0x0 DQ Lane 3 Write Path Latency Add: 0x0 Gate Training: DQS Gate Lane 0 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 1 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 2 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 3 : slave_delay: 450 lat_adj: 5 Read Leveling: read_delay_fall, dq0 : 160 read_delay_rise, dq0 : 160 read_delay_fall, dq1 : 160 read_delay_rise, dq1 : 160 read_delay_fall, dq2 : 160 read_delay_rise, dq2 : 160 read_delay_fall, dq3 : 160 read_delay_rise, dq3 : 160 read_delay_fall, dq4 : 160 read_delay_rise, dq4 : 160 read_delay_fall, dq5 : 160 read_delay_rise, dq5 : 160 read_delay_fall, dq6 : 160 read_delay_rise, dq6 : 160 read_delay_fall, dq7 : 160 read_delay_rise, dq7 : 160 read_delay_fall, dq8 : 160 read_delay_rise, dq8 : 160 read_delay_fall, dq9 : 160 read_delay_rise, dq9 : 160 read_delay_fall, dq10 : 160 read_delay_rise, dq10 : 160 read_delay_fall, dq11 : 160 read_delay_rise, dq11 : 160 read_delay_fall, dq12 : 160 read_delay_rise, dq12 : 160 read_delay_fall, dq13 : 160 read_delay_rise, dq13 : 160 read_delay_fall, dq14 : 160 read_delay_rise, dq14 : 160 read_delay_fall, dq15 : 160 read_delay_rise, dq15 : 160 read_delay_fall, dq16 : 160 read_delay_rise, dq16 : 160 read_delay_fall, dq17 : 160 read_delay_rise, dq17 : 160 read_delay_fall, dq18 : 160 read_delay_rise, dq18 : 160 read_delay_fall, dq19 : 160 read_delay_rise, dq19 : 160 read_delay_fall, dq20 : 160 read_delay_rise, dq20 : 160 read_delay_fall, dq21 : 160 read_delay_rise, dq21 : 160 read_delay_fall, dq22 : 160 read_delay_rise, dq22 : 160 read_delay_fall, dq23 : 160 read_delay_rise, dq23 : 160 read_delay_fall, dq24 : 160 read_delay_rise, dq24 : 160 read_delay_fall, dq25 : 160 read_delay_rise, dq25 : 160 read_delay_fall, dq26 : 160 read_delay_rise, dq26 : 160 read_delay_fall, dq27 : 160 read_delay_rise, dq27 : 160 read_delay_fall, dq28 : 160 read_delay_rise, dq28 : 160 read_delay_fall, dq29 : 160 read_delay_rise, dq29 : 160 read_delay_fall, dq30 : 160 read_delay_rise, dq30 : 160 read_delay_fall, dq31 : 160 read_delay_rise, dq31 : 160 Write DQ Training: write_delay, dq0 : 640 write_delay, dq1 : 640 write_delay, dq2 : 640 write_delay, dq3 : 640 write_delay, dq4 : 640 write_delay, dq5 : 640 write_delay, dq6 : 640 write_delay, dq7 : 640 write_delay, dq8 : 640 write_delay, dq9 : 640 write_delay, dq10 : 640 write_delay, dq11 : 640 write_delay, dq12 : 640 write_delay, dq13 : 640 write_delay, dq14 : 640 write_delay, dq15 : 640 write_delay, dq16 : 640 write_delay, dq17 : 640 write_delay, dq18 : 640 write_delay, dq19 : 640 write_delay, dq20 : 640 write_delay, dq21 : 640 write_delay, dq22 : 640 write_delay, dq23 : 640 write_delay, dq24 : 640 write_delay, dq25 : 640 write_delay, dq26 : 640 write_delay, dq27 : 640 write_delay, dq28 : 640 write_delay, dq29 : 640 write_delay, dq30 : 640 write_delay, dq31 : 640 Calibration Registers: CAL_OBS_0: 0x008126d5 CAL_OBS_2: 0x00812793 CAL_OBS_3: 0xb3000000 CAL_OBS_4: 0x00126d54 CAL_OBS_5: 0x00127938 CAL_OBS_6: 0x00f26d5f CAL_OBS_7: 0x03f2793f CS Programmed Delays: phy_grp0_slave_delay_0: 0x0340 phy_grp1_slave_delay_0: 0x0340 phy_grp2_slave_delay_0: 0x0339 phy_grp3_slave_delay_0: 0x033e phy_grp0_slave_delay_1: 0x0334 phy_grp1_slave_delay_1: 0x0340 phy_grp2_slave_delay_1: 0x0339 phy_grp3_slave_delay_1: 0x0334 phy_top_train_calib_error_info: 0x00000001 Training Results; Frequency 0; CS 1 PHY Vref Training: DQ Lane 0 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 1 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 2 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 3 Vref Mode: 0x7 Vref Sel: 0x2b ACC Vref Control: 0x7ab CA Training: LP4 CA Programmed Delays: CA Bit 0 delay: 445 CA Bit 1 delay: 414 CA Bit 2 delay: 45b CA Bit 3 delay: 425 CA Bit 4 delay: 454 CA Bit 5 delay: 439 Write Leveling: DQ Lane 0 WRDQS: 0x0 DQ Lane 1 WRDQS: 0x0 DQ Lane 2 WRDQS: 0x0 DQ Lane 3 WRDQS: 0x0 DQ Lane 0 Write Path Latency Add: 0x0 DQ Lane 1 Write Path Latency Add: 0x0 DQ Lane 2 Write Path Latency Add: 0x0 DQ Lane 3 Write Path Latency Add: 0x0 Gate Training: DQS Gate Lane 0 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 1 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 2 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 3 : slave_delay: 450 lat_adj: 5 Read Leveling: read_delay_fall, dq0 : 160 read_delay_rise, dq0 : 160 read_delay_fall, dq1 : 160 read_delay_rise, dq1 : 160 read_delay_fall, dq2 : 160 read_delay_rise, dq2 : 160 read_delay_fall, dq3 : 160 read_delay_rise, dq3 : 160 read_delay_fall, dq4 : 160 read_delay_rise, dq4 : 160 read_delay_fall, dq5 : 160 read_delay_rise, dq5 : 160 read_delay_fall, dq6 : 160 read_delay_rise, dq6 : 160 read_delay_fall, dq7 : 160 read_delay_rise, dq7 : 160 read_delay_fall, dq8 : 160 read_delay_rise, dq8 : 160 read_delay_fall, dq9 : 160 read_delay_rise, dq9 : 160 read_delay_fall, dq10 : 160 read_delay_rise, dq10 : 160 read_delay_fall, dq11 : 160 read_delay_rise, dq11 : 160 read_delay_fall, dq12 : 160 read_delay_rise, dq12 : 160 read_delay_fall, dq13 : 160 read_delay_rise, dq13 : 160 read_delay_fall, dq14 : 160 read_delay_rise, dq14 : 160 read_delay_fall, dq15 : 160 read_delay_rise, dq15 : 160 read_delay_fall, dq16 : 160 read_delay_rise, dq16 : 160 read_delay_fall, dq17 : 160 read_delay_rise, dq17 : 160 read_delay_fall, dq18 : 160 read_delay_rise, dq18 : 160 read_delay_fall, dq19 : 160 read_delay_rise, dq19 : 160 read_delay_fall, dq20 : 160 read_delay_rise, dq20 : 160 read_delay_fall, dq21 : 160 read_delay_rise, dq21 : 160 read_delay_fall, dq22 : 160 read_delay_rise, dq22 : 160 read_delay_fall, dq23 : 160 read_delay_rise, dq23 : 160 read_delay_fall, dq24 : 160 read_delay_rise, dq24 : 160 read_delay_fall, dq25 : 160 read_delay_rise, dq25 : 160 read_delay_fall, dq26 : 160 read_delay_rise, dq26 : 160 read_delay_fall, dq27 : 160 read_delay_rise, dq27 : 160 read_delay_fall, dq28 : 160 read_delay_rise, dq28 : 160 read_delay_fall, dq29 : 160 read_delay_rise, dq29 : 160 read_delay_fall, dq30 : 160 read_delay_rise, dq30 : 160 read_delay_fall, dq31 : 160 read_delay_rise, dq31 : 160 Write DQ Training: write_delay, dq0 : 640 write_delay, dq1 : 640 write_delay, dq2 : 640 write_delay, dq3 : 640 write_delay, dq4 : 640 write_delay, dq5 : 640 write_delay, dq6 : 640 write_delay, dq7 : 640 write_delay, dq8 : 640 write_delay, dq9 : 640 write_delay, dq10 : 640 write_delay, dq11 : 640 write_delay, dq12 : 640 write_delay, dq13 : 640 write_delay, dq14 : 640 write_delay, dq15 : 640 write_delay, dq16 : 640 write_delay, dq17 : 640 write_delay, dq18 : 640 write_delay, dq19 : 640 write_delay, dq20 : 640 write_delay, dq21 : 640 write_delay, dq22 : 640 write_delay, dq23 : 640 write_delay, dq24 : 640 write_delay, dq25 : 640 write_delay, dq26 : 640 write_delay, dq27 : 640 write_delay, dq28 : 640 write_delay, dq29 : 640 write_delay, dq30 : 640 write_delay, dq31 : 640 Calibration Registers: CAL_OBS_0: 0x008126d5 CAL_OBS_2: 0x00812793 CAL_OBS_3: 0xb3000000 CAL_OBS_4: 0x00126d54 CAL_OBS_5: 0x00127938 CAL_OBS_6: 0x00f26d5f CAL_OBS_7: 0x03f2793f CS Programmed Delays: phy_grp0_slave_delay_0: 0x0340 phy_grp1_slave_delay_0: 0x0340 phy_grp2_slave_delay_0: 0x0339 phy_grp3_slave_delay_0: 0x033e phy_grp0_slave_delay_1: 0x0334 phy_grp1_slave_delay_1: 0x0340 phy_grp2_slave_delay_1: 0x0339 phy_grp3_slave_delay_1: 0x0334 phy_top_train_calib_error_info: 0x00000001 Training Results; Frequency 1; CS 0 PHY Vref Training: DQ Lane 0 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 1 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 2 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 3 Vref Mode: 0x7 Vref Sel: 0x2b ACC Vref Control: 0x7ab CA Training: LP4 CA Programmed Delays: CA Bit 0 delay: 300 CA Bit 1 delay: 300 CA Bit 2 delay: 300 CA Bit 3 delay: 300 CA Bit 4 delay: 300 CA Bit 5 delay: 300 Write Leveling: DQ Lane 0 WRDQS: 0x0 DQ Lane 1 WRDQS: 0x0 DQ Lane 2 WRDQS: 0x0 DQ Lane 3 WRDQS: 0x0 DQ Lane 0 Write Path Latency Add: 0x0 DQ Lane 1 Write Path Latency Add: 0x0 DQ Lane 2 Write Path Latency Add: 0x0 DQ Lane 3 Write Path Latency Add: 0x0 Gate Training: DQS Gate Lane 0 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 1 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 2 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 3 : slave_delay: 450 lat_adj: 5 Read Leveling: read_delay_fall, dq0 : 160 read_delay_rise, dq0 : 160 read_delay_fall, dq1 : 160 read_delay_rise, dq1 : 160 read_delay_fall, dq2 : 160 read_delay_rise, dq2 : 160 read_delay_fall, dq3 : 160 read_delay_rise, dq3 : 160 read_delay_fall, dq4 : 160 read_delay_rise, dq4 : 160 read_delay_fall, dq5 : 160 read_delay_rise, dq5 : 160 read_delay_fall, dq6 : 160 read_delay_rise, dq6 : 160 read_delay_fall, dq7 : 160 read_delay_rise, dq7 : 160 read_delay_fall, dq8 : 160 read_delay_rise, dq8 : 160 read_delay_fall, dq9 : 160 read_delay_rise, dq9 : 160 read_delay_fall, dq10 : 160 read_delay_rise, dq10 : 160 read_delay_fall, dq11 : 160 read_delay_rise, dq11 : 160 read_delay_fall, dq12 : 160 read_delay_rise, dq12 : 160 read_delay_fall, dq13 : 160 read_delay_rise, dq13 : 160 read_delay_fall, dq14 : 160 read_delay_rise, dq14 : 160 read_delay_fall, dq15 : 160 read_delay_rise, dq15 : 160 read_delay_fall, dq16 : 160 read_delay_rise, dq16 : 160 read_delay_fall, dq17 : 160 read_delay_rise, dq17 : 160 read_delay_fall, dq18 : 160 read_delay_rise, dq18 : 160 read_delay_fall, dq19 : 160 read_delay_rise, dq19 : 160 read_delay_fall, dq20 : 160 read_delay_rise, dq20 : 160 read_delay_fall, dq21 : 160 read_delay_rise, dq21 : 160 read_delay_fall, dq22 : 160 read_delay_rise, dq22 : 160 read_delay_fall, dq23 : 160 read_delay_rise, dq23 : 160 read_delay_fall, dq24 : 160 read_delay_rise, dq24 : 160 read_delay_fall, dq25 : 160 read_delay_rise, dq25 : 160 read_delay_fall, dq26 : 160 read_delay_rise, dq26 : 160 read_delay_fall, dq27 : 160 read_delay_rise, dq27 : 160 read_delay_fall, dq28 : 160 read_delay_rise, dq28 : 160 read_delay_fall, dq29 : 160 read_delay_rise, dq29 : 160 read_delay_fall, dq30 : 160 read_delay_rise, dq30 : 160 read_delay_fall, dq31 : 160 read_delay_rise, dq31 : 160 Write DQ Training: write_delay, dq0 : 640 write_delay, dq1 : 640 write_delay, dq2 : 640 write_delay, dq3 : 640 write_delay, dq4 : 640 write_delay, dq5 : 640 write_delay, dq6 : 640 write_delay, dq7 : 640 write_delay, dq8 : 640 write_delay, dq9 : 640 write_delay, dq10 : 640 write_delay, dq11 : 640 write_delay, dq12 : 640 write_delay, dq13 : 640 write_delay, dq14 : 640 write_delay, dq15 : 640 write_delay, dq16 : 640 write_delay, dq17 : 640 write_delay, dq18 : 640 write_delay, dq19 : 640 write_delay, dq20 : 640 write_delay, dq21 : 640 write_delay, dq22 : 640 write_delay, dq23 : 640 write_delay, dq24 : 640 write_delay, dq25 : 640 write_delay, dq26 : 640 write_delay, dq27 : 640 write_delay, dq28 : 640 write_delay, dq29 : 640 write_delay, dq30 : 640 write_delay, dq31 : 640 Calibration Registers: CAL_OBS_0: 0x008126d5 CAL_OBS_2: 0x00812793 CAL_OBS_3: 0xb3000000 CAL_OBS_4: 0x00126d54 CAL_OBS_5: 0x00127938 CAL_OBS_6: 0x00f26d5f CAL_OBS_7: 0x03f2793f CS Programmed Delays: phy_grp0_slave_delay_0: 0x0390 phy_grp1_slave_delay_0: 0x0390 phy_grp2_slave_delay_0: 0x0390 phy_grp3_slave_delay_0: 0x0390 phy_grp0_slave_delay_1: 0x0390 phy_grp1_slave_delay_1: 0x0390 phy_grp2_slave_delay_1: 0x0390 phy_grp3_slave_delay_1: 0x0390 phy_top_train_calib_error_info: 0x00000001 Training Results; Frequency 1; CS 1 PHY Vref Training: DQ Lane 0 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 1 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 2 Vref Mode: 0x7 Vref Sel: 0x2b DQ Lane 3 Vref Mode: 0x7 Vref Sel: 0x2b ACC Vref Control: 0x7ab CA Training: LP4 CA Programmed Delays: CA Bit 0 delay: 300 CA Bit 1 delay: 300 CA Bit 2 delay: 300 CA Bit 3 delay: 300 CA Bit 4 delay: 300 CA Bit 5 delay: 300 Write Leveling: DQ Lane 0 WRDQS: 0x0 DQ Lane 1 WRDQS: 0x0 DQ Lane 2 WRDQS: 0x0 DQ Lane 3 WRDQS: 0x0 DQ Lane 0 Write Path Latency Add: 0x0 DQ Lane 1 Write Path Latency Add: 0x0 DQ Lane 2 Write Path Latency Add: 0x0 DQ Lane 3 Write Path Latency Add: 0x0 Gate Training: DQS Gate Lane 0 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 1 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 2 : slave_delay: 450 lat_adj: 5 DQS Gate Lane 3 : slave_delay: 450 lat_adj: 5 Read Leveling: read_delay_fall, dq0 : 160 read_delay_rise, dq0 : 160 read_delay_fall, dq1 : 160 read_delay_rise, dq1 : 160 read_delay_fall, dq2 : 160 read_delay_rise, dq2 : 160 read_delay_fall, dq3 : 160 read_delay_rise, dq3 : 160 read_delay_fall, dq4 : 160 read_delay_rise, dq4 : 160 read_delay_fall, dq5 : 160 read_delay_rise, dq5 : 160 read_delay_fall, dq6 : 160 read_delay_rise, dq6 : 160 read_delay_fall, dq7 : 160 read_delay_rise, dq7 : 160 read_delay_fall, dq8 : 160 read_delay_rise, dq8 : 160 read_delay_fall, dq9 : 160 read_delay_rise, dq9 : 160 read_delay_fall, dq10 : 160 read_delay_rise, dq10 : 160 read_delay_fall, dq11 : 160 read_delay_rise, dq11 : 160 read_delay_fall, dq12 : 160 read_delay_rise, dq12 : 160 read_delay_fall, dq13 : 160 read_delay_rise, dq13 : 160 read_delay_fall, dq14 : 160 read_delay_rise, dq14 : 160 read_delay_fall, dq15 : 160 read_delay_rise, dq15 : 160 read_delay_fall, dq16 : 160 read_delay_rise, dq16 : 160 read_delay_fall, dq17 : 160 read_delay_rise, dq17 : 160 read_delay_fall, dq18 : 160 read_delay_rise, dq18 : 160 read_delay_fall, dq19 : 160 read_delay_rise, dq19 : 160 read_delay_fall, dq20 : 160 read_delay_rise, dq20 : 160 read_delay_fall, dq21 : 160 read_delay_rise, dq21 : 160 read_delay_fall, dq22 : 160 read_delay_rise, dq22 : 160 read_delay_fall, dq23 : 160 read_delay_rise, dq23 : 160 read_delay_fall, dq24 : 160 read_delay_rise, dq24 : 160 read_delay_fall, dq25 : 160 read_delay_rise, dq25 : 160 read_delay_fall, dq26 : 160 read_delay_rise, dq26 : 160 read_delay_fall, dq27 : 160 read_delay_rise, dq27 : 160 read_delay_fall, dq28 : 160 read_delay_rise, dq28 : 160 read_delay_fall, dq29 : 160 read_delay_rise, dq29 : 160 read_delay_fall, dq30 : 160 read_delay_rise, dq30 : 160 read_delay_fall, dq31 : 160 read_delay_rise, dq31 : 160 Write DQ Training: write_delay, dq0 : 640 write_delay, dq1 : 640 write_delay, dq2 : 640 write_delay, dq3 : 640 write_delay, dq4 : 640 write_delay, dq5 : 640 write_delay, dq6 : 640 write_delay, dq7 : 640 write_delay, dq8 : 640 write_delay, dq9 : 640 write_delay, dq10 : 640 write_delay, dq11 : 640 write_delay, dq12 : 640 write_delay, dq13 : 640 write_delay, dq14 : 640 write_delay, dq15 : 640 write_delay, dq16 : 640 write_delay, dq17 : 640 write_delay, dq18 : 640 write_delay, dq19 : 640 write_delay, dq20 : 640 write_delay, dq21 : 640 write_delay, dq22 : 640 write_delay, dq23 : 640 write_delay, dq24 : 640 write_delay, dq25 : 640 write_delay, dq26 : 640 write_delay, dq27 : 640 write_delay, dq28 : 640 write_delay, dq29 : 640 write_delay, dq30 : 640 write_delay, dq31 : 640 Calibration Registers: CAL_OBS_0: 0x008126d5 CAL_OBS_2: 0x00812793 CAL_OBS_3: 0xb3000000 CAL_OBS_4: 0x00126d54 CAL_OBS_5: 0x00127938 CAL_OBS_6: 0x00f26d5f CAL_OBS_7: 0x03f2793f CS Programmed Delays: phy_grp0_slave_delay_0: 0x0390 phy_grp1_slave_delay_0: 0x0390 phy_grp2_slave_delay_0: 0x0390 phy_grp3_slave_delay_0: 0x0390 phy_grp0_slave_delay_1: 0x0390 phy_grp1_slave_delay_1: 0x0390 phy_grp2_slave_delay_1: 0x0390 phy_grp3_slave_delay_1: 0x0390 phy_top_train_calib_error_info: 0x00000001 DRAM VREF Values: mr12_f1_cs0: 0x00000021 mr12_f1_cs1: 0x00000021 mr12_f1_cs2: 0x0000001f mr12_f1_cs3: 0x00000020 mr12_f2_cs0: 0x00000027 mr12_f2_cs1: 0x00000027 mr12_f2_cs2: 0x00000027 mr12_f2_cs3: 0x00000027 mr14_f1_cs0: 0x0000000f mr14_f1_cs1: 0x0000000f mr14_f1_cs2: 0x0000000f mr14_f1_cs3: 0x0000000f mr14_f2_cs0: 0x0000000f mr14_f2_cs1: 0x0000000f mr14_f2_cs2: 0x0000000f mr14_f2_cs3: 0x0000000f PHY IO Pad TERM Registers: PHY_1320: 0x000126d5 PHY_1321: 0x000126d5 PHY_1322: 0x000126d5 PHY_1323: 0x000126d5 PHY_1324: 0x000126d5 PHY_1325: 0x00012793 PHY_1326: 0x00012793 PHY_1327: 0x000126d5 PHY_1328: 0x000126d5 Enhanced Error Reporting: DQS Gate Error: 0 Training Error: 1 FSM Tran Error: 0 PLL Error: 0 Parity Error: 0 Timeout Error: 1 Timeout Error Info: dfi_rddata_valid Timeout: 0 Max PLL lock assertion Timeout: 1 Min PLL lock assertion Timeout: 0 DFI PHY master interface Timeout: 0 dfi_phyupd_req (PI - PHY) Timeout: 0 dfi_phyupd_req (CTL - PHY) Timeout: 0 dfi_lp_ack Timeout: 0 DFS change @ PI - PHY Timeout: 0 DFS change @ CTL -PHY Timeout: 1 CA / CS training Timeout: 0 WRLVL training Timeout: 1 RDGATE training Timeout: 0 RDDATA training Timeout: 0 WDQ training Timeout: 0 Training Error Info: 0x00007a00 Data Slice Error Info (bits [4:0]): Byte0: 0x00000108 Byte1: 0x00000108 Byte2: 0x00000108 Byte3: 0x00000108 PLL Frequency Error: 0x0