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.
展开▼