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 に駆動され、プリミティブの出力 sbiterr
と dbiterr
は外部に接続されません。
次の図は、書き込み動作中にエラー挿入ピンを用いてエラーが挿入された場合の sbiterr
出力信号と dbiterr
出力信号のアサートの様子を示しています。
書き込み動作中に同じアドレスで injectsbiterr
入力と injectdbiterr
入力が同時にアサートされると (上記の図ではアドレス 3)、injectdbiterr
入力が優先され、読み出し動作でそのアドレスで dbiterr
出力のみがアサートされます。このアドレスのデータ出力は訂正されません。