エラー訂正機能とエラー挿入 - 1.0 日本語

Embedded Memory Generator v1.0 LogiCORE IP 製品ガイド (PG326)

Document ID
PG326
Release Date
2020-07-14
Version
1.0 日本語

Embedded Memory Generator コアは、ブロック RAM と UltraRAM をこれらのメモリ プリミティブのビルトイン ECC 機能を使用してマッピングする際に、ビルトイン ハミング ECC モード (使用するすべての書き込みポートと読み出しポートで ECC エンコードとデコードの両方が有効)、エンコード専用の ECC モード (使用するすべての書き込みポートで ECC エンコードが有効)、およびデコード専用の ECC モード (使用するすべての読み出しポートで ECC デコードが有効) を使用します。上記のさまざまな ECC モードは、パラメーター ECC_MODE をデフォルトの 0 (無効) から 1 (エンコードのみ)、2 (デコードのみ)、または 3 (エンコードおよびデコード) に変更することで有効になります。エンコードとデコードの両方が有効になっている場合、各書き込み動作で 64 ビットのデータごとに 8 つの保護ビットが生成され、データと共にメモリに格納されます。これらの保護ビットは、各読み出し動作でシングル ビット エラーの訂正や、ダブル ビット エラーの検出 (訂正なし) に使用されます。

書き込み幅と読み出し幅は、エンコード モードとデコード モードの両方で 64 ビットの倍数である必要があります。

エンコード専用モードが有効になっている場合、各書き込み動作で 64 ビットのデータごとに 8 つの保護ビットが生成され、データと共にメモリに格納されます。読み出しデータは直接コアの出力となります。この場合、書き込み幅は 64 の倍数で、読み出し幅は 72 の倍数である必要があります。

デコード専用モードが有効になっている場合、エンコードされたデータをメモリに格納されている実際のデータと共に提供する必要があるため、書き込み幅は 72 ビットの倍数である必要があります。デコードはメモリ読み出しデータに対して実行されます。この場合、書き込み幅は 72 の倍数で、読み出し幅は 64 の倍数である必要があります。

これはユーザーから透過的に実行されます。2 つのステータス出力 (sbiterr および dbiterr) は、3 つの読み出しの結果 (エラーなし、シングル エラーの訂正、ダブル エラーの検出) を示します。シングル ビット エラーでは、読み出し動作によって dout の出力データは訂正されますが、メモリ アレイ内のエラーは修正されません。

エラー挿入

Embedded Memory Generator コアは、injectsbiterr および injectdbiterr の 2 つのオプション ピンを使用するエラー挿入をサポートしています。これらのオプションのエラー挿入ピンをデバッグ ピンとして使用し、書き込み動作中に特定の場所にシングル ビットまたはダブル ビット エラーを挿入できます。次に、これらのアドレスの出力で sbiterr 信号および dbiterr 信号のアサートをチェックできます。エラー挿入ピンを使用しない、あるいはエラー挿入ピンを 1 つのみまたは 2 つとも使用するかを選択できます。

2 つのエラー挿入ポートと 2 つのエラー出力ポートはオプションであり、ECC 機能が選択されている場合にのみ使用可能になります。ECC 機能を選択していない場合、プリミティブの injectsbiterr ポートと injectdbiterr ポートは内部で 0 に駆動され、プリミティブの出力 sbiterrdbiterr は外部に接続されません。

次の図は、書き込み動作中にエラー挿入ピンを用いてエラーが挿入された場合の sbiterr 出力信号と dbiterr 出力信号のアサートの様子を示しています。

図 1. エラー挿入ピンの使用による SBITERR 信号と DBITERR 信号のアサート

書き込み動作中に同じアドレスで injectsbiterr 入力と injectdbiterr 入力が同時にアサートされると (上記の図ではアドレス 3)、injectdbiterr 入力が優先され、読み出し動作でそのアドレスで dbiterr 出力のみがアサートされます。このアドレスのデータ出力は訂正されません。