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

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

1.4.3. フォールト・インジェクション・レジスターのクリア

テストプロセスの完了後、フォールト・インジェクション・レジスターの内容をクリアする、もしくはnCONFIG信号をLowにしてリコンフィグレーションを開始することで、注入したエラーをディスエーブルします。フォールト・インジェクション・レジスターの内容をクリアするには、レジスターにすべて0のデータをスキャンします。

次の例は、フォールト・インジェクション・レジスターの内容のクリアに使用される.jamファイルを表しています。

Arria® II、 Stratix® III、および Stratix® IVデバイスにおいてフォールト・インジェクション・レジスターの内容をクリアする.jamファイルの例

ACTION ERROR_INJECT_DISABLE = EXECUTE;
        
        DATA DEVICE_DATA;
        
        BOOLEAN out[21];
        
        BOOLEAN in[21] = $000000;
        
        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;
      

Arria® V Stratix® V、および Cyclone® Vデバイスにおいてフォールト・インジェクション・
レジスターの内容をクリアする.jamファイルの例

ACTION ERROR_INJECT_DISABLE = EXECUTE;
        
        DATA DEVICE_DATA;
        
        BOOLEAN out[46];
        
        BOOLEAN in[46] = $000000000000;
        
        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 46, in[45..0], CAPTURE out[45..0];    'shift out the previous content from fault injection register
        
        WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
        
        DRSCAN 46, in[45..0], CAPTURE out[45..0];	'shift out current content from fault injection register
        
        WAIT IDLE, 10 CYCLES, 50 USEC, IDLE;
        
        PRINT " ";
        
        PRINT "Data read out from the FIR Register: ", out[45], out[44], out[43], out[42], " ", out[41], out[40], out[39], out[38], out[37], out[36], out[35], out[34], out[33], out[32], " ", out[31], out[30], out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], 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[45], out[44], out[43], out[42];
        
        PRINT " ";
        
        PRINT "Byte Location:", out[41], out[40], out[39], out[38], out[37], out[36], out[35], out[34], out[33], out[32];
        
        PRINT " ";
        
        PRINT "Error Byte Value:", out[31], out[30], out[29], out[28], out[27], out[26], out[25], out[24], out[23], out[22], out[21], 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];
        
        STATE IDLE;
        
        EXIT 0;
        
        ENDPROC;
      
注: インテルでは、エラー検出のテストと検証後、デバイスのリコンフィグレーションを行うことを推奨しています。