Méthodes de test et de réparation On
Transcription
Méthodes de test et de réparation On
Méthodes de test et de réparation On-Line des mémoires dynamiques Gabriel LIABEUF, Laurent STEFAN Cours de Test de Circuit ELE6306 – Décembre 2004 École Polytechnique de Montréal Résumé L’intégration croissante des cellules mémoires et leur utilisation dans des milieux hostiles rendent de plus en plus nécessaire l’utilisation de méthodes de détection d’erreurs et en particulier du BIST. La technique basée sur la compression de données et consistant à calculer la signature de la RAM en la comparant à une référence offre la possibilité de détecter des erreurs en concurrence d’une utilisation normale de la RAM . Le BIST peut aussi être couplé à une fonction de réparation. Cette architecture BISTAR consiste à réorienter l’utilisateur d’une cellule défectueuse vers une autre cellule en modifiant l’adressage mémoire. fonctionnement (test on line), de réduire les temps de tests en parallélisant les tests. Bien que la plupart du temps, les BIST occupent jusqu’à 30% de la surface de la puce pour les circuits classiques, les BIST ne représentent parfois que 1 à 2% pour certaines RAMs Modèles de fautes pour les RAMs Tout d’abord, considérons la structure Figure 1 qui permet de modéliser une DRAM . Introduction La densité des circuits logiques étant en constante croissance, il est préférable d’envisager dès la conception des structures en vue du test. C’est pour cela que les structures du type ‘Built In Self Testing’ (BIST) sont les plus appropriées puisqu’elles permettent aux circuits de se tester en leur conférant un minimum de ressources. En effet, plus la densité des circuits croit et plus les fautes physiques dues essentiellement aux interférences entre cellules voisines apparaissent. Nous allons voir dans cet article les avantages qu’offrent les techniques BIST pour le test des mémoires de type Read Only Memories (ROMs), Random Acces Memories (RAMs) et les Programmable Logic Arrays (PLAs). Les testeurs utilisés pour tester les circuits incluant une structure BIST ont l’avantage d’être les moins onéreux puisqu’ils peuvent se contenter d’alimenter le circuit, d’initialiser le signal de test et de traiter les informations délivrées par le circuit testé (Device Under Test : DUT). A en juger la tendance actuelle, la capacité des mémoires va continuer d’augmenter et les BIST s’avèrent de plus en plus nécessaires puisqu’ils offrent l’avantage d’effectuer les test en cours de Figure 1. Organisation typique d’une DRAM Source : Efficient Online and Offline Testing of Embedded DRAMs [1] Elle comprend alors : • • • • Un champ de cellules mémoires (Memory Array) Un décodeur d’adresses comprenant un décodeur de ligne (Row Decoder) et un décodeur de colonnes (Column decoder) Un registre pour le rafraîchissement des données (Refreshment Register) Un système logique pour la lecture et l’écriture (Read / Write Logic) 1 Le champs de cellules mémoires peut être alors partitionné, et, ce faisant, il est alors possible de tester chacune des partitions de manière indépendante. Les différents tests peuvent donc être parallélisés. Deux procédés peuvent être utilisés pour tester ces cellules mémoires. Tout d’abord, la détection de fautes simples (single-fault assumption) qui permet de réduire la complexité des procédures de tests. D’autant plus que la plupart des tests détectant toutes les fautes simples détectent par la même la majorité des fautes multiples. Enfin, les fautes non destructives (fault-free reads assumption) qui peuvent être détectées pendant les phases de lecture/écriture de la RAM : on la place dans une état donné et on vérifie qu’elle est bien dans cette configuration. Les fautes destructives sont celles qui perturbent de manière radicale le fonctionnement de la RAM. Fautes de collage (Stuck-at Faults). Un collage à 1, respectivement à 0, sert à modéliser le fait que le contenu d’une cellule mémoire reste fixé sur le niveau logique 1, respectivement 0. Fautes de couplage (Coupling Faults). Cette modélisation permet de mettre en évidence le fait que le contenu d’une cellule donnée fluctue lors de transitions de celui d’une ou plusieurs cellules. Fautes de voisinages (weigh-sensitive faults). Ce type de faute souligne l’influence de la configuration de plusieurs cellules mémoires sur le contenu d’une cellule donnée. Les fautes de voisinages de ligne/colonne sont à prendre en considération. En effet les cellules d’une même ligne sont rafraîchies en même temps, possèdent le même mot d’adressage et sont électriquement reliées entre elles. De plus, les cellules d’une même colonne partagent également un même mot d’adressage. Figure 2. Différent types de fautes de voisinages : (a) voisinage à 5 cellules ; (b) voisinage de ligne/colonne Source :Built-in Self-Testing of Random-Acces Memories[2] Principaux tests tenant compte des architectures des RAMs Les cinq algorithmes de test listés dans la Table 1 sont explicités dans la suite de cet article. Ce tableau énumère les divers taux de couvertures auxquels on peut s’attendre. La plupart de ces algorithmes ont été implémentés dans des DRAMs embarquées. Les champs laissés vides indiquent que la faute est généralement non détectée, l’indication ‘unidirectional’ indique que le test peut détecter la faute. Selon le partitionnement de la mémoire, les cellules peuvent être testées de quatre manières différentes. La première ne teste qu’une seule cellule d’une unique partition (single-array sigle-bit : SASB). Cette méthode est surtout adaptée au faute de couplage. La deuxième, teste plusieurs bites d’une même ligne d’une unique partition (single-array multiple-bits : SAMB). Nous verrons par la suite qu’elle permet de tester une ligne entière lors de son rafraîchissement. La troisième, teste en parallèle un seul bit de plusieurs partitions (multiple-array single-bit) lorsque ceux-ci sont indépendants les uns des autres. Enfin, la dernière permet de tester une ligne dans plusieurs partitions en parallèle (multiple-array multiple-bit : MAMB). La dernière solution est celle qui présente le temps de test la plus faible. La connaissance de la structure physique de la mémoire permet d’utiliser la démarche de test la plus appropriée. Bien sûr, chaque procédé possède ses fautes de prédilections qu’il est nécessaire de connaître afin d’optimiser le BIST à implémenter. Table 1. Récapitulatif des fautes détectés selon les algorithmes Source :Built-in Self-Testing of Random-Acces Memories[2] 2 Implémentation d’un test en ligne et hors ligne d’une DRAM Compte tenu de la densité toujours croissante des mémoires, il est indispensable d’envisager d’effectuer les tests pendant le fonctionnement normal de la mémoire. En effet, la période de rafraîchissement des lignes mémoires est une période propice aux tests, puisque à intervalles de temps réguliers, chaque ligne mémoire est transférée dans le registre de rafraîchissement. Le rafraîchissement d’une ligne consiste à lire puis réécrire une ligne afin que les données stockées ne s’altère pas. On peut également utiliser cette étape pour modifier son contenu. Figure 3. Procédures de tests des cellules mémoires : (a) SASB, (b) SAMB, (c) MASB, (d) MAMB Source :Built-in Self-Testing of Random-Acces Memories[2] Implémentation du BIST La logique BIST se compose de quatre parties. La logique de contrôle qui permet de contrôler le déroulement de l’algorithme, le générateur d’adresse utilisé lors du mode de test : on peut utiliser un compteur ou bien un LFSR, la logique génératrice des vecteurs de test et enfin, le sélectionneur qui permet de placer le circuit en mode test ou en mode de fonctionnement normal. La Table 2. présente les différents algorithmes de tests et leurs principales caractéristiques. Figure 4. Structure générale d’une RAM Source : Efficient Online and Offline Testing of Embedded DRAMs [1] Table 2. Comparaison des différentes implémentations de BIST Source :Built-in Self-Testing of Random-Acces Memories[2] Déroulement du test en ligne. La détection d’une erreur est le résultat de la comparaison de deux caractéristiques. Tout d’abord, on initialise la constante Cref en effectuant une lecture rapide de toutes les lignes de mémoire et en transférant leur contenu dans le compresseur. Ensuite, le test peut réellement débuter. Tout d’abord, chaque ligne rafraîchie est transférée au compresseur pour établir la composante Ctest. Seules celles modifiées par la logique d’écriture serviront à mettre à jour la caractéristique Cref. Si lors de la comparaison, Cref et Ctest sont différentes, alors une ou plusieurs erreurs sont détectées. 3 Principe de l’adressage modulo 2. On considère les cellules qui contiennent uniquement la valeur logique 1. Ensuite on effectue l’opération ‘OU EXCLUSIF’ de toutes les adresses considérées (Figure 5). Dans le cas où une faute, une erreur s’est produite, nous obtenons une caractéristique différentes (Figure 6). La comparaison des deux mots, matérialisée par une opération ‘OU EXCLUSIF’ permet d’obtenir l’adresse de la faute. Dans notre exemple : 100 (+) 101 = 001 qui est bien l’adresse de la faute. Figure 5. Caractéristique sans Cref Source : Efficient Online and Offline Testing of Embedded DRAMs [1] Figure 6. Caractéristique sans Ctest Source : Efficient Online and Offline Testing of Embedded DRAMs [1] Caractéristiques. Ce test permet de détecter toutes les erreurs simples puisque le résultat de la comparaison est directement l’adresse où elle se trouve. Pour les erreurs multiples, il faut considérer le résultat comme une combinaison des adresses fautives. Lors du test du DRAM de 4Mo dont le temps d’accès en lecture/écriture est de 200ns, le test a pu se dérouler pendant la durée de rafraîchissement, soit en 16ms. Principes de réparation des erreurs des RAM La possibilité de pouvoir procéder à la réparation des erreurs dans les mémoires RAM présente un grand intérêt pour des applications de longue durée dédiées à la défense, la conquête spatiale, le nucléaire. En effet l'utilisation des RAM peut se faire dans des conditions extrêmes de température, de rayonnement cosmique durant de longues périodes pendant lesquelles la probabilité d'occurrence d'erreurs est très grande. Ces conditions extrêmes peuvent contribuer à générer des bits-flips par exemple, des changements d'état non voulus qui peuvent entraîner des conséquences graves sur le fonctionnement général du système électronique. Pour la suppression des erreurs plusieurs types de réparation peuvent être employés : • La colonne et la ligne contenant l'erreur sont remplacées par une ligne et une colonne libres, ce procédé de correction est assez facile à mettre en oeuvre mais il n'optimise pas l'utilisation des lignes et colonnes libres servant à la réparation. • La ligne ou la colonne contenant l'erreur est supprimée et remplacée par une ligne ou une colonne libre, cette méthode présente l'avantage de pouvoir optimiser l'utilisation des lignes ou colonnes libre en réparant des lignes ou des colonnes comportant plusieurs erreurs, néanmoins cette méthode nécessite le sacrifice de cellules qui fonctionnent. • La réparation peut se faire au niveau de la cellule mémoire défectueuse. Lorsque la cellule est repérée comme défectueuse, elle est remplacée par une autre cellule libre. Cette méthode de réparation des erreurs sera exposée par la suite. Utilisation du BISTAR pour la réparation On-Line des RAM Le principe de correction des erreurs présenté par la suite est basé sur la correction au niveau des cellules. Lorsque la cellule est défectueuse l'utilisateur est automatiquement dérouté vers une cellule en état de fonctionnement. Cette méthode se base sur la modification de l'espace d'adressage, une opération à l'adresse de la cellule défectueuse est redirigée vers la cellule de remplacement. Ce procédé de correction est basé sur l'utilisation conjointe d'une fonction BIST et d'une fonction de réparation, qui constituent une architecture BISTAR (Built-in self-test and repair). Ce système présente l'avantage d'être autonome, transparent pour l'utilisateur et peut 4 être fait en concurrence d'une utilisation normale de la mémoire. Cela présente donc un grand intérêt pour le test et la réparation des mémoires embarquées (embedded memories). De plus en plus de mémoires sont intégrées dans des systèmes complets, leur intégration devient de plus en plus importante et leur accès pour d'éventuels tests reste très difficile. Le BISTAR est donc une solution adaptée à ce genre de configuration. La Figure 7 qui suit illustre l'architecture d'un système BISTAR. Figure 7. Architecture d’un système BISTAR Source : An on-line BIST RAM architecture with self-repair capabilities[3] Le BISTAR Controller constitue l'intelligence du système, il gère le test et les réparations. Il a la capacité d'envoyer, de recevoir des données, d'effectuer des tests aux adresses voulues. Un registre CAM (Content Adressable Memory) sert à stocker les adresses des cellules défectueuses pour lesquelles il faudra opérer une redirection vers une cellule sans défauts. D'un point de vue utilisateur ce système mémoire + BISTAR reste similaire à un système classique qui comporte un bus de données et un bus d'adresse. L'utilisateur peut quand même contrôler le BISTAR au moyen d'un signal qui lui permet de choisir entre deux modes : • Le BISTAR peut fonctionner par défaut en mode réparation, il n'opère plus de tests ni de réparations mais maintient grâce au CAM le routage des cellules défectueuses vers les cellules nondéfectueuses. • Le second mode de fonctionnement est l'utilisation conjointe du BIST et du module de réparation. Lorsque le mode de réparation est activé, le contenu de la cellule à tester cx est sauvegardé dans une cellule vide disponible si . A ce moment les opérations extérieures sur cx sont automatiquement déroutées vers si Ensuite l'adresse de cx est sauvegardée dans le CAM puis cx est testée. Si celle-ci est défectueuse alors si est définitivement utilisée à la place de cx , sinon l'utilisation de cx est restaurée. Lors d'une utilisation normale de la mémoire et d'un accès à cx , son adresse est examinée par le CAM. Si il apparaît que cx à déjà été réparée alors le CAM oriente automatiquement les opérations sur les données vers si, sinon l'accès à cx est direct. L'implémentation d'un BISTAR nécessite l'utilisation d'une mémoire non-volatile pour sauvegarder les informations du reroutage des données. En effet lorsque le système n'est plus sous tension il faut être en mesure, lors de sa mise en marche, de pouvoir tenir compte des réparations qui ont été effectuées dans le passé. Lors de l'utilisation réelle du BISTAR, celui-ci génère trois type de signaux externes qui peuvent servir aux composants de son environnement ou bien à l'utilisateur : • Un signal informant que la donnée lue peut être erronée, par ex. si elle a été copiée d'une cellule défectueuse vers une cellule libre on peut émettre des doutes sur la validité de la donnée d'origine • Un signal est utilisé pour avertir qu'il n'y a plus de cellules libres pour effectuer des réparations • Un signal informe l'utilisateur que la cellule qu'il lit à déjà été réparée ou pas, cela peut servir pour effectuer des diagnostics. Plusieurs remarques sont à faire concernant le BISTAR. Tout d'abord ces opérations de réparation sont souvent effectuées en dehors des périodes d'accès mémoire par l'utilisateur, pour éviter de dégrader les performances de la RAM. Ce principe de réparation étant basé sur l'utilisation de cellules libres en remplacement de cellules défectueuses, la mémoire doit comporter un nombre supérieur de cellules mémoire que celui adressable par l'utilisateur. Enfin cette méthode de test de cellules individuelles permet de détecter les erreurs de couplage. En effet le tests de cellules peut se faire simultanément sur des cellules adjacentes par des opérations de lecture/écriture et on peut ainsi observer l'apparition d’erreurs. La possibilité de pouvoir détecter les erreurs de couplage est un enjeu important en raison de l'intégration de plus en plus grande de cellules de mémoire sur la même surface. 5 Conclusion Le BIST est une solution interessante pour la détection des erreurs des mémoires dynamiques. Celui-ci offre l’avantage de pouvoir détecter les erreurs pendant le fonctionnement normal de la RAM . De plus la technique de réparation et de test, BISTAR, permet a la fois de tester et réparer les erreurs de manière autonome, de façon completement transparente pour l’utilisateur Ces techniques sont de bonnes solutions pour régler les problèmes d’apparition d’erreurs sur des mémoires embarquées, dont l’accès externe est très difficile, de plus ce test de mémoire ne nécessite pas d’équipement particulier ce qui permet de réduire les coûts. References [1] Sybille Hellebrand, Hans-Joachim Wunderlich, Alexander A. Ivaniuk, Yuri V. Klimets, and Vyacheslav N. Yarmolik, Efficient Online and Offline Testing of Embedded DRAMs, IEEE TRANSACTIONS ON COMPUTERS, VOL. 51, NO. 7, JULY 2002 [2] Manoj Franklin and Kewal K. Saluja, Built-in Self-Testing of Random-Acces Memories, IEEE [3] Benso, A.; Chiusano, S.; Di Natale, G.; Prinetto, P.; An on-line BIST RAM architecture with self-repair capabilities, Reliability, IEEE Transactions on , Volume: 51 , Issue: 1 , March 2002 Pages:123 – 128 [4] H. Koile et al., “A 30nsec 64Mb DRAM with built-in self-test and repair function,” in Int. Solid State Circuits Conf., 1992, pp. 150–151. [5] O. S. Bair et al., “Method and apparatus for configurable build-in selfrepairing of Asic memories design,” US Patent 5 577 050, Nov. 19, 1996. [6] I. Kim, Y. Zorian, and G. Komoriya et al., “Built-in self repair for embedded high density SRAM,” in IEEE Int. Test Conf., 1998, pp. 1112–1119. 6