Caracterización de la tolerancia a fallos de circuitos implementados en FPGAs
View/ Open
Date
2019-05-17Author
Villalta Bustillo, Igor
Metadata
Show full item recordAbstract
Las FPGAs (Field-Programmable Gate Array) y los SoC (System-on-chip) basados en FPGA son dispositivos electrónicos configurables en campo (in field), que ofrecen la posibilidad de desarrollar un circuito a medida con un tiempo de salida al mercado y unos costes de diseño reducidos en comparación con los ASICs. Debido a la reducción continua del tamaño de los transistores, las prestaciones de estos dispositivos se están incrementando de manera vertiginosa en las últimas décadas, lo que ha generado interés en sectores muy específicos como automoción, ferroviario, industrial, aviónico o aeroespacial. En estos sectores se exige que los diseños estén orientados a confiabilidad y que cumplan con diversas normativas de seguridad, lo que requiere de métodos para la estimación y justificación de la tasa de fallos del sistema. El problema radica en que las FPGAs son especialmente susceptibles al SEU (Single Event Upset) generado por radiación en la memoria de configuración, un tipo de error que provoca la modificación aleatoria de uno o más bits de dicha memoria, afectando al circuito implementado. Por lo tanto, los diseños orientados a confiabilidad que utilicen FPGAs comerciales han de considerar la inclusión de una serie de medidas y mecanismos para mitigar sus efectos. No solo eso, sino que también es necesaria la aplicación de mecanismos de evaluación para corroborar que las estrategias aplicadas permiten alcanzar los objetivos de confiabilidad. De entre los diferentes procedimientos de evaluación aplicables se destaca la emulación de SEUs, que consiste en programar el dispositivo con un archivo intencionadamente corrompido para que se almacene contenido erróneo en la memoria de configuración, lo que genera un efecto análogo al SEU. Se han estudiado diferentes metodologías de emulación en la literatura y se han observado una serie de deficiencias. Por un lado, los métodos de emulación internos (los errores se inyectan desde la propia FPGA) tienen el problema de ser autobloqueantes, ya que el error inyectado puede afectar al propio sistema de emulación. Por otro lado, los sistemas de emulación externos pueden requerir cambios importantes a nivel de hardware.El objetivo principal de este trabajo es el desarrollo de un mecanismo de emulación de SEUs que pueda implementarse de manera sencilla en sistemas ya construidos, cuyo único requisito es que dicho sistema tenga un SoC FPGA del tipo Zynq o similar. Además, se pretenden solventar las deficiencias observadas en la literatura aprovechando las diferentes capacidades que ofrecen los SoCs que combinan FPGA y sistema procesador (PS). Para ello se ha planteado la implementación del sistema de inyección de errores en el PS, ya que de esta manera se previenen las inyecciones de errores bloqueantes. De igual modo, aunque las inyecciones de realicen desde fuera de la FPGA, las inyecciones se llevan a cabo desde el interior del propio chip, evitando la necesidad de añadir modificaciones en el hardware. Se ha propuesto un esquema de verificación universal independiente de la aplicación, de modo que el esquema de test pueda ser adaptado a diferentes sistemas de forma sencilla, independientemente de su complejidad.Una vez planteada la metodología de emulación, se han realizado otras dos aportaciones. En primer lugar se ha comprobado cómo afectan las diferentes decisiones que puedan tomarse en las diferentes etapas de la fase de diseño. Aquí se ha comprobado que un mismo diseño puede tener fluctuaciones de hasta el 50\% si se modifican algunos parámetros. Por otro lado, habiendo observado que los emuladores de SEU existentes en la literatura se centran en el estudio del SBU (Single Bit Upset), se ha propuesto un procedimiento para la estimación de la tasa de fallo en presencia de MCUs (Multiple Cell Upsets).