13. SEU Mitigation in Cyclone III Devices

Introduction


In critical applications used in the fields of avionics, telecommunications, system control, medical, and military applications, it is important to be able to:

■  Confirm the accuracy of the configuration data stored in an FPGA device

■  Alert the system to an occurrence of a configuration error

Dedicated circuitry built into Cyclone® III devices consists of a cyclic redundancy check (CRC) error detection feature that can optionally check for a single event upset (SEU) continuously and automatically.

Error Detection Fundamentals

Altera Corporation May 2008


This chapter describes how to:

■  Activate and use the error detection CRC feature in user mode

■  Recover from configuration errors caused by CRC errors

This chapter contains the following sections:

■  "Error Detection Fundamentals"

■  "Configuration Error Detection" on page 13-2

■  "User Mode Error Detection" on page 13-2

■  "Automated Single Event Upset Detection" on page 13-3

■  "Error Detection Pin Description" on page 13-3

■  "CRC_ERROR Pin" on page 13-3

■  "Error Detection Block" on page 13-3

■  "Error Detection Timing" on page 13-4

■  "Software Support" on page 13-5

■  "Recovering from CRC Errors" on page 13-6

For Cyclone III devices, the error detection CRC feature is provided in the Quartus® II software, starting with version 6.1.

Using CRC error detection for the Cyclone III family does not impact fitting or performance. Information about SEU is located on the Products page on the Altera® website (www.altera.com).

Error detection determines if the data received through an input device has been corrupted during transmission. In validating the data, the transmitter uses a function to calculate a checksum value for the data and appends the checksum to the original data frame. The receiver uses the same calculation methodology to generate a checksum for the received data frame and compares the received checksum to the transmitted checksum. If the two checksum values are equal, the received data frame is correct and no data corruption has occurred during transmission or storage.

The error detection CRC feature in Cyclone III devices puts theory into practice. In user mode, a Cyclone III device's error detection CRC feature ensures the integrity of the configuration data.

There are two CRC error checks:

■  One always occurs during configuration

■  A second optional CRC error check runs in the background in user mode

For more information, refer to "Configuration Error Detection" on page 13-2 and "User Mode Error Detection" on page 13-2.

13-1

SEU Mitigation in Cyclone III Devices

Configuration Error Detection

User Mode Error Detection


In configuration mode, a frame-based CRC is stored within the configuration data and contains the CRC value for each data frame.

During configuration, the FPGA calculates the CRC value based on the frame of data that is received and compares it against the frame CRC value in the data stream. Configuration continues until either the device detects an error or all the values are calculated.

For Cyclone III devices, the CRC is computed by the Quartus II software and downloaded into the device as part of the configuration bit stream. These devices store the CRC in the 32-bit storage register at the end of the configuration mode.

Soft errors are changes in a configuration random-access memory (CRAM) bit state due to an ionizing particle. All Cyclone series devices have built-in error detection circuitry to detect data corruption by soft errors in the CRAM cells.

This error detection capability continuously computes the CRC of the configured CRAM bits based on the contents of the device and compares it with the pre-calculated CRC value obtained at the end of the configuration. If the CRCs match, there is no error in the current configuration CRAM bits. The process of error detection continues until the device is reset (by setting nCONFlG to low).

The Cyclone III device error detection feature does not check memory blocks and I/O buffers. These device memory blocks support parity bits that are used to check the contents of memory blocks for any error. The I/O buffers are not verified during error detection because these bits use flip-flops as storage elements that are more resistant to soft errors. Similar flip-flops are used to store the pre-calculated CRC and other error detection circuitry option bits.

The error detection circuitry in Cyclone III devices uses a 32-bit CRC IEEE 802 standard and 32-bit polynomial as the CRC generator. Therefore, a single 32-bit CRC calculation is performed by the device. If a soft error does not occur, the resulting 32-bit signature value is 0x000000, which results in a 0 on the output signal CRC_ERROR. If a soft error occurs within the device, the resulting signature value is non-zero and the CRC_ERROR output signal is 1.

You can inject a soft error by changing the 32-bit CRC storage register in the CRC circuitry. After verifying the failure induced, you can restore the 32-bit CRC value to the correct CRC value using the same instruction and inserting the correct value. Be sure to read out the correct value first before updating it with a known bad value.

