Part Number: AM3358-EP
Hi,
I'm trying to tune my custom board using the TI tool - it always gives zeros, and if I try using zeros to configure the register, I can't access RAM. What might cause this?
Currently I'm just using the EMIF/DDR config from the ICEv2.1A GEL file, which surprisingly works on my custom board - I can run code in the DDR.
I've tried the tool http://processors.wiki.ti.com/index.php/AM335x_DDR_PHY_register_configuration_for_DDR3_using_Software_Leveling on the ICE board to make sure I'm using it correctly - it works fine.
On my target hardware, I get this:
[CortxA8]
Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet
0
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
95
Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window
5
***************************************************************
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
***************************************************************
My seed spreadsheet is:
| Parameters | Comments | |||
| DDR clock frequency | 400 | MHz | input maximum frequency you will use | |
| PHY_INVERT_CLKOUT | 0 | If (DDR_CK length) < (DDR_DQS length), then use 1. If (DDR_CK length) > (DDR_DQS length), then use 0. | ||
| Trace Length (inches) | ||||
| Byte 0 | Byte 1 | |||
| DDR_CK trace | 1.451502 | 2.004549 | input the average of DDR_CK and DDR_CKn traces. If you have two x8 memories, use the trace lengths for each corresponding byte. | |
| DDR_DQSx trace | 1.452371 | 1.45437 | x can be 0 or 1, corresponding to each byte. | |
| Intermediate values (per byte lane) | ||||
| WR DQS | 0 | A | these are just used for the calculations below | |
| RD DQS | 40 | 40 | these are just used for the calculations below | |
| RD DQS GATE | 90 | 9A | these are just used for the calculations below | |
| Seed values used in CCS code | ||||
| DATAx_PHY_RD DQS_SLAVE_RATIO | 40 | |||
| DATAx_PHY_FIFO_WE_SLAVE_RATIO | 95 | |||
| DATAx_PHY_WR DQS_SLAVE_RATIO | 5 | |||
| Register value | ||||
| CMDx_PHY_CTRL_SLAVE_RATIO | 80 |
Thanks.
