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

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

1.3.2.2. 外部ホストを使用したEMRのアンロード

JTAGポートなどの外部ホストを使用してEMRの内容をアンロードするには、SHIFT_EDERROR_REG JTAG命令を使用します。このJTAG命令は、TDIピンとTDOピンの間のエラー検出ブロックのJTAGピンにEMRを接続します。CRC_ERRORがHighになればいつでもこの命令を実行することができます。

EMRの内容は、このレジスターが次のCRCエラー情報によって上書きされる前にアンロードする必要があります。

次の例は、EMRの内容をアンロードするSHIFT_EDERROR_REG JTAG命令の実行に使用される.jam™ STAPL (Standard Test and Programming Language) 形式ファイル (Jam) を示しています。

Arria® II、 Stratix® III、および Stratix® IVデバイスにおいてEMRの内容をアンロードする.jamファイルの例

ACTION UNLOAD_EMR = EXECUTE;
        
        DATA EMR_DATA;
        
        BOOLEAN out[46];
        
        BOOLEAN in[46]=$3FFFFFFFFFFF;
        
        ENDDATA;
        
        PROCEDURE EXECUTE USES EMR_DATA;
        
        DRSTOP IDLE;
        
        IRSTOP IDLE;
        
        STATE IDLE;
        
        IRSCAN 10, $017;
        
        WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
        
        DRSCAN 46, in[45..0], CAPTURE out[45..0];
        
        WAIT IDLE, 10 CYCLES, 25 USEC, IDLE;
        
        PRINT " ";
        
        PRINT "Data read out from the EMR 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 "Syndrome:", 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];
        
        PRINT "Frame Address:", 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];
        
        PRINT "Byte Location:", out[15], out[14], out[13], out[12], out[11], out[10], out[9], out[8], out[7], out[6], out[5];
        
        PRINT "Bit Location:", out[4], out[3], out[2];
        
        PRINT "Error Type:", out[1], out[0];
        
        STATE IDLE;
        
        EXIT 0;
        
        ENDPROC;

Arria® V Cyclone® V、および Stratix® VデバイスにおいてEMRの内容をアンロードする.jamファイルの例

ACTION UNLOAD_EMR = EXECUTE;
        
        DATA EMR_DATA;
        
        BOOLEAN out[67];
        
        BOOLEAN in[67]=$7FFFFFFFFFFFFFFFF;
        
        INTEGER i;
        
        ENDDATA;
        
        PROCEDURE EXECUTE USES EMR_DATA;
        
        DRSTOP IDLE;
        
        IRSTOP IDLE;
        
        STATE IDLE;
        
        IRSCAN 10, $017;
        
        WAIT IDLE, 10 CYCLES, 1 USEC, IDLE;
        
        DRSCAN 67, in[66..0], CAPTURE out[66..0];
        
        WAIT IDLE, 10 CYCLES, 25 USEC, IDLE;
        
        PRINT " ";
        
        PRINT "Data read out from the ";
        
        PRINT "EMR_Register ::", out[66], out[65], out[64], out[63], out[62], out[61], out[60], out[59], out[58], out[57], out[56], out[55], out[54], out[53], out[52], out[51], out[50], out[49], out[48], out[47], out[46], 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 "Syndrome ::", out[66], out[65], out[64], out[63], out[62], out[61], out[60], out[59], out[58], out[57], out[56], out[55], out[54], out[53], out[52], out[51], out[50], out[49], out[48], out[47], out[46], out[45], out[44], out[43], out[42], out[41], out[40], out[39], out[38], out[37], out[36], out[35];
        
        PRINT "Frame Address ::", 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];
        
        PRINT "Double Word Location ::", out[18], out[17], out[16], out[15], out[14], out[13], out[12], out[11], out[10], out[9];
        
        PRINT "Byte Offset ::", out[8], out[7];
        
        PRINT "Bit Offset ::", out[6], out[5], out[4];
        
        PRINT "Error Type ::", out[3], out[2], out[1], out[0];
        
        STATE IDLE;
        
        EXIT 0;
        
        ENDPROC;