Sunteți pe pagina 1din 17

Diagnoza 153

3. Generatoare automate de teste (ATG) pentru defecte


singulare de tip blocat-la (SSF) în circuite secventiale

3.1. Generatoare de teste (TG) folosind modele de retea


iterativa

În acest paragraf se arata cum metodele TG pentru


circuite combinationale pot fi extinse la circuite secventiale. Pentru
început ne vom limita la circuitele secventiale sincrone ale caror
componente sunt portile si circuitele bistabile sincrone. Extensia se
bazeaza pe o tehnica de modelare care transforma un circuit secvential
sincron într-o retea combinationala iterativa. O celula din aceasta retea
este numita “cadru de timp”. În cadrul acestei transformari un
bistabil(F/F) este modelat ca un element combinational cu o intrare
suplimentara q reprezentând starea curenta si cu o iesire suplimentara q ′
reprezentând starea urmatoare, care devine starea curenta în urmatorul
cadru de timp. Un vector de intrare pentru circuitul combinational iterativ
este format dintr-o secventa de intrari în circuitul secvential. Initial
presupunem ca toate F/F sunt comandate direct de acelasi ceas, semnal
care este considerat corect. Potrivit acestor presupuneri, putem considera
semnalul de ceas ca fiind implicit în modelul nostru.
Modelarea cu porti pentru un bistabil JK introduce
ecuatiile:

q ′ = Jq + Kq
v=q
v=q
Daca nu suntem interesati în defecte interne în F/F, putem
modela circuitul care realizeaza q’ ca un model cu trei intrari (J, k si q).
Deoarece toate cadrele de timp au structura identica, nu
este necesar sa construim de fapt modelul complet al unei retele iterative.
Astfel algoritmii TG pot folosi acelasi model structural pentru fiecare
cadru de timp; oricum, valorile semnalului în diferite cadre de timp
trebuie pastrate separat. De vreme ce circuitul C’, obtinut prin adaugarea
modelelor F/F la circuitul combinational original C, este tot un circuit
combinational, putem aplica orice algoritm TG tratat în Sectiunea 2.
154 Fiabilitate si Diagnoza

pentru început sa consideram un algoritm orientat pe defect. Un vector


test t generat pentru C’, poate specifica valorile atât pentru intrarile
primare, cât si pentru variabilele q. Ultima trebuie confirmata în cadrul de
timp anterior. În mod similar, testul nu poate sa propage eroare la PO, ci
la variabila q’. Apoi eroarea trebuie propagata în urmatorul cadru de
timp. Astfel procesul de cautare poate ocupa câteva cadre de timp,
mergând si înainte si înapoi în timp. O dificultate majora apare din
necesitatea oricarei cunoasteri apriori, a numarului de cadre de timp
necesare în ambele directii.
Când avem de-a face cu cadre de timp multiple, defectul
tinta este prezent în fiecare cadru de timp. În mod corespunzator, o
valoare de eroare (D sau D) poate sa se propage în chiar linia de defect
(acest lucru nu se poate întâmpla într-un circuit combinational cu un
singur defect). Daca linia defecta este b-l-l, iar valoarea propagata în ea
este v/vt , valoarea compusa rezultata este v/e (Fig.51). de retinut ca
atunci când v = l, linia defecta opreste propagarea efectelor defectelor
generate într-un cadru de timp anterior.

Valoarea propagata în linia l Defectul liniei l Valoarea rezultata


a liniei l
D s-a-0 D
D s-a-1 1
D s-a-0 0
D s-a-1 D

Figura B_III-51. Rezultatul efectului defectului propagat la o linie


defecta

Când se genereaza o secventa test pentru un defect nu este


niciodata necesar sa se introduca aceeasi stare de doua ori. În plus,
permitând unei stari anterioare sa fie introdusa din nou, aceasta va
determina programul sa intre într-o bucla infinita. Pentru a evita aceasta,
orice algoritm TG pentru circuite secventiale include câteva mecanisme
destinate monitorizarii secventei starilor si initierii cautarii înapoi atunci
când starile se repeta.
Diagnoza 155

Generarea testelor(TG) pornind dintr-o stare initiala cunoscuta

Cea mai generala forma a unui algoritm TG pentru circuite


