インテルのみ表示可能 — GUID: sss1394430719550
Ixiasoft
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状態にします。
- デバイスの電源を切断し、再投入します。
- 次の手順を実行します。
- コンフィグレーション完了後、CHANGE_EDREG JTAG命令を使用して計算済みの正しいCRC値をシフトアウトし、CRCストレージレジスターに不正なCRC値をロードします。エラーが検出されると、CRC_ERRORピンがアサートされます。
- 計算済みの正しい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