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 Si '1', 'counter' recommence la compte (première adresse de mémoire)
write
syserror
syscorrect
datab
cs
oe_n
wr_n
signification
BG2 et les états(wa ou ra) : add6+add0 BG2 et les états(wb ou rb): not(add6+add0)
BG7 et les états(wa ou ra): add0+add1 BG7 et les états(wb ou rb): not(add0+add1)
Si '1', 'counter' compte
Dans le dernier état de l'algorithme pour chaque Background, il devient '1'
Pendent les états wa et ra, il devient '0' et pendent les états wb et rb, il devient '1'
Si '1', pulse we_n actif, si '0', pulse oe_n actif
BG6 et les états(wa ou ra): add1+add6 BG1 et les états(wb ou rb):not(add1+add6)
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'
si '1' le contrôleur BIST commence à tester la RAM
si datab#data et oe_n ='0' ,error= '1' ,sinon error= '0'
Quand background=1, bgc= '1'
Quand background=8, bgf = '1'
Quand add="000000000000001",il devient 1
Quand add="111111111111110",il devient 1
BG3 et les états(wa ou ra): add6 BG1 et les états(wb ou rb): not add6
BG5 et les états(wa ou ra): add1 BG5 et les états(wb ou rb): not add1
BG4 et les états(wa ou ra): add0 BG4 et les états(wb ou rb): not add0
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'
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'
Si '1', 'counter' incrémente l'adresse, sinon 'counter' décrémente l'adresse
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.