Hello,
We design own board with LS1088A Processor and DDR4 inhouse (Four chips MT40A512M16JY-083E:B 0 - no ECC).
I use LSDK 19.06 to make firmware.
My problem is with DDR controller that won't to train write_leveling with any settings clk_adj and wl_start),
I get error:
Found training error(s): 0x3102 or 0x2001 (What that means?)
ERROR: Writing DDR register(s) failed
ERROR: Programming DDRC error
ERROR: DDR init failed
And debug registers are:
VERBOSE: Reading debug[9] as 0x10101010
VERBOSE: Reading debug[10] as 0x10101010
VERBOSE: Reading debug[11] as 0x10101010
VERBOSE: Reading debug[12] as 0x10101010
Training errors is dump from debug[1] register.
Anybody can explain us what is description of debug registers 1, 9, 10,11 and 12?
Anybody have suggestions what maybe wrong in DDR controller configuration?
We have checked:
1. Check list to design according to suggestions of AMF-NET-T3267 document,
2. DDR clock,
3. Voltage,
4. Reset lines
Registers DDR controller dumps:
VERBOSE: Parse DIMM SPD(s)
VERBOSE: cal cs
VERBOSE: cs_in_use = 1
VERBOSE: cs_on_dimm[0] = 1
NOTICE: Fixed DDR on board
INFO: Time after parsing SPD 14 ms
VERBOSE: Synthesize configurations
VERBOSE: cs 0
VERBOSE: odt_rd_cfg 0x0
VERBOSE: odt_wr_cfg 0x4
VERBOSE: odt_rtt_norm 0x3
VERBOSE: odt_rtt_wr 0x4
VERBOSE: auto_precharge 1
VERBOSE: ctlr_init_ecc 0
VERBOSE: x4_en 0
VERBOSE: ap_en 0
VERBOSE: ctlr_intlv 0
VERBOSE: ctlr_intlv_mode 0
VERBOSE: ba_intlv 0x0
VERBOSE: data_bus_used 0
VERBOSE: otf_burst_chop_en 1
VERBOSE: burst_length 0x6
VERBOSE: dbw_cap_shift 0
VERBOSE: Assign binding addresses
VERBOSE: ctlr_intlv 0
VERBOSE: rank density 0x100000000
VERBOSE: CS 0
VERBOSE: base_addr 0x0
VERBOSE: size 0x100000000
VERBOSE: base 0x0
VERBOSE: Total mem by assignment is 0x100000000
VERBOSE: Calculate controller registers
VERBOSE: Skip CL mask for this speed 0x400
VERBOSE: Skip caslat 0x400
VERBOSE: cs_in_use = 0x1
VERBOSE: cs0
VERBOSE: _config = 0x80840412
VERBOSE: cs[0].bnds = 0xff
VERBOSE: sdram_cfg[0] = 0xc5000008
VERBOSE: sdram_cfg[1] = 0x401150
VERBOSE: sdram_cfg[2] = 0x0
VERBOSE: timing_cfg[0] = 0x91550018
VERBOSE: timing_cfg[1] = 0xbac48e54
VERBOSE: timing_cfg[2] = 0x490118
VERBOSE: timing_cfg[3] = 0x10c1000
VERBOSE: timing_cfg[4] = 0x220002
VERBOSE: timing_cfg[5] = 0x3401400
VERBOSE: timing_cfg[6] = 0x0
VERBOSE: timing_cfg[7] = 0x13300000
VERBOSE: timing_cfg[8] = 0x2336800
VERBOSE: timing_cfg[9] = 0x0
VERBOSE: dq_map[0] = 0x7053658
VERBOSE: dq_map[1] = 0xd10d0ed8
VERBOSE: dq_map[2] = 0x3b407700
VERBOSE: dq_map[3] = 0xed0000
VERBOSE: sdram_mode[0] = 0x3030211
VERBOSE: sdram_mode[1] = 0x8000000
VERBOSE: sdram_mode[9] = 0x4000000
VERBOSE: sdram_mode[8] = 0x500
VERBOSE: interval = 0x18600000
VERBOSE: zq_cntl = 0x8a090705
VERBOSE: ddr_sr_cntr = 0x0
VERBOSE: clk_cntl = 0x1c00000
VERBOSE: cdr[0] = 0x80040000
VERBOSE: cdr[1] = 0x8d81
VERBOSE: wrlvl_cntl[0] = 0x86750609
VERBOSE: wrlvl_cntl[1] = 0x9090909
VERBOSE: wrlvl_cntl[2] = 0x9090909
VERBOSE: debug[28] = 0x37
INFO: Time before programming controller 184 ms
VERBOSE: Program controller registers
INFO: ddrc version: 00050201
VERBOSE: sdram_cfg_2 0x00401150
VERBOSE: wrlvl_cntl[0] 0xc6750609
VERBOSE: total size 4 GB
VERBOSE: Need to wait up to 1320 ms
VERBOSE: Reading debug[9] as 0x10101010
VERBOSE: Reading debug[10] as 0x10101010
VERBOSE: Reading debug[11] as 0x10101010
VERBOSE: Reading debug[12] as 0x10101010
VERBOSE: cpo_min 0x10
VERBOSE: cpo_max 0x10
VERBOSE: debug[28] 0x700037
VERBOSE: Optimal cpo_sample 0x37
VERBOSE: Err_detect 0x80
ERROR: Found training error(s): 0x3102
ERROR: Writing DDR register(s) failed
ERROR: Programing DDRC error
ERROR: DDR init failed.
Thanks