secventiale presupune ca starea initiala în circuitul corectat si în cel
defect este necunoscuta, deoarece starile F/F sunt arbitrare când se aplica
prima data tensiune asupra unui circuit. Prima data vom contura un
algoritm mai putin general care presupune ca vectorul de stare initial q(l)
este cunoscut atât în circuitul corectat cât si în cel defect. În acest caz
procesul de cautare are loc doar înainte în timp. Deoarece dorim sa
generam o secventa test cât mai scurta posibil, vom încerca o secventa de
lungime r doar daca nu reusim sa generam o secventa de lungime r - 1.
De aceea atunci când consideram o retea iterativa de r cadre de timp,
ignoram PO a primelor r - 1 cadre. De asemenea ignoram iesirile q’ ale
ultimului cadru. Odata constituit modelul retelei iterative, putem folosi
oricare dintre algoritmii TG pentru detectarea defectelor prezentate în
Sectiunea 2.1 (se cer câteva modificari minore pentru a calcula existenta
liniei defecte în fiecare cadru).

r=1
repeta
începe
construieste modelul cu r cadre de timp
ignora PO în primele r - 1 cadre
ignora iesirile q’ în ultimul cadru
q(1) = starea initiala data
daca (generarea de test are succes) atunci returneaza SUCCES
/* nu exista solutie cu cadrele r */
r=r+1
sfârsit
pâna ce r = fmax
returneaza ESEC

Figura B_III-52. TG într-o stare initiala cunoscuta - Procedura generala

O problema importanta este momentul opririi cresterii numarului


de cadre de timp. Cu alte cuvinte, vrem sa stim lungimea maxima a unei
156 Fiabilitate si Diagnoza

secvente test posibile pentru un defect. Pentru un circuit cu n F/F, pentru


fiecare din cele 2n stari ale circuitului corect, circuitul defect poate fi în
una din cele 2n stari ale sale. De aici rezulta ca o secventa test în care sa
nu se repete starile, nu poate fi mai lunga de 4n. Aceasta limita, oricum,
este prea larga pentru a fi folositoare în practica, asa ca numarul cadrelor
de timp este limitat de o valoare fmax specificata de utilizator (mult mai
mica).
Desi este corect din punct de vedere conceptual,
algoritmul descris în Figura B_III_52 este ineficient, deoarece atunci
când se creeaza reteaua cu r cadre, se ignora toate calculele facute
anterior pentru primele r - 1 cadre. Pentru a evita aceasta risipa, salvam
secventele partiale care pot fi extinse în cadrele viitoare. Cu alte cuvinte,
în timpul cautarii secventei S, de lungime r, salvam fiecare secventa care
propaga erori spre variabilele q’ ale cadrului r (si vectorul de stare
rezultat q*(r)) într-un SOL fixat, de solutii partiale. Daca nici una din
secventele Sr nu propaga eroare spre PO, cautarea pentru o secventa Sr+1,
începe de la una din starile salvate q’(r).

Generarea secventelor de test de autoinitializate

Algoritmul descris în Figura B_III-52 rezolva cazul


