Brevet FR2928769A1 — publié le 20090918

La présente invention concerne un dispositif permettant l'utilisation d'un composant programmable dans un environnement radiatif naturel. Elle s'applique, en particulier, aux composants de type FPGA (acronyme de � Field-Programmable Gate Array � pour réseau de portes programmables in-situ). La principale source de rayonnement est liée au rayonnement galactique du soleil. Le flux de ce rayonnement change selon l'altitude et la latitude, par l'effet de la magnétosphère, de l'atmosphère et de la ceinture de Van Allen, par exemple, qui constituent des obstacles et des filtres. Ce rayonnement comporte, dans l'espace et à altitude élevée, principalement les ions lourds et les protons et, dans l'atmosphère, les neutrons sont dominants. Au niveau de la mer, le flux des neutrons est approximativement 300 fois inférieur à ce qu'il est à une altitude de dix kilomètres. Cependant, même au niveau du sol, des problèmes liés à ce rayonnement, appelés �SEE � (acronyme de � Single Event Effect � pour effet d'événement unique) sont constatés sur quelques systèmes, en raison de l'intégration croissante des composants. Cette question est susceptible de devenir un enjeu dans les années à venir. Les effets singuliers liés aux rayonnements correspondent aux phénomènes déclenchés par le passage d'une particule unique. Parmi ces effets, on distingue les défauts transitoires ou erreurs logicielles, connues sous le nom de � SEU � (acronyme de � Single Event Upset � pour perturbation par un événement unique) qui consiste en une modification indésirable de l'information fournie par un composant électronique, sans altération de ce dernier, sous l'effet d'une particule de haute énergie. Comparé aux ions lourds, les neutrons ne déposent pas leur énergie directement. Ils doivent interagir avec du silicium pour produire les ions secondaires. Tous les ions déposent des charges dans le silicium et produisent un SEE dans le composant électronique. L'intégration et la puissance de calcul demandé sur les calculateurs embarqués, imposent l'utilisation de composant complexe telles que FPGA, CPLD (acronyme de � Complex Programmable Logic Device � pour circuit logique programmable complexe) et ASIC (acronyme de "Application-Specific Integrated Circuit � pour circuit intégré spécifique à une application) Les FPGA sont très répandus dans l'électronique, car ils offrent un ratio ressources/coût très favorable. Les technologies des FPGA sont classées selon les trois types suivants : - anti-fuse ; - flash ; et - RAM-based (RAM étant l'acronyme de � Random Acces Memory � pour mémoire à accès aléatoire). A ce jour, pour palier au problème de l'impact des Neutrons cosmiques, appelé � SEU � (acronyme de � Single event upset � pour perturbation par un événement unique) dans des environnements radiatifs naturels, les deux premières technologies citées sont souvent utilisées, car tolérants aux fautes. Pour se prémunir de l'impact du rayonnement radiatif naturel dans l'électronique, une des solutions est d'utiliser des composants FPGA de technologie anti-fuse ou flash. Ces composants, grâce à leur technologie et gravure de cellule, sont robustes aux � bits flips � et, en conséquence, aucune protection n'est requise. Cependant leurs inconvénients comportent que : - certaines technologies comme antifuse ne permettent pas la reprogrammation du composant ; il y a, alors, obligation de dessouder et de changer de composant en cas d'évolution ; - il y a peu de fournisseurs et donc une gestion de la dissemblance difficile ; - du fait de la technologie, les performances, notamment en termes de fréquences, sont limitées ; - du fait de la technologie, les matrices proposées sont limitées ; - les outils sont moins innovants, car ils ont moins d'utilisateurs et donc moins de correcteurs (� debuggeurs �). Le FPGA de type RAM-based, par sa technologie, est performant, offre des matrices logiques importantes et une reprogrammation in-situ (sur carte). De ce fait, il est fortement utilisé dans l'industrie. Cependant, il possède l'inconvénient d'être sensible au � bit-flip �, c'est-à-dire changement de valeur d'une unité binaire, ou bit, ce qui rend difficile à ce jour son utilisation dans des environnements radiatifs. La présente invention vise à remédier à ces inconvénients. A cet effet, selon un premier aspect, la présente invention vise un dispositif permettant l'utilisation d'un composant programmable dans un environnement radiatif, caractérisé en ce qu'il comporte : - un moyen de détection d'erreur dans ledit composant programmable due à un rayonnement, - un moyen de blocage d'au moins une sortie dudit composant lors de la détection d'une erreur et - un moyen de correction de ladite erreur. Grâce à ces dispositions, on obtient une architecture tolérante aux fautes (� Fault tolerant �) pouvant utiliser des composants FPGA de type RAM- Based. En effet, les moyens succinctement décrits ci-dessus, permettent de détecter l'impact d'une agression sur le composant programmable, et dans le cas d'une agression, d'interdire la diffusion des informations à l'extérieur de ce composant, pendant que l'erreur est corrigée. La présente invention trouve, notamment, des applications dans les systèmes électroniques critiques tels que les systèmes avioniques, spatiaux, nucléaires, automobiles, médicaux ou ferroviaires. Selon des caractéristiques particulières, le dispositif objet de la présente invention, tel que succinctement exposé ci-dessus, comporte un moyen de mémorisation double des données conservées dans ledit composant. Ainsi, dans le cas où on utilise une mémoire pour de la sauvegarde de données, en doublant la sauvegarde des données en mémoire, on reprend rapidement un état fonctionnel stable. Selon des caractéristiques particulières, le moyen de détection d'erreur compare au moins deux mémorisations de données. Ainsi, le moyen de détection d'erreur comporte un moyen de relecture du contenu de la mémoire du composant et de comparaison à un contenu de référence. Cette relecture et cette comparaison sont connues sous le nom de � readback �. Selon des caractéristiques particulières, le moyen de blocage est adapté à bloquer les sorties numériques de la fonction logique réalisée par ledit composant. En effet, ce sont les signaux émis sur ces sorties qui peuvent être perturbées, en cas de bit-flip sur le composant. Selon des caractéristiques particulières, le moyen de détection d'erreur comporte un moyen de vérification de données redondantes. Selon des caractéristiques particulières, le moyen de correction d'erreur met en oeuvre des données redondantes. Ces données redondantes permettent de contrôler l'intégrité des données conservée par le composant programmable, par blocs de données. A chaque bloc de données est associé un bloc de contrôle appelé � code de contrôle �, par exemple le code � CRC � (acronyme de � Cyclic Redundancy Check � pour contrôle de redondance cyclique). Selon des caractéristiques particulières, le moyen de correction d'erreur est adapté à effectuer une reconfiguration totale du composant. On note que la re-programmation totale du FPGA peut être effectuée avec sa matrice de référence. Ceci a pour effet de corriger l'erreur détectée et de réinitialiser le composant. Les données de sortie du FPGA ne restent alors erronées que pendant une durée correspondant au délai de détection et au délai de redémarrage du système. Selon des caractéristiques particulières, le moyen de correction d'erreur est adapté à effectuer une reconfiguration partielle du composant. Cette reconfiguration partielle correspond à une correction locale de la matrice ou a été détectée l'erreur. Cette reconfiguration ne nécessite pas de ré-initialisation du système. Après correction, le FPGA reprend un fonctionnement normal. Selon des caractéristiques particulières, le moyen de blocage comporte un moyen de conservation, en mémoire tampon, des données générées par le composant et/ou par des composants interfacés entre le composant et la mémoire tampon. Cette conservation en mémoire tampon est connue sous le nom de � Bufferisation �. Selon des caractéristiques particulières, le moyen de conservation possède une latence supérieure ou égale au délai maximal de détection d'une erreur par le moyen de détection d'erreur. Ainsi, aucune donnée erronée ne peut sortir du dispositif. Selon des caractéristiques particulières, le dispositif objet de la présente invention, tel que succinctement exposé ci-dessus comporte un moyen de détection de continuité d'une erreur et un moyen de désactivation d'une zone mémoire du composant adapté à interdire l'utilisation d'une zone mémoire comportant l'erreur continue, en cas de telle détection de continuité d'une erreur. On interdit ainsi l'utilisation d'une partie de la mémoire endommagée irrémédiablement. Selon des caractéristiques particulières, le dispositif objet de la présente invention, tel que succinctement exposé ci-dessus comporte un moyen de détection de continuité d'une erreur et un moyen de désactivation du moyen de détection d'erreur en cas de telle détection de continuité d'une erreur. On évite ainsi un blocage du système incorporant le composant. Selon des caractéristiques particulières, le dispositif objet de la présente invention, tel que succinctement exposé ci-dessus, comporte un moyen de diagnostic adapté à compter les erreurs détectées par le moyen de détection d'erreur. Un tel moyen de diagnostic est connu sous le nom de � BITE �. Selon un deuxième aspect, la présente invention vise un procédé permettant l'utilisation d'un composant programmable dans un environnement radiatif, caractérisé en ce qu'il comporte : - une étape de détection d'erreur dans ledit composant programmable due à un rayonnement, - une étape de blocage d'au moins une sortie dudit composant lors de la détection d'une erreur et - une étape de correction de ladite erreur. Selon un troisième aspect, la présente invention vise un programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé objet de la présente invention, tel que succinctement exposé ci-dessus. Les avantages, buts et caractéristiques de ce procédé et de ce programme d'ordinateur étant similaires à ceux du dispositif objet de la présente invention, tel que succinctement exposé ci-dessus, ils ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite, dans un but explicatif et nullement limitatif, en regard des dessins annexés, dans lesquels : - la figure 1 représente, schématiquement, un mode de réalisation particulier du dispositif objet de la présente invention et -la figure 2 représente, sous forme d'un logigramme, des étapes mises en oeuvre dans un mode de réalisation particulier du procédé objet de la présente invention. Comme on l'observe en figure 1, dans un mode de réalisation particulier du dispositif objet de la présente invention, un composant programmable 105 présentant une entrée de données 110 et une sortie de données 115 reliée à une mémoire tampon 120 possédant une sortie de données 125. Un moyen de détection et correction d'erreur 130 est relié au composant 105, à la mémoire tampon 120, par l'intermédiaire d'un lien 135, et à une mémoire 140, elle-même reliée au composant 105. Le composant programmable 105 est, dans le mode de réalisation décrit et représenté, un FPGA de type RAM-based, composant FPGA dont la matrice de configuration est de technologies RAM, c'est à dire volatile. Le composant 105 réalise une fonction logique de type connu dans un système électronique ou informatique (non représenté). Ce composant 105 peut avoir ces ressources altérées suite à un changement de valeur binaire, ou � bit-flip �, du à l'environnement radiatif du composant 105. L'entrée de données 110 représente les entrées numériques de la fonction logique du composant 105. La sortie de données 115 représente les sorties numériques de la fonction logique du composant 105. Ces sorties peuvent être perturbées, en cas de changement de valeur binaire, ou � bitflip �, due à l'environnement radiatif du composant 105. Le moyen de détection et correction d'erreur 130 est adapté à détecter une erreur survenant dans le composant 105, suite à un changement de valeur binaire dû à l'environnement radiatif du composant 105. Ce moyen de détection et correction d'erreur 130 peut utiliser, par exemple : - soit une relecture du contenu du composant 105 et comparaison à une matrice de référence conservée en mémoire 140, comme exposé ci-dessous (� Readback �), - soit une vérification par codes de contrôle, par exemple des codes de redondance cyclique CRC, contenant des données redondantes par rapport aux blocs de données auxquels ils se référent. En effet, un SEU sur le composant FPGA 105 peut entraîner une erreur fonctionnelle, et cette erreur peut se propager sur les sorties 115 et/ou 20 sur la mémoire de données 140. Pour palier au problème de corruption de données dans la mémoire 140, préférentiellement, on divise son espace mémoire en N parties, un espace de travail et N-1 espaces de référence. Le composant 105 n'ayant pas accès aux espaces de référence, il ne peut donc � polluer � que l'espace de travail de 25 la mémoire 140. Le moyen de détection et correction d'erreur 130 permet de détecter une erreur dans le composant FPGA 105, de bloquer les sorties par l'intermédiaire de la liaison 135 et du buffer 120, et de gérer les espaces de travail et de références du composant 140. Un espace de travail pollué est 30 désactivé temporairement puis peut redevenir une espace de référence (quand, après correction d'erreur, il ne se trouve pas d'erreur continue et permanente dans cet espace). Dans chacun des espaces de référence, chaque donnée à protéger est écrite une fois et le moyen de détection et correction 130 lit chacune des valeurs de l'espace de travail et considère qu'elle est erronée lorsqu'elle est différente des valeurs de référence correspondantes. On note que, si on veut être tolérant à un nombre � n � d'erreurs unitaires, ou � bit-flip �, dans des cycles successifs, on réalise un nombre supérieur ou égal à � n+1 � de copies de chaque données binaire. A la suite d'un cycle de lecture complet des données à protéger dans le composant 105, sans détection d'erreur, on permute l'espace de travail, où sont lues les données utilisées par la fonction logique, et un des espaces de référence, où sont conservées les duplications des données à protéger. De même, à la suite de la détection d'une erreur dans l'espace de travail, on commute un espace de référence en l'espace de travail. Dans des variantes, le moyen de détection et correction utilise, de manière connue, des codes de contrôle pour détecter et, éventuellement, corriger les valeurs erronées. Dans les deux cas, entre l'instant de détection d'une erreur et l'instant de sa correction, le lien 135 véhicule un signal inhibant la lecture de la mémoire tampon 120. On note que le moyen de détection et correction 130 peut aussi effectuer la correction de chaque erreur détectée par une reconfiguration partielle ou totale de la matrice du composant 105, à partir des données conservées dans la mémoire 140. Dans le cas de la reconfiguration totale, la re-programmation totale du composant 105 est effectuée avec sa matrice de référence. Ceci a pour effet de corriger l'erreur et de réinitialiser le système. Les données de sortie du composant 105 sont alors restées erronées pendant une durée maximum correspondant au total du délai de détection d'erreur et du délai de redémarrage du système. Dans le cas de la reconfiguration partielle, on effectue une correction locale de la matrice, dans la zone où a été détectée l'erreur. Cette reconfiguration ne nécessite pas de ré-initialisation du système. Après correction, le composant 105 reprend un fonctionnement normal. Les données de sortie du composant 105 sont alors erronées pendant une durée maximum correspondant au total du délai de détection de l'erreur et du délai de correction locale. La mémoire tampon 120 permet une conservation pendant une durée limitée, ou � Bufferisation �, des données générées par le composant 105 ou par des composants interfacés entre la mémoire tampon 120 et le composant 105. Préférentiellement, le délai de conservation des données dans la mémoire 120, ou latence, est supérieur ou égal au délai maximal de détection d'une erreur par le moyen de détection 130. Préférentiellement, le moyen de détection et correction d'erreur 130 est adapté à détecter si une zone de la matrice de configuration du composant 105 représente une valeur binaire altérée (� upset �). En cas d'une telle détection, le moyen de détection est adapté, soit à interdire l'utilisation de cette zone de mémoire, c'est-à-dire à la désactiver, soit à procéder à la désactivation de la détection d'erreur. Dans les deux cas, il s'agit de débloquer le fonctionnement du système. Préférentiellement, le moyen de détection et correction d'erreur 130 est adapté à compter les erreurs et à fournir un diagnostic (� BITE �) spécifique 20 aux SEUs. Bien que, dans la description d'un mode de réalisation particulier du dispositif objet de la présente invention, ci-dessus, le même moyen 130 réalise, à la fois les fonctions suivantes : - la détection d'erreur dans le composant programmable 105 due à 25 un rayonnement, - le contrôle de blocage d'au moins une sortie du composant 105, lors de la détection d'une erreur et -la correction de chaque erreur détectée, - le contrôle de la reconfiguration totale ou partielle du composant 30 105, - la détection de continuité d'une erreur, - la désactivation d'une zone mémoire du composant pour interdire l'utilisation d'une zone mémoire comportant l'erreur continue, en cas de telle détection de continuité d'une erreur, -la désactivation du moyen de détection d'erreur, en cas de telle détection de continuité d'une erreur et - le diagnostic en comptant les erreurs détectées, ces fonctions peuvent, dans d'autres modes de réalisation, être réalisées par une pluralité de moyens. Comme on l'observe en figure 2, pour la mise en oeuvre d'un mode de réalisation particulier du procédé objet de la présente invention, on effectue, d'abord, de manière connue en soi, une étape 205 de configuration et de lancement du système. On note que si la détection et/ou la correction d'erreur utilisent au moins un espace de référence. Dès l'étape 205 et lors de toute écriture de données à protéger, on effectue chaque copie dans un espace de référence. Puis, au cours d'une étape 210, on effectue un cycle de vérification des données à protéger conservées par le composant 105. Au cours d'une étape 215, on détermine si au moins une erreur a été détectée. Si non, on poursuit l'étape 210. Si une erreur a été détectée, au cours d'une étape 220, on effectue un blocage de la sortie des données issues du composant 105, ici en bloquant la lecture des données conservées par la mémoire tampon 120. Puis, au cours d'une étape 225, on détermine si une reconfiguration totale va être effectuée, en fonction du mode de correction d'erreur mis en oeuvre par le moyen de détection et correction d'erreur 130. Si oui, on retourne à l'étape 205. Si non, au cours d'une étape 230, on effectue la correction d'erreur, par exemple en utilisant au moins une valeur de référence conservée dans un espace de référence ou une reconfiguration partielle. Puis, au cours d'une étape 235, on effectue un déblocage de la sortie bloquée au cours de l'étape 220. Le système est donc alors, de nouveau, opérationnel. Au cours d'une étape 240, on détermine si une détérioration continue d'au moins une donnée binaire à protéger est constatée. Si non, on retourne à l'étape 210. Si oui, au cours d'une étape 245, on procède au déblocage du système. Par exemple, on interdit l'utilisation d'une zone de mémoire contenant la donnée continuellement erronée ou on arrête la vérification de contenu du composant. Ainsi, on effectue une détection de continuité d'une erreur et une désactivation d'une zone mémoire du composant pour interdire l'utilisation d'une zone mémoire comportant au moins une erreur continue. On interdit ainsi l'utilisation d'une partie de la mémoire endommagée irrémédiablement. En variante, lors de la détection de continuité d'une erreur bloquante, on désactive la détection d'erreur. Comme on le comprend à la lecture de la description, la mise en oeuvre de la présente invention permet de réaliser une architecture de circuit tolérante aux erreurs et utilisant des composants sensibles aux radiations, par exemple des FPGA RAM-Based. REVENDICATIONS 1. Dispositif permettant l'utilisation d'un composant programmable (105) dans un environnement radiatif, caractérisé en ce qu'il comporte : - un moyen (130) de détection d'erreur dans ledit composant programmable due à un rayonnement, - un moyen (130, 135, 120) de blocage d'au moins une sortie (125) dudit composant lors de la détection d'une erreur et - un moyen (130, 140) de correction de ladite erreur. 2. Dispositif selon la revendication 1, caractérisé en ce qu'il comporte un moyen de mémorisation double des données conservées dans ledit composant. 3. Dispositif selon l'une quelconque des revendications 1 ou 2, caractérisé en ce que le moyen (130) de détection d'erreur compare au moins deux mémorisations de données. 4. Dispositif selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le moyen (130) de détection d'erreur comporte un moyen de vérification de données redondantes. 5. Dispositif selon l'une quelconque des revendications 1 à 4, caractérisé en ce que le moyen (130) de correction d'erreur est adapté à effectuer une reconfiguration totale ou partielle du composant comportant la reconfiguration de chaque donnée erronée détectée par le moyen de détection d'erreur. 6. Dispositif selon l'une quelconque des revendications 1 à 5, caractérisé en ce que le moyen (130, 135, 120) de blocage comporte un moyen de conservation, en mémoire tampon (120), des données générées par le composant et/ou par des composants interfacés entre le composant et la mémoire tampon. 7. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comporte un moyen (130) de détection de continuité d'une erreur et un moyen de désactivation d'une zone mémoire du composant (105) adapté à interdire l'utilisation d'une zone mémoire comportant l'erreur continue, en cas de telle détection de continuité d'une erreur. 8. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comporte un moyen (130) de détection de continuité d'une erreur et un moyen (130) de désactivation du moyen de détection d'erreur, en cas de telle détection de continuité d'une erreur. 9. Dispositif selon l'une quelconque des revendications 1 à 8, caractérisé en ce qu'il comporte un moyen (130) de diagnostic adapté à compter les erreurs détectées par le moyen de détection d'erreur. 10. Procédé permettant l'utilisation d'un composant programmable dans un environnement radiatif, caractérisé en ce qu'il comporte : - une étape (210, 215) de détection d'erreur dans ledit composant programmable due à un rayonnement, - une étape (220) de blocage d'au moins une sortie dudit composant lors de la détection d'une erreur et - une étape (225, 230) de correction de ladite erreur.