Article ID: 000076280 Content Type: Troubleshooting Last Reviewed: 07/04/2018

Why does CRC_ERROR pin output only one pulse in Cyclone® V and Stratix® V device even though EDERROR_INJECT JTAG instruction is executed multiple times?

Environment

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Description

You will see this behavior in Cyclone® V and Stratix® V when all the following conditions are established.

- The internal scrubbing feature is enabled

- The same contents of the JTAG fault injection register is used for every EDERROR_INJECT JTAG instruction.

When shifting error information into the JTAG fault injection register using EDERROR_INJECT JTAG instruction, the readback bits of the first frame are modified. So a CRC error is detected and the CRC_ERROR pin outputs a pulse.

But this error is a fake error and the operation modifies only the readback bits from the first frame, not the contents of the first frame stored in the configuration RAM (CRAM).

After the first CRC error detection, if the internal scrubbing feature is enabled, the contents of the first frame in the CRAM are modified according to the fake error.  As a result, the contents of that modified first frame matches the contents of the fault injection register.  Therefore, no CRC error is detected and the CRC_ERROR pin no longer toggles to high.

Even if EDERROR_INJECT JTAG instruction is executed again, as long as the same contents of the JTAG fault injection register is used, no error is detected and the CRC_ERROR pin never toggles again.

To toggle CRC_ERROR pin again, you can send a different contents of the JTAG fault injection register.  But it further modifies the contents of the first frame in the CRAM.  To avoid such further modification, it is recommended to send all zeros to JTAG fault injection register so that the contents of the first frame in the CRAM are reinstated.

When you use an example .jam file in AN 539: Test Methodology of Error Detection and Recovery using CRC in Intel® FPGA Devices, you can see BOOLEAN in[46] = $040600004000; in the script.  The example .jam file sends $040600004000 into the JTAG fault injection register.

When you send all zeros to JTAG fault injection register, use BOOLEAN in[46] = $000000000000;

 

Related Products

This article applies to 2 products

Cyclone® V FPGAs and SoC FPGAs
Stratix® V FPGAs