general când starea initiala este necunoscuta. Defectul este activat într-un
cadru de timp (temporar numit 1), iar eroarea rezultata este propagata
spre PO mergând înainte în timp, folosind r ≥ 1 cadre . Daca câteva din
valorile q ale cadrului 1 sunt binare, acestea sunt explicate mergând
înapoi în timp folosind p cadre de timp, numite temporar 0, -1, . . . , -(p-
1). Acest proces intervine atunci când valorile q în primul cadru de timp
sunt toate x. O asemenea secventa test este numita autoinitializata. (Dupa
ce p este cunoscut, cadrele de timp pot fi denumite corect 1, . . . , p, p+1, .
. . , p+r).
Vom încerca o secventa de lungime p + r + 1 doar atunci
când nu putem sa generam o secventa de lungime p + r. Pentru a se folosi
calculele anterioare, algoritmul salveaza toate solutiile partiale ale formei
(q ( - (p-1); Sp+r; q*(r)), unde Sp+r este o secventa obtinuta cu cadrele p + r
care propaga erorile la q*(r).

r=1
p=0
Diagnoza 157

repeta
începe
construieste modelul cu p + r cadre de timp
ignora PO în primele p + r - 1 cadre
ignora iesirile q* în ultimul cadru
daca (generarea testului are succes si fiecare intrare q în primul cadru
are valoarea A) atunci returneaza SUCCES
sfârsit
pâna când (r + p = fmax)
returneaza ESEC

Figura B_III-53. Obtinerea unei secvente test de autoinitializate

Alti algoritmi

O mare dificultate în cazul algoritmului din Figura B_III-


53 rezulta din necesitatea de a merge si înainte si urma în timp. O
abordare care evita aceasta problema este metoda EBT (cautare extinsa) a
carui proces de cautare merge doar în urma în timp. EBT selecteaza
prima data o cale din locul defectului la o PO (aceasta cale poate implica
mai multe cadre de timp), apoi sensibilizeaza calea începând de la PO.
Dupa ce se propaga eroarea, defectul este activat prin confirmarea valorii
cerute la locul defectului. Toate problemele de confirmare a liniei care nu
pot fi rezolvate în cadrul de timp curent sunt continuate în cadrul
urmator. Astfel toti vectorii sunt generati în ordine inversa aplicarii.
Algoritmul TG de calea critica pentru circuite combinate
au fost de asemenea extinsi la circuitele secventiale sincrone folosind
modelul retelei.
Metoda se bazeaza pe existenta unui cadru schimbat (reset
state) si presupune ca fiecare secventa test începe de la cadrul schimbat.
Ca si algoritmul dat în Figura B_III-53, începe prin activarea defectului în
cadrul de timp 1 si propagarea erorii înainte spre PO, folosind câteva
cadre de timp daca este necesar, starea ceruta în cadrul 1, q(1), este
confirmata de o secventa care aduce circuitul din starea schimbata q(1).
Pentru a gasi aceasta secventa, un prim pas determina o diagrama de
tranzitie a starii partiale prin atingerea sistematica a starilor din starea
schimbata. Astfel sunt precalculate secventele de transfer de la starea
158 Fiabilitate si Diagnoza

schimbata la alte stari. Daca starea q(1) nu se afla în diagrama starii


partiale, atunci un algoritm de corectare a starii cauta o secventa de
transfer de la starea schimbata la q(1). Acest proces de cautare trece
sistematic prin starile prin care q(1) poate fi atinsa, si se opreste atunci
când este întâlnita orice stare inclusa în diagrama de tranzitie a starii
partiale.

Valori logice

Muth [1976] a aratat ca o extensie a algoritmului D


restrâns la valorile {0,1,D, D ,x} poate sa genereze o secventa test pentru
un defect detectabil, în timp ce un algoritm care foloseste întregul set de
noua valori compuse va avea succes.
Cu cele noua valori compuse, o linie atât cu circuitul
corect cât si cu el defect poate propune una din cele trei valori {0,1,u}.
Din cauza limitarii logice cu trei valori, este posibil ca un algoritm TG
folosind logica cu 9 valori sa nu fie capabil sa duca la un test
autoinitializat, chiar atunci când exista unul dintre acestea. (O procedura
care garanteaza producerea unei secvente initiatoare, când exista deja
una, cere folosirea valorilor necunoscute multiple).
Am vazut ca pentru o secventa test autoinitializata, toate
variabilele q ale primului cadru de timp au valoarea x. Unele sisteme
folosesc o valoare U diferita pentru a denumi o stare necunoscuta initiala.
Diferenta dintre U si x este ca x ∩ a = a , în timp ce U ∩ a = ∅; cu alte
cuvinte, un x poate fi schimbat în timpul calculului, dar U nu poate fi
schimbat.
O cale pentru a evita problema complexa a initializarii
este proiectarea circuitelor secventiale, care pot fi initializate usor. Cea
mai simpla tehnica este de a dota fiecare F/F cu o linie de schimbare (sau
preschimbare) comuna. Astfel un vector poate initializa circuitul corectat
si majoritatea circuitelor defectate. Asemenea tehnici de proiectare
destinate simplificarii testabilitatii, vor fi tratate în detaliu într-un capitol
separat.

Refolosirea problemelor rezolvate anterior


Diagnoza 159

O dificultate suplimentara în TG pentru circuite


secventiale este existenta starilor “imposibile”, care sunt stari care nu
sunt niciodata folosite în operatia de corectare. De exemplu, un
numarator cu cinci stari, implementat cu trei F/F poate avea trei stari
nepermise, în timpul TG este posibil esecul, si poate consuma o durata
mare de timp. Pentru a usura aceasta problema, poate fi întocmita o
tabela cu starile nepermise si permise. Initial, utilizatorul poate sa faca
completari în acest tabel. Apoi, chiar sistemul va introduce starile ale
caror corectari au esuat sau cele care nu au putut fi completate în cadrul
unei limite de timp specificate. Înainte de a încerca sa corecteze o stare q,
sistemul TG o va compara cu intrarile din tabelul de stari nevalabile;
cautarea este initiala daca q este acoperita de o stare nevalabila. De
exemplu, daca 0xx1 nu poate fi corectata (în cadrul limitelor permise)
atunci este nefolositoare încercarea de a corecta 01x1, ceea ce este o
restrictie mai stringenta asupra starii.
Acest concept al cautarii starilor anterioare poate fi extins
pentru rezolvarea cu succes a problemelor. De exemplu, sa presupunem
ca vrem sa corectam starea q = 0x1x si ca starea 011x a fost anterior
corectata. În mod evident, putem din nou aplica secventa folosita pentru a
corecta o stare acoperita de q. De aici construim un tabel al problemelor
de corectare a starilor rezolvate si solutiilor lor corespunzatoare. Oricând
vom dori sa corectam starea q, cautam acest tabel pentru a vedea daca q
(sau o stare acoperita de q) a mai fost corectata înainte. Daca a mai fost
corectata, va fi refolosita secventa corectata înregistrata.

Selectarea defectelor tinta

Structura unui sistem TG pentru circuite secventiale


folosind un algoritm TG orientat pe defecte este similara cu cea descrisa
pentru circuite combinationale, cu exceptia faptului ca se genereaza o
secventa test (în loc de un vector) pentru detectarea defectului tinta. Este
necesara o secventa de autoinitializare doar pentru primul defect tinta.
Pentru oricare alte defecte tinta, TG începe de la starea existenta la
sfârsitul secventei generate anterior.
Fiecare secventa generata este simulata sa determine toate
defectele pe care le detecteaza. Un efect secundar important a acestei
simulari de defect este acela ca determina de asemenea defectele
nedetectate ale caror efecte au fost propagate catre variabilele de stare.
160 Fiabilitate si Diagnoza

Aceasta informatie este folosita selectând un asemenea defect ca si tinta


urmatoare; aceasta selectie “oportuna” salveaza efortul implicat în
activarea defectului si în propagarea unei erori spre o variabila de stare.

Logica de timp si generatoare de ceas multiple

Pâna acum am presupus ca toate F/F sunt conduse direct


de o singura linie de ceas. În practica, oricum, circuitele secventiale
sincrone pot avea multiple linii de ceas, iar generatoarele de ceas se pot
propaga prin logica pe calea lor spre F/F.
Pentru a modela circuitele cu aceasta structura, folosim
modelele F/F unde linia de ceas apare explicit.
Aceasta tehnica de modelare permite logicii de timp sa fie
tratata ca parte a circuitului combinational. O valoare 1(0) specificata
pentru un ceas P1 i într-un vector al unei secvente test generate,
semnifica faptul ca un ceas trebuie (nu trebuie) sa fie aplicat lui i în acel
vector. Cu toate ca valorile datei Pl s si ale ceasului Pl s sunt specificate
de acelasi vector, testerul trebuie sa întârzie ceasurile pentru a asigura
faptul ca intrarile de ritm F/F se schimba doar dupa ce intrarile de date
F/F au fost fixate pe noile sale valori.
Pentru un F/F pentru care temporizarea este singurul scop
de schimbare a starii sale, câteva defecte în logica de timp previn
propagarea ritmului si fac ca F/F sa-si pastreze starea initiala. O
procedura ATG conventionala nu poate detecta un asemenea defect,
deoarece efectele sale de defectare sunt de forma 1/u sau 0/u (niciodata D
sau D ), ceea ce, când se propaga la un PO, indica doar o detectare
potentiala.

Cauzele complexitatii
TG pentru circuite secventiale este mult mai complex
decât pentru circuite combinationale, în special deoarece atât corectarea
liniei, cât si propagarea erorii implica cadre de timp multiple. În cel mai
rau caz, numarul de cadre cerute este functie exponentiala de numarul de
F/F.
O importanta proprietate structurala a circuitului
secvential este prezenta ciclurilor, unde un ciclu este o bucla implicând
Diagnoza 161

F/F. TG pentru circuit secvential fara cicluri nu este mult mai dificil decât
pentru un circuit combinational comparabil. Complexitatea lui TG pentru
un circuit secvential cu cicluri se refera direct la structura sa ciclica, care
poate fi caracterizata prin:
- numarul de cicluri
- numarul de F/F pe ciclu
- numarul de cicluri în care este implicat un F/F
(reflectând gradul de interactiune intre cicluri) .
Nu ne putem astepta ca TG pentru circuite secventiale
mari, cu structuri ciclice complexe sa fie realizabile practic. Solutiile
practice depind de proiectarea tehnicilor de testabilitate. Câteva asemenea
tehnici transforma un circuit secvential într-unul combinational în timpul
testarii.

Circuite asincrone

TG pentru circuite asincrone este cu mult mai dificil decât


pentru circuite sincrone. În primul rând, circuitele asincrone contin
adesea particularitati si sunt susceptibile de operatii nepotrivite cauzate
de evenimente aleatorii. În al doilea rând, pentru a obtine un model de
retea iterativa pentru circuit, trebuie identificate toate liniile de feedback;
aceasta este o sarcina de calcul complex. În sfârsit, operatia de circuit
corecta depinde adesea de întârzieri plasate intentionat în circuit, dar nici
unul dintre algoritmii TG tratati anterior, nu iau în calcul întârzierile.
De notat este faptul ca un circuit asincron poate sa treaca
printr-o secventa de stari ca raspuns la o schimbare de intrare.
Presupunem ca valorile PO sunt masurate doar dupa ce
este atinsa o stare stabila, si ca nu se permite sa se schimbe Pls, decât
dupa ce circuitul s-a stabilizat. Bazati pe aceste presupuneri, putem folosi
o tehnica de modelare dezvoltata de Breuer [1974]. Aici scala de timp
este divizata în cadre si faze. Un cadru de timp i corespunde aplicarii
unui singur vector de intrare x(i) [Spre deosebire de circuitele sincrone,
doi vectori consecutivi trebuie sa difere cu cel putin o variabila]. Fiecare
cadru i este compus dintr-una sau mai multe faze pentru a reflecta
secventa de schimbari a variabilelor de stare. Toate fazele aceluiasi cadru
primesc acelasi vector x(i). Valorile PO sunt observate doar dupa ce a
fost atinsa stabilitatea (y = Y) în ultima faza a cadrului. O problema este
aceea ca numarul fazelor dintr-un cadru nu este cunoscut apriori.
162 Fiabilitate si Diagnoza

3.2. TG bazat pe simulare

Principiul TG bazat pe simulare [Seshu 1965] este sa


exploreze spatiul vectorilor de intrare dupa cum urmeaza:
1) Genereaza si simuleaza vectori de proba;
2) Bazat pe rezultatele simularii, evalueaza vectorii
de proba în functie de unele functii de cost;
3) Selecteaza “cel mai bun” vector de proba si îl
adauga secventei de test.

