FR 3082968 A1 20191227 FR 1855483 A 20180621 L'invention concerne le domaine des procédés de protection d'un FPGA contre des radiations naturelles. ANRIERE PLAN DE L'INVENTION Dans l'espace, un FPGA (pour Field-Programmable Gate Array) est soumis à un environnement radiatif spatial résultant de plusieurs phénomènes parmi lesquels on trouve le rayonnement cosmique, les éruptions solaires et le vent solaire. De même, dans l'atmosphère, un FPGA est soumis à un 10 environnement radiatif atmosphérique résultant notamment de l'interaction du rayonnement cosmique avec ',es atomes de l'atmosphère. Un tel FPGA est donc exposé à des ions lourds et à des protons résultant de radiations naturelles. 15 Tl est possible que ces particules perturbent le FPGA et, notamment, produisent des Single Event gpsets (SEUs) sur les bascules flip-flop du FPGA. Les valeurs binaires des données précédemment échantillonnées par les bascules flip-flop sont alors inversées. 20 On voit ainsi sur la figure i une. particule I? qui provoque une inversion de la sortie d'une bascule flipflop I: la sortie est à 1 au lieu d'être à O. En référence à la figure 2, un moyen existant pour corriger ce type de perturbation consiste à tripliguer 25 les bascules 2 sensibles, et à associer aux trois bascules 2 Lrlpliquées un voteur majoritaire 3- Of corrige les entrées des bascules 2 à partir du résultat du vote réalisé par le voteur 3. On parle alors de Local Triple Modular Bedundancy, ou de redondance triple 30 modulaire locale. Ce mécanisme fonctionne très bien à condition (qu'une seule bascule 2 sur les trois bascules 2 soit en erreur. On appelle dans la suite de ce document « cellule TNP,. » une cellule de redondance triple modulaire o comprenant un ensemble de trois bascules 2 tripliquées et d'un voLeur 3. Dans le cadre d'un projet de développement visant à mettre en oeuvre une Unité de Mesure inertielle d'un lanceur spatial, un FPGA a été exposé à un environnement d'ions lourds et de protons par l'utilisation d'un accélérateur de particules. On a constate que l'utilisation de la TMR permet de diviser seulement par deux les erreurs par rapport à l'utilisation de bascules 10 non tripliquées. Cette amélioration est insuffisante au vu des exigences incluses dans les spécifications techniques associées à l'Unité de Mesure Inertielle. Après ana7.yse, on a constaté que l'outil de placement routage utilisé pour réaliser la placement et 15 le rputage du FPGA avait tendance ê « coller » les trois bascules d'une même cellule TMR dans une optique d'optimisation des timings. On a aussi constaté que les particules auxquelles a été soumis le FPGA sont chacune susceptibles de perturber une zone de sur:Lace supérieure 20 à la surface occupée par une unique bascule. Une même particule peut donc toucher deux bascules d'une même cellule TMR et corrompre son fonctionnement. On parle ici de Aln7ftipie nit Upsets (MP3U). Ainsi, sur la figure 3, on constate que, comme 25 l'état des sorties dfl deux des bascules 5 de la cellule TMR 6 est inversé, le voteur 7 n'est pas capable de corriger efficacement les effets de la particule Une première solution pour pallier oé problème consisterait ià utiliser une technologie de FPGA 30 présentant une finesse de gravure plus large. Plus la gravure est large et plus les bascules sont naturellement éloignées les unes des autres, avec pour effet une diminution de leur sensibilité aux MU lors de: l'utilisation de la TMR. Malheureusement, plus la gravure 35 est large et moins le FPGA est rapide. Les besoins en ut calcul et en bande passante de l'Unité de Mesure Inertielle ne permettent pas l'utilisation de cette solution. Une deuxième solution consisterait â prendre chaque sous-module du FPGA et à tripliquer individuellement chaque sous-module, tout en s'assurant que los trois instances d'un même sous-module sont bien physiquement séparées. Un voteur peut alors discriminer l'une des trois instances en effectuant un vote sur les trois 10 résultats. Néanmoins, cette solution présente de nombreux inconvénients. Tout d'abord, elle nécessite une très grande quantité de logique puisque l'ensemble des sous-modules sont tripliqués (dans la TMR de bascules, seules les bascules sont tripliguées, pas la partie 15 combinatoire). Par conséquenL, il peut s'avérer nécessaire de partitionner cette solution sur plusieurs FPGAs, ou tout du moins sur un nombre plus important de FPGAs. De plus, cette solution présente des limites lors de calculs récursifs. En effet, si une première instance 2G du sous-module présente une défaillance, il n'est alors pas possible de corriger cette défaillance, à moins de recharger le contexte complet du sous-module à partir du contexte de l'une des deux autres instantes, ce qui est techniquemant compliqué. Ainsi, si une deuxième instance 25 du sous-module présente également une défaillance après que la première instance ait défailli, te vofeur ne peut plus taire de correction et le sous-module complet est alors déclaré hors-fonctionnement Une troisième solution consisterait à prendre chaque 30 sous-module du FPGA et à dupliquer individuellement chaque sous-module, tout_ en s'assurant que les deux inc Lances d'un même sous-module sont bien physiquement séparées. Ensuite, un comparateur peut déterminer si les deux instances fournissent le Même résultat, indiquant 35 ainsi un bon fonctionnement_ Dans le cas contraire, il 4 n'est pas possible d'identifier l'instance défaillante et il devient nécessaire de relancer le ou les calculs. L'avantage de cette solution est qu'elle nécessite moins de ressources par rapport à une Lriplication des sous- . modules (voir la deuxième solution). Cependant, cette troisième solution implique une complexité plus importante. De plus, elle nécessite de dupliquer toute la partie combinatoire contrairement à une TMR de bascules qui ne triplique Que les bascules (en général, le design 10 d'un FPGA utilise beaucoup plus de logique combinatoire que de bascules). Enfin, cette troisième solution est Problématique lors do calculs récursifs, car l'erreur d'un sous-module va s'accumuler dans le temps. Une quatrième solution consisterait à trApliquer l'ensemble des bascules, à utiliser un voteur avec retdur pour corriger la bascule défaillante, et à positionner « à la main » toutes les bascules. Les bascules sont alors suffisaMment espacées afin de se prémunir de l'effet MBU. C'est une solution intéressante car elle 20 permet, avec l'utilisation de ressources réduites, de se prémunir des MEC et surtout d'avoir une correction à chaque coup d'horloge de la bascule défaillante. Ainsi, il est tout à fait possible d'effectuer des calculs récursifs là où les solutions à base de duplication ou de 25 triplication de sous-modules, telles que détaillées précédemment, présentent des limites. Par contre, le positionnement manuel des bascules est un travail très long et fastidieux qui nécessite de multiples itérations afin d'atteindre les timings souhaftrés, mais surtout qui 30 demande à étru refait en partie ou complètement lorsque le design évolue. C'est donc une solution en théorie intéressante mais en réalité non pérenne et très risquée. Une cinquième solution consisterait à utiliser un FPGA « durci », c'est-à-dire résistant aux radiations 35 naturelles. Cette solution parait en théorie très intéressante puisque ces composants peuvent avoir des TMR. de bascules directement dans leur silicium, Cependant, un tel FPGA présente un coût récurrent 0,rtrêmement élevé. OBJET DE L'INVENTION L'invention a pour objet un procédé de protection d'un FPGA contre des radiations naturelles, gui ne diminue pas les performances du FPGA, qui soit efficace, simple à mettre en oeuvre et peu coûteux. RESUME DE L'INVENTION 10 En vue de la réalisation de ce but, on propose un procédé de protection d'un FPGA contre des radiations naturelles, le PESA. Présentant une surface divisée en plusieurs zones, le procédé de protection comprenant les étapes de 15 - définir au moins une catégorie de signaux contraignants, la catégorie de signaux contraignants étant définie pour qu'un outil de placement routage prédéterminé ne puisse router plus d'un nombre maximal déterminé de signaux contraignants différents vers chaque 20 zone de la surface du FPGA - répliquer un module logique initial pour obtenir une pluralité de modules logiques répliqués formant une cellule logique répliquée ; - associer des signaux contraignants aux modules 25 logiques répliqués, de sorte que le nombre de signaux contraignants associés à la cellule logique répliquée soit supérieur au nombre maximal déterminé pour forcer l'outil de placement routage à placer les modules logiques répliqués du la cellule logique répliquée dans 30 des zones distinctes de la surface du FPGA. Grâce au procédé do protection selon l'invention, les modules logiques répliqués (par exemple des bascules flip-flop) de la cellule logique répliquée (par exemple une cellule TMR) sont places automatiquement par l'outil 35 de placement routage dans des zones distinctes du FPGA. Les modules logiques répliqués d'une rame cellule logique répliquée sont ainsi espacés, ce qui permet de réduire le risque de survenue d'un MM. On protège donc efficacement le FPGA contre les radiations naturelles sans diminuer ses performances et de manière Simple et peu coûteuse. On propose aussi un FPGA dans lequel est mis en oeuvre le procédé de protection qui vient d'être décrit. On propose en outre une carte 'électrique sur Laquelle est monté ledit FPGA. On propose aussi une Unité de Mesuré inertielle comportent une carte électrique telle que colle décrite plus tôt. L'invention sera mieux comprise à la lumière de la 15 description qui suit d'un made de mise on oeuvre particulier non limitatif de l'invention. BREVE DESCRIPTION DES DESSINS Il sera fait référence aux dessins annexés, parmi lesquels : 20 - la fipure 2 représente une bascule flip-flop - la tigure 2 représente une cellule 7MR subissant un SEO ; la figure 3 représente une cellule TMR subissant un MBU ; 25 la figure 4 représente des buffers globaux de rangée et des groupes logiques ; - les figures S et 6 illustrent des étapes.du procédé de protection selon l'invention ; - la figure 7 représente une couche logique d'un 30 FPGA. DESCRIPTION DEMAILLEE DE L'INVENTION L'invention est ici mise en oeuvre dans un FPGA de la famille IGL002 fabriqué par le fabricant de composants Microsemi. Le FPGA est fabriqué avec une finesse de 35 gravure dc 65nm. L'outil utilisé pour le placement routage du FPGA est un outil de placement routage de la famille Liber°. En référence à la figure 4, la couche logique 10 du formée sur silicium, présente une surface qui est divisée en de nombreuses zones. Chaque zone est ici définie comme comportant un gr dupe logique 11 (ou cluster). Chaque groupe logique. 11 comprend ici douze bascules flip-flop, douze tables de correspondance (ou IUT, pour Look-gp Table) et douze buffers. 10 La couche logique 10 du FPGA comprend aussi des ressources de routage, parmi lesquelles on trouve ressources de routage de signaux globaux. Les globaux comprennent 311 des signaux d'horloge signaux du reset. lb Les ressources de routage de signaux globaux comprennent des buffers globaux 12 (Global Buffet) et des buffers globaux de rangée 13 (ou Row Global Buffet.). Les buffers. globaux 12 sont ici au nombre de 8 (leur nombre dépend de la taille du FPGA, certains EPGAs de la 20 même famille en ont 16). Chaque buffer global 12 est un multiplexeur qui génère un signal global indépendant. Il peut être piloté à partir de plusieurs sources, par exemple depuis une horloge externe ou un signal logique interne. 25 Les buffers globaux du rangée 13 sont situés sur deux bandeaux verticaux 14 intérieur du FPGA. Chaque buffer global de rangée 13 pilote les groupes logiques 11 situés sur une branche do gauche ct une branche de droite du buffer global do rangée 13. 30 Au moment du routage du FUCA, les signaux globaux provenant des buffers globaux 12 sont routés verS les buffers globaux de rangée 13. Les signaux globaux atteignent alors les groupes logiques 11 par l'intermédiaire de signaux globaux de rangée issus des 35 buffers globaux de rangée 13. E: Chaque, bufier global 12 a accès à tous les buffers globaux de. rangés 13. Chaque buffet global de rangée 12 est indépendant et peut aussi être piloté par des signaux. logiques internée:. Les groupes logiques 11 peuvent par ailleurs être.. pilotés pat des signaux logiques internes, dits « inter Clusters. clui né sant pas des signaux globaux. De: manière: classique, lorSga"une. TMR. de bascules: EST utilisée, l'outil de placement routage tente. de 10 positionner au plus proche les bascules d'une même cellule TMR afin d'obtenir des temps de. propagatiOn. les plus. !courts possibles. Ainsi, dans uns. cellule TMR, un signal d'horloge. commun aux: trois bastilles eet roulé' depuis un même buffér global 11 vers les buffers glbtaiulf, de rangée 13, paît,. les' bascules de de. la cellule TMR sont positionnées dans un. même ..gtOupe logique 11 afin de router:. le signal d'horloge depuis un même buffêr global de:. ranges 13, et donc afin de simplifier la logique d'interconnexion avec le voteur associé à. la cellule TMR.. Il en va de. même pour le signal de reset qui provient d'un même buffler .global 12 puis qui est routé vers : buffers globaux de ranges 13. Ainsi, un. groupe Tag:loua: 11 contenant les trois bascule la cellule TMR sera connecte un buffet global de ram...ges 13 qui lui- même produira signal d'horloge et le.. Signal de reset communs aux provenant directement de doux buffers globaux 11 dédiés. Cependant, il est impossible dn router, à l'aide de l'outil de placement routage, plus de trois signaux vers un même groupe logique 11 depuis un môme globaux buffer global de rangée 13. Si chaque bascule d'une même cellule TMR utilise deux signaux globaux tous deux distincts des signaux globaux des autres bascules de la ce]lnle T13, il n'est le M:roiS bascules, ces deux signaux globaux 9 plus possible physiquement de positionner les bascules de la cellule TMR dans un même groupe logique 11, et les bascules sont alors naturellement espacées dans des groupes logiques 11 différents, et donc dans des zones 5 différentes de la surface du FPGA. Ainsi, si chaque bascule d'une même cellule. TmR utilise un signal d'horloge distinct, c'est-à-dire différent de celui des deux autres bascules de la cellule TMR, et un signal de reset distinct, c'est-à-dire 10 différent de celui des deux autres bascules de la cellule TMR, on obtient six signaux globaux par cellule TMR= Comme ces six signaux globaux sont transmis Par six signaux globaux de rangée différents, les trois bascules do la cellule TMR sont positionnées dans des groupes 15 logiques 11 différents et donc espacés. Cet espacement réduit le risque de. MBU : on protège ainsi efficacement le FPGA contre les radiations naturelles, On diminue en outre la sensibilité des bascules aux 20 SET (Single-Event Transients) sur les signaux d'horloge qui sont désormais tripliques. On récapitule maintenant la mise en oeuvre du procédé de Protection selon l'invention. Le procédé de protection selon l'invention consiste 3 9r 4- tout d'abord à définir au moins une catégorie de signaux contraignants, la catégorie de signaux contraignants étant: définie pour qu'un outil de placement routage prédéterminé ne puisse router plus d'un nombre maximal déterminé de signaux contraignants différents vers chaque 30 zone de la surface du FPGA. Ici, en l'occurrence, en référence à La figure 5, on définit doux catégories de signaux contraignants : une première catégorie de signaux contraignants qui comprend des signaux d'horloge H, et une deuxième catégorie de 35 signaux contraignants qui comprend des signaux de reset 10 Rst. La première catégorie comprend un premier signal d'horloge H1, un deuxième signal d'horloge H2 et un troisième signal d'horloge 113. La deuxième catégorie comprend un premier signal de resét Rstl, un deuxième signal de t'o.:7;st Rst2 et un troisième signal de reser Rst3. Il est ici impossible de router plus de trois signaux globaux (c'est-à-dire, plus de trois signaux 10 Parmi des signaux d'horloge et des signaux de reset) vers un mémo groupe logique 11 (ou cluster), donc vers, chaque zoné de la surface du FPGA (car chaquc zone de la surface du FPGA comprend un groupe Logique 11). Le nombre maximal déterminé est donc égal à trots. 5 Puis, le procédé de protection consiste à répliquer 00 module logique initial peur obtenir une pluralité de modules logiques répliqués formant une cellule logique répliquée. Ici, en l'occurrence, en référence à la figure 6, le 20 module logique initial est une bascule flip-flop 20, la réplication est une triplication, et la cellule logique répliquée est une cellule TMR 21. Ensuite, le procédé de protection consiste à associer des signaux contraignants aux modules logiques répliqués, de sorte que le nombre de signaux contraignants associes à la cellule logique répliquée suit supérieur au nombre maximal déterminé pour forcer l'outil de placement routage à placer los Modules logiques répliqués de la cellule logique répliquée dans 30 des zones distinctes de la surface du FPGA. En l'occurrence, on associe ici à chaque bascule 20 un signal d'horloge distinct et un signal rect distinct, soit deux signaux contraignants par bascule et donc six signaux contraignants par cellule TMR : les bascules 20 35 trip:liguées de la cellule TMR 21 sont placées, par l'outil 11 de placement routage dans des zones distinctes de la surface du FPGA. En référence à la fleure 7, on met en oeuvre le procédé de protection selon l'invention avec six cellules TMR. La cellule TMR 30 comprend la bascule 30a, la bascule 30b et la bascule 30c. On associe à la bascule 30a le premier signal d'horloge Hl et le premier signal de reset Rstl. On associe à la bascule 30b le deuxième 10 signal d'horloge H2 et le deuxième signal de reset Rst2. On associe A la bascule 30c le troisième signal d'horloge 113 et le troisième signal de reset R5t3. La cellule TMR 31 comprend la bascule 31a, la bascule 31b et la bascule 31c. On associe à la bascule 15 31a le premier signal d'horloge Hl et le premier signal de reset Rstl. On associe à la bascule 31b le douzième signal d'horloge H2 et le deuxième signal de reset Rst2. On associe à la bascule 31c le troisième signal d'horloge H3 et le troisième signal de reset Red_3. 20 La cellule TMR 32 comprend la bascule 32a, la bascule 32b et la bascule 32c. On associe à la bascule 32a le premier signal d'horloge 51 et le premier signal de reset Rstl. On associe à la bascule 32b le deuxième signal d'horloge H2 et le deuxième signal de reset Rst2. 25 On associe à la bascule 32c le Lroisieme signal d'horloge 1.13 et le troisième- signal de reset Rst3. La cellule TMR 33 comprend la bascule 33a, le bascule 33b et la bascule 33c. On associe à la bascule 33a le premier signal d'horloge Hl et le premier signal 30 de reset Rstl. On associe à la bascule 33b le deuxième signal d'horloge 112 et le deuxième sgnal de reset Rst2. On associe à la bascule 33c le troisième signal d'horloge H3 et le troisième signal de reset Rst3. La cellule TMR 34 comprend la bascule 34a, la 35 bascule 34b et la bascule 34e. On associe à la bascule 34a le premier signai d'horloge Hl et le premier signal de reset Rstl. On associe à la bascule 34b le deuxième signai d'horloge H2 et le deuxième signal de reset Rst2. On associe à la bascule 34e le troisième signai d'horloge R3 et le troisième signal de reser. Rst3. La cellule TMR 35 comprend la bascule 35a, la bascule 35b et la bascule 35c. On associe à le bascule 35a le premier signal d'horloge H1 et le premier signal de reset Rstl. On associe à la bascule 35b le deuxième 10 signal d'horloge H2 et le deuxième signal de reset Rst2. On associe à le bascule 35c le troisième signal d'horloge M3 et le troisiéme signal de reset Rét3. On voit que les bascules d'une même cellule TMR sont placées dans des groupes logiques distincts, c'est--dire dans dos zones distinctes de la surface du FEGA. Bien entendu, l'invention n'est pas limitée au mode de réalisation _décrit mais englobe toute variante entrant dans le champ de l'invention telle que définie par les. revendications. 20 Le FPGA et l'outil de placement routage peuvent bien sûr être différents de ceux décrits ici. Le nombre et le type de signaux contraignants utilisés pourraient eux aussi être différents. La réplication mise en oeuvre n' est pas 23 nécessairement une triplication : REVENDICATIONS1. Procédé de protection d'un FPGA contre des radiations naturelles (P), le FEGA présentant une surface divisée en plusieurs zones, le procédé de protection comprenant les étapes de - définir au moins une catégorie de signaux contraignants (H, Pst), la catégorie de signaux contraignants étant définie pour qu'un outil dé placement 10 routage prédéterminé ne puisse router plus d'un nombre maximal déterminé de signaux contraignants différents H2.., H3, Rat 1, Pst 2, Rst3) vers chaque zone de la surface du FPGA - répliquer un module logique initiai pour obtenir 15 une pluralité de modules logiques répliqués (20, 30a, 30b, 30c, ..., 35a, 35b, 35c) formant une cellule logique répliquée (21, 30,-, 35) ; - associer des signaux contraignants aux modules logiques répliqués, de sorte que le nombre de signaux 20 contraignants associés à la cellule logique répliquée soit supérieur au nombre maximal déterminé pour forcer l'outil de placement routage à placer les modules logiques répliqués de la cellule logique répliquée dans des zones distinctes de la surface du FPGA. 25 2 Procédé de protection selon la revendication dans lequel le modulo logique initial est une bascule flip-flop et la cellule logique répliquée est une cellule de redondance triple modulaire. 30 3. Procédé de protection selon 7'une des revendications précédentes, dans lequel on définit une première catégorie de signaux contraignants qui comprend des signaux d'horloge (Hl, H2, H3). 35 J-4 4. Procédé de protection selon l'une des revendications précédentes, dans lequel on définit une deuxième catégorie de signaux contraignants qui comprend des signaux de reset (Rstl, P.st2, RSt3). Procédé de protection selon les revendications 3 et 4, dans lequel on associe un signal d'horloge et un signal de reset distincts à chaque module logique répliqué. FPGA dans lequel ea.t mis en oeuvre procédé... selon une des revendications précédontes. 7. FPGA selon la revendication 6, le FPGA comprenant des buffers globaux (12), des buffers globaux de rangée (13), et des groupes logiques (11), chaque zone de la surface du FPGA comprenant un groupe logique, le FPGA étant agencé de sorte que des signaux globaux provenant des buffers globaux (12) sont routés vers les buffers globaux de rangée ;13), les signaux globaux atteignant les groupes logiques (11) par intermédiaire de signaux globaux de rangée issus des buffers globaux de rangée 8. Carte électrique sur laquelle est monté un FPCA selon l'une .aLions 6 ou 7. Unité do mesure inertielle comportant une rte électrique, selon la revendication 8.