AR# 54710

MIG 7 系列- DDR3 –控制器在 read-modify-write 操作中挂起。

描述

发现问题的版本 MIG 7 系列 1.8
解决问题的版本: 敬请参见 (Xilinx 答复 45195)

用户设计顶层有一个已知的问题,即在 ECC 逻辑启用时,发出的 read-modify-write 操作指令会让控制器冻结。这个问题的故障特征是能正确执行初始读取操作,但随后的写入操作却无法进行。相反,控制器通过对 app_rd_data_valid 进行断言,意外地在 UI 接口上返回读取数据。此后不久,控制器挂起,会观察到 app_rdy signal 永久无效。

解决方案

其原因在于两个 ECC 参数(MC_ERR_ADDR_WIDTH 和 ECC_WIDTH)在用户设计顶层中定义不正确。这两个参数在顶层用户设计中为静态设置,而对某些配置而言设置不正确,这就会导致上述行为。这两个参数应为动态设置,类似于以下做法:example_design.v/.vhd.要解决这个问题,请用以下方程替换顶层用户设计中的 MC_ERR_ADDR_WIDTH 和 ECC_WIDTH 参数定义:

localparam C0_MC_ERR_ADDR_WIDTH = ((C0_CS_WIDTH == 1) ?0 : C0_RANK_WIDTH)
                                 + C0_BANK_WIDTH + C0_ROW_WIDTH + C0_COL_WIDTH
                                 + C0_DATA_BUF_OFFSET_WIDTH;

localparam C0_ECC_WIDTH = (C0_ECC == "OFF")?
                           0 : (C0_DATA_WIDTH <= 4)?
                            4 : (C0_DATA_WIDTH <= 10)?
                             5 : (C0_DATA_WIDTH <= 26)?
                              6 : (C0_DATA_WIDTH <= 57)?
                               7 : (C0_DATA_WIDTH <= 120)?
                                8 : (C0_DATA_WIDTH <= 247)?
                                 9 : 10;

注意:在多控制器设计中,C0 需要对应于存储器控制器的数字(即 C0、C1、C2等)。

修订历史记录
03/05/2013——初始版本

AR# 54710
日期 10/10/2013
状态 Active
Type 已知问题
器件 More Less
IP