Putem începe initial cu un vector arbitrar (sau unul


specific). Vectorii de proba sunt de obicei selectati printre :vecinii”
vectorului de intrare curent t, de exemplu vectorii diferiti de t printr-un
bit. Procesul de selectie este aleator, daca aceasta metoda este în parte
similara cu RTG. Functia de cost depinde de obiectivul fazei curente a
procesului TG:

1. Initializarea: Aici obiectivul este de a fixa toate


F/F pe valori binare. Functia de cost este numarul de F/F dintr-o stare
necunoscuta. (Aceasta faza nu cere simularea defectului).

2. Generarea de test pentru Grupuri de defecte:


Aici obiectivul este detectarea cât mai multor defecte posibil, de aici
toate defectele nedetectate sunt simulate. Pentru fiecare defect i activat
calculam costul sau ci ca cea mai scurta distanta intre partile propriei
frontiere si PO. Distanta este cel mai avantajos numar de elemente pe o
cale, cu un F/F având o greutate (pondere) mai mare decât o poarta.
Costul ci reprezinta o masura a cât de aproape este defectul i de a fi
detectat. Functia de cost este ∑ c i , unde însumarea se face pe o multime
de defecte care contine defectele care au cele mai mici costuri.

3. Generarea de test pentru defecte individuale:


