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.
Tool/software: Linux
DDR3 Part: H5TQ4G63EFR-RDC (256M x 16)
Trace Lengths (inches):
DDR_CK trace - Byte 0 : 0.635335 Byte 1 : 0.635335
DDR_DQSx trace - Byte 0 : 1.100645 Byte 1 : 1.09342
Received Seed values from RatioSeed excel sheet:
RD_DQS : 40
FIFO_WE : F4
WR_DQS : 77
With above mentioned seed values, DDR3 software leveling is not working, we are getting all the optimum values as 0x0.
But if we use below mentioned different seed values then we are getting the optimum values.
Seed values: RD_DQS - 0x20, FIFO_WE - 0xE0, WR_DQS - 0xAF
Can anyone please help why the seed values calculated from RatioSeed excel sheet are not working?
CortxA8: Output: **** AM3358_SK Initialization is in progress .......... CortxA8: Output: **** AM335x ALL PLL Config for OPP == OPP100 is in progress ......... CortxA8: Output: Input Clock Read from SYSBOOT[15:14]: 25MHz CortxA8: Output: **** Going to Bypass... CortxA8: Output: **** Bypassed, changing values... CortxA8: Output: **** Locking ARM PLL CortxA8: Output: **** Core Bypassed CortxA8: Output: **** Now locking Core... CortxA8: Output: **** Core locked CortxA8: Output: **** DDR DPLL Bypassed CortxA8: Output: **** DDR DPLL Locked CortxA8: Output: **** Setting DDR PLL to 400MHz ......... CortxA8: Output: **** PER DPLL Bypassed CortxA8: Output: **** PER DPLL Locked CortxA8: Output: **** DISP PLL Config is in progress .......... CortxA8: Output: **** DISP PLL Config is DONE .......... CortxA8: Output: **** AM335x ALL ADPLL Config for OPP == OPP100, 25MHz input is Done ......... CortxA8: Output: **** AM335x DDR3 EMIF and PHY configuration is in progress... CortxA8: Output: EMIF PRCM is in progress ....... CortxA8: Output: EMIF PRCM Done CortxA8: Output: DDR PHY Configuration in progress CortxA8: Output: Waiting for VTP Ready ....... CortxA8: Output: VTP is Ready! CortxA8: Output: DDR PHY CMD0 Register configuration is in progress ....... CortxA8: Output: DDR PHY CMD1 Register configuration is in progress ....... CortxA8: Output: DDR PHY CMD2 Register configuration is in progress ....... CortxA8: Output: DDR PHY DATA0 Register configuration is in progress ....... CortxA8: Output: DDR PHY DATA1 Register configuration is in progress ....... CortxA8: Output: Setting IO control registers....... CortxA8: Output: EMIF Timing register configuration is in progress ....... CortxA8: Output: PHY is READY!! CortxA8: Output: DDR PHY Configuration done CortxA8: Output: EMIF Timing register configuration is done ....... CortxA8: Output: CMD_PHY_CTRL_SLAVE_RATIO: 0x00000100 CortxA8: Output: CMD_PHY_INVERT_CLKOUT: 0x00000001 CortxA8: Output: DDR_IOCTRL_VALUE: 0x0000018B CortxA8: Output: ALLOPP_DDR3_READ_LATENCY: 0x00000007 CortxA8: Output: ALLOPP_DDR3_SDRAM_TIMING1: 0x0AAAD4EB CortxA8: Output: ALLOPP_DDR3_SDRAM_TIMING2: 0x26657FDA CortxA8: Output: ALLOPP_DDR3_SDRAM_TIMING3: 0x501F861F CortxA8: Output: ALLOPP_DDR3_REF_CTRL: 0x00000C30 CortxA8: Output: ALLOPP_DDR3_ZQ_CONFIG: 0x50074BE4 CortxA8: Output: ALLOPP_DDR3_SDRAM_CONFIG: 0x61C05332 CortxA8: Output: **** AM3358_SK Initialization is Done ******************
[CortxA8] Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet 1 Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window 40 Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window f4 Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window 77 *************************************************************** The Slave Ratio Search Program Values are... *************************************************************** PARAMETER MAX | MIN | OPTIMUM | RANGE *************************************************************** DATA_PHY_RD_DQS_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_FIFO_WE_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_WR_DQS_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_WR_DATA_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 *************************************************************** rd_dqs_range = 0 fifo_we_range = 0 wr_dqs_range = 0 wr_data_range = 0 Optimal values have been found!! *************************************************************** The Slave Ratio Search Program Values are... *************************************************************** PARAMETER MAX | MIN | OPTIMUM | RANGE *************************************************************** DATA_PHY_RD_DQS_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_FIFO_WE_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_WR_DQS_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 DATA_PHY_WR_DATA_SLAVE_RATIO 0x000 | 0x000 | 0x000 | 0x000 *************************************************************** ===== END OF TEST =====
Hi,
Hi,
We have tried simply putting seed value derived from excel sheet. DDR is not working if we put directly seed value derived from excel sheet.
Hi,
Please, find stack up files in attachment.Argo stack up file.xls3515.ARGO DDR Routing Analysis.xls
Hi JJD,
We have set INVERT_CLKOUT=1 in spread sheet and derived seed value from excel sheet. I am attaching over here for your reference.
We have already shared the CCS log in this thread for your reference. From that you can find out what value set in DDR controller register and what value entered while running software leveling utility.
I am sharing DDR controller register calculation excel sheet for your reference. We have used H5TQ4G63EFR-RDC (256M x 16) DDR.RatioSeed_AM335x_boards_400.xls
Hi JJD,
We have put Ratio Seed value directly in U-Boot and checked it is not working. I guess putting Seed value directly U-boot or in GEL file both are same.
READ_LATENCY = (CL+2) - 1 = (6+2) - 1
We have derived READ_LATENCY from datasheet and it should be 7. But if we increase read latency value by 1 (READ_LATENCY=8) then software leveling start working.
Now, if we increase Read latency then how much percentage DDR throughput will get affected?
Hi,
Dear james,
thanks for your valuable reply. below i float one query regarding byte routing.
1.If i route D0 to D7 in Layer 1 and Layer 3 with same referance plane layer 2(Ground) its accepaable or not?
Regards,
Himanshu Bhoi
CAD Enginner
Matrix comsec
Hi,
As per technical reference manual Read Latency to be configured in register is (CL + 2) - 1. And for our case we are running DDR3 at 400MHz so it will be (6+2)-1=7.
But in below link, it is mentioned that if "PHY_INVERT_CLK_OUT"=1 then reg_read_latency should be ( (CL + 2) -1) + 1) = ((6 + 2) - 1) + 1) = 8 and if "PHY_INVERT_CLK_OUT"=0 then reg_read_latency should be (CL + 2) -1 = (6 + 2) - 1) = 7.
http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips#DDR_PHY_Registers_for_DDR3
But in technical reference manual there is no any information which says that "PHY_INVERT_CLK_OUT" will have impact on reg_read_latency. Please, confirm above as in one of our board DDR3 software leveling is not happening with reg_read_latency= 7 and it is happening with reg_read_latency=8. We have DQS signal trace length is higher compared to clk signal.