AN 539: インテル® FPGAデバイスにおけるCRCを使用したエラー検出および回復のテスト方法

ID 683075
日付 8/09/2019
Public
ドキュメント目次

1.4.2.1. Arria® II、 Stratix® III、および Stratix® IVにおけるシングルビット・エラーの注入

シングルビット・エラーを最初のデータフレーム内の5番目のバイトの7番目のビットに注入する場合、注入されるエラーの情報を含むデータをフォールト・インジェクション・レジスターにシフトインする必要があります。

次の図は、フォールト・インジェクション・レジスターにシフトするバイナリー・ビット・シーケンスの0 1000 0000 0100 0100 0000を表しています。フォールト・インジェクション・レジスターのビット19とビット20は01であるため、シングルビット・エラーが注入されます。注入されるエラーのバイト位置は000 0000 0100として定義されているため、シングルビット・エラーはデータフレームの5番目のバイトに注入されます。エラーバイト位置の値は0100 0000であり、5番目のバイトデータの7番目のビットが、シングルビット・エラーが注入される特定の位置であることを示しています。

図 11.  Arria® II、 Stratix® III、および Stratix® IVデバイスにおけるシングルビット・エラーの注入次の図は、エラー・インジェクションのメカニズムを示しています。

次の例は、 Arria® II、 Stratix® III、および Stratix® IVデバイスにおいて最初のデータフレームにシングルビット・エラーを注入する際に、EDERROR_INJECT JTAG命令で実行する必要のある.jamファイルを示しています。

Arria® II、 Stratix® III、および Stratix® IVデバイスにおいてシングルビット・エラーを注入する.jamファイルの例

ACTION ERROR_INJECT = EXECUTE;
        
        DATA DEVICE_DATA;
        
        BOOLEAN out[21];
        
        BOOLEAN in[21] = $080440;
        
        ENDDATA;
        
        PROCEDURE EXECUTE USES DEVICE_DATA;
        
        BOOLEAN X = 0;
        
        DRSTOP IDLE;
        
        IRSTOP IDLE;
        
        STATE IDLE;
        
        IRSCAN 10, $015;
        
        WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
        
        DRSCAN 21, in[20..0], CAPTURE out[20..0];      ‘shift out the previous content from fault injection register
        
        WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
        
        DRSCAN 21, in[20..0], CAPTURE out[20..0];	‘shift out current content from fault injection register
        
        WAIT IDLE, 10 CYCLES, 25 USEC, IDLE;
        
        PRINT " ";
        
        PRINT "Data read out from the FIR Register: ", out[20], out[19], " " ,out[18], out[17], out[16], out[15], out[14], out[13], out[12], out[11], out[10], out[9], out[8], " " , out[7], out[6], out[5], out[4], out[3], out[2], " ", out[1], out[0];
        
        PRINT " ";
        
        PRINT "Error Type:", out[20], out[19];
        
        PRINT " ";
        
        PRINT "Byte Location:", out[18], out[17], out[16], out[15], out[14], out[13], out[12], out[11], out[10], out[9], out[8];
        
        PRINT " ";
        
        PRINT "Error Byte Value:", out[7], out[6], out[5], out[4], out[3], out[2], out[1], out[0];
        
        STATE IDLE;
        
        EXIT 0;
        
        ENDPROC;