Algorithme de Test de Mémoire pour "Neighborhood Pattern
Transcription
Algorithme de Test de Mémoire pour "Neighborhood Pattern
1 Algorithme de Test de Mémoire pour "Neighborhood Pattern sensitive Faults" Andrey Gonzalez, Negin Sahraii Abstract— On présent un algorithme qui nous permet de détecter les " Neighborhood Pattern sensitive Faults (NPSF)" dans une mémoire semi-conducteur. La méthode utilisée correspond à la utilisation d’un algorithme March à backgrounds multiples. À l'aide de l’algorithme mentionné, on aura la possibilité de tester les NPSF Statique, NPSF Passif et NPSF Actif. Les algorithmes de March sont utilisés souvent pour le test de mémoire car ils ont la caractéristique de complexité de temps linéal et ils sont aussi faciles à réaliser en utilisant BIST. Les algorithmes March traditionnelles ne génèrent pas tous les patterns de voisinage pour tester tous les NPSFs, mais ils peuvent être modifiés à l'aide d’un background de donnée multiple pour de cette façon obtenir tous les patterns de voisinage nécessaires. La méthode de March-12N prolongé peut détecter toutes les sortes de fautes de mémoire (même les NPSFs) dans une durée de test de 100N. Donc en considérant son efficacité élevée, on se serve de cet algorithme pour implémenter un circuit de test de mémoire BIST pour détecter toutes les fautes de voisinage. Index Terms—Algorithme March, BIST, NPSF, Test de memories. pour tester toutes les NPSF d’un mémoire en utilisant BIST. Pour ce faire nous nous avons basé sur la méthode de détection de fautes de voisinages à backgrounds multiples proposés par K. Cheng, M. Tsai et C. Wu [1]. Cette méthode détecte toutes les NPSF statiques, NPFS passifs et NPFS actifs. Additionnellement le temps de test est plus court, le taux de couverture est complet pour tous les NPSF et l’implémentation BIST est facile. II. MODEL DE FAUTES Un “Neighborhood Pattern sensitive fault” est un faut de couplage de multi-cellule. Il arrive lorsque le contenu d’une cellule de la mémoire ou la capacité de changement de la cellule est influencé par certain pattern d’autres cellules voisines dans la mémoire. En général la cellule couplée est appelé “base” et les cellules de couplage sont appelés “deleted neighborhood cells”. Le NPSF à 5 cellules (NPSF-1) est montre dans la Fig. 1. I. INTRODUCTION L e model de NPSFs est important spécialement pour le test de mémoires DRAM puisqu’il donne un meilleur taux de couverture pour ce sort de mémoire [2]. NPSF exige un temps de test long (plus de 100N opérations de lecture/écriture) où N est le nombre de cellules dans la mémoire. Quelques approximations ont été proposées pour détecter NPSFs tel comme la méthode de “tiling” [3], [4], de deux groups [5], [6] algorithmes de row-March [7] et de multiples backgrounds [8], [9]. Les trois premières méthodes ont de différents inconvénients tel comme un bas taux de couverture et un temps de test très long. Les algorithmes de March traditionnelles sont souvent utilisés pour le test de mémoire car ils ont un caractéristique de complexité de temps linéal, ils présente un taux de couverture haut et ils sont aussi faciles à implémenter en utilisant BIST. Le problème avec les algorithmes MARCH traditionnel est qu’il ne détecte pas tous les NPFS, cependant, ils peuvent être modifié en utilisant background de donnée multiple pour générer tous le patterns de voisinage. Ce document décrive l’implémentation d’un circuit de test Fig. 1. NPSF à 5 cellules (NPSF-1) [1]. Le voisinage inclut la cellule de base et les cellules de voisinage effacées (les cellules N,E,W,S sont physiquement adjacent à B). Ce model de faute est catégorisé dans trois subtypes de fautes [4]. 1) NPFS Statique (SNPSF): Il arrive si la cellule de base est forcé à certain état en raison de l’apparition de certain pattern dans les cellules voisines. Pour détecter les SNPSF, tous les 32 patterns de voisinage statique montré dans la Table I(a) doivent être appliqués. 2) NPFS Passive (PNPSF): Il arrive si la cellule de base ne peut pas changer de l’état 0 à 1 ou 1 à 0 en raison de l’apparition de certain pattern dans les cellules voisines. Pour détecter les PNPSF, tous les 32 patterns de voisinage passif montré dans la Table I(b) doivent être appliqués. 2 3) NPFS Active (ANPSF): Il arrive si la cellule de base est forcé à certain état lorsque un transition arrive dans un seule cellule voisine tandis les autres cellules voisines prendre un certain pattern. Pour détecter les ANPSF, tous les 128 patterns de voisinage actif montré dans la Table I(c) doivent être appliqués. Table I. Neighborhood patterns [4] Fig. 2. Quatre états possibles de la mémoire en utilisant des éléments March conventionnel sur un background solide [1]. La majeure partie des NPSFs ne peut pas être activé par le test March conventionnel. Le taux de couverture est plus petit que 30% si l’algorithme March utilise seulement backgrounds de données solides. Si on utilise backgrounds de données multiples, tous les patterns de voisinage peuvent être générés [8], [9]. La Fig. 3. montre quatre états de mémoire possibles en utilisant le même élément March avec un autre background. Fig. 3. Quatre états possibles de la mémoire en utilisant des éléments March conventionnel sur un background multiple [1]. Dans la Fig. 3. “a” est le contenu de la cellule et “b” est le complément de cet valeur. Différents backgrounds de données multiples généreront différents patterns de voisinages. Pour détecter toutes les fautes de voisinage on doit utiliser huit backgrounds multiples et l’algorithme March-12N proposé en [1]. Il détecte tous les NPSFs avec un temps de test de 96N (12x8N) où 12 est égal au nombre des opérations March et 8 le nombre de backgrounds à utiliser. L’algorithme est le suivant : {c (wa); ⇑ (ra, wb, wa); ⇑ ( ra, wb); ⇑ (rb, wa, wb); ⇑ (rb, wa); ⇑ (ra)}. III. ALGORITHME MARCH Les algorithmes March traditionnelles couvrent seulement un petit pourcentage des NPSFs. Dans un élément March typique lorsque on lit ou écrit la cellule base (B), toutes le cellules avec adresse plus haute que B ont le même état. La même chose arrive avec les cellules avec adresse plus basse que B. Par exemple, quand un élément March ⇑ (R0,W1) est appliqué, toutes les cellules avec adresse plus haute que B seront dans l’état 0. Les cellules avec adresse plus basse que B seront dans l’état 1. Le quatre possibles état de la mémoire complet est montré dans la Fig. 2. Le première élément March (c (wa)) dans l’algorithme précédente initialise la mémoire avec le background correspondant. Les backgrounds de données multiples sont montrés dans la Fig. 4. Dans cette figure on peut remarquer que le background bit “a” est généré en utilisant l’adresse de lignes et de colonne de la mémoire. Cette méthode de génération de background est avantageuse puisque on peut savoir la valeur du bit qui a été écrit dans la mémoire (initialisation) pour le comparer dans une opération de lecture March. 3 différencier le sorte de bit généré par le générateur : “a” ou “b” (a : datain =0, b : datain=1). test RAM 15 3 datab Background pattern Generator bgc rst_n error test write add0,add1,add6 fina cs wr_n count clear add(0-14) UP/Down Counter Datain bgf test oe_n writ rst_n syserror syscorrect clk Ram Pulse Generator countup firstadd clk lastadd BIST Controller (State machin) data Buffer oe_n Comparator Fig. 4. Huit backgrounds avec ses équations de génération de background [1]. Fig. 5. Implémentation du circuit BIST. L’algorithme March-12N ne couvre pas les fautes de adressage et toutes le fautes de couplage. Si on veut couvrir les fautes AF et CFst, on ajoute 4N opérations à MARCH-12 seulement pour le background 1. Donc le background 1 prolongé à 16N opérations est le suivant : s0 test=1 start s1 m0 wa last add=1 s2 s3 m0 waa m1 wb m1 wa s7 s8 m1 wbb m1 waa lastadd=0 test=0 error=1 lastadd=0 last s10 m2 add=1 m2 wb raa s12 {c (wa); ⇑ (ra, wb, wa); ⇑ ( ra, wb); ⇑ (rb, wa, wb); ⇑ (rb, wa); s9 s11 m2 wbb m2 ra lastadd=0 error=1 ⇓ (ra, wb); ⇓ (rb, wa); c (ra)}. Toutes les fautes de mémoire sont couvertes avec cet algorithme “extended 12N March”. L’algorithme résultant a un temps de test de 100N (16N + 12x7N). last s6 add=1 m1 raa s5 s4 m1 ra s17 s18 m3 waa m3 wbb s16 m3 rbb s15 s14 m3 wb last add=1 s13 m3 rb m3 wa lastadd=0 s34 error=1 error m4 waa s22 m4 rbb s21 s19 s20 m4 m4 wa rb last add=1 lastadd=0 error=1 s26 s25 m5 wbb IV. IMPLEMENTATION BIST m5 raa s23 s24 first add=1 m5 wb m5 ra bgc=1 firstadd=0 bgc=0 error=1 L’implémentation du circuit de test est base sur l’algorithme 12N-March prolongé. Comme on a expliqué dans la section précédente, pour trouver les fautes de voisinages dans une RAM, on utilise la méthode March et de backgrounds multiples ensemble. L’implémentation du circuit BIST est montrée dans la Fig. 5. La description de chaque parti du circuit est la suivante: s29 s30 s28 m6 m6 rbb first wa add=1 firstadd=0 m6 waa error=1 s27 m6 rb lastadd=0 s33 s32 correct bgf=1 m7 raa m7 s31 last ra add=1 bgf=0 Algorithme March 16-N 1) Contrôleur BIST: La Fig. 6. montre une machine à état qui exécute les opérations des éléments March. Comme on veut exécuter les éléments de March avec 8 différents backgrounds on traverse les états de la machine 8 foies. Dans les états “wa” et “wb”, le pulse “wr_n” de RAM la rends active dans le mode écriture. La donnée “a” ou “b”, qui est fournit par le générateur de background, est écrit dans l’adresse correspondant de la RAM. Dans les états “rb” et “wb”, le pulse “oe_n” de RAM la rends active dans le mode lecture et la donnée correspondant de RAM est mit sur le bus “data”. En même temps la donnée prévu (a ou b) est comparé avec la donnée en provenant de la RAM par “comparator”. Si ils ne sont pas égaux, le signal erreur se rend active et le contrôleur BIST se rend à l qui correspond à l’état erreur. On a aussi définit un signal de sortie dans la machine à état “datain” qui permet configurer le générateur de background pour {↨ (wa); ↑(ra,wb,wa); ↑ (ra,wb); ↑ (rb,wa,wb); ↑(rb,wa); ↓(ra,wb); ↓ (rb,wa); ↨ (ra)}. m0 m1 m2 m3 m4 m5 m6 m7 Fig. 6. Machine à état qui exécute les opérations des éléments March. 2) Générateur de Background: Il fournit le bit de background “a” ou son complément “b” basée sur la valeur de “datain”. On sait que la donnée de background dépend du bit0 et du bit1 de l’adresse de “column” et que il dépend aussi du bit0 de l’adresse de “row” comme est montré dans la Fig. 4. Dans la RAM utilisée, add15….add6 correspond à l’adresse de “row” et add5….add0 correspond a l’adresse de “column”. Donc la sortie de “background generator” dépend de “add0”, “add1”, “add6” et “datain”. 4 Il y a un compteur (de 1 jusque 8) dans le générateur de background qui définit le numéro de background à utiliser. Dans le cas de BG1 le signal “bgc” se rend actif et dans le cas de BG8, le signal “bgf’” se rend actif. Dans le dernier état de l’algorithme, un signal “fina” est envoyé à “background generator” et le compteur qui est dans le générateur de background s’incrémente en une unité pour pouvoir ainsi travailler avec la prochain background. Dans le dernier état de l’algorithme le signal “bgf” est vérifié. Si on travaille avec le BG8 (bgf actif), la machine à état termine le test et il se rend à l’état ‘correct’. Comme on a expliqué dans la section précédente l’algorithme March 16-N est utilisé pour tester le BG1. Pour les autres BG, on utilise March 12-N (il ne exécute pas les éléments m5 et m6). Donc dans la machine à état, à la fin de m4 on vérifie le signal “bgc”. Si “bgc” est actif, on passe à l’état suivant qui correspond à m5, sinon il se rend au premier état de m7. 3) Compteur: C’est utilisé pour fournir, incrémenter, décrémenter les adresses nécessaires pour l’exécution de les éléments March dans la RAM. 4) Buffer à trois états: Pendent le processus d’écriture, il permet que la sortie du générateur de background soit mit sur le bus “data ” de la RAM. 5) Générateur de pulse de RAM: Il fournit les signaux “cs”, “oe_n” et “wr_n” à la RAM pour contrôler les opérations March de lecture et écriture de la mémoire. La table II montre tous les signaux utilisés dans le circuit BIST et sa signification. Table II. Signaux circuit BIST Signal test error fina bgf bgc datain firstadd lastadd countup count clear write syserror syscorrect datab signification si '1' le contrôleur BIST commence à tester la RAM si datab#data et oe_n ='0' ,error= '1' ,sinon error= '0' Dans le dernier état de l'algorithme pour chaque Background, il devient '1' Quand background=8, bgf = '1' Quand background=1, bgc= '1' Pendent les états wa et ra, il devient '0' et pendent les états wb et rb, il devient '1' Quand add="000000000000001",il devient 1 Quand add="111111111111110",il devient 1 Si '1', 'counter' incrémente l'adresse, sinon 'counter' décrémente l'adresse Si '1', 'counter' compte Si '1', 'counter' recommence la compte (première adresse de mémoire) Si '1', pulse we_n actif, si '0', pulse oe_n actif Quand une erreur est détecte, syserror= '1' Quand le processus de l'algorithme termine sans erreur, syscorrect= '1' BG1 et les états(wa ou ra): '0' BG1 et les états(wb ou rb): '1' BG2 et les états(wa ou ra) : add6+add0 BG2 et les états(wb ou rb): not(add6+add0) BG3 et les états(wa ou ra): add6 BG1 et les états(wb ou rb): not add6 BG4 et les états(wa ou ra): add0 BG4 et les états(wb ou rb): not add0 BG5 et les états(wa ou ra): add1 BG5 et les états(wb ou rb): not add1 BG6 et les états(wa ou ra): add1+add6 BG1 et les états(wb ou rb):not(add1+add6) BG7 et les états(wa ou ra): add0+add1 BG7 et les états(wb ou rb): not(add0+add1) BG8 et les états(wa ou ra):add6+add0+add1 BG8 et états(wb ou rb):not(add6+add0+add1) Si test=1 :cs= '0', sinon :cs=' Z' si test=0 : oe_n='Z', si test=1 et write=0 : oe_n=not(clk), si test=1 et write=1 :oe_n='1' si test=0 : wr_n='Z', si test=1 et write=1 : wr_n=not(clk), si test=1 et write=0 :wr_n='1' cs oe_n wr_n V. RESULTATS DE LA SIMULATION DU CIRCUIT BIST On a décrit le circuit de BIST en utilisant codes VHDL. La simulation du test a été fait sur un modèle de RAM normal et des modèles de RAM défectueuses. On a considéré une RAM avec une capacité de (32k x 1bit) qui contient 64 “column” et 512 “row”. Ce RAM est montré dans la Fig. 7. Pour pouvoir simuler des RAMs défectueuses, on a ajouté les modèles de faute voisinage passif, actif et statique dans le modèle VHDL de la RAM. Pour manipuler les cellules de voisinage on a établi que l’adresse de la cellule défectueuse est “addbase”, les adresses des cellules voisines sont : adresse(N)=addbase-64, adresse(W) =addbase-1, adresse(E)= addbase+1, adresse(S)=addbase+64. Fig. 7. Model de mémoire utilisé dans la simulation. Dans le résultat de simulation sur le model de RAM normal, on observe que le contrôleur de BIST (la machine à état) traverse tous les états par tous les 8 backgrounds et à la fin, il arrive à l’état 33(état correct) et le signal “syscorrect” se rend active. Dans les résultats de simulation du test sur les modèles de RAMs défectueuses, on observe que le contrôleur BIST détecte tous les types de fautes de voisinages tels comme les fautes statiques, passifs et actifs sur les adresses de cellules défectueuses. L’algorithme March 12-N prolongé a aussi la capacité de détecter les fautes de adressage et tous les fautes de couplage. Le temps total du test est de 100N, où N est le nombre de cellules dans la mémoire. Dans le cas de notre mémoire de 32Kbits le temps de test a été 640ms en utilisant une horloge à 5 Mhz. VI. CONCLUSION On a proposé un algorithme March à backgrounds multiples qui nos permet détecter les fautes de voisinage NPSF statique, passif et actif dans un mémoire semi-conducteur. Additionnellement cet algorithme détecte aussi des autres fautes tels comme SAF, TF, AF, SOF et CF. L’algorithme MARCH 12-N prolongé en utilisant 8 backgrounds multiples peut détecter toutes les fautes précédemment mentionnées avec un temps de test de 100N. On a implémenté un circuit de test de mémoire BIST pour faire le test. Les résultats de simulation du circuit de test nous indiquent que la méthode proposée est effective pour détecter toutes les fautes de voisinage. Un Algorithme de diagnostic peut être implémenté pour détecter le type et l’endroit de la faute détecté en utilisant dictionnaires de fautes qui contiennent signatures March. Si deux fautes ont dictionnaires de fautes différents on peut distinguer le deux fautes. 5 REFERENCES [1] [2] [3] K. Cheng, M. Tsai, C. Wu, “Efficient Neighborhood Pattern-Sensitive Fault Test Algorithms for semiconductor memories” proceedings of the 19th IEEE VLSI Test Symposium (VTS’01). M. Bushnell, V. Agrawal. “ Essentials of Electronic Testing”, Ed. Kluwer Academic Publishers, 2000, pp. 532-534. J. P. Hayes, “Testing memories for single-cell pattern sensitive fault”, IEEE Transactions on Computers, vol. 29, no. 2, pp. 249–254, Mar. 1980. [4] [5] [6] [7] [8] [9] A. J. van de Goor, Testing Semiconductor Memories: Theory and Practice, JohnWiley & Sons, Chichester, England, 1991. D. S. Suk and S. M. Reddy, “Test procedures for a class of patternsensitive faults in semiconductor random-access memories”, IEEE Transactions on Computers, vol. 29, no. 6, pp. 419–429, June 1980. K. K. Saluja and K. Kinoshita, “Test pattern generation for API faults in RAM”, IEEE Transactions on Computers, vol. 34, no. 3, pp. 284–287, Mar. 1985. M. Franklin and K. K. Saluja, “Testing reconfigured RAM’s and scrambled address RAM’s for pattern sensitive faults”, IEEE Transactions on Computer-Aided Design of Integrated Circuits, vol. 15, no. 9, pp. 1081–1087, Sept. 1996. B. F. Cockburn, “Deterministic tests for detecting scrambled patternsensitive faults in RAMs”, in Proc. IEEE Int. Workshop on Memory Technology, Design and Testing (MTDT), 1995, pp. 117–122. V. Yarmolik, Y. Klimets, and S. Demidenko, “March PS(23N) test for DRAM pattern-sensitive faults”, in Proc. Seventh IEEE Asian Test Symp. (ATS), Singapore, Dec. 1998, pp. 354–357.