Aici urmarim unul din defectele ramase nedetectate, iar obiectivul este
generarea unei secvente test pentru detectarea lui. Functia de cost este o
masura de testabilitate dinamica, proiectata sa masoare efortul
Diagnoza 163

suplimentar cerut pentru detectarea defectului, începând de la starea


curenta.

În toate aceste trei faze, un vector de proba “bun” ar trebui


sa reduca costul. În timpul fazei de initializare, reducerea costului
înseamna initializarea mai multor F/F. Când costul devine 0, toate F/F au
valori binare. În celelalte doua faze, reducerea costului înseamna
aducerea unui grup de defecte, sau a unui defect individual, mai aproape
de detectie. În principiu, ar trebui sa evaluam toti vectorii de proba
posibili si sa selectam unul care sa duca la costul minim. (Într-un circuit
cu n Pls, pot fi obtinuti n vectori de proba prin schimbarea cu 1 bit a
vectorului curent). În practica, putem aplica o strategie “avida”, care
accepta primul vector care reduce costul. Eliminarea unui vector de proba
care nu reduce costul înseamna refacerea starii problemei (valori, liste de
defecte, etc.) la aceea creata de ultimul vector acceptat; acest proces este
similar cu cautarea. La un punct, se poate întâmpla ca nici un vector de
proba sa nu poata reduce costul, ceea ce arata ca procesul de cautare a
atins un minim local. În acest caz se impune o schimbare de strategie, ca:
(1) acceptarea unui vector care creste costul;
(2) generarea unui nou vector care difera de cel curent cu mai
mult de un bit;
(3) trecerea la faza urmatoare.
Un avantaj important al TG bazat pe simulare este acela ca
poate folosi acelasi model de întârziere ca si propriul simulator de defect
de baza. Poate de asemenea rezolva circuite asincrone. Deoarece
principalul component este un simulator de defect conventional, TG
bazat pe simulare este mai usor de introdus decât metodele care folosesc
modelul retelei iterative.
SOFTG (Generator de test pentru Defecte) este o alta
metoda TG bazata pe simulare. SOFTG de asemenea genereaza o
secventa test în care fiecare vector difera de predecesorul sau cu un bit.
De preferat fata de selectarea aleatorie a bitului de schimbare, SOFTG
determina acest bit printr-o procedura de cautare similara cu cea folosita
în PODEM.

