Brevet FR2851075A1 — publié le 20040813

PROCEDE POUR TESTER L'INTEGRITE D'UN CIRCUIT DE DECODAGE ET D'UNE MEMOIRE Y ASSOCIEE. L'invention concerne, de façon générale, les techniques de tests de composants électroniques après leur fabrication. Plus précisément, l'invention concerne un procédé pour tester l'intégrité d'un circuit 5 de décodage et d'une mémoire y associée comportant au plus L*N cellules de mémorisation arrangées en une matrice de N colonnes et au plus L lignes, chaque cellule contenant un mot de M bits et étant individuellement accessible par une adresse de A bits, o L, N, M, et A sont des entiers supérieurs à 1, o A est au moins égal à M, et o les adresses sont, sur chaque ligne, classées en ordre croissant par 10 numéro de colonnes croissant, ce procédé comprenant une phase d'écriture dans laquelle des mots prédéterminés sont écrits dans certaines au moins des cellules de la mémoire, et une phase de lecture et de vérification dans laquelle des mots préalablement écrits dans la mémoire sont lus à des adresses déterminées de la mémoire et comparés à des mots de référence. 15 Une étape importante du processus global d'élaboration de circuits intégrés consiste à vérifier leur bon fonctionnement en fin de chaîne de fabrication. Il peut en effet arriver, en dépit des multiples précautions qui sont prises pour éviter 20 ce phénomène, qu'une impureté se dépose soit sur un masque de fabrication, soit sur la tranche de silicium sur laquelle le circuit est intégré, altérant le fonctionnement normal de ce circuit. Ces défaillances fonctionnelles peuvent avoir des causes multiples, telles qu'un court25 circuit, un défaut de contact électrique, ou encore l'inactivité d'un ou plusieurs transistors. Dans le cas des circuits de mémoires électroniques, les défauts peuvent affecter des cellules de la mémoire elle-même, ou les circuits de décodage qui permettent d'accéder aux différentes cellules de la mémoire en écriture et en lecture. s Lorsqu'un défaut affecte une cellule de la mémoire, cette dernière se place dans un état par exemple irréversiblement figé, ou au contraire aléatoire, et en tout cas indépendant de celui qui est commandé par l'application d'une instruction d'écriture dans cette cellule. Dès lors, si, après une commande d'écriture d'un mot déterminé dans une cellule défectueuse, le mot réellement écrit dans cette même cellule est relu, le mot obtenu par relecture a statistiquement peu de chance de correspondre au mot dont l'écriture a initialement été commandée. La figure 1 illustre la mise en oeuvre d'un procédé connu pour vérifier l'intégrité d'une mémoire sur la base de ce principe général. Cette mémoire comporte, à titre d'exemple, 48 lignes notées LGN, et 32 colonnes de mots de huit bits notées COL OCT, donc 256 colonnes de bits notées COL-BIT. 20 Les adresses de cellules, écrites en base hexadécimale et notées ADR, s'étendent entre FANO et FFFF, chaque adresse apparaissant sur la gauche de la figure 1 étant celle de la cellule située immédiatement à droite de l'indication de cette adresse, et chaque adresse apparaissant sur la droite de la figure i étant celle de la cellule située 25 immédiatement à gauche de l'indication de cette adresse. La phase d'écriture de ce procédé connu consiste à enregistrer dans les différentes cellules de la mémoire des mots dont chacun comprend un bit de valeur "0", ces bits ayant été imprimés en gras sur la figure pour mieux faire ressortir la structure globale 30 de ces mots. Lorsqu'un mot ainsi enregistré dans une cellule de la mémoire est relu, la présence dans le mot relu du bit de valeur "0", la position de ce bit dans le mot, et la présence ou l'absence d'autres bits de valeur "" dans le mot relu sont autant d'indices permettant de vérifier l'intégrité de la cellule concernée. Dans le cas des circuits de mémoires électroniques, il arrive cependant que des défauts affectent non pas les cellules de la mémoire elle-même, mais les circuits de décodage. Dans un tel cas, les instructions d'écriture dans une cellule de la mémoire et / ou de lecture de cette cellule sont décodées comme si elles concernaient une autre cellule de la mémoire ou une cellule d'une autre zone de la mémoire. Dans la mesure cependant o les mots prédéterminés enregistrés dans la mémoire au 15 cours de la phase d'écriture du procédé illustré à la figure 1 présentent des structures globales identiques dans des secteurs de la mémoire qui ne diffèrent les uns des autres que par l'adresse de leurs colonnes, le fait qu'un mot relu à une adresse d'un secteur à tester corresponde au mot prédéterminé attendu ne garantit pas que le mot relu provienne réellement du secteur à tester. Le procédé illustré en référence à la figure 1 s'avère donc au moins partiellement inefficace. Pour pallier ce problème, il est connu, comme illustré à la figure 2, de découper la 25 mémoire en blocs de forme carrée et d'enregistrer dans chaque bloc des mots prédéterminés, calculés de façon telle que deux blocs différents de la mémoire, s'étendant à partir d'une même ligne ou d'une même colonne, aient des contenus différents. Dans ces conditions, la probabilité pour que les mots relus au cours de la phase de lecture et de vérification apparaissent corrects en dépit de l'existence de défauts dans le circuit est extrêmement faible. Cette technique, très efficace, est en revanche soumise d'une part à la condition que la mémoire puisse être découpée en blocs carrés, et d'autre part à la nécessité de disposer d'une mémoire vive relativement importante pour pouvoir effectuer les calculs permettant de savoir quels mots prédéterminés doivent être enregistrés dans quels blocs de la mémoire. Dans ce contexte, la présente invention a pour but de proposer un procédé efficace pour tester l'intégrité d'un circuit de décodage et de la mémoire qui lui est associée, y compris dans le cas o la mémoire vive disponible pour les calculs est de taille réduite. A cette fin, le procédé de l'invention, par ailleurs conforme à la définition générique qu'en donne le préambule ci-dessus, est essentiellement caractérisé en ce que, la mémoire comprenant au plus N*2M cellules et 2M étant égal à P*N o P est un nombre entier supérieur à 1, la phase d'écriture est mise en oeuvre en écrivant, dans 20 un premier ensemble de P*N cellules de la mémoire, arrangées sur P lignes dont chacune s'étend sur N colonnes adjacentes, un premier ensemble de 2M mots différents, puis, sur autant d'ensembles supplémentaires de P*N cellules de la mémoire qu'il est nécessaire d'utiliser pour remplir la mémoire, autant d'ensembles respectifs supplémentaires de 2M mots différents, chacun de ces ensembles 25 supplémentaires de 2M mots étant formé par une permutation circulaire du premier ensemble de 2M mots, et chaque paire d'ensembles de 2M mots étant formée de deux permutations circulaires différentes l'une de l'autre. De préférence, les P lignes de chaque ensemble de P*N cellules sont adjacentes entre 30 elles. En outre, chaque mot de l'un des ensembles de 2M mots différents est avantageusement constitué par les M bits de poids les plus faibles extraits des A bits de l'adresse à laquelle ce mot est écrit. s L'ensemble de 2M mots différents dont les mots sont respectivement constitués par les M bits de poids les plus faibles extraits des A bits des adresses auxquelles ces mots sont respectivement écrits est par exemple constitué par le premier ensemble de 2M mots. Dans tous les cas, il est possible de donner à P la même valeur qu'à M, de donner à M la valeur 8 et / ou de donner à N la valeur 32. D'autres caractéristiques et avantages de l'invention ressortiront clairement de la description qui en est faite ci-après, à titre indicatif et nullement limitatif, en référence 15 aux dessins annexés, dans lesquels: - la figure 1 est un schéma illustrant la mise en oeuvre du premier procédé connu évoqué précédemment; - la figure 2 est un schéma illustrant la mise en oeuvre du deuxième procédé connu évoqué précédemment; et - la figure 3 est un schéma illustrant la mise en oeuvre du procédé de l'invention. Comme annoncé précédemment, l'invention concerne un procédé pour tester l'intégrité d'une mémoire et de son circuit de décodage. Ce procédé s'applique à toute mémoire, telle qu'illustrée à la figure 3, qui comporte au maximum L*N cellules de mémorisation arrangées en une matrice de N colonnes et 30 d'au maximum L lignes, L et N étant des nombres entiers supérieurs à 1. Chaque cellule est susceptible de contenir un mot de M bits et est individuellement accessible par une adresse de A bits, M et A étant également des nombres entiers supérieurs à 1 et A étant au moins égal à M. Sur chaque ligne de la matrice que forme la mémoire, les adresses sont classées en ordre croissant par numéro de colonnes croissant, les adresses ADR évoluant ainsi, sur l'exemple illustré à la figure 3, de la valeur FAOO au croisement de la ligne LGN de valeur 0 et de la colonne d'octets COLOCT de valeur 0, à la valeur FFFF au croisement de la ligne LGN de valeur 47 et de la colonne d'octets COLOCT de 10 valeur 31. Le procédé de l'invention comprend, de façon connue en soi, une phase d'écriture dans laquelle des mots prédéterminés sont écrits dans les différentes cellules de la mémoire, et une phase de lecture et de vérification dans laquelle les mots 15 préalablement écrits dans les différentes cellules sont relus aux différentes adresses correspondantes de la mémoire, et sont comparés aux mots dont l'écriture avait antérieurement été demandée. Le procédé de l'invention est spécifiquement applicable au cas o la mémoire 20 comprend au maximum N*2M cellules et o 2M est un multiple entier de N. En d'autres termes, 2m est égal à P*N o P est un nombre entier supérieur à 1, ce nombre P pouvant être égal à M. Dans l'exemple illustré à la figure 3, le nombre M est lui-même égal à 8 et le nombre N est égal à 32. Selon un deuxième aspect de l'invention, la mémoire est virtuellement découpée dans sa totalité en ensembles de P*N cellules, les cellules de chaque ensemble étant 30 arrangées sur P lignes dont chacune s'étend sur N colonnes adjacentes. Non seulement chaque ligne de chacun de ces ensembles de P*N cellules s'étend sur N colonnes adjacentes entre elles, mais les P lignes de cet ensemble sont, de préférence, également adjacentes entre elles. Le premier ensemble de P*N cellules ainsi constitué est illustré à la figure 3 comme étant formé des cellules dont les adresses ADR sont comprises entre FAOO et FAFF. Le second ensemble de P*N cellules est formé des cellules dont les adresses ADR sont comprises entre FBOO et FBFF, et ainsi de suite jusqu'au sixième ensemble, qui 10 est formé des cellules dont les adresses ADR sont comprises entre FEOO et FFFF. Selon un troisième aspect de l'invention, la phase d'écriture est mise en oeuvre en écrivant, dans le premier ensemble de P*N cellules de la mémoire, un premier ensemble EM1 de 2M mots différents. Par exemple, comme également illustré à la figure 3, les mots de ce premier ensemble EMI de 2M mots différents peuvent être respectivement constitués par les M bits de poids les plus faibles extraits des A bits des adresses auxquelles ces mots sont respectivement écrits. Ainsi, la cellule d'adresse FA0O reçoit le mot "00", la cellule d'adresse FA01 reçoit le mot "01", la cellule d'adresse FA02 reçoit le mot "02", et ainsi de suite jusqu'à la cellule d'adresse FAFF qui reçoit le mot "ff". Un ensemble supplémentaire de 2M mots différents, noté EM2 et formé par une permutation circulaire du premier ensemble EMI de 2m mots, est ensuite enregistré dans le deuxième ensemble de P*N cellules de la mémoire, c'est-à-dire entre les adresses FBOO et FBFF. De la même manière, un autre ensemble supplémentaire de 2M mots différents, formé par une autre permutation circulaire du premier ensemble EMI de 2m mots, est enregistré dans le troisième ensemble de P*N cellules de la mémoire, et ainsi de suite jusqu'au sixième ensemble supplémentaire E6 de 2M mots différents, qui est formé par encore une autre permutation circulaire du premier ensemble EMI de 2M mots, et dont les mots sont enregistrés dans le sixième ensemble de P*N cellules de la mémoire, c'est-à-dire entre les adresses FEOO et FFFF. Dans la phase d'écriture qui vient d'être décrite, il est fait en sorte, comme indiqué, que chaque paire d'ensembles de 2m mots enregistrés dans la mémoire soit formée de deux permutations circulaires différentes l'une de l'autre. 10 Par exemple, les ensembles EM1 et EM2 constituent deux permutations circulaires différentes du même ensemble de 2M mots, comme c'est également le cas des ensembles EM1 et EM6, et celui des ensembles EM2 et EM6. Dans ces conditions, et en dépit de la facilité avec laquelle sont engendrés les mots de test qui sont enregistrés dans la mémoire préalablement à la phase de lecture et de vérification, aucune séquence de mots n'apparaît à l'identique sur deux lignes différentes ou sur deux colonnes différentes de la mémoire. REVENDICATIONS 1. Procédé pour tester l'intégrité d'un circuit de décodage et d'une mémoire y associée comportant au plus L*N cellules de mémorisation arrangées en une matrice de N colonnes et au plus L lignes, chaque cellule contenant un mot de M bits et étant individuellement accessible par une adresse de A bits, o L, N, M, et A sont des 5 entiers supérieurs à 1, o A est au moins égal à M, et o les adresses sont, sur chaque ligne, classées en ordre croissant par numéro de colonnes croissant, ce procédé comprenant une phase d'écriture dans laquelle des mots prédéterminés sont écrits dans certaines au moins des cellules de la mémoire, et une phase de lecture et de vérification dans laquelle des mots préalablement écrits dans la mémoire sont lus à 10 des adresses déterminées de la mémoire et comparés à des mots de référence, caractérisé en ce que, la mémoire comprenant au plus N*2M cellules et 2M étant égal à P*N o P est un nombre entier supérieur à 1, la phase d'écriture est mise en oeuvre en écrivant, dans un premier ensemble de P*N cellules de la mémoire (ADR:FAOO à ADR:FAFF), arrangées sur P lignes dont chacune s'étend sur N colonnes adjacentes, 15 un premier ensemble (EMl) de 2m mots différents, puis, sur autant d'ensembles supplémentaires de P*N cellules de la mémoire (ADR:FB00 à ADR:FBFF; ADR:FEOO à ADR:FFFF) qu'il est nécessaire d'utiliser pour remplir la mémoire, autant d'ensembles respectifs supplémentaires (EM2; EM6) de 2M mots différents, chacun de ces ensembles supplémentaires (EM2; EM6) de 2M mots étant formé par 20 une permutation circulaire du premier ensemble (EM1) de 2M mots, et chaque paire (EMI, EM2; EM1, EM6; EM2, EM6) d'ensembles de 2M mots étant formée de deux permutations circulaires différentes l'une de l'autre. 2. Procédé suivant la revendication 1, caractérisé en ce que les P lignes de chaque ensemble de P*N cellules sont adjacentes entre elles. 3. Procédé suivant l'une quelconque des revendications précédentes, caractérisé en ce que chaque mot de l'un des ensembles de 2M mots différents est constitué par les M bits de poids les plus faibles extraits des A bits de l'adresse à laquelle ce mot est écrit. 4. Procédé suivant la revendication 3, caractérisé en ce que l'ensemble de 2M 5 mots différents dont les mots sont respectivement constitués par les M bits de poids les plus faibles extraits des A bits des adresses auxquelles ces mots sont respectivement écrits est constitué par le premier ensemble de 2M mots différents. 5. Procédé suivant l'une quelconque des revendications précédentes, caractérisé 10 en ce que P est égal à M. 6. Procédé suivant l'une quelconque des revendications précédentes, caractérisé en ce que M=8. 7. Procédé suivant l'une quelconque des revendications précédentes, caractérisé en ce que N=32.