The delay in Zynq-7000 PS DDR3 from releasing DDR_RST to asserting DDR_CKE via the reg_ddrc_pre_cke_x1024 register is too short in Vivado/EDK versions up to Vivado 2015.2, violating JEDEC specifications.
This can result in misbehavior in the DRAM device.
How do I resolve this issue?
In the Zynq-7000 PS DDR3 controller, the CKE assertion time in the reg_ddrc_pre_cke_x1024 register is counted from the assertion of reset, not the deassertion of reset, so an additional 200us must be added to the register value.
To work around this issue, edit the DRAM_BURST8_RDWR.reg_ddrc_pre_cke_x1024(0XF8006034[13:4]) register in the ps7_init.c and ps7_init.tcl files.
The resulting decimal value of reg_ddrc_pre_cke_x1024 multiplied by 1024 and the DDR clock period should equal 700us (200us reset time + 500us CKE delay after reset deassertion).
DDR2 and LPDDR2 are unaffected.
This issue is fixed starting with Vivado 2015.3.
EDK XPS will not be updated, the work-around must be used.