ARCHITECTURE DE CIRCUITS PROTEGEE CONTRE DES PERTURBATIONS
La présente invention concerne des circuits numériques protégés contre les effets de perturbations telles que des perturbations transitoires résultant de causes externes ou de fautes temporelles liées à la fabrication des circuits. Une faute transitoire est produite par une perturbation localisée provenant par exemple de bombardements de particules. Les capacités des noeuds et les tensions d'alimentation des circuits intégrés modernes étant de plus en plus faibles, les charges présentes sur les noeuds deviennent très faibles. Ainsi, ces circuits deviennent sensibles à des perturbations de plus en plus faibles. La valeur logique d'un noeud peut être inversée par des particules ayant des énergies très faibles. Dans les technologies passées des circuits intégrés, c'était surtout les particules frappant les points mémoire qui produi- saient des fautes logiques. Avec la sensibilité accrue des technologies modernes, les impulsions transitoires affectant un noeud d'un circuit combinatoire se propagent jusqu'aux entrées des points mémoire ("latches") . En même temps, l'augmentation des vitesses de fonctionnement augmente la probabilité qu'une impulsion transitoire en entrée d'un "latch" soit effectivement échantillonnée par ce dernier, conduisant à une erreur logique.
Une faute temporelle résulte du fait que, alors qu'un élément de circuit est normalement conçu pour avoir une certaine durée de réaction, cette durée, par suite d'un défaut de fabrication localisé, peut être plus élevée que ce qui a été prévu par le concepteur. Ainsi, si l'on réalise un échantillonnage après la durée normale de réaction du circuit, cet échantillonnage peut survenir alors que le circuit n'a pas encore commuté. En raison de l'augmentation de la densité et de la vitesse de fonctionnement des circuits intégrés modernes, de telles fautes sont de plus en plus courantes et très difficiles à tester par les programmes de tests usuels et peuvent donc demeurer dans un circuit normalement testé bon.
De façon générale, on appellera ici faute temporaire, ou tout simplement faute, une faute résultant d'une perturbation transitoire ou d'un défaut de fabrication modifiant le temps de réponse d'un élément de circuit.
Il est bien clair que l'occurrence de telles fautes peut amener un circuit logique à fournir des résultats erronés et des mémoires à contenir des données fausses. Ainsi, on a cherché à immuniser des circuits contre les fautes. On peut utiliser des circuits protégés de façon intrinsèque, ou circuits durcis. Une autre technique pour être certain de corriger toute erreur consiste à tripliquer chaque module de base et à utiliser un vote majoritaire pour sélectionner le résultat correct parmi les trois résultats délivrés par les trois circuits en supposant bien entendu que trois circuits identiques ne peuvent pas à un instant donné être affectés par une même faute. De tels systèmes, extrêmement lourds et coûteux ont été essentiellement utilisés pour les circuits numériques incluant des circuits combinatoires ou bien des circuits incluant des circuits combinatoires et des mémoires. Pour des circuits incluant seulement des mémoires, on a développé des procédés moins coûteux consistant à associer à chaque donnée susceptible d'être mémorisée un code correcteur d'erreur. Selon ce principe, les données écrites dans la mémoire sont complétées par un certain
nombre de bits de contrôle (code de Hamming, code de Reed Solomon, etc.). A chaque lecture est associée une vérification de cohérence du codage par un circuit dédié qui, s'il existe une erreur, la localise et la corrige. Une autre technique générale de correction d'erreur consiste à utiliser simplement un procédé de détection d'erreurs et de sauvegarde. L'état du système est mémorisé périodiquement et on utilise des codes relativement simples ou des procédés de duplication, tels que décrits par exemple dans la demande de brevet français 9903027 du 9 mars 1999, pour détecter si une faute est survenue. Quand une erreur a été détectée, on interrompt le fonctionnement du système et on remet le système dans l'état qu'il avait au moment de la dernière sauvegarde. Quand on fonctionne ainsi au niveau du système, on est obligé de faire des sauvegardes très importantes d'un grand nombre d'états, ce qui amène en pratique à faire des sauvegardes assez éloignées et donc, en cas de faute, à devoir revenir assez longtemps en arrière .
De façon générale, un objet de la présente invention est de simplifier les problèmes de protection d'un circuit logique contre des perturbations.
Pour atteindre cet objet, la présente invention se base essentiellement sur une analyse du fonctionnement des divers éléments d'un système et propose d'adopter pour les diverses parties d'un système des traitements spécifiques de protection contre des erreurs ou de réparation d'erreurs. On choisira ainsi pour chaque bloc la solution à coût minimal. Chaque fois que possible - et c'est un aspect de la présente invention que de réaliser cette analyse - on utilisera un mécanisme de détection et de reprise, permettant de corriger les erreurs produites par une faute transitoire en répétant un petit nombre des opérations les plus récentes. Pour éviter des interruptions d'une durée élevée, on prévoit des mécanismes de reprise opérant sur un faible nombre de cycles de fonctionnement. La mise en oeuvre de ces mécanismes à
1 ' intérieur du circuit intégré permettra une sauvegarde systématique d'états apparaissant dans le circuit pendant les k derniers cycles de fonctionnement, k étant une valeur choisie par le concepteur, supérieure au nombre de cycles nécessaire pour détecter une erreur et générer une interruption. Selon le cas, un cycle de fonctionnement sera un cycle d'horloge ou un cycle d'exécution d'une instruction.
Néanmoins, ce principe ne peut s'appliquer à toutes les parties d'un circuit. Par exemple, on notera qu'une valeur stockée dans une mémoire depuis plus de k cycles de fonctionnement, si elle est corrompue par une faute, ne peut pas être corrigée par une reprise opérant sur les k derniers cycles de fonctionnement. Ainsi, pour une mémoire pouvant stocker des données pour une durée supérieure à k cycles de fonctionnement (ci-après mémoire de longue durée), une technique d'immunisation aux fautes doit être appliquée au lieu d'une détection de faute et d'une reprise. On peut utiliser, par exemple, un code détecteur et correcteur d'erreurs. Ainsi, une faute affectant une cellule mémoire sera détectée et corrigée. On peut aussi utiliser des cellules de mémorisation durcies aux fautes transitoires. Le coût d'utilisation, en pourcentage de surface occupée, pour les codes détecteurs et correcteurs d'erreurs, devient très faible pour de grandes matrices mémoire mais peut augmenter de façon dramatique pour les petites mémoires. Ainsi, la préférence sera donnée aux codes détecteurs et correcteurs d'erreurs pour les grandes matrices mémoire et aux cellules de mémorisation durcies aux fautes transitoires pour des petites mémoires ou des cellules de mémorisation distribuées.
En ce qui concerne les parties combinatoires, une reprise permettra de corriger les erreurs produites par une faute transitoire. Ainsi, on peut utiliser une technique de détection d'erreurs accompagnée d'une reprise opérant sur les k derniers cycles d'opération. Néanmoins, si un circuit combinatoire contrôle (adressage ou lecture/écriture) une partie mémoire de longue durée, une technique de détection et de
reprise ne permettra pas de corriger des erreurs dues à une faute transitoire. En effet, une erreur produite par un tel circuit pourrait induire une erreur d'adressage pendant une opération d'écriture et détruire une donnée stockée à cette adresse depuis plus de k cycles de fonctionnement. Une autre faute ayant une conséquence similaire est une faute qui déclenche une écriture pendant un cycle de lecture ou pendant un cycle de non-accès à la mémoire. Notons qu'une écriture de données correctes à une mauvaise adresse produit des erreurs qui ne sont jamais détectées par un code détecteur/correcteur d'erreurs car les données écrites sont correctement codées. Ainsi, une partie combinatoire contrôlant une mémoire stockant des données pour une durée supérieure à k cycles de fonctionnement, doit être protégée par une technique d'immuni- sation aux fautes. Des circuits combinatoires concernés par cette solution sont, par exemple, une partie combinatoire générant des adresses de mémoire ou générant des signaux d'écriture/lecture, les décodeurs d'adresse, etc.
Même pour ces circuits contrôlant des mémoires de longue durée, on peut éviter de prévoir une immunisation lourde en notant divers cas particuliers.
- Une erreur sur le signal d'écriture/lecture aura deux polarités : erreur du type lecture au lieu d'écriture (1 au lieu de 0 sur R/W) ou du type écriture au lieu de lecture (0 au lieu de 1 sur R/W) . La deuxième polarité est dangereuse et doit être évitée, tandis qu'il suffira de détecter la première et de déclencher une reprise pour corriger les erreurs produites.
- De même, il existe deux types d'erreurs sur les sorties d'un décodeur d'adresses (lignes ou colonnes) : une sortie active devient inactive (polarité d'erreur 0 au lieu de
1) , ou bien une ou plusieurs sorties non-actives deviennent actives (polarité d'erreur 1 au lieu de 0) . On observe de nouveau que la deuxième polarité produit des erreurs non- récupérables et doit être évitée tandis qu'il suffirait de détecter les erreurs de la première polarité et de déclencher
une reprise pour pouvoir les corriger. On pourra donc utiliser une technique d'immunisation pour des erreurs d'une certaine polarité et une technique de détection et reprise pour des erreurs de polarité opposée. - Dans certains cas, pour des circuits combinatoires contrôlant des mémoires de longue durée, on pourra utiliser uniquement une technique de détection d'erreurs pour bloquer le fonctionnement de la mémoire avant qu'une destruction de données ne survienne. Ce principe ne peut être utilisé que si les délais de fonctionnement de la mémoire et du mécanisme de détection d'erreurs sont compatibles avec un tel blocage.
Entre le moment d'occurrence d'une faute dans une partie employant un mécanisme de détection et le moment où on interrompt le système pour déclencher une reprise, il s'écoule un certain temps (k cycles d'opération) . Pendant ce temps, pour effectuer une reprise, on doit retrouver le contenu des points de mémorisation (bascules, ensembles de registres, mémoires) qui déterminent un état du circuit avant l'occurrence de la faute, à partir duquel on pourra répéter de façon correcte toutes les opérations successives. Pour ce faire, on utilisera un mécanisme de préservation d'état (MPE) pour chaque partie de mémorisation (bascules, ensembles de registres, mémoires) dont l'état doit être sauvegardé afin de pouvoir effectuer la reprise de 1 'opération du circuit. Le mécanisme MPE conservera à chaque instant des données d'entrée et/ou de sortie de la partie de mémorisation correspondant, durant les k derniers cycles d'opération.
Selon un aspect important de la présente invention, il n'est pas nécessaire de sauvegarder 1 'ensemble des données déterminant l'état du circuit pour pouvoir effectuer la reprise correctement. Certaines données peuvent être perdues à jamais sans empêcher une reprise correcte. Ainsi, il n'est pas nécessaire de sauvegarder l'état complet du circuit à chaque instant. Seules des données utilisées récemment par la partie de mémorisation nécessiteront une sauvegarde. Grâce à cette
remarque, l'intégration des mécanismes MPE à l'intérieur du circuit n'occupe qu'un faible espace de mémorisation pour sauvegarder les états nécessaires pour la reprise, la sauvegarde peut être effectuée de façon continue, et des reprises de courte durée peuvent être prévues. Ces avantages ne peuvent pas être obtenus si on effectue la sauvegarde et la reprise au niveau système.
Pour les fautes transitoires, la reprise permettra leur correction car elles ne se manifesteront pas une deuxième fois à cause de leur nature transitoire. Néanmoins, pour les fautes temporelles, la répétition des mêmes opérations aura pour conséquence dans la plupart des cas la manifestation de la faute temporelle durant la reprise, car cette faute est due à des causes permanentes (délai du circuit dépassant la période de l'horloge). Ainsi, selon un aspect de la présente invention, si 1 'on s 'aperçoit qu'après une reprise une erreur survient à nouveau, on ralentira le rythme de l'horloge générale du système de façon à s'assurer que le circuit défaillant aura le temps de fonctionner convenablement. Bien entendu, l'homme du métier pourra utiliser d'autres solutions, par exemple systématiquement après chaque reprise ralentir le rythme de 1 'horloge pour être sûr de réparer aussi bien des fautes transitoires que des fautes temporelles.
Enfin on utilisera un circuit contrôlant l'interruption de reprise. Son rôle est de contrôler le passage du fonctionnement normal au fonctionnement de reprise en cas de détection de faute, le passage en fonctionnement normal à la fin de la procédure de reprise, et le basculement entre les ressources de mémorisation régulières et les ressources de mémo- risation MPE.
La présente invention prévoit aussi divers modes de réalisation de mécanismes d'immunisation aux fautes ou d'ëvitement d'erreurs adaptés, par exemple, à des circuits contrôlant des mémoires de longue durée.
Pour atteindre ces objets, la présente invention prévoit plus particulièrement une architecture de circuit numérique comprenant des circuits combinatoires, des circuits de mémoire de courte durée non susceptibles de stocker des données pendant plus de k cycles de fonctionnement, des circuits de mémoire de longue durée susceptibles de stocker des données pendant plus de k cycles de fonctionnement du circuit, comprenant des systèmes de protection contre les perturbations distincts pour les différents types de circuits et selon la fonctionnalité de ces circuits : a) pour les circuits de mémorisation de longue durée, on utilise des moyens d'immunisation aux fautes ; b) pour les circuits de mémorisation de courte durée, on utilise des mécanismes à détection d'erreurs et reprise ; c) pour les circuits combinatoires contrôlant des mémoires de courte durée et/ou déterminant seulement des données à écrire dans des mémoires de longue durée, on utilise des systèmes de détection d'erreurs et de reprise dans les mémoires concernées . Selon un mode de réalisation de la présente invention, certains des circuits combinatoires susceptibles de fournir des instructions de commande à des mémoires de longue durée sont protégés par un mécanisme d'évitentent pour les erreurs d'une polarité, et éventuellement un mécanisme de détection des erreurs de la polarité opposée.
Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente la structure générale d'un circuit numérique complexe ; et les figures 2 à 12 illustrent uniquement à titre d'exemple divers modes de réalisation de mécanismes d'évitement d'erreurs selon la présente invention.
Comme le représente la figure 1, selon un aspect de la présente invention, un circuit numérique complexe est divisé en divers blocs qui sont groupés logiquement selon leurs fonctionnalités et leurs associations avec des mémoires. On distingue quatre groupes principaux d'éléments dans un circuit numérique complexe. Chaque groupe correspond à un ou plusieurs circuits intégrés ou à une ou plusieurs parties de circuits intégrés .
Un premier groupe 10 comprend des circuits combinatoi- res qui sont ou bien des circuits combinatoires purs n'agissant pas spécifiquement sur des mémoires, ou bien des circuits combinatoires susceptibles d'agir sur des mémoires de courte durée ou autres éléments de mémorisation (latch) dans lesquels on ne peut pas trouver des données stockées depuis plus de k cycles de fonctionnement, ou bien encore des circuits combinatoires fournissant des données (data) et pas des signaux de commande (control) à des éléments de mémorisation de longue durée.
Un deuxième groupe 11 comprend des éléments de mémorisation de courte durée non susceptibles de contenir des données stockées depuis plus de k cycles de fonctionnement.
Un troisième groupe 12 comprend des circuits combinatoires susceptibles de fournir des signaux de commande à des mémoires susceptibles de stocker des données pendant plus de k cycles de fonctionnement. Un quatrième groupe 13 comprend des éléments de mémorisation de longue durée susceptibles de stocker des données pendant plus de k cycles de fonctionnement.
Pour les parties combinatoires 10 et les mémoires 11, on pourra utiliser un processus à détection d'erreurs et reprise. Dans un tel processus, un ou plusieurs mécanismes de préservation d'état 20 sauvegardent des données entrant ou sortant des parties de mémorisation pendant les k derniers cycles de fonctionnement. La valeur de k sera choisie par le concepteur qui réalisera ainsi une sélection des éléments de mémorisation 11 et des éléments de mémorisation 13 en tenant
compte du temps de réaction du système suite à une occurrence de faute, de façon à être sûr que, après la détection d'erreurs, il peut générer une interruption en une durée inférieure à la durée du nombre d'opérations mémorisées. En pratique, ce système de détection et de reprise est le système le moins encombrant et le moins coûteux en surface dans un circuit. Les mémoires de longue durée seront également associées à un mécanisme de préservation d'état sauvegardant des données parmi les données des k derniers cycles pour permettre une reprise en cas de détection d'erreurs dans un élément combinatoire inscrivant des données dans de telles mémoires. Divers circuits de détection d'erreurs sont connus dans l'art antérieur, notamment tels qu'exposés par le présent inventeur dans la demande de brevet ci-dessus référencée. En ce qui concerne les parties combinatoires 12 susceptibles de fournir des signaux de commande (adressage, lecture/écriture ... ) à des mémoires de longue durée et ces mémoires de longue durée 13, la technique décrite précédemment de détection d'erreurs et reprise sera généralement inefficace car des données anciennes pourraient être irrémédiablement perdues. On prévoira donc des circuits immunisés aux fautes de façon intrinsèque ou logique. Toutefois, comme on l'a noté précédemment, certaines erreurs pourront être réparées par des techniques de type détection d'erreurs et reprise, notamment des erreurs d'adressage ou de lecture/écriture d'une certaine polarité .
Les blocs mémoire SRAM et DRAM utilisés dans les circuits électroniques sont le plus souvent des mémoires pouvant stocker longtemps des informations et correspondent au quatrième groupe. Par contre les bascules d'un circuit sont généralement, comme on l'a mentionné ci-dessus, des mémoires de courte durée
(deuxième groupe) qui renouvellent leur contenu à chaque impulsion d'horloge. Néanmoins certaines bascules peuvent être munies d'une commande de maintien d'état (hold) , telle que le contenu de la bascule est inchangé tant que la commande hold est
activée. La bascule devient alors, pendant l'activation de la commande hold, une mémoire de longue durée et sera traitée comme un élément du quatrième groupe. Un mode d'immunisation aux fautes est alors de dupliquer la bascule et, quand on détecte une erreur sur la bascule et que le signal hold est activé, d'utiliser la bascule dupliquée pour restaurer le contenu de la bascule. De plus, on peut protéger par un moyen d'immunisation aux fautes les signaux de commande de la bascule.
La présente invention propose en outre divers modes de réalisation de circuits d'immunisation aux défauts ou d'évitement d'erreurs qui seront décrits en relation avec les figures 2 à 12.
En figure 2, un mécanisme d'évitement d'erreurs d'une polarité pour un circuit logique combinatoire 30 ayant au moins une sortie, comprend un circuit de génération d'un code de contrôle d'erreurs 40 pour ladite sortie, et un élément de forçage d'état 44 disposé à ladite sortie, commandé par le circuit de génération de code de contrôle 40 pour être transpa- rent lorsque le code de contrôle est correct, et pour forcer ladite sortie à un état prédéterminé, correspondant à une polarité d'erreur opposée à la polarité d'erreur que le circuit doit éviter, lorsque le code de contrôle est incorrect.
Selon un mode de réalisation de la présente invention, le circuit de génération de code de contrôle d'erreurs du mécanisme d'évitement des erreurs génère une sortie de détection d'erreurs qui prend la valeur 1 (0) pour indiquer l'occurrence d'une erreur et la valeur 0 (1) pour indiquer le fonctionnement correct, et ledit élément de forçage d'état est une porte OR (AND) ayant l'une de ses entrées connectée à la sortie du circuit logique combinatoire et 1 'autre de ses entrées connectée à la sortie de détection d'erreurs du circuit de génération de code de contrôle d'erreurs 40, de façon que lorsque la sortie du circuit de génération de code de contrôle d'erreurs indique l'occurrence d'une erreur, la sortie de l'élément de forçage
d'état prend la valeur 1 (0) correspondant audit état prédéterminé, et lorsque la sortie du circuit de génération de code de contrôle d'erreurs indique le fonctionnement correct, la sortie de l'élément de forçage d'état prend la même valeur que la sortie du circuit logique combinatoire.
En figure 3, un circuit de génération de code de contrôle d'erreurs du mécanisme d'évitement des erreurs pour un circuit logique combinatoire 30 comprend un circuit de prédiction de code 45 qui calcule un code détecteur d'erreurs (tel qu'un bit de parité) pour les sorties du circuit combinatoire à partir de signaux autres que la sortie du circuit combinatoire, un circuit de calcul de code 47 qui calcule le code détecteur d'erreurs à partir des sorties du circuit combinatoire, et un circuit 42 de vérification du code détecteur d'erreurs généré par le circuit de prédiction et du code détecteur d'erreurs généré par le circuit de calcul.
Dans un circuit du type de celui de la figure 3, un signal de détection d'erreurs est obtenu à la sortie du circuit 42. On décrit ici l'utilisation de ce signal dans le cadre d'un processus d'évitement d'erreurs. Ce signal pourrait également être utilisé pour commander une reprise.
En figure 4, le circuit de génération de code de contrôle d'erreurs du mécanisme d'évitement des erreurs pour un circuit logique combinatoire 30, comprend un circuit logique combinatoire dupliqué 30', l'élément de forçage d'état 44 étant prévu pour être transparent lorsque les sorties du circuit logique combinatoire et du circuit logique combinatoire dupliqué sont identiques, et, quand ces sorties sont distinctes, produire à sa sortie un état prédéterminé. Dans ce mode de réalisation de la présente invention, l'élément de forçage d'état est une porte OU (ET) de façon que, en l'absence d'erreur, la sortie de l'élément de forçage d'état prenne la même valeur que les sorties du circuit combinatoire.
En figure 5, l'élément de forçage d'état 44 du méca- nisme d'évitement des erreurs pour un circuit logique combina-
toire 30, comprend un dispositif d'initialisation 52 mettant préalablement et de façon systématique la sortie de l'élément de forçage d'état audit état prédéterminé, et un dispositif de modification 53, qui modifie par la suite la valeur de cette sortie uniquement si le code de contrôle fourni par le circuit de génération de code de contrôle d'erreurs 40 est correct et que ledit état prédéterminé est différent de la valeur fournie à la sortie du circuit logique combinatoire.
Selon ce mode de réalisation de la présente invention, le circuit de code de contrôle d'erreurs comprend un circuit logique combinatoire dupliqué, ledit élément de forçage d'état est composé d'un dispositif d'initialisation mettant préalablement et de façon systématique la sortie du circuit de forçage d'état à l'état dit prédéterminé, et d'un dispositif de modification qui modifie par la suite la valeur de la sortie, uniquement si les sorties correspondantes du circuit logique combinatoire et du circuit logique dupliqué ont des valeurs identiques et ledit état prédéterminé est différent de l'état correspondant aux valeurs de sortie du circuit logique combinatoire .
En figure 6, le circuit de génération de code de contrôle d'erreurs du mécanisme d'évitement des erreurs pour un circuit logique combinatoire 30, comprend un circuit logique combinatoire dupliqué 30'. Le dispositif de modification 53 est composé de deux transistors interconnectés en série qui connectent la sortie du circuit de forçage d'état à la tension Vdd (Gnd) et qui sont respectivement commandés par la sortie du circuit logique combinatoire 30 et par la sortie du circuit logique combinatoire dupliqué 30'. Le dispositif d'initialisation 52 est composé d'un interrupteur qui connecte la sortie à la tension Gnd (Vdd) lorsqu'un signal de contrôle Cl est actif, le signal de contrôle étant activé pendant une période du cycle de fonctionnement dite phase d'initialisation. De façon optionnelle, afin de réduire la consommation de ce circuit, un interrupteur 56 est utilisé pour déconnecter la
sortie du circuit de forçage d'état de la sortie du circuit de modification lorsque le signal de contrôle Cl est actif.
En figure 7, le circuit de génération de code de contrôle d'erreurs du mécanisme d'évitement des erreurs pour un circuit logique combinatoire 30, comprend un élément de retard 50 qui retarde la sortie du circuit logique combinatoire d'une durée prédéterminée δ supérieure à la durée maximale des erreurs transitoires. L'élément de forçage d'état 44 est prévu pour être transparent lorsque les sorties du circuit logique combinatoire et de l'élément de retard sont identiques, et pour produire à sa sortie un état prédéterminé, quand ces sorties sont distinctes.
En figure 8, le mécanisme d'évitement des erreurs pour un circuit logique combinatoire 30 est combiné avec un circuit de détection d'erreurs 61 permettant d'initier une reprise des opérations les plus récentes. Pour un mécanisme d'évitement d'erreurs qui comprend un élément de retard 50 et un élément de forçage d'état 44, le circuit de détection d'erreurs peut être réalisé par un comparateur qui signale une erreur lorsque les sorties du circuit logique combinatoire 30 et de l'élément de retard 50 sont distinctes pendant une partie du cycle de fonctionnement dont la durée est supérieure à un certain seuil.
Pour un mécanisme d'évitement d'erreurs qui comprend un circuit logique combinatoire dupliqué 30' et un élément de forçage d'état 44, le circuit de détection d'erreurs peut être réalisé par un comparateur 61 qui signale une erreur lorsque les sorties du circuit logique combinatoire et du circuit logique combinatoire dupliqué sont distinctes pendant une période du cycle de fonctionnement dont la durée est supérieure à un certain seuil. En dehors de ces exemples de réalisation du circuit de détection d'erreurs, il existe d'autres réalisations possibles pour ce circuit. Par exemple, un décodeur de mémoire génère une pluralité de sorties dont une seule prend la valeur 1 à chaque cycle du fonctionnement de la mémoire. Le décodeur peut être protégé par un circuit d'évitement d'erreurs pour éviter qu'une
erreur du type 1 au lieu de 0 (erreur de polarité 1) survienne sur une sortie du décodeur, ce qui amènerait à la sélection d'un mot mémoire qui ne devrait pas être sélectionné. Un circuit d'évitement d'erreurs du type 1 au lieu de 0 va assurer que cette erreur ne pourrait pas survenir. Il n'est pas nécessaire, surtout si le décodeur a un très grand nombre de sorties, de corriger les erreurs du type 0 au lieu de 1. On pourra toutefois prévoir de les détecter pour activer un cycle de reprise. Ce dernier type d'erreurs conduit à la situation où toutes les sorties du décodeur sont égales à 0. Pour détecter ces erreurs, on peut utiliser un circuit qui signale un fonctionnement erroné lorsqu'un nombre de sorties du décodeur différent de 1 prend la valeur 1. Ce circuit permet de détecter les erreurs des deux types sur les sorties du décodeur. Un circuit plus simple permettant de détecter uniquement les erreurs du type 0 au lieu de 1 (qui sont les erreurs qui nous intéressent ici) consiste en une porte logique OU.
Ainsi, en figure 9, le circuit logique combinatoire 30 fournit une pluralité des sorties protégées par une pluralité d'éléments de forçage d'état 44. Ledit état prédéterminé est 0
(1). En l'absence d'erreurs, une seule des sorties des éléments de forçage d'état prend la valeur 1 (0) . Le circuit de détection d'erreurs est une porte logique OU (ET) 61 qui signale
1 'occurrence 'une erreur lorsque toutes les sorties des éléments de forçage d'état sont égales à 0 (1) pendant une période du cycle de fonctionnement qui a une durée supérieure à un certain seuil.
Dans certains circuits, certaines erreurs sont dangereuses uniquement pendant certains cycles du fonctionnement. Par exemple, dans une mémoire, les erreurs du type 1 au lieu de 0 sur la sortie du décodeur sont dangereuses uniquement en cycle d'écriture. Ainsi, un élément de retard utilisé dans le circuit d'erreur peut être court-circuité en cycle de lecture pour éviter la diminution de la vitesse du fonctionnement induite par l'élément de retard.
Ainsi, en figure 10, le mécanisme d'évitement d'erreurs comprend un élément de retard 50 d'une durée prédéterminée supérieure à la durée maximale des erreurs transitoires, et un élément de forçage d'état 44, le circuit comprend aussi un circuit de dérivation (mux) 70, permettant de contourner 1 ' élément de retard lorsqu 'un signal de contrôle C2 est actif. L'élément de forçage d'état est prévu pour être transparent lorsque les sorties du circuit logique combinatoire et de l'élément de retard sont identiques, et pour produire à sa sortie une valeur prédéterminée quand lesdites sorties sont distinctes .
En figure 11, le mécanisme d'évitement d'erreurs comprend un élément de retard 50 d'une durée prédéterminée supérieure à la durée maximale des erreurs transitoires, un circuit de dérivation 70 permettant de forcer la sortie de l'élément de retard à la valeur 1 lorsqu'un signal de contrôle C2 est égal à 1, et un élément de forçage d'état 44 réalisé par une porte ET ayant une entrée connectée à la sortie du circuit logique combinatoire 30 et une autre entrée connectée à la sortie du circuit 70.
En figure 12, le mécanisme d'évitement d'erreurs comprend un élément de retard 50, et un élément de forçage d'état 44. Le circuit comprend aussi un circuit de dérivation 70 permettant de contourner 1 'élément de forçage d' état lorsqu 'un signal de contrôle C2 est actif. L'élément de forçage d'état est prévu pour être transparent lorsque les sorties du circuit logique combinatoire et de l'élément de retard sont identiques, et pour produire à sa sortie une valeur prédéterminée quand lesdites sorties sont distinctes. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, on pourra tenir compte de divers cas particuliers dans lesquels il sera possible d'utiliser un mécanisme de détection et de reprise plutôt que de prévoir des éléments intrinsèquement immunisés contre les fautes.