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