AN 539: Test Methodology of Error Detection and Recovery using CRC in Intel FPGA Devices

ID 683075
Date 8/09/2019
Public
Document Table of Contents

1.4.2.1. Injecting Single-Bit Error for Arria® II, Stratix® III, and Stratix® IV

If you want to inject a single-bit error into the 7th bit of the 5th byte in the first data frame, you must shift in the data that contains the information of the injected error into the fault injection register.

The following figure shows the binary bit sequence 0 1000 0000 0100 0100 0000 is shifted into the fault injection register. Because bit 19 and bit 20 of the fault injection register is 01, a single-bit error is injected. The byte location of the injected error is defined as 000 0000 0100, thus the single-bit error is injected into the 5th byte of the data frame. The error byte location value is 0100 0000, which indicates the 7th bit of the 5th byte data is the specific location in which the single-bit error is injected.

Figure 11. Injecting a Single-Bit Error for Arria® II, Stratix® III, and Stratix® IV DevicesFigure shows the error injection mechanism.

The following example shows the .jam file that you must execute in the EDERROR_INJECT JTAG instruction to inject the single-bit error into the first data frame for Arria® II, Stratix® III, and Stratix® IV devices.

Example of .jam File to Inject Single-Bit Error for Arria® II, Stratix® III, and Stratix® IV Devices

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;