3.3. TG folosind modele registru transfer logic (RTL)


164 Fiabilitate si Diagnoza

Metodele TG descrise în sectiunea anterioara lucreaza cu


un model de circuit compus din porti si F/F. Prin contrast, un proiectant
sau un inginer de test vede de obicei circuitul ca o interconectare a
componentelor de nivel înalt, ca numaratoare, registre si multiplexoare.
Cunoasterea modelului cum opereaza aceste componente permite solutii
simple si compacte pentru corectarea liniei si pentru problemele de
propagare a erorii. De exemplu, corectarea unui 1 în al doilea bit al unui
numarator (contor) aflat în starea 0 poate fi facuta prin executarea a doua
operatiuni de crestere. Dar un program care lucreaza cu un model
structural de nivel scazut (în care contorul este o interconectare a portilor
si F/F) nu poate folosi acest tip de cunostinte functionale.
În aceasta sectiune prezentam metode TG care folosesc
modele RTL pentru componente (sau pentru întregul circuit). Acestea
genereaza teste pentru SSF si pot fi extinse pentru rezolvarea fixarii
variabilelor RTL. Principalul scop al modelelor RTL este sa accelereze
TG pentru circuite secventiale si sa creasca marimea circuitelor care pot
sa fie procesate eficient. Un al doilea scop este folosirea componentelor
comerciale “necatalogate” pentru care modelele nivelului de poarta nu
sunt disponibile, dar carora descrierea RTL le sunt cunoscute sau pot fi
deduse din specificatiile lor de functionare.

3.3.1. Extensii ale algoritmului D

Pentru a extinde algoritmul D la circuitele care contin


componente RTL, pastram structura lui generala, dar extindem operatiile
sale de baza - corectarea liniei, propagarea erorii si implicarea. Vom
considera dispozitive ale complexitatii moderate, ca registre de deplasare
si numaratoare. Functia unui astfel de dispozitiv este descrisa folosind
urmatorii operatori RTL primari:
- Clear (reset) - stergere
- parallel Load - încarcare paralela
- Hold (nu fa nimic) - pastreaza
- shift Left - decalare stânga
- shift Right - decalare dreapta
- crestere (numarare în sus)
- descrestere (numarare în jos)
Diagnoza 165

Operatorii primari RTL sunt implementati prin algoritmi generici


incorporati, care sunt aplicabili oricarui registru cu n biti. Diferite tipuri
de componente sunt caracterizate prin diferite setari de conditii care
activeaza operatorii; de exemplu, ceas negativ contra pozitiv, sau
stergerea sincron contra asincron.

3.3.2. Cautare euristica în spatiul starilor

SCIRTSS (Sequential Circuit Test Search System) [Hill


and Huey 1977] este un sistem ATG care genereaza teste pentru circuite
sincrone pentru care sunt disponibile atât modele nivel jos (poarta si F/F),
cât si modelul RTL. Bazat pe modelele de nivel jos, SCIRTSS foloseste
un algoritm TG pentru circuite combinationale pentru a genera un test
pentru o tinta SSF, într-un cadru de timp. Apoi se realizeaza cu ajutorul
modelului RTL cautarea pentru gasirea secventelor pentru propagarea
erorii la PO si aducerea circuitului în starea dorita.
SCIRTSS au fost aplicate cu succes la generarea testelor
pentru circuite secventiale complexe moderate. Caracteristica sa
distinctiva este folosirea unui model RTL ca baza pentru proceduri de
cautare euristica. Performanta sa este puternic influentata de
complexitatea utilizatorului, care trebuie sa furnizeze ponderi euristice si
câtiva vectori de date.

