一、DDR设计之硬件设计
1.DDR硬件设计是T型结构还是非T型结构,直接关系到DDR能够跑的最高速率
2.DDR核电1.5v/1.8v/2.0v选择很重要,关系到DDR速率是否能够跑高
二、MIG复位
1.mig核的init_cmpl概率性性起不来,需要在逻辑中设计一个复位,上电后对mig进行复位
三、MIG仲裁
1.读优先/写优先/round-robin选择
2.自己设计的代码要选择读优先/写优先,不要试用rond-robin,自己设计容易出坑
3.如果使用官方的demo,一般使用round-robin
4.很多人由于自己设计的读写ddr模块存在缺陷,使用round-robin容易让读写乱套,造成读FIFO溢出或者写FIFO溢出,使用读优先或者写优先比较合适
四、多路总线访问DDR
1.使用axi interconnect的时候,多路访问,要使用512 packet fifo深度
2.尽量不要axi interconnect做多个时钟域的转换,时钟域转换可以在interconnect前面使用clock_convert模块较好,之前
interconnect使用很多个时钟,有出现过概率性packet_fifo溢出的问题
五、AXI-MM访问4K边界
1.PL的DDR没有4K边界这个限制,PS的DDR有这个限制,这个是由于操作系统page分页的历史原因
六、burst访问
1.burst访问和outstanding访问联合可以提高效率,但是outstanding尽量少用,因为会长时间独占通道,造成其他通道饿死
七、ddr乱序访问
1.DDR乱序访问效率很低,如果需要乱序访问,建议使用SDRAM
八、DDR概率性误码
1.DDR硬件设计之过孔问题,造成DDR压测出现误码