インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

10.4.4.4.1. レジスター・インターフェイスのテスト

メモリーエラーの訂正およびメモリー・レジスター・インターフェイスのテストは、ECCコントローラーのレジスターを介して行うことができます。

メモリーのテストと訂正には、次のレジスターを使用することができます。
  • ECC_Addrbus: メモリーのアドレスとECCデータを保持します
  • ECC_RData3busからECC_RData0bus: 読み出しアクセスで得たメモリーデータを保持します
  • ECC_WData3busからECC_WData0bus: メモリーに書き込まれるデータを保持します
  • ECC_RDataecc1busおよびECC_RDataecc0bus: 読み出しアクセスで得たECCデータを保持します
  • ECC_WDataecc1busおよびECC_WDataecc0bus: メモリーに書き込まれるECCデータを保持します
  • ECC_accctrl: アクセスを読み出しまたは書き込みとしてコンフィグレーションし、メモリーとECCデータの上書きを有効にします
  • ECC_startacc: メモリーデータまたはECCデータのレジスター・インターフェイス・アクセスを開始します

DMA ECC RAMに向けたシングルビット・エラーのテスト

このシーケンスでは、DMA ECC RAMのECCデコーダーにおけるシングルビット・エラーの検出と訂正をテストします。
  1. ECC_WData3busレジスターからECC_WData0busレジスターにデータを書き込みます。
  2. CTRLレジスターのECC_ENビットを設定し、ECCの検出訂正ロジックを有効にします。
  3. ECC_dbytectrlレジスターのDBENビットを設定します。
  4. ECC_Addrbusレジスターをプログラミングし、データを書き込むアドレスバスを選択します。
  5. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=1
    • ECCOVR=0
    • DATAOVR=1
  6. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
  7. CTRLレジスターのECC_ENビットをクリアし、ECCの検出訂正ロジックを無効にします。
  8. ECC_WData3busレジスターからECC_WData0busレジスターで1ビットを変更したデータ値を、同じアドレスに書き込みます。
  9. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
  10. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=0
    • ECCOVR=1
    • DATAOVR=1
  11. CTRLレジスターのECC_ENビットを設定し、ECCの検出訂正ロジックを有効にします。
  12. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
    シングルビット・エラーに割り込みのトリガーをコンフィグレーションしている場合は、これらのステップ完了後に割り込みがトリガーされることが想定されます。ECC_RData*busレジスターを使用して同じアドレスのデータを読み戻す場合、メモリーからは、訂正されたデータの結果が戻されることが想定されます。

ワードで書き込み可能なメモリーに向けたシングルビット・エラーのテスト

このシーケンスでは、ワードで書き込み可能なECC RAMのECCデコーダーにおけるシングルビット・エラーの検出と訂正をテストします。
  1. ECC_WData3busレジスターからECC_WData0busレジスターにデータを書き込みます。
  2. CTRLレジスターのECC_ENビットを設定し、ECCの検出訂正ロジックを有効にします。
  3. ECC_dbytectrlレジスターのDBENビットを設定します。
  4. ECC_Addrbusレジスターをプログラミングし、データを書き込むアドレスバスを選択します。
  5. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=1
    • ECCOVR=0
    • DATAOVR=1
  6. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
  7. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=0
    • ECCOVR=1
    • DATAOVR=0
  8. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
  9. ECC_WData3busレジスターからECC_WData0busレジスターで1ビットを変更したデータ値を、同じアドレスに書き込みます。
  10. 同じアドレスで、ECC_RDataecc*busレジスターから結果のデータを読み出します。
  11. ECC_RDataecc*busレジスターからの値をECC_WDataecc*busレジスターに書き込みます。
  12. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=1
    • ECCOVR=1
    • DATAOVR=1
  13. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
  14. ECC_accctrlレジスターで、次のビットをプログラミングします。
    • RDWR=0
    • ECCOVR=1
    • DATAOVR=1
  15. ECC_startaccレジスターのENBUS*ビットを設定し、間接的な書き込みアクセスをトリガーします。
    シングルビット・エラーに割り込みのトリガーをコンフィグレーションしている場合は、これらのステップ完了後に割り込みがトリガーされることが想定されます。ECC_RData*busレジスターを使用して同じアドレスのデータを読み戻す場合、メモリーからは、訂正されたデータの結果が戻されることが想定されます。

ダブルビット・エラーのテスト

このシーケンスでは、ECCデコーダーにおけるダブルビット・エラーの検出をテストします。
  1. CTRLレジスターのECC_ENを設定し、ECCを有効にします。
  2. ECC_accctrlレジスターのData Override (DATAOVR) ビットを設定します。
  3. 通常のメモリー書き込みを使用し、メモリーのアドレス位置にデータを書き込みます。正しいECCデータが生成されることが想定されます。
  4. ECC_WData3busレジスターからECC_WData0busレジスターに2ビットを変更したデータ値を書き込み、メモリー位置のアドレスをECC_Addrbusに書き込みます。
  5. ECC_accctrlレジスターを書き込みにコンフィグレーションし、ECC_startaccレジスターのENBUSAビットを設定して書き込みを開始します。メモリーがデュアルポートの場合は、ポートアクセスに応じて、ENBUSBビットをオプションで有効にすることができます。
  6. 通常のメモリー読み出しアクセスを使用して、同じメモリー位置を読み出します。ダブルビット・エラーがデータの訂正なしでログに記録されることが想定されます。エラーの特定に関しては、エラーのログのセクションを参照してください。