When in user mode, Cyclone III devices support the CHANGEEDREG Joint Test Action Group (JTAG) instruction, which allows you to write to the 32-bit storage register. You can use Jam files (.jam) to automate the testing and verification process. This is a powerful design feature that enables you to dynamically verify the CRC functionality in-system without having to reconfigure the device. You can then switch to use the CRC circuit to check for real errors induced by an SEU. You can only execute the CHANGE EDREG JTAG instruction when the device is in user mode.

Table / 13-1. CHANGE EDREG JTAG Instruction
JTAG / Instruction / Instruction Code / Description
CHANGE EDREG / 00 0001 0101 / This instruction connects the 32-bit CRC storage register between tdi and tdo. Any precomputed CRC is loaded into the CRC storage register to test the operation of the error detection CRC circuitry at the crc error pin.

After the test completes, Altera recommends that you reconfigure the device.

13-2

Cyclone III Device Handbook, Volume 1 Altera Corporation May 2008

13. Подавление SEU в устройствах Cyclone III

Введение


В критичных приложениях, использующихся в авиационной электронике, телекоммуникациях, управлением системами медицине и в военных целях, важно наличие возможности:

■  Подтверждения точности конфигурации данных, хранящихся в устройстве FPGA

■  Оповещения системы о возникновении ошибки конфигурации

Специализированная схема, входящая в состав устройств Cyclone® III, включает в свой состав функцию проверки на ошибку контрольной циклической суммой (CRC), которая может по выбору пользователя непрерывно и автоматически выявлять одиночные сбои (SEU).

Основы обнаружения ошибок

Altera Corporation May 2008


В настоящей главе описывается, как:

■  Активировать и функцию CRC и применять ее в пользовательском режиме

■  Восстанавливать ошибки конфигурации, вызванные ошибками, выявленными с помощью CRC

Настоящая глава состоит из следующих разделов:

■  «Основы обнаружения ошибок»

■  «Обнаружение ошибок конфигурации», стр. 13-2

■  «Обнаружение ошибок в пользовательском режиме», стр. 13-2

■  «Автоматизированное обнаружение одиночных ошибок», стр. 13-3

■  «Error Detection Pin Description», стр. 13-3

■  «Контакт CRC_ERROR», стр. 13-3

■  «Блок обнаружения ошибок», стр. 13-3

■  «Задержка обнаружения ошибок», стр. 13-4

■  «Программная поддержка», стр. 13-5

■  «Восстановление ошибок, выявленных с помощью CRC» , стр. 13-6

Для устройств Cyclone III функция обнаружения ошибок с помощью CRC реализована на основе программного обеспечения Quartus® II, начиная с версии 6.1.

Применение обнаружения ошибок с помощью CRC для семейства Cyclone III не влияет на компоновку или на производительность. Информация о SEU размещена на странице Products веб-сайта Altera® (www.altera.com).

При обнаружении ошибок выясняется, не были ли повреждены принимаемые от входного устройства данные при их передаче. Для проверки данных передатчик применяет функцию вычисления значения контрольной суммы для данных и добавляет контрольную сумму к исходному кадру данных. Приемник использует ту же методику вычислений для формирования контрольной суммы для принятого кадра данных и сравнивает принятую контрольную сумму с переданной контрольной суммой. Если оба значения контрольной суммы равны, принятый кадр данных правилен, и никаких повреждений данных во время передачи или хранения не произошло.

Функция обнаружения ошибок с помощью функции CRC в устройствах Cyclone III реализует теорию на практике. В пользовательском режиме функция обнаружения ошибок с помощью функции CRC в устройствах Cyclone III обеспечивает целостность данных конфигурации.

Предусмотрено две проверки на ошибки с помощью CRC:

■  Одна всегда выполняется во время конфигурации

■  Вторая, опциональная проверка на ошибки с помощью CRC включается как фон в пользовательском режиме.

Подробнее см. «Обнаружение ошибок конфигурации» на стр. 13-2 и «Обнаружение ошибок в пользовательском режиме» на стр. 13-2.

13-1

Подавление SEU в устройствах Cyclone III

