Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CIRCUIT ARCHITECTURE PROTECTED AGAINST PERTURBATIONS
Document Type and Number:
WIPO Patent Application WO/2003/032160
Kind Code:
A2
Abstract:
The invention concerns a digital circuit architecture comprising combinational circuits (10, 12), short-term memory circuits (11) not capable of storing data for more than k operating cycles, long-term memory circuits (13) capable of storing data for more than k operating cycles of the circuit. Systems for protection against different perturbations are used for the different types of circuits and based on the functionality of said circuits.

Inventors:
NICOLAIDIS MICHAEL (FR)
Application Number:
PCT/FR2002/003484
Publication Date:
April 17, 2003
Filing Date:
October 11, 2002
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
IROC TECHNOLOGIES (FR)
NICOLAIDIS MICHAEL (FR)
International Classes:
G06F11/00; G06F11/10; G06F11/14; G11C7/02; G11C7/04; (IPC1-7): G06F11/10
Foreign References:
US5508634A1996-04-16
US5410550A1995-04-25
EP0547412A21993-06-23
US4612632A1986-09-16
US5173905A1992-12-22
US4199810A1980-04-22
FR2790887A12000-09-15
Other References:
JANUSZ SOSNOWSKI: "TRANSIENT FAULT TOLERANCE IN DIGITAL SYSTEMS" IEEE MICRO, IEEE INC. NEW YORK, US, vol. 14, no. 1, 1 février 1994 (1994-02-01), pages 24-35, XP000433306 ISSN: 0272-1732
SAXENA N ET AL: "ERROR DETECTION AND HANDLING IN A SUPERSCALAR, SPECULATIVE OUT-OF-ORDER EXECUTION PROCESSOR SYSTEM" 25TH. INTERNATIONAL SYMPOSIUM ON FAULT TOLERANT COMPUTING. DIGEST OF PAPERS. PASADENA, JUNE 27 - 30, 1995, INTERNATIONAL SYMPOSIUM ON FAULT TOLERANT COMPUTING, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. SYMP. 25, 27 juin 1995 (1995-06-27), pages 464-471, XP000573655 ISBN: 0-7803-2965-1
Attorney, Agent or Firm:
De Beaumont, Michel (1 rue Champollion, Grenoble, FR)
Download PDF:
Claims:
REVENDICATIONS
1. Architecture de circuit numérique comprenant des circuits combinatoires (10,12), des circuits de mémoire de courte durée (11) non susceptibles de stocker des données pendant plus de k cycles de fonctionnement, des circuits de mémoire de longue durée (13) susceptibles de stocker des données pendant plus de k cycles de fonctionnement du circuit, caractérisée en ce qu'elle comprend 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 (13), des moyens d'immunisation aux fautes ; b) pour les circuits de mémorisation de courte durée (11), des mécanismes à détection d'erreurs et reprise ; c) pour les circuits combinatoires (10) 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, des systèmes de détection d'erreurs et de reprise dans les mémoires concernées.
2. Architecture selon la revendication 1, caractérisée en ce que des bascules comportant une commande de maintien d'état (hold) sont traitées comme des circuits de mémorisation de longue durée quand la commande de maintien est active.
3. Architecture selon la revendication 1, caractérisée en ce que le mécanisme de reprise (20) comporte un mécanisme de répétition des k derniers cycles de fonctionnement.
4. Architecture selon la revendication 3, caractérisée en ce que le mécanisme de répétition des k derniers cycles comporte des mécanismes de préservation d'état associés à des éléments de mémorisation, capables à tout moment de sauvegarder des données entrant et/ou sortant des éléments de mémorisation pendant les k derniers cycles d'opération.
5. Architecture selon la revendication 2, caractérisée en ce qu'elle comporte un mécanisme de contrôle d'horloge pouvant réduire la fréquence de l'horloge pendant la phase de répétition des k derniers cycles d'opération.
6. Architecture selon la revendication 1, caractérisée en ce qu'au moins 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'évitement des erreurs seulement pour des erreurs d'une polarité déterminée.
7. Architecture selon la revendication 6, caractérisée en ce qu'au moins certains desdits au moins certains des circuits combinatoires sont associés à un mécanisme de détection des erreurs de la polarité opposée.
8. Architecture selon la revendication 6, caractérisée en ce que certains des circuits combinatoires susceptibles de fournir des instructions de commande à des mémoires de longue durée sont munis d'un mécanisme de blocage de l'opération de mémoire suite à une détection d'erreurs.
9. Architecture selon la revendication 7, caractérisée en ce que le mécanisme d'évitement des erreurs comprend un circuit de génération d'un code de contrôle d'erreurs (40) pour les sorties du circuit combinatoire (30), et un élément de forçage d'état (44) disposé aux sorties du circuit combinatoire, commandé par le circuit de génération de code de contrôle pour tre transparent lorsque le code de contrôle est correct, et pour forcer ses sorties à un état prédéterminé, correspondant à une polarité d'erreur opposée à la polarité d'erreur que le circuit combinatoire doit éviter, lorsque le code de contrôle est incorrect.
10. Architecture selon la revendication 9, caracté risée en ce que le circuit de génération de code de contrôle d'erreurs (40) 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 (44) est une porte OU (ET) ayant une entrée connectée à la sortie du circuit combinatoire (30) et une autre entrée 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 un fonctionnement correct, la sortie de l'élément de forçage d'état prend la mme valeur que la sortie du circuit combinatoire.
11. Architecture selon la revendication 9, caracté risée en ce que le circuit de génération de code de contrôle d'erreurs (40) comprend un circuit de prédiction (45) qui calcule un code détecteur d'erreurs pour les sorties du circuit combinatoire (30) à partir de signaux autres que les sorties du circuit combinatoire, un circuit de calcul (47) qui calcule ledit code détecteur d'erreurs à partir des sorties du circuit combinatoire, et un circuit (42) de vérification du code détec teur d'erreurs généré par le circuit de prédiction (45) et du code détecteur d'erreurs généré par le circuit de calcul (47).
12. Architecture selon la revendication 9, caracté risée en ce que le circuit de génération de code de contrôle d'erreurs (40) comprend un circuit combinatoire dupliqué (30'), ledit élément de forçage d'état (44) étant prévu pour tre transparent lorsque les sorties du circuit combinatoire (30) et du circuit combinatoire dupliqué sont identiques, et pour produire à sa sortie un état prédéterminé lorsque lesdites sorties sont distinctes.
13. Architecture selon la revendication 9, caracté risée en ce que l'élément de forçage d'état (44) est composé d'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 d'un dispositif de modification (53), qui modifie par la suite la valeur de cette sortie uni quement si le code de contrôle est correct et que ledit état prédéterminé est différent de l'état correspondant à la valeur de sortie du circuit combinatoire.
14. Architecture selon la revendication 9, caracté risée en ce que le circuit de génération de code de contrôle d'erreurs (40) comprend un élément de retard (50) capable de retarder les sorties du circuit combinatoire (30) d'une durée prédéterminée supérieure à la durée maximale des erreurs transi toires, l'élément de forçage d'état (44) étant prévu pour tre transparent lorsque les sorties du circuit combinatoire et de l'élément de retard sont identiques, et pour produire à sa sortie un état prédéterminé lorsque lesdites sorties sont distinctes.
15. Architecture selon la revendication 12 ou 14, caractérisée en ce que le mécanisme de détection d'erreurs de la polarité opposée est réalisé par un comparateur (61) qui signale une erreur lorsque les sorties du circuit combinatoire (30) et du circuit de génération de code de contrôle d'erreurs (40) sont distinctes pendant une période du cycle de fonctionnement dont la durée est supérieure à un certain seuil.
16. Architecture selon la revendication 9, caracté risée en ce que le circuit combinatoire (30) fournit une pluralité de 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) ; et le mécanisme de détection d'erreurs de la polarité opposée est réalisé par une porte logique OU (ET) (61) qui signale l'occurrence d'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.
17. Architecture selon la revendication 9, caracté risée en ce que, pendant une phase de fonctionnement, le méca nisme d'évitement d'erreurs est courtcircuité par un circuit de dérivation (70) qui impose sur la sortie du mécanisme d'évitement d'erreurs la valeur de la sortie du circuit combinatoire (30), en présence d'un signal de commande (C2).
Description:
ARCHITECTURE DE CIRCUITS PROTÉGÉE CONTRE DES PERTURBATIONS La présente invention concerne des circuits numériques protégés contre les effets de perturbations telles que des per- turbations transitoires résultant de causes externes ou de fautes temporelles liées à la fabrication des circuits.

Une faute transitoire est produite par une perturba- tion localisée provenant par exemple de bombardements de parti- cules. 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 tech- nologies modernes, les impulsions transitoires affectant un noeud d'un circuit combinatoire se propagent jusqu'aux entrées des points mémoire ("latches"). En mme 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 mme faute. De tels systèmes, extrmement 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 inter- rompt 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 logi- que 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 à

l'intérieur du circuit intégré permettra une sauvegarde systéma- tique 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 fonctionne- ment, si elle est corrompue par une faute, ne peut pas tre cor- rigée par une reprise opérant sur les k derniers cycles de fonc- tionnement. 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.

Mme 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 mme, 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 uni- quement 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 l'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 l'ensemble des données déterminant l'état du circuit pour pouvoir effectuer la reprise correctement. Certaines données peuvent tre perdues à jamais sans empcher 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 sauve- garder 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 mmes 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 l'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 l'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'évitement 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 combi- natoires 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émori- sation 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 combina- toires 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 pola- rité 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éca- nisme 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 l'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éter- miné, 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 mme 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édic- tion 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 mme 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éalable- ment 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 8 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 l'occurrence d'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 dange- reuses 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 l'é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 combi- natoire 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 l'é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.