AR# 54710

MIG 7 Series - DDR3 - 読み出し-変更-書き込みの操作でコントローラーが停止する

説明

問題の発生したバージョン : MIG 7 Series 1.8
修正バージョン : (ザイリンクス アンサー 45195) を参照

ECC ロジックがイネーブルになっているときユーザー デザインの最上位ラッパーに既知の問題があり、読み出し-変更-書き込みの操作が実行されるとコントローラーが停止してしまいます。最初の読み出しは正しく実行されるのですが、その後に続く書き込みが発生しません。その代わり、app_rd_data_valid がアサートされ、コントローラーが UI インターフェイスに読み出されたデータを返してしまいます。この後すぐにコントローラーは停止し、app_rdy 信号は恒久的にディアサートされた状態になります。

ソリューション

ECC パラメーターの 2 つ (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 など)。

改訂履歴
2013/03/05 - 初版

AR# 54710
日付 09/06/2013
ステータス アクティブ
種類 既知の問題
デバイス 詳細 概略
IP