Hello,
We have a custom board based on MCIMX93-EVK with 2GB LPDDR4x (Alliance Memory AS4C128M16MD4V-062BAN).
u-boot lf-6.6.23-2.0.0
We are facing SDRAM training failures at temperatures below 0°C:
U-Boot SPL 2024.04-g11f8b60b-dirty (Jan 08 2025 - 13:37:19 +0200)
SOC: 0xa1009300
LC: 0x2040010
PMIC: PCA9451A
PMIC: Over Drive Voltage Mode
enabling tvpe load switch
DDR: 3200MTS
DDRINFO: start DRAM init
DDRINFO: cfg clk
DDRINFO:ddrphy config start
DRAM PHY training for 3200MTS
[PMU Major message = 0x00000008]
PMU String index = 0x00a90000
[PMU Major message = 0x00000008]
PMU String index = 0x04020000
[PMU Major message = 0x000000ff]
Training FAILED
DRAM PHY training for 1600MTS
[PMU Major message = 0x0000000d]
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000002]
[PMU Major message = 0x00000001]
[PMU Major message = 0x000000fd]
[PMU Major message = 0x000000fe]
[PMU Major message = 0x00000004]
[PMU Major message = 0x00000003]
[PMU Major message = 0x00000009]
[PMU Major message = 0x00000007]
Training PASS
DRAM PHY training for 625MTS
[PMU Major message = 0x0000000d]
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000002]
[PMU Major message = 0x00000001]
[PMU Major message = 0x000000fd]
[PMU Major message = 0x000000fe]
[PMU Major message = 0x00000004]
[PMU Major message = 0x00000003]
[PMU Major message = 0x00000009]
[PMU Major message = 0x00000007]
Training PASS
DRAM PHY training for 3200MTS
[PMU Major message = 0x00000000]
[PMU Major message = 0x00000008]
PMU String index = 0x00530000
[PMU Major message = 0x00000008]
PMU String index = 0x04020000
[PMU Major message = 0x000000ff]
Training FAILED
However, using Config Tools for i.MX v16.1 training never fails even at -40°C (see attached files).
We would like to know what is the difference between training in u-boot lf-6.6.23-2.0.0 and Config Tools for i.MX v16.1. What can be an issue?
Don't think this is the case. We use same lpddr4x_timing.c in uboot and config tool. So the result must be the same.
Hello,
For that I understood, your board is able to pass the stress test in Config Tools but is not able to pass the training when booting.
These two cases are different situations that could affect the final result, as @monica46cole mentioned, temperature could affect the signal integrity causing this behavior.
You could try to change the tunning with different settings and check if helps with your design:
ODTImpedance
Desired ODT impedance in Ohm. Valid values for DDR4=240,120,80,60,40. Valid values for DDR3L=high-impedance,120,60,40. Valid values for LPDDR4=240,120,80,60,40
TxImpedance
Write Driver Impedance for DQ/DQS in ohm (Valid values for all DDR type= 240, 120, 80, 60, 48, 40, 34)
ATxImpedance
Write Driver Impedance for Address/Command (AC) bus in ohm (Valid values for all DDR type = 120, 60, 40, 30, 24, 20)
Best regards.
Hey,
After sniffing PMIC I2C bus we managed to find out what was wrong.
Config tool and uboot were using different PMIC settings.
Long story short time.c was generated with lower VDDQ while uboot was running with higher VDDQ.
Anyways now system is running well in range of -40 ... +60
Thank you, case closed
Temperature Sensitivity: Low temperatures affect signal integrity, causing training failures in U-Boot but not in Config Tools.
Configuration Differences: U-Boot might not be as finely tuned as Config Tools for extreme conditions.
Recommendations: Compare configurations, check signal integrity, consult documentation.
Tell Culvers com