Brevet FR2697103A1 — publié le 19940422

PROCEDE DE TEST DE MEMOIRES ET CIRCUIT MEMOIRE ASSOCIE L'invention concerne un procédé de test des mémoires non-volatiles en circuit intégré et les mémoires correspondantes. Elle s'adresse plus particulièrement aux mémoires comportant un registre de commande. Les mémoires en circuit intégrés sont vendues à une clientèle qui en attend une certaine performance garantie par le constructeur. Cette performance s'exprime par exemple en nombre de cycles de lecture, ou en nombre de cycles d'effacement/écriture, que la mémoire est capable d'effectuer. Il est donc nécessaire pour les constructeurs de tester ces performances, pour chaque lot de fabrication. Ceci se fait sur des bancs de test spécifiques qui vont tester un certain nombre d'échantillons pris dans un lot de fabrication déterminé, et ainsi qualifier ce lot. La méthode habituelle est de placer 20 à 40 échantillons en parallèle sur un banc de test. Le banc de test effectue alors l'adressage en lecture, en programmation ou en effacement des mémoires, au moyen d'un bus de contrôle, selon les diagrammes des temps des signaux d'accès aux mémoires. Un tel procédé de test est particulièrement long et coûteux. En effet, le banc de test doit gérer le bus de contrôle avec tous les signaux d'accès aux mémoires: signaux de contrôles, d'adresses, de données. La connectique est complexe et le temps d'occupation du calculateur du banc de test n'est pas négligeable. Ces phénomènes sont aggravés par la complexité et la capacité croissante des mémoires. Un but de l'invention est de simplifier le procédé de test en réduisant le nombre de signaux à gérer en externe par les bancs de test. Dans les mémoires les plus récentes, un registre de commande est utilisé pour simplifier l'utilisation des mémoires : l'écriture d'un code de commande particulier sélectionne un circuit interne de la mémoire qui prend alors le contrôle des bus internes et gère lui même les différents diagrammes des temps. Dans un exemple, une mémoire électriquement programmable et effaçable comporte un tel registre de commande et un automate de programmation et d'effacement. L'utilisateur doit seulement présenter le code de commande correspondant à une opération particulière et l'adresse et/ou la donnée à lire, effacer ou programmer. Ces automates mettent en oeuvre les algorithmes optimum pour la mémoire considérée. Dans l'invention, on propose d'utiliser le registre de commande pour effectuer le test des mémoires, en attribuant un code de commande particulier à une opération de test. Le banc de test doit alors présenter le code de commande de test aux mémoires, qui effectuent alors en interne le test, grâce à des moyens appropriés. Le procédé de test est alors particulièrement simplifié et permet au banc de test de gérer un nombre plus important de mémoires. Telle qu'elle est revendiquée, l'invention concerne un procédé de test en parallèle de mémoire sur un banc de test, chaque mémoire ayant au moins une broche de sélection, une broche de commande de lecture/écriture, des broches d'entrée/sortie de données et une broche de test, chaque broche de sélection étant connectée à un fil de sélection du bus de contrôle du banc de test, la broche de commande de lecture/écriture, les broches d'entrée/sortie de données et la broche de test des mémoires étant respectivement reliées ensemble et connectées à un fil de commande de lecture/écriture, à des fils dtentrée/sortie de données et à un fil de test du bus de contrôle. Selon l'invention, le procédé consiste, pour le banc de test, à : - activer les fils de sélection pour sélectionner les mémoires, - écrire un code de commande d'un test sur les fils d'entrée/sortie de données, - activer le fil de commande de lecture/écriture, - détecter un premier niveau logique sur le fil de test, pour déterminer la fin du test en parallèle des mémoires. Pour chaque mémoire sélectionnée, le procédé consiste - sur réception d'un niveau actif sur la broche de lecture/écriture, à lire le code de commande de test sur le broches d'entrée/sortie de données, - à établir un deuxième niveau logique sur la broche de test, pour indiquer que la mémoire est en test, - à exécuter le test correspondant au code, - à établir l'état haute impédance sur la broche de test pour indiquer la fin du test, en sorte que le banc de test détecte le premier niveau logique indiquant la fin du test en parallèle lorsque toutes les mémoires ont mis leur broche de test dans cet état haute impédance. Ce procédé s'applique notamment aux mémoires électriquement programmables et électriquement effa çables dont on veut vérifier la capacité à effectuer le nombre N de cycles de programmation/effacement garanti par le constructeur. Selon l'invention, l'exécution du test consiste alors pour la mémoire à a) programmer toute la mémoire selon un algorithme de programmation/vérification déterminé, b) effacer toute la mémoire selon un algorithme d'effacement/vérification déterminé, c) lorsque les opérations a) et b) ont été exécutées N fois, ou que la programmation ou l'effacement d'une adresse est défectueux, à indiquer la fin du test. Une telle mémoire comprendra alors selon l'invention un moyen pour exécuter le test, un compteur d'adresse et un compteur de cycles de test, le moyen pour exécuter le test recevant un signal de contrôle du registre de commande sur réception par celui-ci d'un code de commande de test, ce moyen étant connecté aux compteurs d'adresse et de cycle de test pour les initialiser et les incrémenter, ce moyen commandant les automates de programmation et d'effacement pour effectuer N fois la programmation de toute la mémoire et l'effacement de toute la mémoire et commandant l'état d'une broche de test pour indiquer le début ou la fin du test. D'autres caractéristiques et avantages de l'invention sont présentés dans la description qui suit faite à titre indicatif et non limitatif de l'invention et en référence aux dessins annexés dans lesquels - la figure 1 est un schéma bloc d'un banc de test de mémoires selon le procédé de l'invention; - la figure 2 est un organigramme du procédé de test selon l'invention; - la figure 3 est un organigramme d'un séquenceur de test selon l'invention, pour une mémoire électriquement programmable et électriquement effaçable. - la figure 4 est un schéma bloc d'une mémoire électriquement programmable et effaçable selon l'invention. Le procédé de l'invention permet de tester en parallèle des mémoires M1-M20 sur un banc de test 1. Ce dernier gère un bus de contrôle BC sur lequel les mémoires sont connectées en parallèle. Les mémoires ont leurs broches d'entrées/sortie de données D0-D7 connectées à des fils d'entrées/sorties de données B-00-B-07 du bus de contrôle BC. Leur broche de commande de lecture/écriture W/E est connecté à un fil de sortie de test B-Btest. La broche de sélection CE1,...,CE20 d'une mémoire est connectée à un fil de sélection B-CE1, ..., B-CE20 propre. Ainsi le banc de test peut sélectionner soit simultanément toutes les mémoires, soit une partie, ou une seule. Les mémoires comportent au moins un registre de commande CR qui est connecté en entrée aux broches d'entrée/sorties de données, et un registre d'état ERR pour indiquer le cas échéant une erreur de test, et connecté en sortie aux broches d'entrées/sorties de données. Le procédé de test selon l'invention consiste alors à (figure 2) : pour le banc de test, sélectionner simultanément toutes les mémoires en activant les fils de sélection CE1-CE20 du bus de contrôle, puis écrire un code de commande de test sur le fils d'entrée/sorties de données A-DO-B-D7 du bus de contrôle, et activer le fil de commande de lecture/écriture B-W/E. Il a ainsi commandé aux mémoires d'exécuter un test. Il scrute alors le fil de sortie de test B-Btest pour détecter un changement d'état qui indiquera que toutes les mémoires ont fini d'exécuter le test. Le banc de test pourra alors par exemple sélection ner une à une chaque mémoire pour aller lire le code d'erreur écrit dans le registre d'état de la mémoire, et déterminer ensuite si la mémoire est bonne ou non. Si on ne cherche pas à savoir quelle mémoire est défaillante, mais seulement si il n'y a pas de mémoire défaillante, le registre d'état sera tel que si il y a une erreur, il imposera un niveau logique 0 sur une broche de donnée, et s'il n'y en a pas, il mettra cette broche en haute impédance. Le banc de test lira alors un niveau logique 0 si au moins une des mémoires est défaillante, et la ou les mémoires défaillantes seront analysées pour déterminer le type de défaut. Si toutes les mémoires sont bonnes, le fil de sortie de test sera en haute impédance, et le banc de test, par un circuit approprié lira un niveau logique 1. Il en conclura alors que le lot de fabrication est bon. On notera ici que la broche de fin de test fonctionne sur le même principe : tant que le test d'une mémoire n'est pas terminé, la broche de sortie de test est à un niveau logique 0 imposé par la mémoire. Dès qu'il est terminé, la mémoire impose un état de haute impédance. On peut utiliser une sortie de donnée de la mémoire comme broche de test, via le registre de commande et le registre d'état. Le banc de test détecte alors un zéro tant que au moins une des mémoires n'a pas terminé, et un 1 dès que toutes les mémoires ont terminé. Dans une application aux mémoires électriquement programmables et électriquement effaçables, le test à effectuer consiste à effectuer N cycles de programmation/effacement de toute la mémoire. Dans un exemple, des mémoires de type Flash EEPROM sont garanties pour 10000 cycles. La mémoire qui reçoit le code de commande de test selon le procédé de l'invention devra alors effectuer un test dit de cyclage. Dans un exemple de réalisation l'exécution du test est effectuée par un séquenceur (figure 3) qui réalise les opérations suivantes a) imposer le niveau logique O sur la broche de sortie de test Btest, pour indiquer que la mémoire est sous test, b) initialiser un compteur de cycles CC au nombre N de cycles de programmation/effacement à effectuer, c) effectuer la programmation de toute la mémoire en vérifiant à chaque adresse que la donnée est bien programmée, et le cas échéant écrire un code d'erreur dans un registre d'état ERR et indiquer la fin du test en imposant un état de haute impédance sur la broche de sortie de test Btest;; d) s'il n'y a pas eu d'erreur, effectuer l'effacement de toute la mémoire, en vérifiant à chaque adresse que la donnée est bien effacée et le cas échéant écrire un code d'erreur dans un registre d'état ERR et indiquer la fin de test en imposant un état de haute impédance sur la broche de sortie de test Btest; L'effacement peut se faire par mot. Mais il peut aussi être global, c'est-à-dire opérer sur toute la mémoire simultanément. e) s'il n'y a pas eu d'erreur, décrémenter le compteur de cycles CC et retourner à l'étape C, jusqu'à ce que le compteur de cycles CC soit égal à zéro; f) lorsque le compteur de cycles est égal à zéro indiquer que le test est terminé, en imposant un état de haute impédance sur la broche de sortie de test Btest. La programmation et l'effacement sont effectués de préférence par des automates mettant en oeuvre les algorithmes optimum correspondant au type de la mémoire. Classiquement, ils sont effectués par étapes successives, en appliquant à chaque étape, une pulsation de programmation ou d'effacement, puis en vérifiant si l'adresse mémoire a bien été programmée ou effacée. Si non, on réapplique une pulsation et ainsi de suite. Dans le cas d'un effacement global de toute la mémoire, on vérifie ensuite que chaque adresse mémoire a bien été programmée. Si ce n'est pas le cas, on réapplique une pulsation pour effectuer à nouveau un effacement global de toute la mémoire et ainsi de suite. Un compteur de pulsation de programmation CP et d'effacement CE compte les pulsations, et si le nombre de pulsations dépasse un nombre maximum P de pulsations de programmation ou E de pulsations d'effacement, il y a une défaillance de la mémoire à cette adresse. Les automates inscrivent alors un code d'erreur dans un registre d'état et indiquent au séquenceur de test par un signal de contrôle qu'ils ont terminé. La structure de la mémoire électriquement programmable et électriquement effaçable sera par exemple semblable à celle représentée sur la figure 4. Un registre d'entrée/sortie 7 est connecté aux bus d'entrées/sorties D0-D7 de la mémoire. Il est aussi connecté au registre de commande 2, à la matrice de cellule mémoire 8, à différents registres dont un registre d'état 6 contenant le code d'erreur ERR associé au test. Le registre de commande à trois sorties de commande Cl, C2, C3. La sortie Cl commande le séquenceur de test. La sortie C2 commande l'automate de programmation. La sortie C3 commande l'automate d'effacement. Les automates d'effacement et de programmation commandent en lecture le registre d'état 6. Le séquenceur de test commande en lecture écriture le registre d'état 6 et commande les automates de programmation et d'effacement. Ces derniers délivrent un signal de fin de tache au séquenceur de test. Le séquenceur de test commande par ailleurs un registre de sortie 12 pour imposer un niveau logique par exemple 0 - sur une broche de sortie de test Btest de la mémoire, ou en état haute impédance. S'il n'y a pas de broche de sortie disponible suivant les types de boîtiers utilisés, on peut écrire le niveau logique de test dans le registre d'état 6. Enfin le séquenceur de test commande en lecture/écriture un compteur d'adresse CA. Les automates de programmation et d'effacement commandent le signal de transfert T de l'adresse présente sur le bus d'adresse interne BA de la mémoire dans le registre d'entrée 9 du décodeur 10 de la matrice 8 de cellules mémoires. Le bus d'adresse interne BA est connecté à un registre d'entrée 11 connecté aux broches d'adresse A0-A15 de la mémoire et au compteur d'adresse CA. Lorsque le registre de commande 2 reçoit le signal de sélections sur l'entrée de sélection CE de la mémoire, un code de commande présent sur les broches d'entrées/sorties de données D0-D7 est écrit dans le registre de commande sur activation du signal de commande de lecture/écriture W/E. Le registre de commande 2 qui reconnaît la commande de test envoie alors un signal de contrôle au séquenceur de test. Ce dernier contrôle les automates de programmation et d'effacement, le registre d'état 6 de code d'erreur, et le compteur d'adresse CA. Il contrôle aussi un compteur de cycles CC. Il initialise les compteurs comme indiqué dans le procédé représenté en figure 3. Il active l'automate de programmation qui active le signal de transfert d'adresse T dans le décodeur (9,10) et qui effectue la programmation selon l'algorithme déjà vu. Si la donnée n'est pas programmée, il écrit un code d'erreur dans le registre d'état 6 puis active le signal de fin de tache vers le séquenceur. Ce dernier vérifie s'il y a une erreur en lisant le registre d'état 6. S'il y a erreur, il commande le registre de sortie 12 pour mettre la broche Btest en haute impédance. Sinon, il incrémente le compteur d'adresse CA, puis réactive l'automate de programmation, et ainsi de suite. Lorsque la programmation de toute la mémoire est effectuée, le séquenceur 3 commande de la même manière l'automate d'effacement. Lorsque le test est terminé, le registre d'état 6 peut être lu sur les broches d'entrées/sorties de données D0-D7 en adressant le registre d'état directement (broches d'adresses AO-A15), ou en inscrivant un code de commande correspondant dans le registre de commande 2, qui commande alors la sortie du contenu du registre sur le bus de données BD connecté au registre d'entrée/sortie de données 7. Dans la structure représenté, les automates de programmation et d'effacement peuvent être commandés directement par le registre de commande, en présentant un code de commande approprié et une adresse mémoire sur les broches d'adresses AO-A15 de la mémoire. Ceci n'est qu'un exemple de structure de mémoires permettant de mettre en oeuvre le procédé de l'invention. D'autres structures sont possibles, quant à la gestion du code d'erreur par exemple. REVENDICATIONS 1. Procédé de test en parallèle de mémoires sur un banc de test, chaque mémoire ayant au moins une broche de sélection, une broche de commande de lecture/écriture, des broches d'entrée/sortie de données et une broche de test, chaque broche de sélection étant connectée a un fil de sélection du bus de contrôle du banc de test, la broche de commande de lecture/écriture, les broches d'entrée/sortie de données et la broche de test des mémoires étant respectivement reliées ensemble et connectées à un fil de commande de lecture/écriture à des fils d'entrée/sortie de données et à un fil de test du bus de contrôle, caractérisé en ce qu'il consiste pour le banc de test a:: - activer les fils de sélection pour sélection ner les mémoires, - à écrire un code de commande d'un test sur les fils d'entrée/sortie de données, - à activer le fil de commande de lecture/écri ture - à détecter un premier niveau logique sur le fil de test, pour déterminer la fin du test en parallèle des mémoires, et caractérisé en ce qu'il consiste pour chaque mémoire sélectionnée - sur réception d'un niveau actif sur la broche de lecture/écriture, à lire le code de com mande de test sur les broches d'entrée/sortie de données, - à établir un deuxième niveau logique sur la broche de test, pour indiquer que la mémoire est en test, - à exécuter le test correspondant au code, - a établir l'état haute impédance sur la broche de test pour indiquer la fin du test, en sorte que le banc de test détecte le premier niveau logique indiquant la fin du test en parallèle lorsque toutes les mémoires ont mis leur broche de test dans cet état haute impédance. 2. procédé selon la revendication 1, pour des mémoires électriquement programmables et électriquement effaçables, caractérisé en ce que l'exécution du test consiste pour ces mémoires a a) programmer toute la mémoire selon un algorithme de programmation/vérification déterminé, b) effacer toute la mémoire selon un algorithme d'effacement/vérification déterminé, c) lorsque les opérations a) et b) ont été exécutées N fois, ou que la programmation ou l'effacement d'une adresse est défectueux, à indiquer la fin du test. 3. Mémoire électriquement programmable et effa çable, comprenant un registre de commande et au moins un automate de programmation et un automate d'effacement, le registre de commande étant connecté en entrée à des broches d'entrée/sortie de données, à la broche de sélection et à la broche de commande de lecture/écriture, et délivrant des signaux de contrôle appliqués aux automates de programmation et d'effacement, caractérisé en ce qu'elle comporte en outre un moyen pour exécuter le test, et un compteur de cycles de test, le moyen pour exécuter le test recevant un signal de contrôle du registre de commande sur réceptions par celui-ci d'un code de commande de test, ce moyen étant connecté au compteur de cycles de test pour l'initialiser et l'incrémenter, ce moyen commandant les automates de programmation et d'effacement pour effectuer N fois la programmation de toute la mémoire, et l'effacement de la mémoire, et commandant l'état d'une broche de test pour indiquer le début ou la fin du test.