Brevet FR2820844A1 — publié le 20020816

DISPOSITIF DE RECONFIGURATION D'UN ENSEMBLE MEMOIRE PRESENTANT DES DÉFAUTS La présente invention concerne un dispositif permettant de reconfigurer un ensemble de N modules électroniques associés à k modules de remplacement ou modules redondants. On considérera ici le cas où les modules électroniques sont des modules mémoire qui peuvent être des blocs d'une mémoire de grande dimension et/ou des lignes ou colonnes d'une mémoire. On gardera néanmoins à l'esprit que l'invention concerne de façon générale la reconfiguration d'un ensemble de modules électroniques. Les figures 1A et 1B illustrent de façon très simplifiée le problème que vise à résoudre la présente invention. On considère quatre blocs de cellules mémoire Mo à M3. En pratique, il s'agira par exemple de colonnes d'une mémoire pouvant comprendre plus de mille colonnes. Il est possible que certains de ces blocs mémoire présentent un défaut. Alors, on prévoit de remplacer le bloc en défaut par un bloc de remplacement. On a représenté deux blocs de remplacement SI et S2. En fait, on pourra prévoir plusieurs dizaines de blocs de remplacement. Pour réaliser ce remplacement, au lieu de connecter les bornes d'entrée/sortie de données do, dl, d2, d3 directement aux blocs mémoire Mp, M, M, M, on prévoit de relier ces bornes aux blocs mémoire par l'intermédiaire de multiplexeurs MUXp, MUX1, MUX2, MUX3, respectivement commandés par des blocs de commande CO, Cl, C2, C3. Dans le cas où il y a k blocs de remplacement, chaque multiplexeur comprendra k+1 sorties. Dans l'exemple des figures 1A et 1B, on suppose que le deuxième, Mu, des blocs mémoire de base et le premier, So, des blocs mémoire de remplacement sont en défaut. Dans le mode de réalisation de la figure lA, on propose de remplacer chaque bloc mémoire défaillant par son voisin non défaillant le plus proche. On réalise une substitution"de proche en proche". Chaque multiplexeur est susceptible d'être relié au bloc du même rang et aux deux blocs de rang immédiatement supérieur. Dans le cas de la figure 1A, l'entrée do est reliée au bloc Mo, l'entrée d1 est reliée au bloc M2 (au lieu du bloc Ml), l'entrée d2 est reliée au bloc M3 (au lieu du bloc M2), et l'entrée d3 est reliée au bloc Sl (au lieu du bloc M3 ou SO). Le multiplexeur MUXO réalise un décalage nul, les multiplexeurs MUX, et MUX2 un décalage d'un pas, et le multiplexeur MUX3 un décalage de deux pas. Dans le bloc de réalisation de la figure lE, tout bloc en défaut est remplacé non pas par l'un de ses voisins non défaillant mais par l'un des blocs de remplacement. On réalise une substitution"distante". Ainsi, l'entrée do est reliée au bloc Mo, l'entrée dl au bloc S1 et les entrées d2, d aux blocs M2, M3. Ainsi, chaque multiplexeur comprend une sortie vers le bloc correspondant et deux sorties vers les blocs So et S1. Les multiplexeurs MUX, MUX et MUX3 réalisent un décalage nul et le multiplexeur MUX1 un décalage de deux pas. La présente invention vise à prévoir un dispositif de reconfiguration (de reroutage) automatique entre des bornes d'accès et des blocs mémoire non en défaut, c'est-à-dire que les blocs mémoire en défaut sont remplacés par d'autres blocs choisis selon le cas parmi les voisins du bloc défaillant (cas de la figure 1A), ou directement parmi des blocs redondants (cas de la figure lys). On comprendra que ce problème est relativement complexe car, pour un bloc donné, pour déterminer vers quel bloc le rerou- tage doit être effectué, il faut tenir compte de l'état des blocs déjà examinés, par exemple ceux situés à droite (ou à gauche) d'un bloc considéré, et de l'état des blocs de remplacement possibles. Pour permettre cette reconfiguration, la présente invention prévoit pour chacun des cas (décalage de proche en proche ou décalage distant) un procédé faisant appel à des opérations séquentielles ou un procédé faisant appel à un système combinatoire. De plus, dans chacun des deux cas considérés, la présente invention envisage que les opérations puissent être faites de manière matérielle ou logicielle. De façon générale, la présente invention prévoit d'uti- liser un algorithme selon lequel : on commence par le bloc situé à une première extrémité d'une suite de blocs, on compte pour chaque bloc le nombre de blocs défaillants situés du côté de la première extrémité (les blocs défaillants comprenant éventuellement le bloc considéré luimême), on associe à chaque bloc, un ensemble de blocs de réserve disposés selon une suite ordonnée (les blocs voisins dans le cas de la figure 1A ou des blocs redondants dans le cas de la figure 1B), on compte, parmi ces blocs de réserve, des blocs successifs jusqu'à ce que l'on trouve un nombre de blocs non défaillants égal au nombre de blocs défaillants précédemment comptés, et une fois ce résultat obtenu, on remplace le bloc considéré, par le bloc décalé de façon correspondante des blocs de réserve, les blocs non défaillants n'étant pas remplacés dans le cas du passage direct aux blocs redondants. Plus particulièrement, la présente invention prévoit un dispositif de reconfiguration d'un ensemble de N modules électro- niques de base associés à k modules redondants, k des N+k modules étant susceptibles de présenter un défaut, comprenant : N multiplexeurs de 1 parmi k+1, chaque multiplexeur ayant une première borne susceptible d'être connectée à l'une de k+1 deuxièmes bornes respectivement connectées aux k+1 bornes d'entrée/sortie d'un groupe ordonné de modules composé d'un module de base et de k autres modules ; N+k bascules, chaque bascule étant indicatrice d'un état bon ou mauvais d'un des N modules de base et des k modules dudit groupe ordonné ; et un moyen logique associé à chaque multiplexeur de rang j, j étant un entier compris entre 0 et N, pour - déterminer un premier nombre correspondant au nombre de bas- cules de rang 0 à j indiquant un état mauvais, - déterminer un deuxième nombre correspondant au nombre de modu- les du groupe ordonné associé au module de rang j, à compter, en partant du premier module dudit groupe ordonné, pour trouver un nombre de modules bons égal au premier nombre, - connecter la première borne du multiplexeur à sa deuxième borne de rang égal au deuxième nombre, et - inhiber éventuellement le décalage des multiplexeurs correspon- dant à des blocs bons. Selon un mode de réalisation de la présente invention, la réparation est effectuée de proche en proche et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, 11,12, Ci) fournit à chaque cycle d'une horloge une commande de décalage éventuel des multiplexeurs et une commande des contenus (Fi) des bascules selon les équations suivantes : Ri = Ri-1 + Fi, pour N+k-1ZizO (1) Fi (t+1) =Ri. Fi+i (t), pour N+k-liO (2) où t et t+1 indiquent deux instants successifs. Selon un mode de réalisation de la présente invention, le moyen logique comprend : une porte OU (11) recevant la sortie de chaque bascule de rang i (Fi) et de la bascule précédente (Fi-,) ; une porte ET (12) recevant les sorties de la porte OU (11) et de la bascule de rang i+1 (Fi+1) ; et un compteur (Ci) de commande du multiplexeur (MUXi), recevant la sortie de la porte OU (11). Selon un mode de réalisation de la présente invention, la réparation est effectuée de proche en proche et est réalisée selon l'équation ccmbinatoire : Mi+lj = Fj+i (Mij+Miji. Fi+j+Mij2. Fi+j-i. Fi+j+... +Mio-Fi+l. Fi+2-. Fi+j), pour O : gj : gk. (4) Selon un mode de réalisation de la présente invention, la réparation est effectuée de façon distante et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, Sj, 21-25, Bi) fournit à chaque cycle d'une horloge une commande de décalage éventuel d'un multiplexeur en défaut et une commande des contenus (Fi, Si) des bascules selon les équations suivantes : FIi = FIi-1 + Fi, si O eu : FIi est une variable, Fi (t) désigne l'état d'une bascule associée à un module de base à l'instant t, ENi désigne un signal de validation appliqué à un circuit de commande de multiplexeur, Li désigne un signal tel que la somme des Li + 1 est appliqué à un circuit de commande de multiplexeur à l'instant t, Si (t) désigne l'état d'une bascule associée à un module de remplacement à l'instant t. Selon un mode de réalisation de la présente invention, la réparation est effectuée de façon distante et est réalisée selon l'équation combinatoire : Mio = Fi+i, Mi+lj +1 = j +lFi+l (MIij +MIij iSj +MIij-2Sj-iSj +... +MIioSlS2... Sj) pour 0jj où : Fi désigne l'état d'une bascule associée à un module de base, Si désigne l'état d'une bascule associée à un module de remplacement. MIj est une variable telle que Mli+1j = Mlijo Fj+i + Mi+1j. Fi+1 0 i n-2 et 0 j k (12) 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 : les figures lA et 1B représentent des exemples de reconfiguration de blocs mémoire destinés à illustrer le problème posé par la présente invention ; la figure 2 représente un exemple de réalisation de dispositif de reconfiguration de blocs mémoire de type séquentiels et à décalage de proche en proche ; la figure 3 représente une variante d'une partie du circuit logique de la figure 2 ; la figure 4 représente un exemple de réalisation de dispositifs de reconfiguration de blocs mémoire de type séquentiels et à remplacement de blocs défaillants par des blocs redondants ; la figure 5 représente deux exemples de compteurs de 1 utilisés dans le circuit logique de la figure 4 ; et les figures 6 à 10 illustrent des variantes de dispositifs de reroutage. 1. NOTATIONS Dans la présente demande, on désignera par : N : le nombre de blocs de base de la mémoire susceptible de présenter des défaillances, et k : le nombre maximum de blocs défaillants que l'on pourra remplacer. Un bloc de base de la mémoire initiale sera appelé Ui avec i compris entre 0 et N-1. Les blocs de remplacement seront indifféremment appelés So à S. i ou U a UN+k-1- Les multiplexeurs associés aux blocs Uo à UN 1 seront appelés MUXO à MUXN-. di désigne l'entrée d'un multiplexeur MUX. Des bascules Fo à FN+k-l sont associées aux blocs de base et de remplacement et indiquent l'état initial du bloc correspondant. Ces bascules sont à 1 si le bloc est initialement mauvais et à 0 si le bloc est initialement bon. Ces bascules sont initialisées de façon classique lors d'une étape de test pendant laquelle on vérifie le fonctionnement de chaque bloc. Selon l'invention, on traite le cas où les blocs de base aussi bien que les blocs de remplacement sont susceptibles d'être défaillants. 2. RÉPARATION DE PROCHE EN PROCHE On considérera d'abord le cas où le processus de réparation est du type illustré en figure 1A dans lequel, à chaque multiplexeur associé à un bloc, sont également associés des blocs adjacents à ce bloc. 2.1 Reconfiguration séquentielle La figure 2 représente un exemple de structure de reconfiguration séquentielle pour une réparation de proche en proche de cellules éventuellement défaillantes. Dans l'exemple représenté, chaque multiplexeur MUXO à MUON-1 est associé à un compteur Co à CN-l qui est incrémenté par un signal Ri (Ro... RN-l) produit par un circuit séquentiel de sorte que le signal Ri prend la valeur 1 pendant plusieurs cycles d'horloge consécutifs. Les bascules Fa à FN+k-l sont initialement chargées d'un 0 si le bloc correspondant est bon et d'un 1 si le bloc correspondant est mauvais. Les signaux Ri à fournir à un circuit de commande de multiplexer c dépendent de la valeur de la bascule Fi correspondante mais également des bascules de rang inférieur étant donné que, quand une position doit être décalée vers la gauche, toute position d'un rang supérieur doit également être décalée vers la gauche. La valeur de Ri dépend également des valeurs des bascules de rang supérieur à i. En effet, il faut s'assurer que le bloc que l'on vise à choisir comme bloc de remplacement est un bloc bon. Pour résoudre ce problème, la présente invention propose l'algorithme suivant. a) Fi =1 entraîne que Ri=l, puisque, pour un bloc Ui en défaut, il doit y avoir au moins un décalage. De plus, chaque fois qu'un signal Ri est activé, il force tous les signaux de rangs supérieurs à l'état actif. On doit donc avoir Ri = Fi+Ri-1. b) Quand le signal Ri est activé (Ri=l), la valeur de la bascule Fi+1 est transférée à la bascule Fi et, s'il n'y a pas de bascule Fi+1, un 0 est transféré à la bascule Fi. Ceci exprime que, à la fin de chaque cycle d'horloge, l'entrée di est connectée au bloc sur lequel l'entrée di+1 était précédemment connectée. Ainsi, la bascule Fi doit indiquer l'état qui était précédemment indiqué par la bascule Filon déduit des points précédents l'équation séquentielle suivante pour les bascules Fi : Fi (t+1) = Ri. Fi+1 (t), où t et t+1 indiquent deux instants successifs. En résumé, l'algorithme séquentiel est : Ri = Ri + Fi, pour N+k-l > i0 (1) Fi (t+1) = Ri. Fi+1 (t), pour N+k-liO (2) Les conditions aux limites sont que, pour la bascule Ro, on considère que la bascule fictive R-1 est à l'état 0 et, pour la bascule FN+k-1'on considère que la bascule fictive FN+k est à l'état 0. La figure 2 représente un circuit logique mettant en oeuvre les équations logiques ci-dessus. La sortie Fi de chaque bascule est connectée à une première entrée d'une porte OU 11 dont la sortie est connectée par l'intermédiaire d'une porte ET 12 à l'entrée de cette bascule Fi. La sortie de la porte OU 11 fournit également le signal Ri. La deuxième entrée de la porte OU 11 est connectée à la sortie de la porte OU 11 de l'étage précédent. La sortie de la bascule Fj est renvoyée à la deuxième entrée de la porte ET 12. Chacune des bascules est rythmée par un signal d'horloge qui commande également les compteurs Ci. On voit que ce circuit permet de satisfaire aux équations logiques susmentionnées. On peut également comprendre le fonctionnement en considérant les étapes suivantes. Au premier coup d'horloge, on suppose que les premières bascules Fo et Fl sont à l'état 0. Elles ne fourniront donc pas de signal de décalage aux entrées RO et RI des compteurs CO et Cl. La première bascule à l'état 1, par exemple la bascule F2, fournira un signal R2 au compteur C2 pour l'incrémenter. Ce signal sera également transmis par la chaîne de portes OU à toutes les bascules suivantes et incrémentera les compteurs C3 à CN-1. Les sorties des multiplexeurs MUX2 à MUXN-l seront donc toutes décalées d'un pas. Simultanément, toutes les portes ET 12 qui suivent la bascule F2 auront une première entrée validée et passeront à l'état de la deuxième entrée de la porte ET 12 correspondante, c'est-à-dire à l'état de la bascule suivante, la dernière bascule FN+k-l prenant l'état 0. Ainsi, si la bascule F3 n'était pas ai, la bascule F2 prend l'état 0. Au coup d'horloge suivant, c'est la première bascule Fi à 1 qui enverra un signal Ri aux compteurs Ci à CN-l et qui décalera les sorties du multiplexeur MUXi et de tous les multiplexeurs suivants. A nouveau, les contenus de toutes les bascules Fi à FN+k-1 seront décalés d'un pas vers la droite et le cycle se reproduit. En autant de coups d'horloge qu'il y a de 1 dans les bascules Fo à FN+ki, les multiplexeurs MUXo à MOXA-1 seront mis dans la configuration appropriée par les compteurs Co à CN-1. Ainsi, avec le schéma de la figure 2, les équations (1) et (2) ci-dessus sont mises en oeuvre par une cascade de portes OU en série. Il peut en résulter des retards relativement importants, ce qui peut entraîner une durée relativement longue pour la phase de réparation. On notera toutefois que ceci n'a d'impact ni sur la durée de la phase de test ni sur la durée ultérieure de fonctionnement normal de la mémoire. Ainsi, on peut utiliser une horloge de fréquence basse spécifique pour la phase de réparation ou utiliser le même signal d'horloge que sur les autres phases mais réduire la fréquence de ce processus pendant la phase de réparation. On pourrait aussi mettre en oeuvre les équations précédentes en utilisant un circuit à plus faible retard. La figure 3 représente un exemple de circuit utilisable pour fournir huit signaux Ro à R7 à partir de huit états de bascule Fo à F7' On notera en outre que le signal RN+k-1 fourni par la dernière porte OU 11 associée à la dernière bascule FN+k-1 est en théorie inutile puisqu'il n'est pas destiné à commander un multiplexeur (il y a seulement N multiplexeurs). Toutefois, ce signal pourra être utilisé pour indiquer la réussite ou l'échec du processus de réparation. Si RN+k-1=0 après k cycles d'horloge de la phase de réparation, la réparation a été couronnée de succès. Par contre, si RN+k-l=1 après k cycles d'horloge, la réparation a échoué car cela signifie qu'il y avait plus de k blocs en défaut. RN+k-1 peut également être utilisé comme signal d'achèvement de la phase de réparation. C'est-à-dire que l'on n'a pas besoin d'attendre k cycles d'horloge pour parachever la phase de réparation. On peut s'arrêter dès que RN+k-1 devient égal à 0. Par ailleurs, la présente invention est susceptible de diverses variantes qui apparaîtront à l'homme de l'art. Par exemple, les équations (1) et (2) peuvent être simplifiées si l'on considère que les blocs redondants UN à UN+k-1 sont exempts de défauts. Dans ce cas, on peut éliminer les bascules FN à FN+k-1 associées à ces blocs et les circuits logiques associés. On peut également réduire la complexité du circuit en faisant certaines suppositions. Par exemple, si l'on suppose que quand on arrive à un module de rang i, il existe inévitablement un nombre de défauts ki ties. On pourra parallèlement simplifier les compteurs associés à ces multiplexeurs. Diverses autres simplifications apparaîtront à l'homme de l'art en fonction d'hypothèses pratiques qu'il pourra effectuer sur la réparation de défauts possibles. 2.2 Reconfiguration combinatoire Le circuit décrit précédemment est un circuit à fonctionnement séquentiel. On cherche maintenant à déterminer directement le déca- lage à conférer à chaque multiplexeur en fonction de l'état de diverses bascules Fo à FN1, par exemple par itération. Pour fixer l'état d'un multiplexeur, on considère que chaque multiplexeur MUXi a k entrées de commande Mio à Mik qui doivent toutes être à zéro sauf l'entrée qui correspond au décalage que l'on veut que le multiplexeur adopte. Par exemple, si le bloc Uo est sans défaut, le multiplexeur MUXO doit ne provoquer aucun décalage, c'est-à-dire que son entrée de commande Moo doit être à 1 et que toutes ses autres entrées de commande Mio à Mko doivent être à zéro. En appelant Fi l'état de la bascule Fi et Fi l'état complémentaire, les entrées du multiplexeur MUX0 s'exprimeront en fonction de l'état des blocs Uo à Uk associés de la façon suivante : Dans ces équations, les points désignent des fonctions ET, c'est-à-dire que dès qu'une valeur est passée à zéro, toutes les valeurs suivantes seront à zéro. Ces équations se comprennent bien en notant que, si par exemple les modules DO et U1 sont en défaut, le multiplexeur MUX0 doit effectuer deux décalages, c'est-à-dire que MOO et MOI seront à zéro, que MO sera à 1 et que tous les M03 à Mok seront à zéro. De façon générale, on peut exprimer l'état de chacune des entrées Mi+lj en fonction des entrées précédentes de la façon suivante : Mi+lj = Fi+j+l (Mij+Miji. Fi+j+M2. Fi+j-l-Fi+j+... +MiO-Fi+l-Fi+2.. Fi+j), pour0 A partir des équations (3) et (4), on peut obtenir de façon générale les équations de Mij pour toute valeur de i et de j en fonction des variables Fi. Ceci peut être effectué par un algorithme simple. Un tel algorithme établit d'abord dans l'équation (4) la valeur i+1=1 pour obtenir les équations des signaux Mlj en fonction des variables Fi et des variables Mûr. Ensuite, il remplace dans les équations résultantes les variables Mûr par leurs expressions en fonction des variables Fi comme cela est décrit par les équations (3). Alors, on peut calculer les fonctions M2j de façon similaire en fixant i+1=2 dans l'équation (4) puis en remplaçant les expressions des fonctions Mûr et mlq obtenues à l'étape précédente et ainsi de suite dans les fonctions M3jl M4j.... MN-1j. Le calcul s'arrête bien entendu pour la position N puisque, comme on l'a vu précédemment, au-delà de cette position, il n'y a pas de multiplexeurs. 3. RÉPARATION DISTANTE Comme on l'a rappelé dans l'introduction de la présente demande, on distingue les opérations de réparation de proche en proche telles qu'illustrées en figure 1A des opérations de réparation distante telles qu'illustrées en figure 1B dans laquelle les modules bons restent associés à leurs entrées initiales tandis que les modules en défaut sont remplacés par des modules choisis dans le groupe des modules redondants. Pour ce mode de réparation distante, on distinguera comme précédemment un mode de réparation séquentiel et un mode de réparation combinatoire. 3.1. Reconficruration séquentielle La figure 4 illustre un schéma d'un mode de réalisation d'un système de réparation séquentiel. Comme dans le schéma de la figure 2, on trouve des multiplexeurs MUXo à MUXN-1 associés à des entrées do à d destinées à être connectées à des modules non en défaut. Dans cet exemple, les multiplexeurs sont disposés de droite à gauche au lieu d'être disposés de gauche à droite comme précédemment. On aurait également pu choisir de modifier la numérotation et de partir de N-1 pour aller vers 0 au lieu de partir de 0 pour aller à N-1. A chaque module est associé un circuit de commande qui au lieu d'être comme précédemment un compteur est cette fois-ci constitué d'un ensemble de k+1 bascules pour mémoriser les valeurs exactes des signaux de commande dans un code de 1 parmi k+1. Ces circuits de commande sont désignés en figure 4 par les références Bo à BN-1. Les bascules indiquant l'état bon ou mauvais des blocs initialement associés aux divers multiplexeurs sont désignées comme précédemment par les références Fo à Fun-1 pour les bascules associées aux blocs de base et par les références Sl à Sk dans l'exemple représenté pour les blocs redondants. En ce qui concerne les bascules de commande des multiplexeurs, on pourrait également utiliser un nombre plus faible de bascules dans chaque ensemble pour coder les valeurs de ces signaux en un code plus compact, par exemple un code binaire, combiné à un décodeur qui produit le code de 1 parmi k+1. Cet ensemble de bascules peut être constitué de façon à réaliser seulement la fonction de charge. Dans ce cas, on devra utiliser un autre circuit pour calculer le nombre de positions dont la borne d'entrée et de sortie DI doit être décalée vers les blocs redondants et charger ces résultats dans les bascules de réparation. Une autre possibilité est de prévoir les bascules de réparation selon une configuration de compteur comme on l'avait fait précédemment. On notera que dans le cas de la figure 4, on effectue la réparation selon un décalage vers la droite ce qui signifie que l'on répare d'abord le module fonctionnel le plus à gauche. On va utiliser deux fonctions séquentielles agissant au rythme d'une horloge qui, à chaque cycle, active notamment les bascules Fo à FN-l et SI à Sk. La première séquence utilisant les bascules Fo à F produit des signaux ENO à EN~1 qui valident ou non les circuits de commande correspondants. Chaque bascule Fi est reliée au circuit de commande Bi par une porte ET 21 qui reçoit également l'inverse de la fonction OU de toutes les bascules précédentes. Ainsi, si une bascule Fi contient un 0 (bloc correspondant bon), le circuit de commande Bi est inhibé et le multiplexeur MUXi n'est pas décalé. La sortie de la bascule Fi est reliée par une porte ET 22 à l'entrée de cette bascule Fi. Ainsi, si la bascule Fi contient initialement un 0, son état reste toujours à 0. La deuxième entrée de la porte ET 22 reçoit la sortie de la bascule Fi 1. Ainsi, lors d'un cycle d'horloge, seul le circuit de commande associé au bloc en défaut non encore réparé, situé le plus à gauche, est activé. La seconde séquence fonctionnelle est mise en oeuvre en utilisant les bascules SI à Sk et produit à tout instant le nombre de positions dont le bloc en défaut, au cycle considéré, signalé par un signal ENi actif, doit être décalé vers l'un des blocs redondants (non représentés en figure 4). La sortie de chaque bascule Si est connectée à son entrée par une porte OU 23 dont la deuxième entrée est connectée à la sortie d'une porte ET 24 qui reçoit les sorties de la bascule Si-l et de la porte ET précédente. On appelle Li la sortie de la porte ET qui suit la bascule Si. Les sorties Li sont fournies à un compteur de 1 combinatoire 25 qui reçoit un 1 sur sa première entrée. Ainsi, le compteur 25 fournit le nombre de positions dont le bloc de base en défaut indiqué par le signal ENi actif doit être décalé dans les blocs redondants pour réaliser une réparation. Un compteur de 1 combinatoire peut être réalisé de diverses façons. Deux exemples de telles réalisations pour k=3 et k=5 en utilisant des additionneurs complets (à trois entrées) FA et des demi-additionneurs (à deux entrées) HA sont représentés en figure 5. Un compteur de 1 séquentiel pourrait également être mis en oeuvre. Par exemple ceci peut être réalisé en utilisant un circuit de décalage à k+l cellules. La cellule 0 est chargée de 1. Les signaux L, L2.... Lk sont chargés dans les cellules suivantes. Les contenus seront décalés vers la droite jusqu'à ce que le premier 0 soit fourni vers la sortie. Pour le calcul des décalages, on utilisera des fonctions intermédiaires FIi. La fonction FIi est à 1 si l'un quel- conque des signaux Fi, Fi+1... FN-1 est à 1. Ceci donne les équations récursives suivantes : FIi = FIi-1 + Fi, si 0 La bascule Fi maintient son état tant que l'une des bascules Fi-l'Fi-2-"". FN-l est à 1. Cette condition implique que Fiai = 1. On obtient ainsi : Fi (t+l) = FIi-l. Fi (t), si 0 Le signal ENi passe à 1 si Fi est à 1 et que toutes les bascules Fi à Fo sont à 0. Ceci implique que FIi = 0. On obtient ainsi : Le circuit formé à partir des bascules Si met à jour le contenu de ces bascules à chaque cycle d'horloge. Cette mise à jour est telle que à tout cycle les bascules Si indiquant un module disponible contiennent un 0 et que les autres bascules Si contiennent un 1. Ainsi un bloc redondant disponible est un bloc exempt de défauts qui n'est pas encore occupé par la réparation d'un bloc fonctionnel en défaut. Un bloc redondant en défaut reste toujours indisponible, c'est-à-dire que Si reste toujours égal à 1. Un bloc redondant exempt de défaut devient indisponible à un cycle t+1 si au cycle t toutes les bascules Si sont laissées à 1. Ainsi on a : D'après ces équations, les signaux LI, L2.... Lk prennent les valeurs Ll=L2=.... =L-jl=0, Lj=Lj+l=... =Lk=l, où j est le plus petit entier pour lequel Sj = 1. Dans ce cas, le bloc redondant j+1 est le premier bloc redondant disponible pour réaliser une réparation. Les signaux Lk et FIN peuvent être utilisés pour achever la phase de réparation. FIN-1 =0 indique que toutes les positions sont correctes et que la réparation peut s'achever. Lk=l indique qu'il n'y a plus de module redondant disponible. La réparation peut également être réalisée en utilisant des compteurs de réparation plutôt que des bascules de réparation Bi. Le compteur de réparation peut être un compteur binaire suivi d'un décodeur pour produire un code de 1 parmi k+1, ou un registre à décalage. Dans ce cas, le compteur 25 peut être remplacé par un compteur séquentiel de 1 tel qu'un circuit de décalage. La valeur 1 de la cellule la plus à gauche de ce circuit de décalage sera utilisée pour conserver les états des bascules F et S. La valeur 0 de cette cellule sera utilisée pour maintenir l'état du compteur séquentiel jusqu'à son chargement suivant. La cellule la plus à gauche du circuit de décalage sera à 1 pendant ki cycles d'horloge, où ki est égal au nombre de signaux Lj ayant la valeur 1, plus 1. Alors, ki est égal au nombre de positions dont le bloc Di en défaut indiqué par l'état ENi=l doit être décalé vers les modules redondants. Le signal ENi sera maintenu à la valeur 1 pendant ki cycles d'horloge. Ainsi, en utilisant le signal ENi en tant que signal qui valide l'opéra- tion de comptage du compteur de réparation de position i, on pourra produire les valeurs requises sur les signaux de commande du multiplexeur de réparation de position i. Avec cette dernière mise en oeuvre, on peut également charger dans le registre mettant en oeuvre le compteur de 1 les signaux F1, F2... Fk au lieu des signaux L1, L2... Lk La raison en est que ces signaux sont égaux l'un à l'autre jusqu'à et y compris la position la plus à gauche dont l'état est égal à 0. Ces positions sont celles qui déterminent le fonctionnement du circuit. 3.2 Reconfiquration combinatoire Comme précédemment, le système de réparation à distance peut également être réalisé par une fonction combinatoire que l'on définira de façon incrémentielle. En reprenant les notations de la section 2. 2, on a les équations : Les équations correspondant à une borne arbitraire dj impliquent les variables F et S. Pour calculer les variables Mj+1j on ne peut utiliser les variables Mir comme indicateurs du nombre de blocs redondants occupés après la réparation de certains blocs de base. Ceci est dû au fait que si le bloc de base Ui est exempt de défaut, toutes les fonctions Mil à Mik sont à 0 bien que certains des blocs Up à Us l puissent être en défaut. Ainsi, on introduit des variables intermédiaires MIij qui comptent le nombre de blocs redondants occupés par les blocs de base en défaut. Ces variables sont déterminées par les équations suivantes. Pour la position 0, les variables MI sont égales aux variables M : Mi0 = pour0 Pour la position i+l, les variables MIi+lj sont égales aux variables MIij si le bloc Ui+l est exempt de défauts. Sinon elles sont égales à M-+. Ainsi, on a : La variable Mi+10 est égale à 1 si le bloc Ui+1 est exempt de défaut. La variable Mi+1j est égale à 0 si le bloc Ui+1 est exempt de défauts. Si Ui+1 est en défaut, Mi+1j +1 devient égal à 1 si Sj+1 est exempt de défauts et s'il existe un entier r défauts sont déjà occupés pour réparer les modules Uq avec qui, et les blocs redondants Sr+i, Sr+2... Sj sont en défauts. Cette analyse conduit aux équations : Mio = Fi+i, Mi+lj +1 = S j +lFi+l (MIij +MIij iSj +MIij 2Sj-iSj +... +MIioSlS2... Sj) pour Ojk-1, Oik-2, (13) Ainsi, les équations (10) à (13) décrivent la fonction M de façon récursive et peuvent être mises en oeuvre par tout logiciel approprié. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, chaque bascule d'indication d'état est associée à des signaux de validation pour, dans un mode de test se charger en fonction de l'état bon ou mauvais du bloc correspondant, et, en mode de réparation, fonctionner de la façon décrite précédemment. Variantes de multiplexage En figure 2 les données peuvent se propager : - des modules Ui, U2,..., U. l vers les bornes do, dl,..., d.-l (par exemple dans le cas où d0, d1, ..., dN+k-1 sont le bus de données en lecture d'une mémoire). On appellera ce cas configuration de type lecture. - des bornes d0, d1, ..., dN+k-1 vers les modules U1, U2, ..., UN+k-1 (par exemple dans le cas où do, dl,..., k-l sont le bus des données en écriture d'une mémoire, ou dans le cas où do, d1, ..., dN+k+1 sont les signaux de sélection des modules). On appellera ce cas configu- ration de type écriture. - dans les deux directions (par exemple dans le cas où do, dl, ..., dN+k-1 sont le bus bidirectionnel de lecture/écriture d'une mémoire). On appellera ce cas configuration bidirectionnelle. Dans le cas de la configuration bidirectionnelle, les multiplexeurs utilisés doivent permettre une propagation bidirectionnelle des signaux. Un multiplexeur du type 1-parmi-4 est présenté en figure 6. Un multiplexeur bidirectionnel peut être également utilisé dans le cas des configurations du type lecture et du type écriture. Dans le cas de la configuration du type lecture, on peut aussi utiliser un multiplexeur permettant uniquement la propagation des k signaux Do, Dl,... Dk-l de sortie des modules U, U2,..., U. i vers le signal d. Un tel multiplexeur pour le cas k=4 est présenté en figure 7. Dans le cas de la configuration du type écriture, on peut aussi utiliser un "multiplexeur" permettant uniquement la propagation du signal d vers les k signaux Do, Dl,... Dol. Ce circuit, qui n'est pas un multiplexeur au sens habituel du terme, sera appelé MUX k-parmi-1. Un circuit de ce type pour le cas k=4 est présenté en figure 8. On remarque que dans cette figure gel = 1 implique Dj = 0. Par conséquent, si nous avons à générer un signal G en combinant plusieurs signaux Dj en provenance des sorties de plusieurs circuits de type k-parmi-1, nous devons utiliser une porte OU ayant comme entrées les signaux Dj et fournissant en sortie le signal G. Par contre, si on utilise un multiplexeur bidirectionnel, réalisé comme dans la figure 6, la porte OU ne sera pas utilisée, car le signal G sera généré en utilisant une connexion câblée des signaux Dj. Ainsi, une configuration de type écriture, utilisant des circuits de type MUX k-parmi-1, nécessitera de remplacer la connexion câblée des signaux Dj par des portes OU, tandis que l'utilisation de multiplexeurs bidirectionnels ne nécessite pas l'utilisation de portes OU. Néanmoins, dans certains cas, le signal fourni à un module doit prendre la valeur 1 à l'état actif et la valeur 0 à l'état inactif. Cette contrainte n'est pas satisfaite quand on utilise le multiplexeur bidirectionnel de la figure 6 ; par contre elle est satisfaite quand on utilise le circuit de type MUX k-parmi-1 présenté dans la figure 8, combiné avec la porte OU. Il se peut aussi que le signal fourni à un module doive prendre la valeur 0 à l'état actif, et la valeur 1 à l'état inactif. Dans ce cas on utilisera des circuits de type MUX k-parmi-1 réalisant la fonction Mol implique Di=d et Mj''=0 implique Di=l, combinés avec des portes ET. Dans d'autres implémentations, il se peut qu'on combine les sorties d des plusieurs multiplexeurs 1-parmi-k pour générer un signal G. Si on utilise des multiplexeurs bidirectionnels, on peut générer le signal G en utilisant une connexion câblée des signaux d. Par contre, si on utilise des multiplexeurs 1-parmi-k, réalisés comme dans la figure 7, la connexion câblée doit être remplacée par une porte OU. La raison est que le multiplexeur de la figure 7 réalise la fonction : Moi, Mli,.. Mj\... M = 00... 1... 0 implique d=Dj et Mo=M,... =M-\... =M=0 implique d=0. Ainsi, il sera moins coûteux d'utiliser un multiplexeur bidirectionnel. Néanmoins, il se peut que le signal G prenne la valeur 0 à l'état inactif. Dans ce cas, il sera nécessaire d'utiliser un multiplexeur réalisé comme dans la figure 9. D'autre part, si le signal G doit prendre la valeur 1 à l'état inactif, on doit utiliser des multiplexeurs de type 1-parmi-k, réalisant la fonction : Moi, Mj,... Mji,.. Mki = 00... 1... 0 implique d=Dj, et M = M,... =Mj\... =M = 0 inpiique d=l. Un dernier cas des circuits de multiplexage correspond à des circuits réalisant les mêmes fonctions que celles décrites précédemment, à l'exception près qu'on applique des valeurs complémentaires à leurs entrées. Par exemple, l'implication Mo\ Mi\... M,... Mkl = 00... 1... 0 implique d=Dj, devient Mo\ M/,... M/,.. MM = 11... 0... 1 implique d=Dj. Une autre façon de réaliser l'aiguillage de proche en proche est représentée en figure 9, dans laquelle N=3 et k=2. Pour réaliser le multiplexage, on utilise des circuits d'aiguillage, tels que présentés dans les figures 6, 7, et 8. Si les circuits de la figure 1A sont des multiplexeurs bidirectionnels, la figure 9 utilisera des multiplexeurs bidirectionnels. Si les circuits de la figure 1A sont des multiplexeurs 1-parmi-k, comme le circuit de la figure 7, la figure 9 utilisera des circuits d'aiguillage du type MUX r-parmi-1, comme le circuit de la figure 8. Si les circuits de la figure 1A sont des circuits du type MUX k-parmi-1, comme le circuit de la figure 8, la figure 9 utilisera des multiplexeurs 1-parmi-r, comme le circuit de la figure 7. On considère que la figure 9 utilise des circuits du type MUX r-parmi-1. La borne d de chacun de ces circuits est connectée sur le signal d'entrée/sortie d'un des modules Ul, U2, ... UUi. On appellera CM,. le circuit d'aiguillage connecté à l'entrée/sortie du module U,. Les bornes D des circuits d'aiguillage sont combinées pour générer les signaux do, dol,..., dçkl. Pour les circuits d'aiguillage mi du type r-parmi-1, les valeurs de r seront : r = i + 1, pour0 Pour 0 Une transformation similaire peut être utilisée dans le cas du système de configuration distante illustré dans la figure 1B. Dans ce cas la paramètre r des circuits d'aiguillage prenne les valeurs suivantes : r= 1, pour 0 Pour 0 Dans les systèmes obtenus par les transformations précédentes, les signaux ml, prennent les mêmes valeurs que dans le système d'origine. Les solutions de génération des signaux M que nous avons présentées sont donc valables pour les systèmes obtenus par ces transformations. Réparation utilisant une redondance insuffisante On considère maintenant un système incluant N modules fonctionnels, k modules redondants et capables de réparer jusqu'à r modules défaillants, avec r > k#0. Dans le cas où le nombre de modules défaillants ne dépasse pas k, le système, après réparation, fonctionnera avec N modules. Si le nombre de modules défaillants est q avec k d,..., di, chacun sélectionnant un module. La réparation consis- tera à rerouter les signaux do, dal,..., dN+k-q-1 de façon à remplacer chaque module fonctionnel défaillant par un module sans faute. De plus, le système de réparation pourra éventuellement fournir des signaux indiquant la réduction du nombre de modules de façon que le reste du système utilise seulement les ressources des modules non défaillants qui seront vus par le système comme étant les N+k-q premiers modules de la configuration. Pour illustrer l'intérêt de cette solution, considérons que les modules Uo, U1, ..., Ui, sont des blocs d'une mémoire, chacun incluant R adresses. Le système peut exploiter une mémoire incluant un total de R-N adresses. Dans cette configuration il offre les meilleures performances, mais il pourra aussi fonctionner avec une mémoire ayant une capacité plus faible. Les signaux do, d1, ..., di sont générés par exemple, par le décodage d'un nombre de bits d'adressage égal à [log2 (N)]. La valeur 00... 0 de ces bits active le signal do, la valeur 00... 1 active le signal d,, etc., jusqu'à la valeur N-1 exprimée en binaire qui activera d,,. Dans le cas de q modules défaillants où le système utilisera un espace mémoire incluant seulement R (N+k-q) adresses, il est important que cet espace d'adressage ne soit pas fragmenté, c'est-à-dire que le système dispose d'une mémoire couvrant l'espace d'adressage 0, 1,... R (N+k-q). Le système de réparation proposé, permet cette unification par le reroutage de signaux do, di,..., dq. i et fournit éventuellement des signaux indiquant l'espace d'adressage invalide. La technique que nous proposons pour faire cette réparation implémente le même circuit de réparation dans le cas où le nombre k des modules redondants est égal au nombre r de modules défaillants que nous envisageons de réparer, à l'exception près de certains multiplexeurs, comme cela sera décrit dans ce qui suit. Nous considérons ici une réparation locale. Les modules manquants pour avoir un nombre de modules redondants égal à r sont les modules U tels que 1 : 5 i : 9 r-k. Les groupes des signaux de contrôle qui sélectionnent tout module U n + -i. tsi que 1 Les bornes manquantes seront les bornes Dtels que l Par ailleurs, les signaux de contrôle non utilisés par les multiplexeurs pourront servir pour indiquer l'espace d'adressage invalide. Pour ce faire, on formera les signaux binaires &commat;i pour tout i, tel que 1#j#r-k. Ces signaux sont déterminés par : i Dans cette formule, TI Gj représente le ET logique de tous les termes j=l Gj tels que l La figure 10 donne l'exemple de la technique pour N=4 modules fonctionnels, k=2 modules redondants et r=3 modules défaillants réparables. On observe que l'implémentation est la même que dans le cas N=5, k=r=3 (5 modules fonctionnels, 3 modules redondants et 3 modules défaillants réparables), avec l'exception du dernier multiplexeur qui est un multiplexeur l-parmi-3 au lieu de l-parmi-4. Le signal &commat;1=M3 indique que les R dernières adresses sont invalides. Réparation pour mémoire CACHE Une dernière solution de réparation amenant à des coûts très faibles, concerne le cas des mémoires CACHE. Ces mémoires disposent d J un point de mémorisation ou flag, appelé ci-après flag de validité ou Fg. Fg indique si un mot mémoire est valide ou invalide. Par exemple, Fg=l indique que le mot est valide et Fig=0 indique que le mot est invalide. Dans ce dernier cas, le système effectue l'opération dans une autre de ses mémoires. La valeur du point de mémorisation est manipulée pendant le fonctionnement du système, permettant de gérer la cohérence des accès aux mémoires CACHE et aux autres mémoires. Nous proposons ici d'introduire pour chaque mot de la mémoire CACHE (ou pour un ensemble de mots) un autre point de mémorisation du type flag, appelé ci-après flag de défaut ou Fizzle contenu de Fd est manipulé uniquement durant le test du circuit, et il est fixé à la valeur indiquant un mot défaillant (par exemple pour Fi=1) ou à la valeur indiquant un mot non défaillant (par exemple pour Fi=0). Lors du fonctionnement du système, le contenu de Fd est bloqué à sa valeur fixée lors de la phase du test. Elle agirait par la suite de façon similaire à Fg, à savoir : si Fd indique un mot défaillant, l'opération s'effectuera dans une autre mémoire comme dans le cas où Fg indique un mot défaillant. Etant donné que la valeur de Fd a été fixée avant que l'opération du système débute, aucune opération ne sera effectuée dans le mot défaillant, et toute donnée qui aurait pu être stockée dans le mot s'il avait été non défaillant, sera stockée dans une autre mémoire, permettant un fonctionnement cohérent du système. Etant donné que le nombre des défaillances dans un circuit intégré est généralement faible, cette approche réduira de façon non significative la capacité de la CACHE et elle n'aura qu'une influence minime sur les performances du système. Le système de réparation peut être prévu pour qu'on puisse reconfigurer la mémoire non seulement durant le test de fabrication mais aussi pendant les différentes phases de test exécutées durant la vie du circuit. Dans ce cas Fd sera stockée dans un point de mémorisation reprogrammable (volatile ou nonvolatile). D'autre part si la réparation s'effectue uniquement pendant le test de fabrication, Fd pourrait être stockée dans un point de mémorisation non reprogrammable, par exemple dans un dispositif fixant une valeur logique à l'aide d'un fusible. REVENDICATIONS 1. Dispositif de reconfiguration d'un ensemble de N modules électroniques de base associés à k modules redondants, k des N+k modules étant susceptibles de présenter un défaut, comprenant : N multiplexeurs de 1 parmi k+l (MUXi), chaque multiplexeur ayant une première borne (di) susceptible d'être connectée à l'une de k+l deuxièmes bornes respectivement connectées aux k+l bornes d'entrée/sortie d'un groupe ordonné de modules composé d'un module de base (Ui) et de k autres modules ; N+k bascules (Fi), chaque bascule étant indicatrice d'un état bon ou mauvais d'un des N modules de base et des k modules dudit groupe ordonné ; et un moyen logique associé à chaque multiplexeur de rang j, j étant un entier compris entre 0 et N, pour - déterminer un premier nombre correspondant au nombre de bas- cules de rang 0 à j indiquant un état mauvais, - déterminer un deuxième nombre correspondant au nombre de modu- les du groupe ordonné associé au module de rang j, à compter, en partant du premier module dudit groupe ordonné, pour trouver un nombre de modules bons égal au premier nombre, - connecter la première borne du multiplexeur à sa deuxième borne de rang égal au deuxième nombre, et - inhiber éventuellement le décalage des multiplexeurs correspon- dant à des blocs bons. 2. Dispositif de reconfiguration selon la revendication 1, dans lequel la réparation est effectuée de proche en proche et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, 11,12, Ci) fournit à chaque cycle d'une horloge une commande de décalage éventuel des multiplexeurs et une commande des contenus (Fi) des bascules selon les équations suivantes : Ri = Ri-1 + Fi, pour N+k-12i20 (1) Fi (t+1) = Ri. Fi+i (t), pour N+k-liO (2) où t et t+1 indiquent deux instants successifs. 3. Dispositif de reconfiguration selon la revendication l, dans lequel le moyen logique comprend : une porte OU (11) recevant la sortie de chaque bascule de rang i (Fi) et de la bascule précédente (Fi-1) ; une porte ET (12) recevant les sorties de la porte OU (11) et de la bascule de rang i+1 (Fi+1) ; et un compteur (Ci) de commande du multiplexeur (MUXi), recevant la sortie de la porte OU (11) 4. Dispositif de reconfiguration selon la revendication 1, dans lequel la réparation est effectuée de proche en proche et est réalisée selon l'équation combinatoire : Mi+lj = Fi+j+i (M+Mij. i. Fi+j+Mij2. Fi+j-i. Fi+j+... +Mio. Fi+l. Fi+2.. Fi+j)' pour Oj. (4) 5. Dispositif de reconfiguration selon la revendication 1, dans lequel la réparation est effectuée de façon distante et de façon séquentielle, caractérisé en ce que le moyen logique (Fi, Sj, 21-25, Bi) fournit à chaque cycle d'une horloge une commande de décalage éventuel d'un multiplexeur en défaut et une commande des contenus (Fi, Sj) des bascules selon les équations suivantes : FIi = FIi-1 + Fi, si Osi-l, avec FI-1=0 (5) Fi (t+l) = FIi. Fi (t), si 0 où : FIi est une variable, Fi (t) désigne l'état d'une bascule associée à un module de base à l'instant t, ENi désigne un signal de validation appliqué à un circuit de commande de multiplexeur, Li désigne un signal tel que la somme des Li, plus 1, est appliquée à un circuit de commande de multiplexeur à l'instant t, Si (t) désigne l'état d'une bascule associée à un module de remplacement à l'instant t. 6. Dispositif de reconfiguration selon la revendication l, dans lequel la réparation est effectuée de façon distante et est réalisée selon l'équation combinatoire : Mio = Fi+1 Mi+l M+Ij+1 = j+lFi+l (MIij+MIijiSj+MIij-2Sj-lSj+... +MIioSlS2... Sj) pour Ojk-1, 0. où : Fi désigne l'état d'une bascule associée à un module de base, Si désigne l'état d'une bascule associée à un module de remplacement. MIij est une variable telle que MIi+1j = MIij. F i+1 + Mi+1j. Fi+1 Oin-2 et Ojk (12)