FR 3023038 A1 20160101 FR 1456080 A 20140627 Procédé de fabrication automatisée d'un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, programme d'ordinateur et circuit électronique associés La présente invention concerne le domaine des circuits numériques électroniques adaptés pour détecter ou masquer des fautes. Il existe différentes techniques, dans les circuits électroniques, permettant de détecter ou masquer des erreurs passagères (en anglais « soft errors ») causées par des activités radioélectriques ou électromagnétiques de type effet singulier transitoire (SEU, « Single Event Upset » en anglais ou SET, « Single Event Transient »). Une première technique est la redondance modulaire triple ou TMR (en anglais « Triple Modular Redundancy »), dans laquelle les éléments matériels d'un circuit électronique sont triplés, les mêmes données d'entrée sont fournies en parallèle à chacun des composants triplés, et des modules de vote associés à ces composants triplés sélectionnent comme résultat fourni par le triplet de composants le résultat commun fourni en parallèle par au moins deux des composants. Cette première technique nécessite cependant un grand nombre de composants, ce qui est un inconvénient important, notamment en termes de compacité des circuits électroniques. Une deuxième technique est la redondance temporelle, typiquement la redondance temporelle triple (TTR), selon laquelle les mêmes données d'entrée sont fournies trois fois successivement au même composant matériel qui délivre trois résultats, et des modules de vote associés au composant sélectionnent comme résultat fourni par le composant le résultat fourni au moins deux fois par le composant parmi les trois résultats. La présente invention concerne plus particulièrement cette deuxième technique, et notamment un procédé de synthèse automatisée d'un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, ledit procédé comprenant une étape mise en oeuvre par ordinateur, selon laquelle pour mettre en oeuvre une fonction de cellule mémoire du circuit électronique, on insère dans le circuit électronique un bloc mémoire comprenant une chaîne de retard comportant N cellules mémoires en série, /\/2, et un bloc de sélection (voteur / détecteur) qui, dans un mode de fonctionnement correspondant à une redondance temporelle d'ordre n1, impliquant n1 réexécutions, n1e1.1,N1, compare le contenu courant des n1 cellules mémoires stockant n1 données d'entrée redondantes successivement fournies au bloc mémoire, et - si n1>2, sélectionne comme données de sortie de la fonction de cellule mémoire, le contenu majoritaire des n1 cellules mémoires et optionnellement délivre en outre un signal de faute si les contenus de deux cellules mémoires diffèrent ; - si n1=2, délivre comme données de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires contenant la donnée redondante courante et délivre en outre un signal de faute si les contenus de ces deux cellules mémoires diffèrent ; - si n1=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. - Si n1>2, le circuit masque El" n12 1 .1 fautes et optionnellement détecte El"-n12 ] fautes, où E est la fonction « partie entière ». Si n2=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. Le document US 7,200,822 B1 est un exemple de circuits avec redondance temporelle triple et plus. La technique qui y est décrite diminue cependant le débit de traitement du circuit. A cet effet, suivant un premier aspect, l'invention propose un procédé de synthèse automatisée d'un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle du type précité caractérisé en ce qu'on insère en outre un bloc de contrôle du circuit adapté pour émettre des signaux de commande des blocs mémoires, et en ce que le bloc de mémoire inséré est adapté pour, en fonction d'un signal de commande de basculement reçu du bloc de contrôle, basculer entre ledit mode de fonctionnement correspondant à une redondance temporelle d'ordre n1 et un autre mode de fonctionnement correspondant à une redondance temporelle d'ordre n2E [1,N] selon lequel le circuit effectue n2 réexécutions, n2n1, dans lequel le bloc de sélection compare le contenu courant de n2 cellules déterminées parmi les N cellules mémoires stockant n2 données d'entrée redondantes successivement fournies au bloc mémoire, et : si n2>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire desdites n2 cellules mémoires ; si n2=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre un signal de faute si les contenus des deux cellules mémoires diffèrent ; si n2=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. L'invention permet d'adapter dynamiquement le compromis entre les corrections/détections de fautes et le débit de sortie du circuit. Une telle redondance temporelle dynamique permet de changer en cours d'exécution le nombre de réexécutions. Quand ce nombre est égal à 1, le circuit fonctionne sans réexécution et sans surcoût. L'adaptation dynamique du niveau de redondance temporelle mise en oeuvre selon l'invention permet notamment d'adapter le fonctionnement du circuit fabriqué selon l'invention aux fluctuations des radiations dans l'environnement du circuit. Une telle redondance temporelle dynamique permet notamment d'obtenir des circuits masquant une erreur à l'aide de moyens équivalent à une redondance temporelle double au lieu de triple. Le principe est de tirer parti des K cycles d'horloge suivant l'occurrence d'une faute pendant lesquels, par hypothèse, aucune nouvelle faute n'aura lieu. Dans un circuit selon l'invention, suite à une détection d'erreur dans un mode de redondance double, le circuit bascule en mode non redondant pour faire une troisième exécution du calcul erroné, sans que le débit observé en sortie du circuit ne change (voir la section « Combinaison de la redondance temporelle dynamique double et de l'enregistrement avec retour arrière » ci-après). Dans des modes de réalisation, le procédé de synthèse automatisée d'un circuit électronique tolérant aux fautes par redondance temporelle suivant l'invention comporte en outre une ou plusieurs des caractéristiques suivantes : - le bloc de mémoire inséré comporte en outre, quand N>2, un bloc de retard supplémentaire disposé en sortie de la chaîne de retard et comportant au moins N 2 1.1 cellules mémoires ; en mode de fonctionnement correspondant à une redondance temporelle d'ordre n, n>2, tous les n cycles, le bloc de sélection sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n cellules mémoires de la chaîne de retard, et chaque tme cycle suivant lesdits n cycles, avec 1i 2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n1 cellules mémoires et optionnellement délivre en outre un signal de faute si les contenus de deux cellules mémoires diffèrent ; - si n1=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre en outre un signal de faute si les contenus des deux cellules mémoires diffèrent ; - si n1=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée ; ledit circuit électronique étant caractérisé en ce qu'il comporte un bloc de contrôle du circuit adapté pour émettre des signaux de commande desdits blocs mémoires, et en ce que chacun desdits blocs mémoires est adapté pour, en fonction d'un signal de commande de basculement reçu du bloc de contrôle, basculer entre ledit mode de fonctionnement correspondant à une redondance temporelle d'ordre n1 et un autre mode de fonctionnement correspondant à une redondance temporelle d'ordre n2 e [1,N], n2n1, dans lequel le bloc de sélection compare le contenu courant de n2 cellules déterminées, parmi lesdites N cellules mémoires, stockant n2 données d'entrée redondantes successivement fournies au bloc mémoire, et : - si n2>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire desdites n2 cellules mémoires ; - si n2=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre un signal de faute si les contenus des deux cellules mémoires diffèrent ; - si n2=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. Ces caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple, et faite en référence aux dessins annexés, sur lesquels : la figure 1 est une représentation d'un circuit numérique avant transformation selon l'invention ; la figure 2 est une vue d'un outil de synthèse automatisée de circuits électroniques tolérants aux fautes dans un mode de réalisation de l'invention ; la figure 3 est une vue d'un circuit numérique après transformation dans un mode de réalisation de l'invention ; la figure 4 est une vue d'un bloc mémoire de la figure 3 dans un mode de réalisation de l'invention ; la figure 5 est une vue du bloc mémoire de la figure 3 dans un mode de réalisation de l'invention correspondant à une redondance temporelle dynamique double ; la figure 6 est une vue du bloc mémoire de la figure 3 dans un mode de réalisation de l'invention correspondant à une redondance temporelle dynamique triple ; la figure 7 représente un exemple de voteur utilisé en figure 6; la figure 8 est une vue d'un bloc mémoire de la figure 3 disposant d'un mécanisme d'enregistrement/retour arrière dans un mode de réalisation de l'invention ; la figure 9 est une vue d'un bloc mémoire de la figure 3 dans un mode de réalisation de l'invention combinant les fonctionnalités de redondance temporelle dynamique double et de mécanisme d'enregistrement/retour arrière ; la figure 10 est une vue d'un circuit numérique dans un mode de réalisation de l'invention correspondant à une redondance temporelle double avec retour arrière ; la figure 11 représente une mémoire tampon d'entrée dans un mode de réalisation de l'invention de redondance dynamique double avec retour arrière ; la figure 12 représente une mémoire tampon de sortie dans un mode de réalisation de l'invention de redondance dynamique double avec retour arrière ; la figure 13 est une vue d'une machine à états finis d'un bloc de contrôle dans un mode de réalisation de l'invention de redondance dynamique double avec retour arrière ; la figure 14 représente des étapes d'un procédé dans un mode de mise en oeuvre de l'invention ; la figure 15 décrit des étapes d'un flot de conception de circuits intégrés dans un mode de réalisation de l'invention. Dans les figures, des références identiques repèrent des éléments similaires. La figure 1 est une représentation générale d'un circuit numérique 10, comprenant une partie combinatoire 11 et une partie séquentielle 12, pilotées par un signal d'horloge clk. La partie combinatoire 11, comportant des portes combinatoires AND, OR, NOT etc., réalise une fonction booléenne sans mémoire 9. La partie séquentielle 12 comporte des cellules mémoires ou Flip-Flops (FF) qui mémorisent chacune un bit, ou Flip-Flops (FF) destinées à mémoriser les données délivrées par la partie combinatoire 11. Une cellule mémoire 13 est représentée en figure 1. Elle reçoit sur un fil d'entrée D un signal si et délivre sur un fil de sortie Q un signal de sortie so (on notera qu'ici une flip-flop de type D est décrite, mais l'invention est bien sûr applicable à tout type de cellule mémoire). Le circuit numérique 10 prend en entrée un vecteur de bits d'entrée primaire PI et délivre en sortie un vecteur de bits de sortie primaire PO à chaque cycle d'horloge. On note Ci , respectivement CO , le vecteur de bits d'entrée, respectivement le vecteur de bits de sortie, de la partie combinatoire 11. On note SI , respectivement SO , le vecteur de bits d'entrée, respectivement le vecteur de bits de sortie, de la partie séquentielle 12. Ces vecteurs satisfont les égalités suivantes : CO = ço(C/) C/ = PI e SO CO = PO e SI (1) où $ est l'opération de concaténation de vecteur. On note vi la valeur du vecteur de bits y au re cycle d'horloge dans le circuit. On nomme y une composante quelconque du vecteur de bits V . Les modèles de faute considérés sont de la forme « au plus m effets singuliers transitoires (SET) tous les K cycles d'horloge », dénotés SET(m,K). Ceci englobe les SEUs directes d'une cellule mémoire et les SEUs conséquence d'un SET dans la partie combinatoire. Selon le modèle de faute SET(1,K), il n'y a pas d'occurrence de faute dans les Kcycles d'horloge suivant la dernière occurrence de faute. Un SET dans la partie combinatoire 11 d'un circuit peut conduire à la corruption non déterministe de n'importe quelle cellule mémoire connectée (par un trajet purement combinatoire) à l'endroit où le SET a eu lieu. Un SET dans la partie combinatoire 11 à un cycle i peut provoquer la corruption de sortie(s) dans PO, et d'entrée(s) dans Si, , ce qui alors cause la corruption de cellules mémoires dans la partie séquentielle 12. Cette dernière corruption est visible au cycle d'horloge i+1. Un SET peut arriver sur n'importe quel fil du circuit (connexions entre portes logiques, cellules mémoire, entrées, sorties). La figure 2 représente un outil 1 de synthèse automatisée de circuits électroniques tolérants aux fautes dans un mode de réalisation de l'invention. Cet outil 1 comprend un microprocesseur 2 et une mémoire 3. Dans la mémoire 3, un programme d'instructions logicielles P est stocké qui, lorsqu'il est exécuté par le microprocesseur 2, est adapté pour mettre en oeuvre les étapes indiquées ci-dessous de transformation automatique du design du circuit. Un tel outil 1 est adapté pour, à partir d'une description d'un circuit numérique de type réseau de portes logiques (en anglais « netlist ») comprenant des portes AND, OR, NOT et des cellules mémoires ou Flip-Flops, effectuer une étape de transformation automatique du design du circuit pour obtenir un circuit transformé, puis pour fabriquer un circuit FGPA ou un circuit ASIC à partir du circuit transformé sous forme de netlist. Les vecteurs en lettres minuscules, par exemple pi , po , représentent les signaux dans un circuit numérique transformé par l'outil de fabrication de circuit numérique qui correspondent aux vecteurs en lettres majuscules, par exemple PI , PO. Ils satisfont aux mêmes égalités (1) indiquées précédemment. Redondance temporelle dynamique Suivant un premier aspect de l'invention, l'outil 1 met en oeuvre une étape de transformation automatique 100 du design du circuit pour obtenir un circuit à tolérance aux fautes par redondance temporelle dynamique. Un circuit tel qu'obtenu après transformation est adapté pour basculer, sans interruption de calcul, d'un mode de fonctionnement selon une redondance temporelle d'ordre n à un mode de fonctionnement selon une redondance temporelle d'ordre m, avec 17n), suite à un signal de commande de basculement de mode indiquant le passage de l'ordre n à l'ordre m, ce qui permet un compromis dynamique entre le débit et la tolérance aux fautes. Dans cette étape de transformation 100, l'outil 1 remplace chaque cellule mémoire 13 d'entrée SI, de sortie SO et prévue dans le circuit d'origine, par un bloc mémoire 14 d'entrée si et de sortie so et ajoute en outre un bloc de contrôle 15 qui génère des signaux de contrôle, comme représenté par les modules 12 et 15 de la figure 3. Le bloc mémoire 14 implémente un mécanisme de redondance temporelle dynamique adapté pour masquer et/ou détecter des fautes causées par des SETs dans au moins un des modes de fonctionnement du bloc mémoire 14. Le bloc mémoire 14 est adapté pour basculer au cours du fonctionnement opérationnel du circuit, d'un mode de fonctionnement selon une redondance temporelle d'ordre n à un mode de fonctionnement selon une redondance temporelle d'ordre m, avec n et m nombres entiers et 17m, suite à une commande de basculement de mode indiquant le passage de l'ordre n à l'ordre m. Dans un mode de réalisation, le bloc de contrôle 15 détermine les signaux de commande du bloc mémoire 14 en fonction notamment de l'ordre n de la redondance temporelle couramment sélectionné pour le circuit. Il est implémenté par exemple à l'aide d'une machine à états finis, par exemple elle-même protégée par TMR. Ci-après on nomme mode n le mode de fonctionnement avec redondance temporelle d'ordre n (n entier naturel) : le flux d'entrée PI du circuit est sur-échantillonné n fois et noté pi, le débit du circuit initial est n fois plus important que le débit du circuit transformé ; le bloc mémoire 14 est adapté pour détecter ou masquer jusqu'à E/112 ] fautes (E[.] représente la fonction « partie entière ») quand n est supérieur ou égal à 2, en fonction de comparaisons entre elles, tous les n cycles d'horloge, des n données successivement mémorisées par le bloc mémoire et correspondant aux n signaux d'entrée si, redondants (dans le cas d'un masquage de faute, la donnée de sortie sélectionnée par le bloc mémoire est la donnée majoritaire parmi les n données comparées). Un bloc mémoire 14 comporte un pipeline de retard dynamique, une ligne de retard supplémentaire et un voteur/détecteur. Le pipeline de retard dynamique est adapté pour, dans un mode de redondance temporelle d'ordre n, mémoriser n signaux successifs fournis en entrée du bloc mémoire. Il est adapté pour modifier dynamiquement sa fonction de retard n en fonction de signaux de commande transmis par le bloc de contrôle 15. La chaîne de retard supplémentaire est adaptée pour, dans un mode de redondance temporelle d'ordre n, mémoriser E n-1 signaux ayant été successivement 2 fournis en entrée du bloc mémoire 14, de manière à permettre la réalisation par le voteur/détecteur 18 de n décisions de vote/détection successives (dans d'autres modes de réalisation, la ligne de retard supplémentaire est adaptée pour sauvegarder plus de signaux ayant été successivement fournis). Le bloc mémoire 14 comporte un voteur/détecteur adapté pour déterminer n décisions de type masquage ou/et détection de fautes, successives, en mode de redondance temporelle d'ordre n, en fonction de données mémorisées dans le pipeline et/ou dans la ligne de retard supplémentaire. Un bloc de mémoire 14 est représenté dans un mode de réalisation, en figure 4. Le pipeline 16 de retard dynamique comporte N (1\12) cellules mémoires 13 disposées en cascade et N-2 multiplexeurs 20 (on notera que d'autres implantations sont possibles : par exemple, on pourrait ne pas utiliser de multiplexeurs 20 et changer le voteur/détecteur pour sélectionerles cellules à comparer/voter. Les N cellules mémoires successives sont nommées respectivement dl, d2, ».., dN. Un multiplexeur 20 est disposé entre chaque cellule d, et chaque cellule d+1, ie[1,N-2] (quand N>2). La cellule dl a pour signal d'entrée le signal si. La cellule dN a pour signal d'entrée le signal de sortie de dN_i. La sortie de chaque cellule d' iE[1,N-2], est délivrée sur l'entrée 0 du multiplexeur 20 disposé entre chaque cellule d, et chaque cellule d,+1. Le signal si est délivré sur l'entrée 1 du multiplexeur 20 disposé entre chaque cellule d, et chaque cellule d,+1. La sortie du multiplexeur 20 disposé entre les cellules d, et d,+1 cellule d' iE[1,N-2], est délivrée sur l'entrée de la cellule d+1. De façon connue, un bus de contrôle, nommé ici modeS, indique à chaque multiplexeur 20, celle de ses entrées 0 et 1 qui doit être délivrée en sortie du multiplexeur 20 (si le signal du bus de contrôle modeS est égal à / : l'entrée 1, recevant si est délivrée en sortie du multiplexeur ; si le signal du bus de contrôle modeS est égal à 0 : l'entrée 0, recevant la sortie de la cellule précédente, est délivrée en sortie du multiplexeur). Ce fonctionnement connu d'un multiplexeur est aussi celui des autres multiplexeurs décrits plus loin et ne sera donc pas rappelé systématiquement. La sortie des cellules d' i=1 à N, est en outre fournie au voteur/détecteur 18 sur le 30 bus de données dataA. Les signaux de contrôle modeS sont fonction du mode de redondance temporelle sélectionné. E n-1 2 La ligne de retard supplémentaire 17 comporte k=E n-1 cellules mémoires d,, 2 ak en série. L'entrée de ai est alimentée par la sortie de dN. L'entrée de dm est alimentée par la sortie de ai , avec j 1. Les contenus de ces cellules sont fournis sur le bus de données dataB. E n-1 de ces cellules sont utilisées par le voteur/détecteur 18 2 pour réaliser les n-1 dernières décisions relatives à n données redondantes en entrée du bloc mémoire 14. Le voteur/détecteur 18 est adapté pour déterminer le signal de sortie so en fonction de données redondantes présentes sur les bus dataA et dataB et pour prendre des décisions de masque et/ou détection d'erreur suivant l'ordre n courant de redondance temporelle. Dans une décision de masquage, le voteur/détecteur compare les entrées qui lui sont fournies et sélectionne comme signal so la valeur majoritaire parmi ces entrées. Si n=1 (mode de fonctionnement = mode 1), il n'y a pas de redondance temporelle. Le débit du circuit transformé est le même que le débit du circuit initial. Il n'y a pas détection, ni correction de fautes. Dans le mode de réalisation décrit, le signal si est fourni en entrée de la cellule dN_i, par contrôle des multiplexeurs 20 (dans d'autres modes de réalisation, par exemple sans multiplexeur 20, il est fourni à chaque cellule). C'est le contenu de la cellule dN_i qui est délivré comme signal so par le voteur/détecteur 18 (ainsi le signal so au cycle i est le signal fourni en entrée du bloc mémoire 14 au cycle i-1). Si n=2 (mode de fonctionnement = mode 2), le signal si est fourni en entrée de la cellule dN_i à un cycle pair 2i ; au cycle 2i+1, le signal si redondant est à son tour fourni en entrée de la cellule dN_i tandis que la sortie de la cellule dN_i est fournie en entrée de la cellule dN. Le voteur/détecteur 18 fournit comme signal so le contenu de dN à chaque cycle. Il compare, au cycle 2i, les données (issues de données d'entrée redondantes) mémorisées dans les cellules dN_i et dN mémoire après qu'elles aient été fournies en entrée du bloc mémoire 14 au cycle 2i-1 et 2i-2, et délivre un signal fail indiquant 0 si les données comparées sont égales (aucune faute détectée) et indiquant 1 si les données comparées ne sont pas égales (faute détectée). Aux cycles impairs, la valeur du signal fail est ignorée car la comparaison effectuée porte sur des données non redondantes. La valeur de ce signal fail est par exemple fournie au bloc de contrôle 15 ou en sortie du circuit. Si n=3 (mode de fonctionnement = mode 3), les cellules dN_2, dN_i et dN sont utilisées ainsi que d,, similairement aux cellules respectives d, d', d" et s de la figure 6 dont le fonctionnement est décrit plus bas. De façon générale, en redondance temporelle d'ordre 173 (mode de fonctionnement = mode n), les cellules du pipeline dN_n+i, d/v_i et dN sont utilisées, ainsi que les cellules de la ligne de retard supplémentaire d, , " d n-1 . Si n est l'ordre du E[-2] mode de redondance couramment sélectionné pour le fonctionnement du circuit, les mêmes données d'entrée sont fournies n fois à la partie combinatoire 11 du circuit qui recalcule n fois le même résultat, qui se retrouve alors progressivement sauvé dans les n cellules mémoires dl, d2, dn du pipeline 16. Ces n résultats redondants constituent le jeu courant de résultats redondants Lorsque ces n résultats redondants sont stockés dans les n cellules d1, d2, dn, le voteur/détecteur 18 prend une première décision en fonction de ces n résultats qui lui sont fournis en entrée sur le bus dataA. Puis les données redondantes en sortie de la cellule dN sont successivement mémorisées dans la ligne de retard supplémentaire 17, qui vont en contenir jusqu'à E n-1 dans les n-1 cycles suivants au cours desquels le 2 décideur/voteur prend n-1 décisions sur les résultats redondants du jeu courant mémorisés dans les cellules mémoires du pipeline 16 et de la ligne de retard supplémentaire 17, via les bus de données dataA et dataB. Ainsi au tme (i Les cas N=2 et N=3 sont détaillés ci-après. Redondance temporelle dynamique double Dans un mode de réalisation de l'invention considéré à présent, la valeur de N est choisie égale à 2, le circuit fabriqué selon l'invention disposant ainsi d'un mécanisme de redondance temporelle dynamique double selon le principe exposé ci-dessus conformément auquel le fonctionnement du circuit peut basculer entre les modes de redondance temporelle d'ordre n=1 et n=2. La transformation 100 comprend donc la mise en oeuvre de moyens de suréchantillonnage double du flux d'entrée Pl qui sont activés lorsque n=2, la substitution de chaque cellule mémoire prévue dans le circuit original par un bloc mémoire 140 et l'ajout d'un bloc de contrôle 15. Dans ce circuit, en référence à la figure 5, le bloc mémoire 140, remplaçant chaque cellule mémoire prévue dans le circuit original, comporte un pipeline 16 comportant les cellules d et d', correspondant respectivement aux cellules dN_i, dN de la figure 4 et un voteur/détecteur 18. Le voteur/détecteur 18 comporte un multiplexeur 21 et un comparateur 22. Le multiplexeur 21 comporte deux entrées 0 et 1. Le signal de sortie so du bloc mémoire est le signal de sortie du multiplexeur. Il est égal soit à l'entrée 1, soit à l'entrée 0 en fonction des signaux de contrôle modeS. Le signal si est fourni en entrée de la cellule d, la sortie de la cellule d est fournie en entrée de la cellule d', en entrée du comparateur 22 et en entrée 0 du multiplexeur 21. La sortie de la cellule d' est fournie en entrée 1 du multiplexeur 21. Le comparateur 22 est adapté pour comparer les valeurs fournies à chaque cycle d'horloge sur ses deux entrées, et délivrer un signal fail=0 quand les valeurs sont égales et un signal fail=1 quand les valeurs diffèrent. Mode n=1 En mode n=1, PI, Vi entier non nul. Au cycle i, le bit si, est donné en entrée de la cellule d. Dans ce mode, le multiplexeur 21 est piloté, par le signal modeS=0 émis par le bloc de contrôle 15, de sorte que la sortie multiplexeur 21, i.e., le signal so, soit toujours égale à l'entrée 0 du multiplexeur i.e., à la sortie de la cellule d. Mode n=2 En mode n=2, le flux d'entrée du circuit est suréchantillonné deux fois : pi 2t-1 = pi 2t = ))I Les cellules d et d' contiennent donc des données redondantes à chaque cycle pair (par convention, le premier cycle est numéroté 0). Par exemple, sii=u, sit=u, alors la paire (d, d') va contenir successivement les valeurs (0,0), (u,0), (u,u) ... en supposant que les valeurs initiales dans (d, d') étaient (0,0). Le voteur/détecteur 18 fournit comme signal so à chaque cycle le contenu de d'. Dans ce mode, le multiplexeur 21 est piloté, par le signal modeS émis par le bloc de contrôle 15, de sorte que sa sortie, i.e., le signal so, soit toujours égale à l'entrée 1 du multiplexeur. La valeur du signal fail retournée par le comparateur 22 n'est pas significative aux cycles impairs, puisqu'alors d et d' ne contiennent pas des données redondantes. A un cycle pair 2i, une valeur de signal fail égale à 1 signale la détection d'une erreur dans la redondance des données alors mémorisées dans d et d', i.e., fournies en entrée du bloc mémoire 140 aux cycles 2i et 2i-1. La redondance temporelle dynamique double selon l'invention permet, en mode n=2, de détecter des erreurs dans le modèle de faute SET(1,K) pour tout f'ç2, et en mode n=1 d'avoir le même débit que le circuit initial. Redondance temporelle dynamique triple Dans un autre mode de réalisation de l'invention considéré à présent, la valeur de N est choisie égale à 3, le circuit fabriqué selon l'invention disposant ainsi d'un mécanisme de redondance temporelle dynamique triple selon le principe général exposé ci-dessus, selon lequel le fonctionnement du circuit peut basculer entre les modes de redondance temporelle d'ordre n=1, n=2 et n=3. La transformation 100 comprend donc la mise en oeuvre de moyens de suréchantillonnage (x n) qui sont activés lorsque n=2 ou n=3, la substitution de chaque cellule mémoire prévue dans le circuit original par un bloc mémoire 141 et l'ajout d'un bloc de contrôle 15. Dans ce circuit, en référence à la figure 6, le bloc mémoire 141, remplaçant chaque cellule mémoire prévue dans le circuit original, comporte un pipeline 16 comportant les cellules d, d' et d", correspondant respectivement aux cellules dN_2, dN_i, dN de la figure 4, la ligne de retard supplémentaire 13 et un voteur/détecteur 18. Un multiplexeur 20, comportant deux entrées 0 et 1, est disposé en amont de l'entrée de la cellule d'. L'entrée de d' est la sortie du multiplexeur 20. Le multiplexeur 20 reçoit sur son entrée 1 le signal si et sur son entrée 0 la sortie de la cellule d. Le signal de commande modeS indique celle des entrées 0 ou 1 à laquelle la sortie du multiplexeur 20 est égale : modeS=0 (n=3), la longueur du pipeline 16 est 3 : la sortie du multiplexeur est fixée égale à l'entrée 0 ; modeS=1 (n=1 ou n=2), la longueur active du pipeline 16 est 2 : la sortie du multiplexeur est fixée égale à l'entrée 1. La ligne de retard supplémentaire 13 comporte une cellule mémoire s correspondant à la cellule d, représentée en figure 4. Le voteur/détecteur 18 comporte deux multiplexeurs 23, 23' et un voteur 24. Le voteur 24 reçoit 3 entrées. Ces 3 entrées sont les sorties de d' et des multiplexeurs 23, 23'. Le voteur 24 compare les trois entrées, sélectionne parmi elles la valeur d'entrée majoritaire, cette valeur sélectionnée constituant le signal de sortie so délivré par le bloc mémoire 141. Le voteur 24 compare en outre les sorties de d' et d" et délivre un signal fail=0 si elles sont égales et un signal fail=1 dans le cas contraire. Un exemple de structure d'un tel voteur 24 est représenté en figure 7, où le signal fail est le résultat d'une comparaison entre a et b, et so est le résultat du vote majoritaire effectué sur les entrées a, b et c. Mode n=3 En mode n=3 (redondance d'ordre 3), en fonctionnement normal (i.e., sans faute), le comportement de tous les blocs mémoires est décrit par les équations suivantes : Vi entier non nul, d,+1 ,±2 s,±4 = so,±3 (2) Les signaux d'entrée et de sortie suréchantillonnés du circuit satisfont les équations (1), à savoir : ^-^- ^,11. coi = poi O sii (3) coi = cii = pii G soi Le flux de bits d'entrée d'origine PI est suréchantillonné 3 fois : 3i P (4) Le signal de contrôle modeS est égal à 0. A partir des équations (2), (3) et (4), il découle que le flux de bits de sortie de la partie combinatoire co après la transformation 100 du circuit est le flux de sortie CO du circuit original suréchantillonné trois fois : CO3i-2 = CO3i-1 = CO3i = CO i Dans ce mode de fonctionnement, les trois cellules d, d', d" ont un contenu égal tous les (31-2) cycles, soit : d31_2 = d'31_2 = d"31_2. A chaque cycle, un vote du voteur/détecteur 18 sélectionnant la valeur majoritaire parmi les contenus des trois cellules d, d', d" masque ainsi une faute. Et seul le résultat de ce vote est fourni via so à la partie combinatoire du circuit. Au premier cycle suivant chaque cycle spécifique où les trois cellules d, d', d" ont un contenu égal, la cellule s mémorise la valeur redondante stockée au cycle spécifique dans d", puis au deuxième cycle suivant, la cellule s mémorise la valeur redondante stockée au cycle spécifique dans d', soit : s3,_1 = d"3,_2 et s3, = d'3,_2, ce qui permet de garder le niveau de redondance nécessaire dans le bloc mémoire. Le vote au cycle spécifique 3i-2 est réalisé sur les contenus des cellules d, d' et d" et le vote est réalisé à la place sur le contenu des cellules d', d" et s les deux cycles suivants, sélectionnant la valeur majoritaire parmi ces trois contenus. Cette fonctionnalité est mise en oeuvre à l'aide du signal de commande fetchA émis par le bloc de contrôle 15: fetchA=1 à chaque cycle 3i-2 (i.e. sortie du multiplexeur 23 est fixée égale à l'entrée 1 du multiplexeur 23) et fetchA=0 les cycles 3i-1 et 3i (i.e. sortie du multiplexeur 23 est fixée égale à l'entrée 0 du multiplexeur 23). Supposons qu'au cycle 3i-2, d, d' et d"comportent une valeur correcte redondante a; le vote a lieu sur (a, a, a) stocké dans (d, d', d') ; le vote au cycle 3i-1 aura lieu sur (a, a, a) stocké dans (d', d", s), d contenant alors la prochaine valeur du bit sur le flux initial, appelons-le b; et au cycle 3i, le vote a lieu sur (b, a, a) stocké dans (d', d", s), d et d' contenant alors chacun la valeur b. Ainsi si d" est corrompu à ce cycle 3i, le vote peut retourner une valeur erronée qui sera propagée au bloc suivant. Mais cette valeur erronée étant précédée de deux valeurs correctes, elle sera corrigée au prochain cycle dans le bloc suivant (un SET supplémentaire ne pouvant survenir alors selon le modèle de faute considéré). Mode n=2 En mode n=2 (redondance d'ordre 2), en fonctionnement normal (i.e., sans faute), le comportement de tous les blocs est décrit par les égalités suivantes : Vi entier non nul, 7i, = = j'i+2 = d",±3 = Si+4 = SOi+2 Pour fixer la sortie du multiplexeur 20 égale à l'entrée 1 du multiplexeur 20, le signal de control modeS est donc fixé à 1 par le bloc de contrôle 15 dans ce mode. Le signal fetchA est fixé égal à 1. La cellule s ne participa pas aux décisions. En mode n=2, le flux d'entrée du circuit est suréchantillonné deux fois : pi 2t-1 = pi 2t = Ph . Le flux de bits de sortie de la partie combinatoire co après la transformation 100 du circuit est le flux de sortie CO du circuit original suréchantillonné deux fois : co2i-1 = col; = CO; Les propriétés de détection sont basées sur l'égalité suivante : Vi entier non nul, 71'2i-1 = (5). - Une nouvelle valeur a sur si est fournie à d et d', puis au cycle suivant est propagée à d" tandis qu'une donnée redondante de valeur a est à nouveau fournie sur Si à d et d'. La détection d'erreur est réalisée par le voteur/détecteur 18 en comparant d' et d" chaque (2i-1)ème cycle, puisqu'en l'absence de faute, leur contenu devrait être égal d'après l'équation (5). Si leur contenu n'est pas égal, un signal fail=1 est émis. so est le résultat du vote (sélectionnant la valeur majoritaire) sur d, d', d" à chaque cycle. Un SET sur si peut corrompre à la fois d et d' et le vote ne masquera pas cette faute. Mais si un SEU a lieu sur l'une des trois cellules d, d', d" lors d'un cycle impair, il sera masqué par le vote. Mode n=1 En mode n=1 (pas de redondance), en fonctionnement normal (i.e. sans faute), le comportement de chaque bloc de mémoire est décrit par les équations suivantes : Vi entier non nul, si, = d,+1 = d',+1 = d"i+2= si+3= soi+i (6) Pour fixer la sortie du multiplexeur 20 égale à l'entrée 1 du multiplexeur 20, le signal de control modeS est donc fixé à 1 par le bloc de contrôle 15 dans ce mode. Le signal fetchA est fixé égal à 1. En mode n=1, le flux d'entrée du circuit n'est pas suréchantillonné : pi; . Le flux de bits de sortie de la partie combinatoire co après la transformation 100 du circuit est le flux de sortie CO du circuit original : co, = CO, . Dans ce mode, le circuit ne dispose pas de propriété de détection de faute, ni de masquage de faute. Les signaux de contrôle correspondants sont fetchA=1 et modeS=1. D'après l'équation (6), en l'absence de faute, d égale d' à chaque cycle d'horloge. Par conséquent, le vote par le voteur/détecteur 18 retourne la valeur de d (et d) à chaque cycle. Formellement co, = d,+1 = d',+1 = d",±2= ci,+1. Si d et/ou d' sont corrompues alors le vote sur {d, d, d'} peut retourner une valeur erronée (sans mettre le signal fail à 1). C'est pourquoi ce mode ne masque ni ne détecte les fautes. La redondance temporelle dynamique triple selon l'invention permet de masquer les SETs du modèle SET(1,K) pour tout K supérieur à 4 cycles. Mécanisme d'enregistrement avec retour arrière Suivant un autre aspect de l'invention qui peut être mis en oeuvre indépendamment de la redondance temporelle dynamique exposée précédemment, l'outil 1 met en oeuvre une étape de transformation automatique 101 du design du circuit pour obtenir un circuit doté d'un mécanisme d'enregistrement de l'état du circuit, cet enregistrement étant déclenché par un signal de commande nommé save, et doté en outre d'un mécanisme de retour arrière de l'état du circuit dans l'état ainsi enregistré, ce retour arrière étant déclenché ultérieurement par un signal de commande nommé rollBack. Pour ce faire, dans une étape de transformation 101, l'outil 1 remplace chaque cellule mémoire 13 d'entrée si, de sortie so et prévue dans le circuit d'origine représenté en figure 1, par un bloc mémoire 30 d'entrée si et de sortie so comme représenté en figure 8, et ajoute en outre un bloc de contrôle qui génère des signaux de contrôle save et rollBack. Le bloc mémoire 30 comporte une cellule mémoire 13 recevant sur son entrée D un signal si, délivrant sur sa sortie Q un signal à l'entrée 0 d'un multiplexeur mux. Le bloc mémoire 30 comporte en outre un bloc d'enregistrement 29 adapté pour enregistrer le signal si qui lui est fourni en entrée quand un signal save égal à 1 lui est adressé. Le signal si ainsi enregistré par le bloc d'enregistrement est fourni en entrée 1 du multiplexeur mux. Le bloc d'enregistrement 29, comporte, dans le cas présent, une cellule mémoire 31, nommée copy. La cellule mémoire 31 stocke, quand un signal save égal à 1 lui est fourni sur son entrée E (enable), le signal si qui lui est fourni sur son entrée D, en parallèle de sa fourniture sur l'entrée D de la cellule 13. Quand save est égal à 0, le signal si n'est pas mémorisé dans la cellule mémoire copy 31. La sortie Q de la cellule copy 31 est fournie en entrée 1 du multiplexeur mux. Le multiplexeur mux délivre en sa sortie le signal so. Le signal so est égal à l'entrée 0 du multiplexeur lorsque rollBack est égal à 0 et est égal à l'entrée 1 du multiplexeur 31 lorsque rollBack est égal à 1. Ainsi, tant que rollBack est égal à 0, la sortie so est égale au contenu de la cellule 13. Quand rollBack devient égal à 1, c'est le contenu de la cellule copy, correspondant à la dernière mise à 1 du signal save, qui est fourni en sortie so. Un même signal save à 1 fourni au cycle i à l'ensemble (ou à un sous-ensemble) des blocs mémoires 30 du circuit permet d'enregistrer dans les cellules copy 31 l'état courant des cellules 13 du circuit au cycle i. Cet état reste mémorisé tant qu'un nouvel signal save à 1 n'est pas fourni. Combinaison de la redondance temporelle dynamique double et de l'enregistrement avec retour arrière Dans un mode de réalisation de l'invention considéré à présent, les aspects de redondance temporelle dynamique double et d'enregistrement avec retour arrière sont combinés. La valeur de N est choisie égale à 2, le fonctionnement du circuit peut basculer entre les modes de redondance temporelle d'ordre n=1 et n=2. Un tel circuit est adapté pour masquer des erreurs en utilisant seulement une redondance temporelle de niveau 2 au lieu d'une redondance temporelle de niveau 3. Pour ce faire, dans une étape de transformation 102, l'outil 1 remplace chaque cellule mémoire 13, d'entrée si et de sortie so, prévue dans le circuit d'origine représenté en figure 1, par un bloc mémoire 40, d'entrée si et de sortie so comme représenté en figure 9, et ajoute en outre un bloc de contrôle 15 qui génère des signaux de contrôle save et rollBack. Une vue du circuit transformé résultant de cette transformation est représentée en figure 10. Une telle transformation implique la mise en oeuvre de moyens de suréchantillonnage double des entrées primaires du circuit qui, dans le mode de réalisation considéré, sont toujours activées indépendamment de la valeur de l'ordre de redondance actif, l'ajout de mémoires tampons d'entrée à tous les entrées primaires PI du circuit initial, et enfin l'ajout de mémoires tampons de sortie à tous les sorties primaires PO du circuit initial. ço(Ci) est calculé deux fois, les résultats sont comparés et si une erreur est détectée, ço(Ci) est calculée une troisième fois, grâce au contenu des mémoires tampons d'entrée. Le flux d'entrée, suréchantillonné deux fois, vérifie : ni 2, 1 = 2, = Ph . Le bloc mémoire 40 comporte ainsi les cellules d et d' disposées en série pour sauvegarder des données redondantes. Il comporte en outre un comparateur EQ comparant le contenu des cellules d et d' avec émission d'un signal fail indiquant le résultat de la comparaison. Le bloc mémoire 40 comporte en outre un bloc d'enregistrement 29 adapté pour mémoriser le signal si qui lui est fourni en entrée quand le signal de contrôle save est mis à 1. La sortie du bloc d'enregistrement est fournie à l'entrée 1 du multiplexeur muxA, tandis que la sortie de la cellule d est fournie sur l'entrée 0 du multiplexeur muxA. Le multiplexeur muxA est piloté par le signal save également. Dans le mode de réalisation considéré, le bloc d'enregistrement 29 comporte les cellules r et r'disposées en série, le signal si est fourni en entrée D de la cellule r, la sortie Q de la cellule r est fournie en entrée D de la cellule r', la sortie Q de la cellule r' est la sortie du bloc d'enregistrement 29. La mémorisation par les cellules r et r' du signal qui leur est fourni sur leur entrée D n'a lieu que lorsque le signal de commande save fourni sur leur entrée E est mis à 1. Un multiplexeur muxB reçoit sur son entrée 1 la sortie mu du multiplexeur muxA et reçoit sur son entrée 0 la sortie de la cellule d'. Le multiplexeur muxB est piloté par le signal de contrôle rollBack. Quand rollBack=0 (similaire au cas modeS=1 dans la redondance dynamique double), la sortie so du multiplexeur muxB est égale à son entrée 0 et quand rollBack=1, la sortie so du multiplexeur muxB est égale à son entrée 1. Quand le signal de contrôle rollback=0 (similaire au cas modeS=1 dans la redondance dynamique double), le mode de fonctionnement est une redondance temporelle d'ordre 2 et la sortie du bloc mémoire so est égale au contenu de la cellule d'. Quand le signal de contrôle rollback=1 (ce qui équivaut au signal modeS=0), le mode de fonctionnement est sans redondance temporelle (i.e., d'ordre 1). La sortie du bloc mémoire so est égale au contenu de la cellule d quand save est égal à 0 et la sortie du bloc mémoire so est égale à la sortie du bloc d'enregistrement, i.e., dans le mode de réalisation considéré au contenu de la cellule r' quand save est égal à 1. Le bloc d'enregistrement 29 permet de mémoriser la valeur de si pendant 4 cycles d'horloge et de permettre au circuit de se repositionner sur cette valeur mémorisée en cas de détection d'erreur. Comme indiqué plus haut, une mémoire tampon d'entrée 50 est en outre insérée après chaque entrée primaire PI du circuit d'origine pour mémoriser les deux derniers bits du flux d'entrée (chaque entrée correspond à une composante du vecteur pi ). Cette mémoire tampon d'entrée 50, représentée en figure 11 dans un mode de réalisation, est implémentée par un pipeline de deux cellules mémoires b et b', pi désigne l'entrée primaire du circuit original. Le signal de contrôle rB est mis à 1 par le bloc de contrôle pendant la phase de récupération, après une détection d'erreur réalisée par le comparateur EQ pendant un cycle impair. Le contenu des cellules b et b' n'est utilisé que lors de la phase de récupération pour ré-exécuter les deux derniers cycles. Ces bits sont fournis à la partie combinatoire 11 du circuit à la place des bits du flux d'entrée. Les cellules b et b' servent aussi à stocker les entrées qui sont fournies pendant ces deux - cycles. Pendant la phase de récupération, le vecteur ci comprend ainsi le vecteur pi qui vient des mémoires tampons d'entrée et le vecteur so en provenance des blocs de mémoire repositionnés. Si l'erreur est détectée au cycle i, alors le retour arrière est réalisé au cycle i+1 et le vecteur pi , le so,_i est fourni à la partie combinatoire, soit exactement le vecteur d'entrée déjà fourni deux cycles auparavant. DePi2 1- Pl' il s'ensuit que b et b' représentent deux bits 17/2t = suréchantillonnés identiques (respectivement distincts) à chaque cycle impair (respectivement pair) : = E''21 1. Puisqu'une faute est détectée au cycle impair, la phase de récupération qui commence un cycle plus tard, va alors lire deux entrées différentes (i.e., pas la même entrée suréchantillonnée) dans b et b', ce qui est pertinent avec le mode sans redondance, i.e., accéléré, mis en oeuvre pendant la phase de récupération. Le comportement des mémoires tampons d'entrée est illustré dans les tableaux 1 et 2. La phase de récupération (mode sans redondance temporelle) perturbe le flux des vecteurs co du circuit par rapport au mode de fonctionnement normal (mode en redondance d'ordre 2). Pour masquer cet effet au niveau des sorties primaires, une mémoire tampon de sortie est insérée avant chaque sortie primaire po (chaque sortie po correspond à une composante du vecteur po ). Une telle mémoire tampon de sortie 60 est représentée dans un mode de réalisation en figure 12. Le signal co provient de la partie combinatoire 11. La mémoire tampon 60 est adaptée pour être tolérante à un SET survenant dans la mémoire tampon 60 ou sur ses sorties. Pour cela, les sorties primaires sont triplées : poA, poB et poC sont les sorties primaires du circuit transformé correspondant à la sortie primaire po du circuit initial. Les mémoires tampons de sortie garantissent qu'au moins deux des sorties triplées sont correctes à chaque cycle pair. Le circuit environnant peut ainsi lire ces sorties au cycle pair et procéder à un vote sur ces sorties lues pour masquer tout SET. Dans des modes de réalisation différents, d'autres blocs de sortie (par exemple, ignorant les fautes aux sorties) ou d'autres spécifications d'interface pourraient être utilisées. Le comportement des mémoires tampons de sortie pendant la phase de récupération est également illustré dans le tableau 2. Les tableaux 1 et 2 ci-dessous illustrent un cas de détection de faute au cycle i. Dans les tableaux 1 et 2, un vecteur V corrompu par un nombre de bits corrompus -^ quelconque est noté t y . Dans les tableaux grisés 1a et 2b sont indiquées les valeurs des signaux qui auraient été obtenues en l'absence de détection de faute. 35 clk K. 1 Ë ï , ' d à r .1. fail save rollBack i-3 I-2 W1-3 Wi-2 W-i-1 W-i Wi-4 Wi-3 Pti-2 W-i-1 Wi-5 Wi-4 Pti-3 Wi-2 Wi-. 3 e si-5 Wi-2 e si-4 Wi-1esi-3 K 1 e 1-s1-2 si-4 si-3 .1-2 e1-1 Si-5 si-4 si-3 ffii-2 Si-5 si-3 si-3 e1_1 Si-7 si-5 si-5 s1-3 ? 0 ? 1 1 0 1 0 0 1-1 0 I 0 0 1+1 K.1-i+1 W-i W-i-1 Wi-1 e Si-3 1-.i ei-1 ei-1 si-3 ? 1 1 1+2 Wi+2 Wi+1 W-i Wi+1® S-i-1 s-i-1 1-s-i s-i-1 ei-1 ? 0 1 1+3 Wi+3 Wi+2 W1+1 ii~3® Si+1 Si+1 si-1 si-1 ei-1 ? 0 1 1+4 W-1+4 Wi+3 Wi+2 pLj+4® .i+3 Si+3 Si+1 Si-1 ei-1 ? 0 1 1+5 Wi+5 Wi+4 Wi+3 1j+5® .i+3 Si+4 Si+3 Si-1 ei-1 ? 1 0 1+6 Wi+6 Wi+5 Ki+4 Wi+6 e .i+4 si+5 .i+4 si+5 .s1-1 0 0 0 1+7 Wi+7 Wi+6 Wi+5 Wi-7 ® si+5 51+6 si+5 si+5 si-1 ? 1 0 1+8 Wi+8 W1+7 Ki+6 Wi+8 e si+6 .i+7 51+6 si+7 .i+5 0 0 0 Tableau 1 clk a d 71 d r --' i-3 1-2 1-1 1 A_3. jii_., sii_4 si,_, sii_5 s 7 Pli-2 si1-4 sl sii_4 si. sti-3 sti_i s 5 pii_i sii_3 sii-2 31;_3 si1_5 sii_3 pli sli-2 sii_i s'_2 1+1 Pli+1 s II-1 si; sii_i sii_i s , 1+2 Pli+2 sil sii+1 st; sii,Hi sti_ii 1+3 Pli+3 si 1+1 si/+2 sii+i sii+i sii_i 1+4 Pii+4 os 4+2 i-,2 sti+3 sti+2 sii,,3 Sli+1 11'5 Pii+5 Sii+3 Sii+4 Sli+3 Sli+3 SI i+1 1+6 Pli+6 sii+4 sti+5 sii-,4 sii+5 sii+3 1+7 plj+7 sij+5 SI j+6 S j+5 SG5 Si ' , 1+8 Pli+8e, sii+6 SI j+7 Sli+6 .5G7 S 5 Tableau la Les sigles t et correspondent à deux cas exclusifs de fautes (qui ne peuvent arriver en même temps).15 c/k Kg - a 0 -0' j IsA/B/C fail save rollBack rB subst 1-3 P'i-3 Psi-3 e s1-5 ci-4 ci-5 ci-6 C'-5 ? 1 Q Q Q 1-2 Ki-2 K.11-2 cD.Si-4 c i_3 1_4 1_5 ignore Q Q Q Q Q 1-1 Ki-1 K1-1eSi-3 ci-2 1-3 1-4 Ci-3 ? 1 0 0 0 i Pli Wiets-i-2 #ci-1 #ci-2 ci-3 ignore 1 0 0 0 0 1+1 Kqi+1 Kqi-14-si-3 ci #ci-1 #ci-2 '1 ( Le circuit transformé vérifie les mêmes équations (1) que le circuit d'origine : coi = ço(7ii) - - (8) cii = pii e soi coi = poi e sii Des équations (7) et (8) et de l'égalité IP 2i-1 IP 2i PI i dérivent deux propriétés du mode fonctionnement normal. Propriété 1 : tout d'abord le flux de bits de sortie co de la partie combinatoire 11 après la transformation du circuit est un suréchantillonnage double du flux de bits CO du circuit original. Formellement : coai-1 = Co2i = COi pour tout i entier naturel. Propriété 2 : en outre, à chaque cycle impair, les sorties des cellules d et d' sont égales : = 72i-lpour tout i entier naturel. La détection d'erreur correspond à une détermination d'une violation de cette propriété 2 par le comparateur EQ. Si, lors d'un cycle impair, les contenus des cellules d et d' diffèrent, une erreur est ainsi détectée et le signal fail est mis à 1 (fai/2;_/=/). Le circuit doit alors effectuer un retour arrière à l'état correct enregistré dans r' et recalculer le pas précédent. Le retour arrière est réalisé en propageant le contenu de la cellule r' à so . Il découle des équations (17) que 7,2,_1 =7,2, = , ce qui signifie qu'au moment d'une détection de faute (et au cycle d'horloge qui suit), le contenu de la cellule mémoire de récupération r' est égal à la valeur qu'avait le signal d'entrée 3 cycles auparavant. Phase de récupération Quand une faute est détectée, le circuit effectue un retour arrière lors du cycle suivant la détection de faute, puis effectue trois cycles consécutifs pendant lesquels la redondance temporelle d'ordre 2 dans les blocs mémoires est remplacée par un mode sans redondance temporelle et par l'application par le bloc de contrôle 15 de la séquence des signaux de commande save, rollBack, subst et rB représentée en figure 13 entre l'état « error » jusqu'à revenir à l'état « norm2 ». Le tableau 1 contient les valeurs des vecteurs de bits dans le circuit transformé cycle par cycle quand une faute est détectée au cycle i. Le comportement du circuit en mode normal (i.e., en l'absence de faute) est indiqué dans le tableau 1 a. En mode normal, le vecteur ci au cycle i est tel cii = pii e soi = pii e sii_2 . Le principe de retour arrière est que les blocs de mémoire 40 ré-injectent le dernier état sauvé dans les cellules r' (vecteur si) tandis que les mémoires tampons d'entrée ré- injectent les entrées primaires correspondantes ( vecteur pi ) qui y étaient mémorisées. Au cycle (1+1) qui suit la détection d'erreur du cycle i, la phase de récupération débute et l'état correct mémorisé dans la cellule r' est propagé à travers le signal so. En conséquence, soi+i = r',+1 = sii-3 à la place de attendu dans le mode de fonctionnement normal. Par conséquent, la seconde composante de Ci/4 est Le vecteur d'entrée primaire est aussi remplacé par le vecteur mémorisé dans la mémoire tampon d'entrée : ainsi au cycle 1+1, pi ,±1 est remplacé par pi , .1. On rappelle que, pendant la phase de récupération, le circuit opère avec le débit du circuit d'origine, qui est deux fois plus rapide que dans le mode normal. En particulier, pendant les cycles i+2, 1+3 et i+4, le contenu de la cellule mémoire d est propagé directement à travers les sorties so de chaque bloc mémoire 40, en court-circuitant les cellules mémoires d'. Ceci est mis en oeuvre en fixant le signal de commande rollBack à 1, en gardant à 0 le signal save qui commande les multiplexeurs muxA et muxB de façon appropriée. Ceci est sans conséquence puisque le modèle de faute SET(1,K) garantit qu'aucune faute additionnelle ne survient pendant les K cycles après un SET. Au cycle i+2, la seconde composante de ci,+2 est ( sii_2, qui est identique à a été sautée). De façon similaire, le vecteur d'entrée primaire est remplacé par D , puisque, dans les mémoires tampons d'entrée, E,' t+2 = pi et Pi,±1 = pi,. Il s'ensuit que ci,+1= pi , 10 si ,_3 et ci,+2= pi t+1 e si t-i Tous les signaux corrompus ont disparu du circuit dans les 6 cycles suivant la détection d'erreur. Le circuit complet retourne dans un état correct après au plus 8 cycles après la détection. Dans d'autres modes de réalisation d'un circuit transformé par combinaison des aspects de redondance temporelle dynamique double et d'enregistrement avec retour arrière sont combinés, une seule cellule r' est utilisée à la place des cellules r et r'. Le signal de commande save est mis à 1 tous les deux cycles. La détection d'erreur et la fonctionnalité de récupération demeurent moyennant un amoindrissement de la tolérance aux fautes. Un SET sur le fil si, par exemple causée par un SET dans la logique combinatoire, peut dans ce cas corrompre simultanément r' et d si save=1. L'erreur est détectée au cycle suivant et la récupération a lieu en utilisant l'information corrompue de la cellule r'. La cellule r joue en réalité un rôle d'isolation qui empêche une ré-écriture du bit de récupération jusqu'à ce que cette information ait été vérifiée par le comparateur EQ. Dans des modes de réalisation, les architectures des mémoires tampon de sortie sont simplifiées, la fonction principale étant maintenue : mettre en oeuvre un retard sur le signal co en mode de fonctionnement normal avec un mécanisme pour propager co à po pendant la phase de récupération. Un circuit transformé selon ce mode de réalisation de l'invention réalise la propagation du signal à travers la partie combinatoire du circuit deux fois avant la comparaison, avec un retour arrière et une réexécution quand une erreur est détectée. Selon un modèle de faute SET(1, K), aucune erreur ne survenant dans les K cycles après la dernière occurrence de faute, le mécanisme de redondance de niveau 2 est alors supprimé et le circuit est accéléré deux fois. Il retourne dans son état correct (i.e., l'état du circuit si aucune erreur n'était survenue) après 8 cycles après détection ou 10 cycles après l'occurrence du SET. Un circuit transformé selon ce mode de réalisation peut également fonctionner en mode accéléré (n=1) lorsque la tolérance aux fautes n'est pas nécessaire. La figure 14 représente des étapes d'un procédé de fabrication automatisée d'un circuit électronique tolérant aux fautes par redondance temporelle, qui est mis en oeuvre dans un mode de réalisation de l'invention. Ces étapes, par exemple mises en oeuvre par un outil de synthèse automatisée de circuits électroniques, sont : étape 80 de réception d'un design du circuit original au niveau logique ; étape 90 de choix de la transformation requise et du type de redondance dynamique (niveau de redondance, modes de fonctionnement et propriétés de tolérance aux fautes) ; étape 100 de transformation des blocs mémoires du circuit original en blocs mémoires pour la mise en oeuvre de la redondance dynamique choisie, comprenant : i/ étape 101 : génération du bloc mémoire ; ii/ étape 102: remplacement de chaque cellule mémoire du circuit original par le bloc mémoire généré dans le design du circuit ; iii/ étape 103: génération du bloc de contrôle (et pour la redondance dynamique double avec retour arrière, des mémoires tampons d'entrée et de sortie) ; iv/ étape 104: insertion du bloc de contrôle (et dans le cas de redondance dynamique double avec retour arrière, des mémoires tampons d'entrée et de sortie) dans le design du circuit et interconnexions entre le bloc de contrôle et les blocs de mémoire transformés du circuit (et dans le cas de la redondance dynamique double avec retour arrière, avec les mémoires tampons d'entrée et de sortie). La figure 15 décrit différentes étapes du flot de conception (en anglais « design flow ») de circuits intégrés correspondant à différents niveaux d'abstraction dans un mode de réalisation de l'invention : étape 201 : synthèse au niveau système, sur la base de spécifications du circuit, comprenant l'allocation ou la répartition entre logiciel et matériel, dont un des résultats est une description haut-niveau et comportementale du circuit ; étape 202: synthèse du circuit de haut niveau sur la base de cette description (transformation, planification, sélection de modules), dont un des résultats est une description architecturale, au niveau « Transfert de registres » ou RTL : cette modélisation revient à décrire l'implémentation sous forme d'éléments séquentiels (registres, bascules) et de combinaisons logiques entre les différentes entrées/sorties des éléments séquentiels et des entrées/sorties primaires du circuit : étape 203: synthèse logique du circuit en fonction de cette description RTL, qui transforme la description RTL du circuit en une description au niveau logique, en termes de portes logiques (Gate netlist) : cette étape 203 comprenant les sous-étapes successives suivantes : fonctions de RTL vers Booléen ; optimisations indépendantes de la technologie ; transformation 100 du circuit pour la redondance dynamique selon l'invention ; mise en correspondance de technologie (« mapping technology ») ; optimisations dépendantes de la technologie ; étape 204: synthèse de masque physique du circuit sur la base de la description logique. Pour des circuits VLSI, cette synthèse comprend la description du circuit au niveau des transistors (placement, routage, distribution d'horloge) et délivre une description du circuit au niveau du masque. Pour des circuits FPGA, cette synthèse comprend la traduction, la topographie (placement, routage) et délivre un fichier de programmation.35 La transformation 100 apporte les propriétés de tolérance aux fautes au circuit. Dans le mode de réalisation décrit, elle est mise en oeuvre après les optimisations indépendantes de la technologie (les propriétés seront donc préservées par les étapes ultérieures) et avant la séparation du flot en technologie VLSI ou technologie FPGA, ce qui permet de l'appliquer conjointement aux deux technologies. REVENDICATIONS1.- Procédé de fabrication automatisée d'un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, ledit procédé comprenant une étape mise en oeuvre par ordinateur, selon laquelle pour mettre en oeuvre une fonction de cellule mémoire du circuit électronique, on insère dans le circuit électronique un bloc mémoire (14) comprenant une chaîne de retard (16) comportant N cellules mémoires en série, /\/2, et un bloc de sélection (18) qui, dans un mode de fonctionnement correspondant à une redondance temporelle d'ordre nl, n1 E [1,IV], compare le contenu courant de n1 desdites N cellules mémoires stockant n1 données d'entrée redondantes successivement fournies au bloc mémoire, et - si n1>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n1 cellules mémoires et optionnellement délivre en outre un signal de faute si les contenus de deux cellules mémoires diffèrent ; - si n1=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre en outre un signal de faute si les contenus des deux cellules mémoires diffèrent ; - si n1=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée ; ledit procédé étant caractérisé en ce qu'on insère en outre un bloc de contrôle du circuit adapté pour émettre des signaux de commande des blocs mémoires, et en ce que le bloc mémoire inséré est adapté pour, en fonction d'un signal de commande de basculement reçu du bloc de contrôle, basculer entre ledit mode de fonctionnement correspondant à une redondance temporelle d'ordre n1 et un autre mode de fonctionnement correspondant à une redondance temporelle d'ordre n2e [1,IV], n2n1, dans lequel le bloc de sélection compare le contenu courant de n2 cellules déterminées, parmi lesdites N cellules mémoires, stockant n2 données d'entrée redondantes successivement fournies au bloc mémoire, et : si n2>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire desdites n2 cellules mémoires ; si n2=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre un signal de faute si les contenus des deux cellules mémoires diffèrent ; si n2=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. 2.- Procédé de fabrication automatisée d'un circuit selon la revendication 1, selon lequel le bloc mémoire inséré comporte en outre, quand N>2, un bloc de retard supplémentaire (17) disposé en sortie de la chaîne de retard et comportant au moins El"N 2-1 .1 cellules mémoires, en mode de fonctionnement correspondant à une redondance temporelle d'ordre n, n>2, tous les n cycles, le bloc de sélection sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n cellules mémoires de la chaîne de retard, et chaque dème cycle suivant lesdits n cycles, avec 1i 3.- Procédé de fabrication automatisée d'un circuit selon la revendication 1 ou 2, selon lequel N=3, n1=1, n1=2, ou n1=3 et n2, n2n1, prend une valeur égale à 1, 2 ou 3 en fonction de la commande de basculement. 4.- Procédé de fabrication automatisée d'un circuit électronique selon la revendication 1 ou 2, selon lequel N=2, n1= 1 ou 2 et n2= 1 ou 2, n2n1. 20 5.- Procédé de fabrication automatisée d'un circuit électronique selon la revendication 4, selon lequel la commande de basculement du mode de fonctionnement selon une redondance temporelle d'ordre 2 vers le mode de fonctionnement selon une redondance temporelle d'ordre 1, et réciproquement, est déclenchée suite à la réception par le bloc de 25 commande d'un signal de faute délivré par un des blocs mémoires (40). 6.- Procédé de fabrication automatisée d'un circuit électronique selon la revendication 4 ou 5, selon lequel la deuxième cellule (32) de la chaîne de retard (29) mémorise, à chaque 30 cycle d'horloge du circuit, le contenu mémorisé au cycle d'horloge précédent, dans la première cellule (31) de la chaîne de retard, selon lequel le bloc mémoire inséré (40) comporte en outre une chaîne d'enregistrement (30) adapté pour, sur réception d'un signal de commande d'enregistrement du bloc de contrôle, mémoriser la valeur de signal d'entrée du bloc mémoire également fournie en 35 parallèle à la première cellule de la chaîne de retard,selon lequel en mode de fonctionnement selon une redondance d'ordre 2, le signal de commande d'enregistrement est émis tous les deux cycles de sorte que, lorsque des données redondantes mémorisées dans les deux cellules mémoires de la chaîne de retard sont comparées par le bloc de sélection, la derniere cellule de la chaîne d'enregistrement comporte en mémoire les données qui étaient mémorisées deux cycles auparavant dans chacune des deux cellules mémoires de la chaîne de retard. 7.- Procédé de fabrication automatisée d'un circuit électronique selon la revendication 6, selon lequel suite à la réception par le bloc de commande d'un signal de faute délivré par un bloc mémoire (40) signalant que des données redondantes mémorisées dans les deux cellules mémoires de la chaîne de retard diffèrent, le bloc de commande fournit au bloc de mémoire une commande de retour arrière suite à laquelle le bloc mémoire délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu courant de la dernière cellule de la chaîne d'enregistrement, ledit procédé permettant ainsi de masquer une erreur avec seulement une redondance double au lieu d'une redondance triple. 8.- Procédé de fabrication automatisée d'un circuit électronique selon l'une des revendications 4 à 7, selon lequel on insère en outre à l'entrée du circuit électronique un bloc d'entrée (50) du circuit recevant la donnée extérieure courante à traiter suréchantillonnée deux fois, le bloc d'entrée, dans le mode de fonctionnement selon une redondance temporelle d'ordre 2, mémorisant la donnée extérieure courante reçue et fournissant en outre simultanément au circuit ladite donnée extérieure courante reçue et, le bloc d'entrée, dans le mode de fonctionnement selon une redondance temporelle d'ordre 1, fournissant au circuit des données extérieures successives non redondantes précédemment mémorisées par le bloc d'entrée pour permettre une troisième exécution de ces données par le circuit ; et selon lequel on insère en outre à la sortie du circuit électronique un bloc de sortie (60) du circuit recevant la donnée délivrée par le circuit, ledit bloc de sortie, dans le mode de fonctionnement selon une redondance temporelle d'ordre 2, mémorisant les données délivrées par le circuit et appliquant un retard donné avant de les délivrer, et le bloc de sortie, dans le mode de fonctionnement selon une redondance temporelle d'ordre 1, délivrant sans retard les données délivrées par le circuit, dupliquant des données délivrées par le circuit et délivrant les données dupliquées, le recouvrement de fautes par le circuit étant ainsi masqué vis-à-vis de l'amont du circuit et de l'aval du circuit par lesdits blocs d'entrée et de sortie. 9.- Programme d'ordinateur à installer dans un outil de fabrication automatisée d'un circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, ledit programme comportant des instructions pour mettre en oeuvre les étapes d'un procédé selon l'une des revendications 1 à 8 lors d'une exécution du programme par des moyens de traitement de l'outil de fabrication automatisé de circuit électronique. 10.- Circuit électronique adapté pour détecter ou masquer des fautes par redondance temporelle, comprenant un ensemble de bloc(s) mémoire(s), chaque bloc mémoire (14) dudit ensemble comprenant une chaîne de retard (16) comportant N cellules mémoires en série, /\/2, et un bloc de sélection (18) qui, dans un mode de fonctionnement correspondant à une redondance temporelle d'ordre n1, n1 e [1,N], compare le contenu courant de n1 desdites N cellules mémoires stockant n1 données d'entrée redondantes successivement fournies au bloc mémoire, et - si n1>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n1 cellules mémoires et optionnellement délivre en outre un signal de faute si les contenus de deux cellules mémoires diffèrent ; - si n1=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre en outre un signal de faute si les contenus des deux cellules mémoires diffèrent ; - si n1=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée ; ledit circuit électronique étant caractérisé en ce qu'il comporte un bloc de contrôle du circuit adapté pour émettre des signaux de commande desdits blocs mémoires, et en ce que chacun desdits blocs mémoires est adapté pour, en fonction d'un signal de commande de basculement reçu du bloc de contrôle, basculer entre ledit mode de fonctionnement correspondant à une redondance temporelle d'ordre n1 et un autre mode de fonctionnement correspondant à une redondance temporelle d'ordre n2 e [1,IV], n2n1, dans lequel le bloc de sélection compare le contenu courant de n2 cellules déterminées, parmi lesdites N cellules mémoires, stockant n2 données d'entrée redondantes successivement fournies au bloc mémoire, et : si n2>2, sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire desdites n2 cellules mémoires ;si n2=2, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu d'une des deux cellules mémoires et délivre un signal de faute si les contenus des deux cellules mémoires diffèrent ; si n2=1, délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu de la cellule mémoire déterminée. 11.- Circuit électronique selon la revendication 10, dans lequel le bloc mémoire comporte en outre, quand N>2, un bloc de retard supplémentaire (17) disposé en sortie de la chaîne de retard et comportant au moins E[ N-2 1] cellules mémoires, en mode de fonctionnement correspondant à une redondance temporelle d'ordre n, n>2, tous les n cycles, le bloc de sélection sélectionne comme donnée de sortie de la fonction de cellule mémoire, le contenu majoritaire des n cellules mémoires de la chaîne de retard, et chaque dème cycle suivant lesdits n cycles, avec 1i 12.- Circuit électronique selon la revendication 10 ou 11, dans lequel N=3, n1=1, 2, ou 3 et n2, n2n1, prend une valeur égale à 1, 2 ou 3 en fonction de la commande de basculement. 13.- Circuit électronique selon la revendication 10 ou 11, dans lequel N=2, n1=1 ou 2 et 25 n2=1 ou 2, n2n1 14.- Circuit électronique selon la revendication 13, adapté pour déclencher, suite à la réception par le bloc de commande d'un signal de faute délivré par un des blocs mémoires (40), la commande de basculement du mode de fonctionnement selon une 30 redondance temporelle d'ordre 2 vers le mode de fonctionnement selon une redondance temporelle d'ordre 1, et réciproquement. 15.- Circuit électronique selon la revendication 13 ou 14,dans lequel la deuxième cellule (32) de la chaîne de retard (29) mémorise, à chaque cycle d'horloge du circuit, le contenu mémorisé au cycle d'horloge précédent, dans la première cellule (31) de la chaîne de retard, chacun desdits blocs mémoires (40) comporte en outre une chaîne d'enregistrement (30) adapté pour, sur réception d'un signal de commande d'enregistrement du bloc de contrôle, mémoriser la valeur de signal d'entrée du bloc mémoire également fournie en parallèle à la première cellule de la chaîne de retard, en mode de fonctionnement selon une redondance d'ordre 2, le signal de commande d'enregistrement est émis tous les deux cycles de sorte que, lorsque des données redondantes mémorisées dans les deux cellules mémoires de la chaîne de retard sont comparées par le bloc de sélection, la derniere cellule de la chaîne d'enregistrement comporte en mémoire les données qui étaient mémorisées deux cycles auparavant dans chacune des deux cellules mémoires de la chaîne de retard. 16.- Circuit électronique selon la revendication 15, dans lequel suite à la réception par un bloc de commande d'un signal de faute délivré par un bloc mémoire (40) signalant que des données redondantes mémorisées dans les deux cellules mémoires de la chaîne de retard diffèrent, le bloc de commande fournit au bloc de mémoire une commande de retour arrière suite à laquelle le bloc mémoire délivre comme donnée de sortie de la fonction de cellule mémoire, le contenu courant de la dernière cellule de la chaîne d'enregistrement, ledit circuit électronique permettant ainsi de masquer une erreur avec seulement une redondance double au lieu d'une redondance triple. 17.- Circuit électronique selon l'une des revendications 13 à 16, comprenant un bloc d'entrée du circuit recevant la donnée extérieure courante à traiter suréchantillonnée deux fois, le bloc d'entrée (50), dans le mode de fonctionnement selon une redondance temporelle d'ordre 2, mémorisant la donnée extérieure courante reçue et fournissant en outre simultanément au circuit ladite donnée extérieure courante reçue et, le bloc d'entrée, dans le mode de fonctionnement selon une redondance temporelle d'ordre 1, fournissant au circuit des données extérieures successives non redondantes précédemment mémorisées par le bloc d'entrée pour permettre une troisième exécution de ces données par le circuit ; et ledit circuit électronique comprenant à la sortie du circuit électronique un bloc de sortie (60) du circuit recevant la donnée délivrée par le circuit, ledit bloc de sortie, dans le mode de fonctionnement selon une redondance temporelle d'ordre 2, mémorisant les donnéesdélivrées par le circuit et appliquant un retard donné avant de les délivrer, et le bloc de sortie, dans le mode de fonctionnement selon une redondance temporelle d'ordre 1, délivrant sans retard les données délivrées par le circuit, dupliquant des données délivrées par le circuit et délivrant les données dupliquées, le recouvrement de fautes par le circuit étant ainsi masqué vis-à-vis de l'amont du circuit et de l'aval du circuit par lesdits blocs d'entrée et de sortie.