3.4. Generarea aleatoare a testelor (RTG)

RTG pentru circuite secventiale este mai complicata decât


pentru circuite combinationale din cauza urmatoarelor probleme:
• secventele aleatoare pot sa esueze în initializarea
corespunzatoare a circuitului care cere o secventa de initializare
specifica;
• câteva intrari de control, ca ceasul si liniile de
resetare, au mult mai multa influenta în comportamentul circuitului decât
alte intrari. Permitând acestor intrari sa schimbe aleator dupa cum fac
celelalte, aceasta poate pune în pericol generarea oricaror secvente
folositoare;
• evaluarea unui vector nu se poate baza doar pe
numarul de defecte noi pe care le detecteaza. Un vector care nu
166 Fiabilitate si Diagnoza

detecteaza nici un nou defect, dar aduce circuitul într-o stare din care
defecte noi sunt usor detectabile, trebuie considerat folositor. De
asemenea un vector care poate cauza curse sau oscilatii trebuie eliminat.
Din cauza primelor doua probleme, se foloseste adesea un
proces semialeator, în care stimuli pseudoaleatori sunt combinati cu
stimuli specificati de utilizator [Schuler si al. 1975]. De exemplu,
utilizatorul poate furniza secvente de initializare si stimuli determinanti
pentru unele intrari (ca limitele de timp). Utilizatorul poate de asemenea
specifica intrarile (ca limitele de resetare) care trebuie sa se schimbe
neperiodic si sa defineasca ratele lor relative de schimbare. În plus,
utilizatorului ii este permisa definirea probabilitatilor semnalului unor
intrari.
Detinerea probabilitatilor semnalului neuniform este
folosirea în special pentru intrarile de control. O procedura adaptata care
schimba în mod dinamic probabilitatile semnalului intrarilor de control
este descrisa în [Timoc si al. 1983].
Pentru a determina urmatorul vector anexat secventei
aleatoare, metoda RTG descrisa în [Breuer 1971] genereaza si evalueaza
vectorii aleatori candidati (posibili) Q. Fiecare vector t este evaluat
potrivit functiei:
v(t) = av1 + b(v2 - v3)
unde:
• v1 este numarul noilor defecte detectate de t
• v2 este numarul noilor defecte ale caror efecte sunt
propagate spre variabilele de stare de catre t (dar nu sunt detectate de t)
• v3 este numarul de defecte ale caror efecte au fost
propagate spre variabilele de stare înainte de aplicarea lui t, dar au fost
“pierdute” de t (si nu au fost înca detectate)
• a si b sunt ponderi
Astfel valoarea v(t) a unui vector t este de asemenea
influentata de potentialul sau de detectari viitoare. La fiecare pas vectorul
cu cea mai mare valoare este selectat (aceasta reprezinta o tehnica
“locala” de optimizare).
Cu cât sunt evaluati mai multi vectori candidati, cu atât
este mai mare posibilitatea selectarii unui mai bun. Dar atunci se cheltuie
mai mult timp pentru evaluarea altor candidati. Acest târg poate fi
Diagnoza 167

controlat printr-o metoda adaptiva care urmareste “profitul” obtinut prin


cresterea lui Q, si aceasta creste Q atâta timp cât profitul creste.

4. Concluzii
TG eficient pentru circuite mari este o importanta
problema practica. Câteva din noile directii de cercetare în acest domeniu
implica suport hardware si tehnici de Inteligenta Artificiala (AI).
Suportul hardware pentru TG poate fi obtinut de catre o
arhitectura speciala care foloseste prelucrarea paralela de tip pipeline sau
printr-o arhitectura multiprocesor cu scop general. A doua varianta are
urmatoarele avantaje:
• prelucrarea defectului concurent, unde fiecare
procesor executa aceeasi generare de test pentru o subgrupa de defecte;
• prelucrarea deciziei concurente, unde diferite
procesoare exploreaza simultan diferite ramuri de acelasi nod într-un
arbore de decizie;
• prelucrarea ghidarii concurente, unde diferite
procesoare tintesc acelasi defect folosind diferite functii de cost pentru
ghidare.
Tehnicile AI (inteligenta artificiala) sunt aplicate la TG în
scopul de a ajuta caracteristicile procesului de argumentare al inginerilor
de teste expert atunci când se genereaza teste. În contrast cu algoritmul
ATG, care nu “vede” functionalitatea circuitului si priveste doar o
portiune îngusta din structura sa, un inginer de test se bazeaza mult pe
cunostintele de nivel înalt asupra comportamentului destinat al circuitului
si al componentelor sale, si foloseste o viziune globala asupra structurii
sale ierarhice. O alta diferenta este abilitatea inginerului de test de a
recunoaste o familie de probleme similare si de a profita de similaritatea
lor prin furnizarea unui mecanism de solutii comune; de exemplu, aceeasi
secventa de control poate fi repetata cu diferite surse de date pentru a fixa
un registru de valori diferite. În contrast, un algoritm ATG va regenera
repetat secventa de control pentru fiecare sursa de date ceruta.
HITEST [Robinson 1983, Bending 1984] este un sistem
bazat pe cunostinte care combina proceduri algoritmice cu cunostinte
furnizate de utilizator. Un generator de test combinational (bazat pe
PODEM) este folosit pentru a genera un test într-un cadru de timp. Pentru
168 Fiabilitate si Diagnoza

