AR# 35209

MIG Virtex-6 DDR2/DDR3 - 読み出しと書き込みのエラーを隔離する方法

説明

ハードウェアでキャリブレーションに問題が出たり、データ/ビット エラーが発生した場合、その問題が書き込みに関連しているのか、読み出しなのかを見極める必要があることがあります。このアンサーでは、エラーの原因が書き込みなのか読み出しなのかを判断する方法を説明します。

注記: このアンサー レコードは MIG ハードウェア デバッグに関連したアンサー レコードの 1 つで、ユーザーがデバッグ ポートが有効になっている MIG サンプル デザインを実行しているものと仮定しています。ハードウェア デバッグ フローの最初から始めるのが最善です。詳細は (Xilinx Answer 34588) を参照してください。

注記: このアンサーは、ザイリンクス MIG ソリューション センター (Xilinx Answer 34243) の一部です。ザイリンクス MIG ソリューション センターは、MIG に関する質問を解決するのに役立つ情報を掲載しています。MIG でデザインを新しく作成する場合、または問題をトラブルシュートする場合は、このザイリンクス MIG ソリューション センターから情報を入手してください。

ソリューション

書き込みが原因でデータ破損が発生しており、データのリードバックも不良な場合、原因が書き込みなのか読み出しなのかを判断するのは困難です。また、制御やアドレスのタイミングの問題も書き込みと読み出しの両方に影響を与えます。

この判別を試みるためにいくつかの方法があります。
  • エラーが断続的な場合、まず少数の書き込みを発行し、同じロケーションから連続して読み出しを実行します。読み出しで断続的に破損データが出力される場合は、読み出しに問題がある可能性があります。
  • 書き込みのタイミングのみを変更または確認します。
    • チップ上の終端が使用されている場合、DDR2/DDR3 デバイスで正しい値が使用されていることと、書き込みバーストに対する ODT 信号のタイミングが正しいことを確認します。
    • デバッグ ポートを使用して、DQ および DQS の書き込み IODELAY タップのキャリブレーション後の値を変更します。これで DQ および DQS の書き込み IODELAY タップをデカップリングすることができます。平常動作の場合、IODELAY (DQ) = IODELAY (DQS) 90 です。
    • 手順:
      1. dbg_wr_tap_set_en = 1 に設定します。
      2. DQS 遅延を設定します。
        • dbg_wr_dqs_tap_set のすべてのビット フィールドを該当値に設定します。
        • このベクターの各 5 ビットが DQS グループ 1 つに対応します。
        • たとえば、dbg_wr_dqs_tap_set[9:5] は DQS[1] になります。
      3. DQ 遅延を設定します。
        • dbg_wr_dq_tap_set に対しても同じ手順を繰り返します。
        • このベクターの各 5 ビットはその DQS グループの DQ/DM ビットすべての遅延に対応します。
      • 注記: 書き込みタイミングを変更するのは、読み出しキャプチャのタイミングを変更するのとは異なります。一度に 1 タップずつ増減するのではなく、全 5 ビットの IODELAY 値を指定する必要があります。
  • 読み出しタイミングのみを変更します。
    • IDELAY 値をキャリブレーション後に確認します。IDELAY 値間の変動を確認します。IDELAY 値は同じ DQS グループの DQ と非常に近い値である必要があります。
    • 不正データを返すビットに対し、キャリブレーション後 IDELAY タップを変更します。これは読み出しキャプチャのタイミングのみに影響します。
      • このプロセスは読み出しタイミングのマージンを決めるのにも使用することができます。
    • 手順:
      1. 位相検出器のキャリブレーションを無効にします。つまり、dbg_pd_maintain_off = 1 に設定します。
        • 位相検出器が無効になっていない場合、キャプチャ クロック タイミングへの変更は、位相検出器によりオフセットになります。
      2. dbg_inc_dec_sel を、調整する DQS グループのキャプチャ クロックを選択するように設定します。
        • エンコードされたバイナリが、たとえば dbg_inc_dec_sel[ ] = 0x02 の場合、DQS[2] に対応します。
      3. 1 IODELAY タップで増減するには、1 クロック サイクル間 dbg_inc_cpt または dbg_dec_cpt を送信します (CLK = ハーフ レートの BUFG クロック)。
      4. dbg_cpt_tap_cnt の該当フィールドに新しい値が反映されます。
        • dbg_inc_dec_sel[ ] = 0x02 の場合、dbg_cpt_tap_cnt[14:10] が新しい値です。
      5. DQS 入力タイミングを同じ方法で調整するにはデバッグ ポートを使用することもできます。
        • DQS は位相検出器で使用されます。
        • dbg_inc_dec_sel、dbg_inc_rd_dqs、dqs_dec_rd_dqs を使用します。
デバッグ ポートの使用方法については、(Xilinx Answer 35206) を参照してください。

アンサー レコード リファレンス

関連アンサー レコード

AR# 35209
日付 11/22/2016
ステータス アクティブ
種類 一般
デバイス 詳細 概略
IP