Обнаружение ошибок конфигурации

Обнаружение ошибок в пользова-тельском режиме


В режиме конфигурации CRC кадра записывается в состав данных конфигурации и содержит значение CRC для каждого кадра данных.

Во время конфигурации FPGA рассчитывает значение CRC на основе данных кадра, которые приняты, и сравнивает ее со значением CRC кадра в потоке данных. Конфигурация продолжается до тех пор, пока либо устройство не обнаружит ошибку, либо не будут подсчитаны все значения.

Для устройств Cyclone III вычисляется CRC программным обеспечением Quartus II и загружается в устройство как часть потока данных конфигурации. Данные устройства хранят CRC в 32-разрядном регистре памяти до завершения режима конфигурации.

Программные ошибки являются изменениями в состоянии разрядов оперативной запоминающей памяти конфигурации (CRAM) вследствие воздействия ионизированных частиц. Все устройства серии Cyclone имеют встроенную схему обнаружения ошибок для выявления повреждения данных из-за программных ошибок в ячейках CRAM.

Эта функция обнаружения ошибок непрерывно вычисляет CRC конфигурируемых разрядов CRAM на основе содержимого устройства, а затем сравнивает ее с предварительно подсчитанным значением CRC, полученном по завершении конфигурации. Если CRC совпадают, то никаких ошибок в текущих разрядах конфигурации CRAM нет. Процесс обнаружения ошибок продолжается до перезапуска устройства (путем установки nCONFlG на низкий уровень).

Функция устройства обнаружения ошибок Cyclone III не проверяет блоки памяти и буферы ввода/вывода. Эти блоки памяти устройства поддерживают биты четности, которые предназначены для проверки содержимого памяти на какие-либо ошибки. Буферы ввода/вывода не проверяются во время обнаружения ошибок, поскольку данные биты используют в качестве элементов хранения триггеры, которые более устойчивы к программным ошибкам. Подобные триггеры применяются для хранения предварительно подсчитанной CRC и других данных выбора схемы функции обнаружения ошибок.

Схема обнаружения ошибок устройств Cyclone III использует в качестве генератора CRC 32-разрядную CRC в соответствии со стандартом IEEE 802 и 32-разрядный полином. Таким образом, одно 32-разрядное вычисление CRC выполняется устройством. Если программная ошибка не возникла, результирующее 32-разрядное значение признака равно 0x000000, что формирует 0 в выходном сигнале ошибки CRC_ERROR. Если в устройстве возникает программная ошибка, результирующее 32-разрядное значение признака отлично от нуля, и выходной сигнал CRC_ERROR принимает значение 1.

Вы можете ввести программную ошибку, изменив данные в 32-разрядном регистре памяти CRC схемы CRC. После доказательства внесения ошибки можно восстановить 32-разрядное значение CRC, получив правильное значение CRC с помощью той же самой инструкции, и вставить правильное значение. Обязательно считайте правильное значение, прежде чем заменять его заранее неверным.

В пользовательском режиме устройства Cyclone III поддерживают инструкцию CHANGEEDREG группы Joint Test Action Group (JTAG), которая позволяет выполнять запись в 32-разрядный регистр памяти. Можно воспользоваться файлами типа Jam (.jam), чтобы автоматизировать процесс тестирования и проверки. Эта мощная конструкторская возможность, которая позволяет динамически проверять исправность CRC в составе системы без необходимости в реконфигурации устройства. Затем можно переключиться на использование схемы CRC для проверки реальных ошибок, обусловленных SEU. Инструкцию CHANGE EDREG JTAG можно выполнить только в том случае, если устройство находится в пользовательском режиме.

Таблица 13-1. Инструкция CHANGE EDREG JTAG
Инструкция JTAG / Код инструкции / Описание
CHANGE EDREG / 00 0001 0101 / Данная инструкция коммутирует 32-разрядный регистр памяти CRC между tdi и tdo. Все заранее подсчитанные CRC загружаются в регистр памяти CRC, чтобы проверить функционирование схемы обнаружения ошибок CRC на контакте crc error pin.

По завершении теста Altera рекомендует реконфигурировать устройство.

13-2

Руководство к устройству Cyclone III, Том 1


Altera Corporation Май 2008