[en] Field Programmable Gate Array (FPGA) devices persist as fundamental components in the design and evaluation of electronic systems. They are continuously reported as final implementation platforms rather than only prototype elements. The inherent reconfigurable characteristics that FPGAs offer are one of the most important advantages in the actual hardware implementation and redesign of systems. In the case of Xilinx SRAM-based FPGAs they support Dynamic Partial Reconfiguration (DPR) by means of the Internal Configuration Access Port (ICAP). This hardwired element allows the configuration memory to be accessed at run time. DPR can then be used to change specific parts of the system while the rest continues to operate with no affection in its computations. Therefore the architecture of the system can be modified at the level of basic logic components such as Look-Up-Tables (LUTs), or bigger blocks such as IP cores, and in this way more flexible systems can be designed. It is a great advantage especially in critical and aerospace applications where the access to the system to re-design the hardware is not a trivial task. But on the other hand, the main problem these FPGAs present when used for critical applications is their sensitivity to Single Event Upset (SEU) and Multi-bit Upset (MBU) in the configuration memory. It is a limiting factor that must be considered to avoid misbehavior of the implemented hardware. This thesis is focused on using DPR as a mechanism to: i) improve hardware flexibility, ii) emulate faults on ASIC designs mapped in FPGAs and iii) improve tolerance to accumulated or multiple faults in the configuration memory of Triple Modular Redundancy (TMR) circuits. This work addresses the three challenges considering as one of the most relevant figures of merit the speed at which the tasks can be performed. It is therefore one of the main objectives we consider: the speed-up of DPR related tasks. In the first place we developed a new high speed ICAP controller, named AC_ICAP, completely implemented in hardware. In addition to similar solutions to accelerate the management of partial bitstreams and frames, AC_ICAP also supports DPR of LUTs without requiring pre-computed partial bitstreams. This last characteristic was possible by performing reverse engineering on the bitstream. This allows DPR of single LUTs in Virtex-5 devices to be performed in less than 5 μs which implies a speed-up of more than 380x compared to the Xilinx XPS_HWICAP controller. In the second place, the fine grain DPR obtained with the utilization of the AC_ICAP is used in the emulation of faults to test ASIC circuits implemented in FPGAs. It is achieved by designing a CAD flow that includes a custom technology mapping of the ASIC net-list to LUT-level FPGA net-list, the creation of fault dictionaries and the extraction of test patterns. A hardware platform takes the fault list and leverages the partial reconfiguration capabilities of the FPGA for fault injection followed by application of test patterns for fault analysis purposes. Finally, we use DPR to improve the fault tolerance of TMR circuits implemented in SRAM-based FPGAs. In these devices the accumulation of faults in the configuration memory can cause the TMR replicas to fail. Therefore fast detection and correction of faults without stopping the system is a required constraint when these FPGAs in the implementation of critical systems. This is carried out by inserting flag error detector based on XNOR and carry-chain components, isolating and constraining the three domains to known areas and extracting partial bitstreams for each domain. The latter are used to correct faults when the flags are activated.

[es] Los dispositivos FPGA persisten como componentes fundamentales para el diseño y evaluación de sistemas electrónicos. En el caso de las FPGAs basadas en memoria SRAM de Xilinx, éstas soportan Reconfigurabilidad Parcial Dinámica (DPR) por medio del Internal Configuration Access Port (ICAP). Este componente físico permite acceder a la memoria de configuración mientras el sistema está operando y por lo tanto la DPR puede ser usada para modificar partes específicas del sistema mientras que el resto sigue funcionando sin ser afectado. La arquitectura del sistema pude ser modificada a nivel de componentes lógicos básicos como Look-Up-Tables (LUTs), o a nivel de bloques más grandes como IPs con lo cual la flexibilidad de los sistemas puede mejorar. Ésta es una gran ventaja especialmente en sistemas críticos, como los aeroespaciales, donde el acceso al sistema para modificar su hardware no es una tarea sencilla. Pero el principal problema que estas FPGAs presentan cuando son utilizadas para aplicaciones críticas es su susceptibilidad a Single Event Upset (SEU) y Multi-bit Upset (MBU) en la memoria de configuración. Éste es un factor limitante que debe ser considerado para evitar malfuncionamiento del hardware implementado. Esta tesis está enfocada en usar DPR como un mecanismo para: i) mejorar la flexibilidad del hardware, ii) emular fallos de forma precisa en diseños ASIC mapeados en FPGAs y iii) mejorar la tolerancia a fallos acumulados o múltiples en la memoria de configuración de circuitos con Triple Redundancia Modular (TMR). Este trabajo aborda estos aspectos considerando como figura de mérito fundamental la velocidad de ejecución de las tareas. Por lo tanto uno de los principales objetivos es acelerar las tareas relacionadas con DPR. En primer lugar un controlador hardware para el ICAP fue diseñado: AC_ICAP. Éste además de soportar lectura y escritura de frames, manejo de bitstreams parciales desde memoria flash y memoria interna de la FPGA, también permite DPR de alta velocidad a nivel de LUTs sin necesidad de bitstreams parciales previamente generados. Esta última característica es posible gracias a ingeniería inversa en el bitstream con la cual se puede ejecutar DPR de LUTs individuales en menos de 5 μs. Ésto representa una mejora en tiempo de reconfiguración de más de 380 veces comparado con el controlador XPS_HWICAP de Xilinx En segundo lugar, la DPR a nivel de LUTs es utilizada en la emulación de fallos para evaluar circuitos ASIC mapeados en FPGAs. Para ello se diseña un CAD que incluye un traductor de la descripción ASIC a una descripción basada en LUTs para ser implementada en FPGAs, generación de diccionarios de fallos y extracción de patrones de prueba. Una plataforma hardware usa el listado de fallos y aprovecha la DPR de la FPGA para la inyección precisa de fallos seguida de la aplicación de los patrones de test para analizar los efectos de los fallos en el circuito. Finalmente la DPR es utilizada para mejorar la tolerancia a fallos de circuitos TMR implementados en FPGAs basados en memoria SRAM. En estos dispositivos la acumulación de fallos en la memoria de configuración puede generar fallos en las réplicas TMR. Por lo tanto la rápida detección y corrección de fallos sin detener el sistema es un requerimiento que se debe cumplir cuando se usan estas FPGAs en la implementación de sistemas críticos. Para ello se insertan detectores de errores de tipo XNOR que convergen en componentes carry-chain de la FPGA y además cada dominio es aislado en áreas diferentes del dispositivo para los cuales se extraen bitstreams parciales. Éstos son utilizados para corregir los fallos cuando los detectores son activados.