Hi, we've been trying to bring-up DDR on our custom board based on LS1028A.
We do not use SPD, we have 5 discrete (4 + ECC) modules soldered on the board.
The memory we've been using is IS43QR85120B-083RBLI
Below are trace lenghts on our PCB for each module.
The RCW has been taken from LS1028A-RDB.
For some initial testing, we've added support in TF-A for our board with ddr_init returning -1 just to see if anything works - indeed it works, we are able to reach this step, we see logs printed out on the console.
Below some of the information about our PCB
DQS Length CK [mm] Length DQS [mm] Difference (CK - DQS) [mm] Rounded Difference [mm]
| DQS0 | 62.50715 | 44.20325 | 18.30390 | 18 |
| DQS1 | 76.64270 | 33.37230 | 43.27040 | 43 |
| DQS2 | 91.49900 | 30.91965 | 60.57935 | 60 |
| DQS3 | 105.84010 | 30.60260 | 75.23750 | 75 |
| DQS8 | 120.28730 | 36.08540 | 84.20190 | 84 |
DDR Wizzard configuration settings:
- autoconfigruration
- discrete DRAM
- Type: DDR 4
- Rank/Chip select: 1
- tCL: 11 clocks
- ECC (disabled for the purpose of 1st step of DDR validation)
- DRAM configuration 4Gb: 512Mb x8
- DRAM speed rating: 1600 MT/s
- CLKS to DQS (values are negative as our DQS lines are shorter that CLK)
- 18, -43, -60, -75 (ECC skipped for now)
Once the Wizzard has been finished, I manually changed DQ mapping to match the signal routes on our board.
The problem is that literally none of the validation steps pass.
I would be grateful if anyone could give me some hint, where we should look for source of our problems.