インテル® MAX® 10 FPGAコンフィグレーション・ユーザーガイド

ID 683865
日付 1/07/2019
Public
ドキュメント目次

3.6.1. エラー検出機能の検証

CRC回路で32 ビットのCRCストレージレジスターを変更することによって、ソフトエラーを注入することができます。引き起こされた障害を検証した後は、同じ命令を使用して正しい値を挿入することにより、32ビットのCRC値を正しいCRC値に復元することができます。既知の不正な値で更新する前に、必ず正しい値を読み出してください。

インテルMAX 10デバイスは、ユーザーモードでCHANGE_EDREG JTAG命令をサポートしており、これにより32ビットのストレージレジスターに書き込みをすることができます。.jamを使用すれば、テストと検証のプロセスを自動化することができます。この命令は、デバイスがユーザーモードにあるときにのみ実行することができます。この命令により、デバイスをリコンフィグレーションすることなくインシステムでCRC機能を動的に検証可能です。その後で、CRC回路に切り換えて、SEUに起因する実際のエラーを確認することができます。

テスト完了後にCRCエラーをクリアして元のCRC値を復元するには、次のいずれかの方法を使用します。
  • 5TCKクロックの間、TMSをHighに保持して、TAPコントローラーをRESET状態にします。
  • デバイスの電源を切断し、再投入します。
  • 次の手順を実行します。
    1. コンフィグレーション完了後、CHANGE_EDREG JTAG命令を使用して計算済みの正しいCRC値をシフトアウトし、CRCストレージレジスターに不正なCRC値をロードします。エラーが検出されると、CRC_ERRORピンがアサートされます。
    2. 計算済みの正しいCRC値をシフトインするには、CHANGE_EDREG JTAG命令を使用します。エラー検出CRC回路が動作していることを示すために、CRC_ERRORピンがディアサートされます。

JAMファイル

'EDCRC_ERROR_INJECT

ACTION ERROR_INJECT = EXECUTE;
DATA DEVICE_DATA;
BOOLEAN out[32];
BOOLEAN in[32] = $02040608;    'shift in any wrong CRC value
ENDDATA;
PROCEDURE EXECUTE USES DEVICE_DATA;
BOOLEAN X = 0;
DRSTOP IDLE;
IRSTOP IDLE;
STATE IDLE;
IRSCAN 10, $015;			   'shift in CHANGE_EDREG instruction
WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
DRSCAN 32, in[31..0], CAPTURE out[31..0];
WAIT IDLE, 10 CYCLES, 50 USEC, IDLE;
PRINT " ";
PRINT "Data read out from the Storage Register: "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];		   'Read out correct precomputed CRC value
PRINT " ";
STATE IDLE;
EXIT 0;
ENDPROC;

下記のコマンドラインにより、quartus_jli実行ファイルを使用して、.jamファイルを動作させることが可能です。

quartus_jli -c<cable index> -a<action name> <filename>.jam