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.2. Injecting Single-Bit Error for Arria® V, Stratix® V, and Cyclone® V Devices

If you want to inject a single-bit error into the 15th bit of the 7th 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 00 0100 0000 0110 0000 0000 0000 0000 0100 0000 0000 0000 is shifted into the fault injection register. Because bits 45, 44, 43, and 42 of the fault injection register is 0001, a single-bit error is injected. The byte location of the injected error is defined as 00 0000 0110, thus the single-bit error is injected into the 7th byte of the data frame. The error byte location value is 0000 0000 0000 000 0100 0000 0000 0000, which indicates the 15th bit of the 7th byte data is the specific location in which the single-bit error is injected.

Figure 12. Injecting a Single-Bit Error for Arria® V, Stratix® V, and Cyclone® V 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® V, Stratix® V, and Cyclone® V devices.

Example of .jam File to Inject Single-Bit Error for Arria® V, Stratix® V, and Cyclone® V Devices

ACTION ERROR_INJECT = EXECUTE;

DATA DEVICE_DATA;

BOOLEAN out[46];

BOOLEAN in[46] = $040600004000;

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;