corectarea starii si pentru probleme de propagare a erorii, HITEST se


bazeaza pe solutii date de utilizator. Aceste solutii sunt adesea evidente
pentru ingineri dar pot fi deduse cu dificultate de un generator de test
conventional. De exemplu, cunostintele care specifica cum sa aduci si sa
muti numaratorul într-o stare dorita va: (1) indica valorile cerute pentru
intrari pasive (ca ENABLE, RESET); (2) va determina, prin compararea
starii dorite cu cea curenta, numarul de impulsuri de timp care trebuie
aplicate si fixarea necesara pentru controlul UP/DOWN. Cunostintele
sunt înmagazinate si mentinute folosind tehnici AI.
Spre deosebire de un algoritm ATG, care exploreaza
spatiul operatiilor posibile ale unui circuit, un inginer de test cauta spatii
mai restrânse a operatiilor destinate, adica, operatiile pentru care un
circuit a fost proiectat sa le faca. În mod similar, sistemul descris de
SHIRLEY [1987] foloseste cunostinte despre comportamentul destinat al
circuitului pentru a reduce domeniul de cautare. Cunostintele nu sunt date
de utilizator ci sunt dobândite prin analiza rezultatelor obtinute în timpul
simularii simbolice a circuitului. În plus fata de valorile constante
propagate de un simulator conventional, un simulator simbolic propaga
de asemenea variabile, iar rezultatele sale sunt expresii descriind
comportamentul circuitului pentru toate datele posibile reprezentate de
variabile. De exemplu, daca X si Y sunt variabile asociate intrarilor A si
B ale unui circuit sumator, iesirea lui va fi fixata la X + Y si daca X = 0
iesirea va fi Y. În timpul generarii testului, obiectivele dorite sunt ajustate
cu rezultatele simularii. Daca obiectivul sumatorului este sa propage o
eroare de la intrarea B, solutia A = 0 va fi gasita prin ajustarea cu
rezultatele simularii, care de asemenea înregistreaza evenimentele care au
fixat A = 0; aceste evenimente sunt regasite si refolosite ca parte a
testului generat.
Tehnicile TG au alte aplicatii dincolo de TG. De exemplu fie
doua circuite combinationale diferite pentru care se presupune ca folosesc
aceeasi functie. De exemplu, C1 este o proiectare manuala, iar C2 este un
circuit sintetizat automat din aceleasi specificatii. Sau ca C1 este un
circuit existent, iar C2 este o reproiectare a lui C1 folosind o tehnologie
diferita. Problema este de a verifica daca C1 si C2 realizeaza aceeasi
functie. Bineînteles, putem simula C1 si C2 cu aceeasi stimuli si sa
comparam rezultatele, dar un proces bazat pe simulare de obicei nu poate
sa furnizeze o verificare completa. Verificarea logica poate compara
automat cele doua circuite si poate dovedi daca ele implementeaza
Diagnoza 169

aceeasi functie sau vectori generati care cauzeaza raspunsuri diferite.


Mecanismul de baza [Roth 1977] este de a combina C1 si C2 pentru a
crea un circuit compus M, apoi folosirea unui algoritm de justificare a
liniei pentru a încerca fixarea fiecarui PO a lui M la 1. Daca are loc
justificarea liniei, atunci vectorul generat fixeaza doua PO corespondente
în C1 si C2 la valori diferite; astfel nu exista un asemenea vector si cele
doua PO au aceeasi functie.
Abadir si al. [1988] au aratat ca un test complet setat
pentru SSF într-un circuit combinational este de asemenea folositor în
detectarea multor erori de proiectare tipice, cum ar fi lipsa sau surplusul
inversiunilor, tipuri de porti incorecte, fire interschimbate si lipsa sau
surplusul de fire.