Sunteți pe pagina 1din 52

Diagnoza 223

V. SIMULAREA CU DEFECT

1. Introducere

Simularea cu defect consta în simularea unui circuit în prezenta


defectelor. Comparând rezultatele simularii cu defect cu cele ale simularii
fara defect pentru acelasi circuit simulat cu acelasi test T aplicat, putem
determina defectele detectate de T.
Un scop al simularii cu defect este sa se clasifice(evalueze) un test T. De
obicei gradul(clasificarea) unui test T este data de gradul sau de
acoperire a defectelor, care este raportul dintre numarul total de defecte
detectate de T si numarul total de defecte simulate. Aceasta cifra este
direct relevanta doar pentru defectele direct procesate de simulator, un
test cu acoperirea defectelor de 100% putând esua în detectarea
defectelor din afara modelului cu defect considerat. Astfel acoperirea
defectelor reprezinta doar o aproximare a adevaratei "acoperiri a
defectelor", care este probabilitatea ca testul T sa detecteze orice defect
fizic din circuit. Experienta arata ca un test cu înalta acoperire pentru SSF
realizeaza de asemenea si un înalt grad de acoperire a defectelor.
Evaluarea testului, bazata pe simularea cu defect, a fost aplicata mai ales
modelelor SSF, atât pentru testare externa cît si pentru propria testare
(exemplu: evaluarea programelor de autotest).
Calitatea testului influenteaza calitatea produselor. Fie Y productia
manufacturata, deci probabilitatea ca un circuit sa nu aiba defecte. Fie DL
nivelul de defect, care este probabilitatea aparitiei unui produs defect, si d
acoperirea defectelor de catre testul folosit pentru detectarea defectelor.
Relatia între aceste variabile este data de :
DL = 1 - Y 1−d
Presupunând ca acoperirea greselilor este apropiata de acoperirea
defectelor, putem folosi aceasta relatie pentru a determina acoperirea
greselilor ceruta pentru un nivel de defect dat. De exemplu, consideram
un proces cu 0,5 - productie. Atunci pentru a realiza un nivel de defect de
0,01 - care înseamna ca 1% din produse sunt probabil defecte - avem
nevoie de o acoperire a greselilor de 99%. Un test cu 95% acoperirea
greselilor va da un nivel de defect de 0,035. Daca, cu toate acestea,
224 Fiabilitate si Diagnoza

productia este de 0,8 ,atunci 95% acoperirea greselilor este suficient


pentru a realiza un nivel de defect de 0,01.
Simularea cu defect joaca un rol important în generarea testelor. Multe
sisteme generatoare de test folosesc un simulator de defecte pentru a
evalua un test T propus(vezi figura B_V-1) apoi modifica T în functie de
rezultatele simularii cu defect pâna când acoperirea obtinuta este
considerata satisfacatoare. Testul T este modificat prin adaugarea de noi
vectori si/sau înlaturarea unora din vectorii sai care nu au contribuit la
obtinerea unei bune acoperiri. Aceste schimbari pot fi facute de un
program sau de catre un modelator de test (designer) într-un mod
interactiv.

genereaza testul initial T

evalueaza testul T

N Y
acoperirea defectelor este buna?

modifica T OK

Figura B_V-1 Folosirea generala a simularii cu defect în generarea


testelor
Diagnoza 225

selecteaza nu mai sunt defecte


defectul tinta

OK
genereaza testul
pentru tinta

simulare
cu defect

descarca
defectele detectate

Figura B_V-2 Simularea cu defect folosita la selectarea defectelor tinta


pentru
generarea testelor

Alta modalitate de folosire a simularii cu defect în generarea testelor este


ilustrata în figura B_V-2. Multi algoritmi pentru generarea testelor sunt
orientati spre defecte. Aceasta înseamna ca ei genereaza un test pentru un
defect specificat, numit defect-tinta. Adesea acelasi test detecteaza multe
alte defecte care pot fi determinate prin simularea cu defect. Atunci toate
defectele detectate sunt îndepartate din setul defectelor simulate si un nou
defect-tinta este selectat din cele ramase.
Simularea cu defect este de asemenea folosita pentru crearea
dictionarelor de defecte. Conceptual, un dictionar de defecte contine
raspunsul la iesire la testul T al tuturor circuitelor defecte Nf,
corespunzând unui defect simulat f. De fapt un dictionar de defecte nu
stocheaza raspunsul complet de iesire Rf al fiecarui Nf, ci doar o functie
226 Fiabilitate si Diagnoza

S(Rf) numita semnatura defectului f. Procesul de localizare al defectului


consta în compararea semnaturii obtinute din circuitul testat cu intrarile
în dictionarul de defecte.
Construirea unui dictionar de defecte prin simularea cu defect înseamna,
în principiu, calcularea raspunsului în prezenta oricarui defect înainte de
testare. Un mod diferit de construire a dictionarului de defecte, numit
diagnoza post-test, consta în izolarea mai întâi a unui set redus de
defecte "plauzibile", apoi simularea doar a acestor defecte pentru a
identifica defectul actual.
Alta aplicatie a simularii cu defect este analiza functionarii unui
circuit în prezenta defectelor. Aceasta este foarte importanta în
sistemele de înalta siguranta, întrucât unele defecte pot afecta în mod
drastic functionarea. De exemplu:
-un defect poate induce riscuri care nu apar în circuitele fara defecte.
-un circuit cu defecte poate oscila sau poate intra într-un punct mort.
-un defect poate inhiba initializarea corecta a unui circuit secvential.
-un defect poate transforma un circuit combinational într-un circuit
secvential, sau un circuit sincron într-unul asincron.
Simularea cu defect a circuitelor cu auto-test este folosita pentru
verificarea functionarii corecte a logicii lor de detectare si corectare a
erorilor.

2.Tehnici generale de simulare cu defect

2.1.Simularea seriala cu defect

Simularea seriala cu defect este cea mai simpla metoda de simulare cu


defect. Consta în transformarea modelului circuitului fara defect N în asa
fel încât sa modeleze circuitul Nf, creat prin defectul f. Atunci Nf este
simulat. Întregul proces este repetat pentru fiecare defect ce prezinta
interes. Astfel defectele sunt simulate pe rând. Principalul avantaj al
acestei metode este ca nu este necesar un simulator de defect special
,pentru ca Nf este simulat de un simulator fara defect.
Alt avantaj este ca se poate manipula orice fel de defect, avantaj asigurat
de faptul ca modelul lui Nf este cunoscut. Cu toate acestea, metoda
seriala este nepractica pentru simularea unui numar mare de greseli
pentru ca ar necesita prea mult din timpul CPU.
Diagnoza 227

Celelalte tehnici generale de simulare a defectelor - paralela, deductiva si


concurenta - difera de metoda seriala prin doua aspecte fundamentale:
-determina comportamentul circuitului N în prezenta defectelor fara
schimbarea explicita a modelului circuitului N.
-sunt capabile de simularea simultana a unui set de defecte.
În continuare, vor fi descrise aceste trei tehnici.

2.2.Concepte comune si terminologie

Toate trei tehnicile - paralela, deductiva si concurenta - simuleaza


simultan circuitul fara defect N (numit si circuitul bun) si un set de
circuite defecte (sau rele) {Nf}. Astfel orice simulare cu defect include si
o simulare fara defect. Daca toate defectele de interes sunt simulate
simultan, atunci simularea cu defect este numita într-o singura trecere.
Altfel setul de defecte este împartit si simularea cu defect este facuta
într-un proces multi-trecere, în care un subset din setul total de defecte
este tratat într-o trecere. În general, circuitele mari necesita simulari
multi-trecere (multipass).
În plus fata de activitatile necesitate de simularea fara defect, simularea
cu defect implica urmatoarele sarcini:
-specificarea defectului.
-inserarea defectului.
-generarea si propagarea efectelor datorate defectului.
-detectarea si înlaturarea defectului.
Specificarea defectului consta în definirea setului de defecte modelate.
Inserarea defectului consta în selectarea unui subset de defecte pentru a
fi simulate într-o trecere si crearea structurilor de date care indica
algoritmului de simulare prezenta defectelor. Aceste structuri de date sunt
folosite pentru generarea efectelor datorate defectelor inserate pe timpul
simularii. Marea majoritate a muncii în simularea cu defect este legata de
propagarea efectelor. Oricând un defect f se propaga spre o iesire
primara j (valorile lui j în circuitul defect sau bun sunt binare),
simulatorul marcheaza f ca detectat. Utilizatorul poate cere ca un defect
detectat de k ori sa fie înlaturat din setul de defecte simulate (de obicei k
= 1). Înlaturarea defectelor este procesul opus inserarii.
228 Fiabilitate si Diagnoza

2.3.Simularea cu defect paralela

În simularea cu defect paralela, circuitul bun si un numar fix, sa spunem


W, de circuite cu defect sunt simulate simultan. Un set F de defecte
necesita [F/W] treceri ( [ ] - partea întreaga a numarului din paranteza, +
1). Valorile unui semnal în circuitul bun si valorile corespunzând
semnalului din cele W circuite defecte sunt "împachetate" împreuna în
aceeasi locatie de memorie a calculatorului gazda. Depinzând de
implementare, o locatie consta în unul sau mai multe cuvinte.
31 30 2 1 0
A

valoarea lui A în circuitul bun

valoarea lui A în circuitul defect 1

valoarea lui A în circuitul defect31

Figura B_V-3 Reprezentarea valorilor în simularea paralela


Diagnoza 229

X
XI Z

4 3 2 1 0
pozitia defectelor

XI s-a-1
Y s-a-1
Z s-a-0
Z s-a-1

4 3 2 1 0
0 1 1 0 0 0 IZ defecte de inserat în Z

1 0 SZ valorile pentru defectele definite de IZ

0 0 0 1 0 Z înainte de insertia defectelor

1 0 0 1 0 Z dupa insertia defectelor

Figura B_V-4 Inserarea defectelor în Z

De exemplu, daca folosim o logica cu doua valori si un cuvânt de 32 de


biti, atunci W = 31(figura B_V-3). Consideram o poarta SI cu intrarile A
si B. Fiecare bit în cuvântul asociat cu un semnal reprezinta valoarea
acestui semnal într-un circuit diferit. Traditional, bitul 0 reprezinta
valoarea semnalului în circuitul bun. Apoi folosind un SI logic între
cuvintele asociate lui A si B, evaluam (în paralel) poarta si în circuitul
bun si în fiecare din cele 31 de circuite defecte. În mod similar folosim
operatia SAU pentru evaluarea portii SAU, si operatia de complement pe
bit pentru evaluarea portii NU. O poarta SI-NU necesita un SI urmat de
un complement pe bit si asa mai departe. Un circuit secvential este
reprezentat de o expresie booleana; de exemplu, pentru un bistabil JK:
Q + = JQ + KQ
unde Q + si Q sunt ,respectiv, starea noua si cea curenta. Astfel
,evaluarea poate fi facuta folosind SI, SAU si NOT.
230 Fiabilitate si Diagnoza

Fie Vi valoarea ce se propaga în linia i în circuitul , unde f este defectul


j. Fiecare linie i ≠ j ia valoarea Vi , dar valoarea lui j ar trebui sa fie
întotdeauna c. Noua valoare a liniei i, Vi ' ,poate fi exprimata ca:
0, i ≠ j
Vi ' = Vi δ ij + δ ij c , unde δ ij = 
1, i = j
Ecuatiile de mai sus reprezinta procesul inserarii unui defect f.
Pentru W defecte, acest proces este executat în paralel, folosind doua
cuvinte masca, ce contin valorile δ ij , si c în bitul cu pozitia
corespunzând defectului f. Figura B_V-4 arata o portiune a unui circuit,
mastile folosite pentru inserarea defectelor în linia z, si valorile lui z
înainte si dupa inserarea defectelor. Prima masca I asociata cu o linie
indica daca defectele trebuie inserate în aceasta linie si în care pozitie de
bit, iar cea de-a doua - S - defineste valorile detinute de aceste defecte.
Astfel dupa evaluarea portii Z prin Z=XI Y, efectul defectelor inserate în
Z este obtinut prin
Z ' = Z ⋅ I Z + I Z ⋅ SZ

valoarea lui A
0 1 u
A1 0 1 0
A2 0 1 1

Figura B_V-5 Codificarea pentru logica cu 3 valori

Inserarea defectelor pentru XI si Y este facuta în mod similar înainte de


Z.
Pentru o logica cu trei valori (0,1,u) un bit nu este suficient pentru
reprezentarea valorii semnalului. Schema de codificare aratata în figura
B_V-5 foloseste doua cuvinte, A1 si A2 ,pentru a stoca cele W valori
asociate semnalului A. Întrucât codurile pentru valorile 0 si 1 sunt,
respectiv, 00 si 11, operatiile SI/SAU logice pot fi aplicate direct
cuvintelor A1 si A2 . Din acest motiv ,pentru evaluarea portii SI cu
intrarile A si B si iesirea C, în loc de C=AB folosim:
Diagnoza 231

C1 = A1 ⋅ B1
C2 = A2 ⋅ B2
Operatorul de negatie, cu toate acestea, nu poate fi aplicat direct,
deoarece codul 01 va genera codul ilegal 10. O inversare B=NOT(A) este
realizata prin B1 = A2 , B2 = A1 ,adica complementam A1 si A2 si le
interschimbam. Figura B_V-6 arata un calcul simplu pentru Z = X ⋅ Y
(cu un cuvânt pe trei biti).

Valori Codificare
X 01u X1 010
X2 011
Y 011 Y1 011
Y2 011
X.Y 01u X1.Y1 010
X2.Y2 011
Z = X.Y 10u Z1 100
Z2 101
Figura B_V-6 Exemplu de operatie NAND în simularea paralela cu 3
valori

Este posibila reducerea numarului de treceri prin simularea mai multor


defecte independente simultan. Fie Si setul de linii care pot fi afectate de
valoarea liniei i. Defectele definite pe liniile i si j, asa încât Si I S j = ∅ ,
sunt numite independente. Defectele independente nu pot afecta aceeasi
parte a circuitului, si nu pot fi simulate în aceeasi pozitie de bit. Cel mai
mare numar de defecte independente ce pot fi procesate în aceeasi pozitie
de bit simultan este numarul intrarilor primare - p - ale circuitului. De aici
numarul minim de treceri este [ F (W ⋅ p)] . Reducerea potentiala a
numarului de treceri trebuie cântarita împotriva costului identificarii
defectelor independente.
Pentru a îndeparta un defect f, mai întâi trebuie sa oprim inserarea sa.
Aceasta este facuta simplu prin înlaturarea pozitiei de bit corespunzatoare
în cuvântul masca folosit pentru inserarea defectului. Cu toate acestea
,efectele defectului pot sa se fi propagat în multe alte linii, si este
232 Fiabilitate si Diagnoza

necesara procesarea aditionala pentru oprirea întregii activitati în circuitul


Nf .

Limitari ale simularii cu defect paralele

În simularea cu defect paralela, mai multe circuite defecte pot fi simulate


în paralel, datorita faptului ca pentru evaluare folosim doar operatii care
proceseaza independent fiecare bit. Aceasta necesita modelarea
elementelor prin ecuatii booleene, si deci nu putem folosi direct rutine de
evaluare care examineaza valorile de intrare ale elementelor evaluate, sau
rutine bazate pe operatii aritmetice. Dar aceste tipuri de evaluare sunt
convenabile pentru evaluarea elementelor functionale, ca de exemplu
memorii sau numaratoare. Pentru integrarea acestor tehnici într-un
simulator cu defect paralel, bitii individuali ai circuitelor defecte sunt
extrasi din valorile împachetate, elementele functionale sunt evaluate
individual, si apoi bitii individuali sunt reîmpachetati. Deci simularea cu
defect paralela este doar partial compatibila cu modelarea pe nivele
functionale.
Tehnicile de evaluare bazate pe ecuatii booleene sunt potrivite pentru
valori binare, dar ele devin din ce în ce mai complexe, pe masura ce
numarul valorilor logice folosite în modelare creste. Deci simularea cu
defect paralela devine nepractica pentru logica multivaloare.
În simularea cu defect paralela, un eveniment apare când noua valoare a
unei linii difera de vechea sa valoare în cel putin o pozitie de bit. Deci un
eveniment cauzeaza întotdeauna W evaluari, chiar daca doar unul din
cele W elemente evaluate are evenimente de intrare. Desi s-ar putea crede
ca evaluarile nenecesare nu iau timp, ele reprezinta calcule fara rost. W
evaluari sunt facute chiar dupa ce toate defectele, mai putin unul, au fost
detectate si înlaturate. Deci simularea paralela cu defect nu profita din
plin de conceptul de simulare selectiva pas cu pas, sau de cel al reducerii
numarului de defecte cauzat de înlaturarea lor.

2.4.Simularea deductiva cu defect

Tehnica deductiva simuleaza întâi circuitul bun si deduce apoi


comportamentul tuturor circuitelor defecte. "Tuturor" denota o capacitate
teoretica, supusa în practica marimii memoriei disponibile. Structura de
Diagnoza 233

date folosita pentru reprezentarea efectelor defectelor este lista de defect.


O lista de defect Li este asociata cu fiecare linie de semnal i. În timpul
simularii, Li este setul tuturor defectelor f care fac ca valoarea lui i sa fie
diferita în N si N f la momentul curent de simulare. Daca i este o iesire
primara si toate valorile sunt binare, atunci Li este setul defectelor
detectate la i.

F 9 8 7 6 5 4 3 2 1 0
i 1 1 1 0 1 1 0 1 1 1 1

Li = {4 , 7}

Figura B_V-7 Reprezentarea efectelor defectelor în simularea paralela


si deductiva cu defect

Figura B_V-7 ilustreaza diferenta între reprezentarea valorilor în


simularea paralela si deductiva. Presupunem ca avem F defecte si un
cuvânt masina cu W ≥ F+1 ,deci putem simula toate defectele într-o
singura trecere. Atunci în simularea paralela, cuvântul asociat cu o linie i
memoreaza valoarea lui i în fiecare circuit cu defect. Cu toate acestea, în
timpul simularii, valoarea lui i este aceeasi în cele mai multe circuite cu
defect ca si în circuitul bun. Aceasta risipa este evitata în simularea
deductiva prin retinerea doar a bitilor (folositi ca nume de defect) care
sunt diferiti de valoarea buna.
Dat de valorile fara defect si de listele cu defect ale intrarilor unui
element, pasul de baza în simularea deductiva este calculul valorii iesirii
fara defect si a listei cu defect a iesirii. Calculul listelor cu defect este
numit propagarea listelor cu defect. Deci, în plus fata de evenimentele
logice ce denota schimbari în valorile semnalelor, un simulator deductiv
cu defect propaga si lista evenimentelor ce apar când o lista de defect se
modifica, de exemplu când un defect este adaugat sau sters din lista.
234 Fiabilitate si Diagnoza

1 0
A 1 A 0
1 Z 1 Z
B B

Figura B_V-8

2.4.1.Simularea deductiva cu doua valori

În acest capitol presupunem ca toate valorile sunt binare. Consideram ,de


exemplu, o poarta SI cu intrarile A si B si iesirea Z (figura B_V-
8).Presupunem A=B=1. Atunci Z=1 si orice defect care cauzeaza un 0 în
A sau B va cauza în mod eronat 0 în Z. De aici:
LZ = L A U LB U{Z s − a − 0 }
Acum presupunem A=0 si B=1. atunci Z=0 si orice defect care face ca A
sa fie 1 fara modificarea lui B va cauza Z=1 în mod eronat. Acestea sunt
defectele L A care nu sunt în LB :
LZ = ( L A I LB ) U{Z s − a −1 } = ( L A − LB ) U{Z s −a −1 }
unde LB este setul tuturor defectelor care nu sunt în LB .Observam ca
un defect al carui efect se propaga atât la A cît si la B nu afecteaza Z.
Fie I setul de intrari al unei porti Z cu valoarea controlata c si
inversiunea i. Fie C setul de intrari cu valoarea c. Lista de defecte a lui Z
este calculata dupa cum urmeaza:
if C = ∅ then LZ = {U Ll } U{Z s− a −( c⊕i ) }
l ∈I

else LZ = {I Ll } − { U L } U{Z j s − a − ( c ⊕i ) }
l ∈I j ∈I − C

Altfel spus, daca nici o intrare nu are valoarea c, orice efect al unui
defect la o intrare se propaga la iesire. Daca anumite intrari au valoarea c,
numai un defect ce afecteaza toate intrarile la c fara sa afecteze vreuna
la c se propaga la iesire. În ambele cazuri adaugam defectul local al
iesirii.
Diagnoza 235

01
a 01
01 00
b f
11 g j
c 11
h
11 m
11
d i
00 11
e
k

Figura B_V-9

Exemplul 2.1:consideram circuitul din figura B_V-9.Dupa colapsul


defectului, setul defectelor pe care le simulam este
{a 0 , a1 , b1 , c0 , c1 , d1 , e0 , g 0 , h0 , h1 } ( α v denota α s −a −v ). Presupunem ca
primul vector de test aplicat este 00110. Calcularea listei de defecte se
face dupa cum urmeaza:

La = {a1 }, Lb = {b1 }, Lc = {c0 }, Ld = ∅, Le = ∅


L f = La I Lb = ∅, Lg = Lc U{g 0 } = {c0 , g 0 }, Lh = Lc U{h0 } = {c0 , h0 }
Li = Lg − L f = {c0 , g 0 }, Ll = Ld U Lh = {c0 , h0 }
Lk = Li − Lc = {c0 , h0 }, Lm = Lk − L j = {h0 }
Pentru ca h0 este detectat, îl înlaturam din setul defectelor simulate,
stergând h0 din fiecare lista de defecte în care apare ( Lh , Li , Lk , Lm ).
Observatie: c0 nu este detectat.
Acum presupunem ca ambele intrari a si b devin 1. Atunci
La = {a 0 }, Lb = ∅, f = 1 si L f = {a 0 } .Evaluarea portii j nu genereaza
un eveniment logic, dar acum L j = L f I Lg = ∅ . Aceasta arata ca o
lista de evenimente poate aparea chiar fara un eveniment logic
corespondent. Propagând aceasta lista spre poarta m, obtinem
Lm = Lk − L j = {c0 } .Deci este c0 acum detectat.
Observam ca atunci când La este calculat, pentru a determina daca o
lista de evenimente a aparut, noul La trebuie comparat cu vechiul La
(notat La ) înainte ca ultimul sa fie distrus. Trebuie sa determinam daca
La = La .
236 Fiabilitate si Diagnoza

Propagarea defectelor devine mai importanta acolo unde exista


feedback. Trebuie avut grija atunci când efectul unei greseli, sa spunem
α 0 sau α 1 revine el însusi în linia α. Daca lista de defecte propagata în
linia α contine un α 0 si daca valoarea buna a lui α este 0, atunci α 0
trebuie sters din La pentru ca valorile α în circuitul fara defect si în
circuitul cu defect α 0 sunt aceleasi. În mod similar, α 1 trebuie sters din
La daca valoarea buna a lui α este 1.
Propagarea listelor de defect devine mai complexa în cazul elementelor
de memorie. Consideram latch-ul SR din figura B_V-10. Fie starea sa la
momentul t1 ( y1 , y 2 ) = (0,1) , si intrarea ( S , R ) = (1,1) .Daca la momentul
t 2 R devine 0, iesirile ar trebui sa ramâna aceleasi. Fie LS si LR listele
de defect ale intrarilor la momentul t 2 , asociate cu liniile S si R, si fie L1
si L2 listele de defect asociate cu liniile y1 si y 2 la momentul t1 . Noile
liste de defect L1 si L2 , asociate cu liniile y1 si y 2 , rezultând din
intrarea evenimentului logic la t 2 pot fi calculate dupa cum urmeaza
(defectele interne latch-ului vor fi ignorate):
~ ~
Setul initial L1 = L1 si L2 = L2 .Noile valori pentru L1 si L2 sunt date
de expresiile L1 = LS U L2 si L2 = LR U L1 .Pentru ca o modificare în lista
de defect pentru y1 si y 2 poate sa fi aparut, acest calcul trebuie repetat
pâna când lista de defect se stabilizeaza.
În anumite conditii listele nu se pot stabiliza si este necesara o procesare
speciala. Aceasta problema este tratata mai târziu în aceasta sectiune.
Un al doilea si mai rapid acces la propagarea listelor de defect prin latch
este considerarea acestor elemente ca fiind o primitiva si calcularea
regulilor pentru determinarea starii stabile a listelor de defect pentru y1 si
~ ~
y 2 în termenii lui LS , LR , L1 si L2 .aceste reguli pot fi derivate din
~ ~
inspectarea celor 16 combinatii posibile cu variabilele LS , LR , L1 , L2 ,
~ ~ ~ ~ ~ ~
( LS I LR I L1 I L2 ) , ( LS I LR I L1 I L2 ) , . . . , ( LS I LR I L1 I L2 ) . De
exemplu, consideram din nou conditiile initiale de stare
~ ~
( S , R, y1 , y 2 ) = (11
, ,0,1) . Orice defect f în setul LS I LR I L1 I L2
~
cauzeaza incorectitudinea ambelor iesiri la momentul t1 (datorita lui L1
~
si L2 ) si intrarea S incorecta la momentul t 2 (vezi figura B_V-10(b)).
Diagnoza 237

Deci la t 2 avem ca ( S , R ) = (0,0) în circuitul defect, si acest defect


produce ( y1 , y 2 ) = (11
, ) , si de aici este un element în L1 dar nu L2 (se
observa ca y1 ≠ y 2 , de aceea iesirile nu sunt etichetate y1 si y1 ).
LS
S L1 , L1
y1 S
11 11 y1
00 11

11 01
10 y2 10 y2
R L2 , L2 R
LR
(a) (b)

Figura B_V-10 Propagarea listelor de defect printr-un latch SR


(a) Circuitul bun
(b) Circuitul defect cu defectul f în set

Similar, fiecare din cele 15 combinatii ramase poate fi procesata si


regulile pentru calcularea L1 si L2 dezvoltate. Aceste reguli devin mai
complexe daca defectele interne sunt luate în considerare sau daca un
defect intern se propaga în jurul unei bucle si apare în LS sau LR .În
sfârsit, regulile pentru L1 si L2 trebuie dezvoltate pentru fiecare vector
de stare initial ( S , R, y1 , y 2 ) .
Fie z iesirea unui bloc combinational implementând functia f(a,b,c,...). O
formula generala pentru calcularea listei de defect Lz ca o functie de
variabilele a, b, c si listele lor de defect La , Lb , Lc ,... a fost obtinuta de
Levendel [1980]. Se defineste un operator SAU-EXCLUSIV între o
variabila x si lista sa de defect L X prin:
LX , x = 0
x ⊕ LX = 
LX , x = 1

Întrucât L X este lista defectelor care cauzeaza o valoare diferita a lui x


de valoarea sa fara defect, rezulta ca x ⊕ L X este lista defectelor care
cauzeaza pentru x valoarea 1. Sa notam cu F(A, B, C,...) setul de functii
238 Fiabilitate si Diagnoza

obtinut prin înlocuirea tuturor operatiilor SI si SAU în f(a, b, c,...) prin I


si U ,respectiv. Atunci lista defectelor care cauzeaza valoarea 1 la z
(ignorând z S − a −1 ) este data de :
z ⊕ LZ = F (a ⊕ La , b ⊕ Lb , c ⊕ Lc ,...)
De aici:
LZ = f (a , b, c) ⊕ F (a ⊕ La , b ⊕ Lb , c ⊕ Lc ,...)
De exemplu, sa aplicam ecuatia de mai sus pentru calcularea listei de
defect a iesirii pentru un circuit basculant JK modelat de ecuatia sa
caracteristica Y = J ⋅ y + K ⋅ y , unde Y si y sunt valoarea noua, respectiv
curenta a iesirii. Noua lista de defect a iesirii LY este data de:
LY = ( J ⋅ y + K ⋅ y ) ⊕ ( J ⊕ L j ) I (Y ⊕ LY ) U( K ⊕ LK ) I ( y ⊕ L y )
Pentru J=0, K=0 si y=0, LY devine:
LY ( J = 0, K = 0, y = 0) = ( L j I L y ) U( LK I L y )
Lista de defect a iesirii complementare Y este LY = LY .
Vom lua acum în considerare mai multe aspecte legate de eficienta
simulatoarelor deductive.
Diagnoza 239

La = {3, 9, 12} a 3 9 12
(a)
(b)

3
9
cuvînt
12
(c)

defecte
în circuit cuvînt

(d)

Figura B_V-11 Structuri de memorare pentru liste


(a) lista de defecte
(b) lista înlantuita
(c) tablou secvential
(d) vector caracteristic

Memorarea si procesarea defectelor

Listele de defect pot fi memorate ca liste înlantuite, tabele secventiale,


sau vectori caracteristici. Aceste 3 structuri sunt prezentate în figura
B_V-11. Pentru o structura de lista, defectele sunt memorate într-o
secventa ordonata, pentru simplificarea calculelor seturilor de reuniune si
240 Fiabilitate si Diagnoza

intersectie. Structurile de lista necesita supervizarea spatiului disponibil


pentru lista, ca si un pointer pentru gasirea elementului urmator în lista.
Cu toate acestea, inserarea si stergerea unui element în/din lista sunt
sarcini simple. Listele pot fi cu usurinta distruse prin asignarea lor la
spatiul listelor disponibile. Folosind o tabela secventiala, aceasta
organizare duce la o procesare mai rapida si elimina necesitatea
pointerilor. Totusi, reîmpachetarea datelor memorate este ocazional
ceruta pentru a face o sectiune de memorie refolosibila. Calcularea
setului de reuniune si intersectie pentru tabele secventiale ordonate sau
neordonate este aproximativ la fel de complexa. Este mai usor sa se
adauge un singur element la un set neordonat, pentru ca poate fi plasat la
sfârsitul tabelei. Într-o tabela ordonata el trebuie inserat în pozitia corecta
si toate intrarile de sub el repozitionate în memorie. Este mai usor sa se
stearga un element într-un tablou ordonat decât într-unul neordonat,
pentru ca pozitia sa poate fi gasita într-un proces de cautare binara.
Folosind structura de vector caracteristic, toate operatiile pe lista sunt
simple si rapide. Un defect este inserat sau sters prin memorarea unui 1
sau 0 pe bitul corespunzator. Multimile de reuniune si intersectie sunt
determinate prin operatii simple SI/SAU pe cuvânt. Cu toate acestea,
aceasta structura necesita de obicei mai multe operatii de memorare decât
celelalte doua, desi este de marime fixa. O comparatie exacta a memorarii
necesita cunoasterea marimii medii a unei liste de defect.
Pentru circuite mari, este posibila depasirea capacitatii de memorie în
timpul procesarii listelor de defect, care sunt dinamice si de marime
neprevizibila. Când acest fenomen apare, setul defectelor trebuie
partitionat si fiecare subset procesat separat. Acest proces poate fi facut
dinamic si conduce la un proces de simulare multipass.

Oscilatiile si defectele active

Este posibil ca circuitul fara defect sa se stabilizeze, în timp ce circuitul


cu un anumit defect f sa oscileze. În acest caz va fi o secventa de lungime
arbitrara a listei de evenimente. Din pacate, chiar daca un singur defect
poate cauza oscilatia, poate fi necesara procesarea complexa a listelor
lungi, pierzând timp. Defectele care produc oscilatia circuitului, ca si cele
care duc la stabilitate dupa un volum mare de activitate logica, ar trebui
înlaturate din listele de defect oricând este posibil.
Diagnoza 241

2.4.2.Simularea deductiva cu trei valori

Când este angajata o logica bazata pe trei valori, complexitatea simularii


deductive creste. În acest paragraf, vom schita pe scurt doua cai cu grade
de corectitudine diferit. Le vom numi analiza de ordin trei (mai buna) si
analiza de ordin doi (mai slaba).

Analiza de ordin trei

Întrucât fiecare linie α în circuitele fara si cu defecte poate lua una dintre
valorile logice 0,1 si u, doua liste Lδu si Lεu vor fi asociate cu o linie α a
carei valoare normala este v, unde {δ,ε}={0,1,u}-{v}. De exemplu, daca
v=1, atunci listele L0α si Luα sunt asociate cu linia α: L0α ( Luα ) reprezinta
setul tuturor defectelor care cauzeaza lui α valoarea 0(u). Pentru ca setul
tuturor defectelor procesate curent este egal cu setul L0α U L1α U Lαu , avem
ca Lvα = Lεα U Lδα .
0
a 1
b u
c 1 d

Figura B_V-12

Exemplul 2.2: consideram poarta si valorile de intrare din figura B_V-


12. Un defect care schimba d la 0 trebuie sa schimbe a si b la 1, si sa nu
schimbe c. De aici:
( ( ))
L0d = L1a ∩ L1b ∩ L0c ∩ Luc ∪ d 0
Un defect care schimba d în u trebuie sa duca a, b si c la orice
combinatie de u si 1, mai putin a=b=c=1.Atunci:
Lud = ( Lua ∪ L1a ) ∩ L0b ∩ L0c − L1a ∩ L1b ∩ L0c ∪ Luc
242 Fiabilitate si Diagnoza

Dezavantajul acestui mod este ca exista doua liste pentru fiecare linie, si
complexitatea procesarii cerute pentru propagarea defectului printr-un
element este mai mult decât dubla.

Analiza de ordin doi

Pentru a reduce complexitatea calculelor, putem asocia o singura lista de


defect cu fiecare linie α. Daca valoarea liniei α în circuitul fara defect
este u, atunci .Aceasta înseamna ca daca valoarea liniei este u , nu vom
face nici o predictie legata de valoarea acestei linii în orice circuit defect.
De aici, rezulta ca anumite informatii sunt pierdute, si este posibila
initializarea incorecta a anumitor circuite defecte. Daca f este un defect
care produce un u pe o linie α a carei valoare fara defect este 0 sau 1,
atunci intrarea în , corespunzând defectului f este marcata (notata cu *f)
si numita defect stelat. Aceasta înseamna ca nu stim daca f este în Lα .
Daca este α o iesire primara, atunci f este un defect potential detectat.

A B A∪B A∩B A-B B-A


*f λ {*f,λ} ∅ *f λ
*f f f *f ∅ *f
*f *f *f *f *f *f

Figura B_V-13 Operatii cu defecte stelate

Regulile pentru setul de operatii pentru defecte stelate sunt date în tabela
din figura B_V-13; aici λ denota o intrare diferita de f sau *f.
Oricând o conditie de oscilatie cauzata de defectul f este identificata pe
linia α, f este introdus ca defect stelat în lista asociata.
Daca linia α oscileaza, atunci aceste defecte care cauzeaza oscilatia sunt
cu siguranta acele intrari în multimea ( La − La ) ∪ ( La − La ) , unde La si
La sunt vechea si noua lista de defecte. Prin schimbarea acestor intrari în
defecte stelate, oscilatia ar trebui sa înceteze si simularea poate fi
continuata .
O problema interesanta ,ramasa deschisa, este legata de continutul initial
al listelor de defect. Adesea nu se stie cum s-a ajuns la starea initiala a
circuitului, si deci nu este clar daca un defect f ar influenta initializarea
Diagnoza 243

liniei α.Este gresita setarea initiala a tuturor listelor de defect la multimea


vida, si este prea pesimista plasarea tuturor defectelor în multimea Luα .

Limitari

Propagarea listelor de defect printr-un element este bazata pe ecuatiile


sale booleene. Deci simularea deductiva cu defect este compatibila doar
partial cu modelarea pe nivele functionale, fiind aplicabila doar
modelelor care folosesc ecuatii booleene. În principiu, poate fi extinsa la
logica cu valori multiple, crescând numarul listelor de defect asociate cu
o linie, dar cresterea corespunzatoare în complexitate a algoritmului face
aceasta abordare nepractica. Deci, în practica, simularea deductiva este
limitata în practica la logica cu 2 sau 3 valori.
Mecanismul de propagare a listei de defect nu poate profita din plin de
avantajele conceptului de simulare dirijata prin activitate .De exemplu
,presupunem ca la un anumit moment avem activitate numai într-un
circuit defect. Propagarea acestei liste de evenimente poate genera multe
calcule lungi pentru lista de defect, dar cele mai multe dintre intrarile de
lista de defect implicate în aceste calcule corespund circuitelor defecte
fara activitate în acel moment. Aceasta este un consumator de timp, în
special atunci când circuitul oscileaza.

2.5.Simularea concurenta cu defect

Simularea concurenta cu defect se bazeaza pe observatia ca, pe cea mai


mare durata a simularii, cele mai multe dintre valorile din circuitele cu
defecte sunt în acord cu valorile ce le corespund în circuitul bun. Metoda
concurenta simuleaza circuitul bun N, si pentru fiecare circuit defect Nf,
simuleaza doar acele elemente din Nf care sunt diferite de
corespondentele lor din N. Aceste diferente sunt mentinute pentru fiecare
element x din N sub forma unei liste concurente de defecte, notata CLx.
Fie xf replica lui x în circuitul Nf ; fie Vx (Vxf) ansamblul intrarilor,
iesirilor si (posibil) al valorilor starilor interne ale lui x ( xf ). Pe durata
simularii, CLx reprezinta setul tuturor elementelor xf care difera de x la
momentul curent de timp. Elementele x si xf pot diferi în doua moduri.
Mai întâi, putem avea Vxf ≠ Vx; aceasta apare când un efect de greseala
244 Fiabilitate si Diagnoza

cauzat de f s-a propagat la o linie de intrare/iesire sau variabila de stare a


lui xf. În al doilea rând, f poate fi un defect local al lui xf, adica un defect
inserat într-o intrare/iesire sau variabila de stare a lui xf. Un defect local f
face xf diferit de x, chiar daca Vxf = Vx; aceasta apare când secventa de
intrare aplicata pâna acum nu activeaza f.
a
0 c
1
1
b
f a b c
α 1 1 0
0
α 1 β 0 0 1
1 a1 1 1 0
b1 0 1 1

0
β 1 (b)
1

0
a1 1 (a)
1

0
b1 1
1

Figura B_V-14 Lista concurenta de defecte pentru porti


(a) Reprezentare simbolica (b) Reprezentare tabelara

O intrare în CLx are forma (f,Vxf). Figura B_V-14(a) ilustreaza o lista


concurenta de defect. Portile “legate” de poarta buna c sunt replicile lui c
în circuitul defect cu defectele α, β ,a1 si b1.Aici α si β sunt defecte al
caror efect se propaga prin poarta c; cauzeaza, respectiv a=1 si b=0.
Defectele a1 si b1 sunt defecte locale ale portii c. De notat ca b1 apare în
CLc, chiar daca valorile lui a, b, si c în prezenta lui b1 sunt aceleasi ca si
în circuitul bun. Figura B_V-14(b) arata CLc în forma tabelara. Prin
contrast, lista defectelor lui c în simularea deductiva este Lc={α, a1}.
Diagnoza 245

Un defect f este numit vizibil în linia i când valorile lui i în N si Nf sunt


diferite. Printre intrarile în lista concurenta de defect a unei porti x, doar
acelea corespunzând defectelor vizibile la iesirea sa apar si în lista
deductiva de defecte Lx (În figura B_V-14 α si a1 sunt defecte vizibile).
În acest sens ,o lista deductiva de defecte este un subset al listei
concurente corespondente. Deci simularea concurenta necesita mai multe
operatii decât cea deductiva.
Majoritatea muncii în simularea concurenta implica actualizarea
structurilor de date dinamice care reprezinta lista concurenta cu defecte.
Inserarea defectelor are loc în timpul fazei de initializare (dupa colapsul
defectului); continutul initial al fiecarei liste CLx consta în intrarile
corespunzând defectelor locale ale lui x. Un defect local al lui x ramâne
în CLx pâna când este înlaturat. În timpul simularii, noile intrari în CLx
reprezinta elementele xf ale caror valori devin diferite de valorile lui x;
acestea se spune ca diverg de x. Prin conversie, intrarile înlaturate din
CLx reprezinta elementele xf ale caror valori devin identice cu cele ale
lui x; acestea se spune ca converg la x. Un defect este înlaturat prin
stergerea intrarii sale în fiecare lista în care apare.
Exemplul urmator ilustreaza cum se modifica listele concurente în
timpul simularii. Pentru simplitate, vom numi circuitul cu defectul f
“circuitul f “.
Exemplul 5.3: figura B_V-15(a) arata valorile logice si listele
concurente pentru un circuit într-o stare stabila. Acum presupunem ca
intrarea primara a se modifica de la 1 la 0. Acest eveniment nu apare
doar în circuitul bun, ci si în circuitele defecte care nu au intrari în CLc;
intrarile în CLc trebuie analizate separat. În circuitul bun, c este
planificat sa se modifice de la 0 la 1. Evenimentul în a nu se propaga în
circuitul a1; de aici poarta nu este evaluata. Evaluarea portii cα nu rezulta
în nici un eveniment.
Când valoarea lui c este actualizata, defectul a1 devine vizibil. În
circuitul bun, modificarea lui c se propaga spre poarta e. În acelasi timp,
propagam o “lista de evenimente” pentru a indica faptul ca a1 este un
defect recent vizibil în linia c (figura B_V-15(b)).
Evaluarea portii e în circuitul bun nu produce nici un eveniment la
iesire. O intrare pentru defectul recent vizibil a1 este adaugata la CLc.
Celelalte intrari în CLc sunt analizate dupa cum urmeaza (figura B_V-
15( c )):
246 Fiabilitate si Diagnoza

-c nu se modifica în circuitul c1; intrarea pentru c1 ramâne în lista pentru


ca c1 este un defect local al portii e.
-poarta e în circuitul d1 este evaluata si genereaza un eveniment 1/0;
acelasi eveniment apare si în circuitul β.
-c nu se modifica în circuitul α; intrarea sa pentru α este stearsa din
lista.
O trasatura importanta a mecanismului simularii concurente cu defect
este ca aceasta evalueaza individual elementele atât în circuitul bun, cît si
în cele cu defecte. Pentru evaluare, o intrare în lista de defecte denota ca
replica unei porti în circuitul bun este doar o poarta cu un set diferit de
valori de intrare/iesire. O linie i în circuitul cu defect se poate modifica
chiar daca i este stabil în circuitul bun. Aceasta este ilustrata în figura
B_V-15(c), unde linia e se modifica în 0 în circuitele d1 si β dar ramâne
stabila la 1 în circuitul bun. Figura B_V-16 arata ca o linie i în circuitul
bun si câteva circuite defecte pot avea de asemenea evenimente diferite
dar simultane. Un eveniment generat de un element într-un circuit defect
se propaga doar în interiorul acelui circuit. La un anumit moment de timp
al simularii, putem avea un eveniment pe linia i în circuitul bun si/sau în
mai multe circuite defecte. Setul evenimentelor simultane care apar pe
aceeasi linie i este numit eveniment compus si are forma (i, L) unde L
este o lista de perechi (f,Vf’) în care f este numele unei defect (index) si
Vf’ este valoarea planificata a liniei i în circuitul f ( circuitul bun are f=0
). Evenimentele care apar în circuitul bun apar si în toate circuitele care
nu au o intrare în CLA ( implicit ).
Diagnoza 247

eveniment I/O bun


eveniment
si a1 recent vizibil
I/O bun
a a
1 c 0 c
0 0 e 1 0 e
1 1 1 1
b 0 b 0
d d

1 1
a1 0 1 a1 0 1
1 c1 1 1 c1 1
0 0

1 0
α 1 0 α 1 0
0 d1 1 0 d1 1
1 1

1 1
(a) α 0
1
(b) α 0
1

0 0
β 1 β 1
1 1
248 Fiabilitate si Diagnoza

eveniment I/O în d1
a eveniment I/O în β
0 c
1 1 e
1 1
b 0
d

1
a1 0 0
1 a1 1
0

0
α 1 1
0 c1 1
0

d1 1
0
(c) 1

1
β 0
1

Figura B_V-15 Modificari în listele de defect pe durata simularii

eveniment I/O bun eveniment I/O bun


eveniment I/O în f
XOR
A B
A 1 0
0 B 1
10 0 0 0
0 0 1
1

1
0 f 0
1 1
f 1 1 1 f 1
1 f 1 1
1
(b)
(a)

Figura B_V-16

Fluxul total al simularii logice cu evenimente dirijate, aratat în figura


1.12 este valid pentru simularea concurenta cu defecte , tinând cont ca
evenimentele procesate sunt evenimente compuse. Presupunem ca un
eveniment compus (i, L) tocmai a fost înlaturat din lista de evenimente.
Diagnoza 249

Mai întâi actualizam valorile si lista de defecte concurenta a elementului


sursa A de unde provine evenimentul. Apoi actualizam valorile si lista
concurenta a fiecarui eveniment B din lista “ fan-out “ asociata lui i si
evaluam elementele activate (în circuitul bun si în cele cu defecte).
Fie V(Vf) valoarea curenta a liniei i în circuitul bun ( în circuitul f ).
Daca un eveniment V/V’ apare în circuitul bun, atunci trebuie sa
actualizam fiecare intrare în CLA; altfel analizam doar acele intrari cu
evenimente independente. În primul caz, daca într-un circuit f linia i
ramâne la valoarea Vf = V (valoarea lui i în circuitul f este aceeasi ca si
valoarea lui i în circuitul bun înainte de modificare) atunci f este un
defect recent vizibil în linia i; aceste defecte sunt colectate într-o lista
NV. Valorile fiecarei intrari analizate f în CLA , exceptându-le pe cele
recent vizibile, sunt comparate cu valorile elementului bun A, si daca
corespund, f este sters din CLA.

NV = ∅
if i se modifica în circuitul bun then
begin
seteaza i la valoarea v' în circuitul bun
for every f ∈ CLA
begin
if f ∈ L then
begin
seteaza i la vl' în circuitul f
if VAl = VA then sterge f din CLA
end
else /*nici un eveniment în circuitul f*/
if vl = v then adauga defectul recent vizibil f la NV
else if VAl = VA then sterge f din CLA
end
end
else /*nici un eveniment bun pentru i*/
for every f ∈ L
begin
seteaza i la valoarea vl' în circuitul f
if VAl = VA then sterge f din CLA
end
250 Fiabilitate si Diagnoza

Figura B_V-20 Procesarea unui eveniment compus (i , L) la elementul


sursa A

Apoi evenimentul compus (i,L) împreuna cu lista NV a defectelor recent


vizibile în linia i este propagat la fiecare element “ fan-out “ B. Daca
exista un eveniment bun, atunci acesta activeaza B (pentru simplitate,
presupunem o strategie în doua treceri; deci evaluarile sunt facute dupa
ce toate elementele activate sunt determinate). Procesarea unui eveniment
Bf depinde de ce liste (CLB, L, NV) contin f . Modul în care NV este
construita (figura B_V-20) implica faptul ca f nu poate apartine si lui NV,
si lui L.

f∈ CLB
- 4 5 1
3 - - 2 f∈L
f∈ NV

Figura B_V-20 Cazuri posibile în procesarea unui eveniment compus


propagat printr-un element fan-out B

Diferitele cazuri posibile sunt etichetate de la 1 la 5 în diagrama


Karnaugh din figura B_V-20.Actiunile corespunzatoare sunt urmatoarele:
Cazul 1: Bf exista în CLB si nici un eveniment independent în i nu apare
în Nf. Daca un eveniment bun exista si se poate propaga în Nf, atunci
activam Bf. Evenimentul bun în linia i se poate propaga în circuitul f daca
Vf = V si f nu este defect local s-a-v în intrarea i a lui Bf. De exemplu, în
figura B_V-15 (b) , schimbarea lui c de la 0 la 1 se propaga în circuitele
d1 si β dar nu si în circuitele c1 si α.
Cazul 2: Bf exista în CLB si un eveniment independent în i apare în Nf.
Activam Bf. Aici avem activitate independenta într-un circuit defect:
aceasta este ilustrata în figura B_V-16(b), unde evenimentul 1/0 activeaza
poarta Bf.
Cazul 3: Un eveniment independent în i apare în Nf, dar f nu apare în
CLB. Adaugam o intrare pentru f la CLB si activam Bf. Aceasta se poate
vedea în figura B_V-17. Aici A si Af au fost evaluate pentru ca intrarea b
s-a modificat de la 0 la 1, si acum i trece de la 0 la 1 în circuitul bun i de
Diagnoza 251

la 0 la u în circuitul f. O intrare pentru f este adaugata la CLB ( cu aceeasi


valoare ca si B) si activata.
Cazul 4:f este recent vizibil în linia i si nu apare în CLB. Adauga o
intrare pentru f la CLB. Aceasta este aratata în figura B_V-15 prin
adaugarea lui a1 la CLC.
Cazul 5:f este recent vizibil în linia i, dar o intrare pentru f este deja
prezenta în CLB. Nici o operatie. Într-un circuit combinational aceasta
poate aparea doar atunci când este o intrare “fan-out” reconvergenta de la
originea defectului f la elementul B. Figura B_V-21 prezinta un astfel de
exemplu:
Elementele activate sunt evaluate individual si evenimentele rezultante
pentru iesirile lor sunt unite în evenimente compuse.
eveniment 0/1 bun
eveniment 0/1 bun
A eveniment 0/u în f
A B
B a 1
a 1 1 0
0 0 b 1 0
b 0 0 0
0

(b)
(a) u
u f 0
f 0 1
0

A
B
a 1
1 1
b 1 0
0

(c)
u
f u u
1 f 0
0

Figura B_V-20
252 Fiabilitate si Diagnoza

eveniment bun 0/1


A
1 i
1 B
0
1 1
1 1
0 0
1
0
1

1 0 0 1
f 0 f 1 f 1 f 0
1 0 1 1

(a)

eveniment bun 1/0


A f recent vizibil
1 i
0 B
1
1 1
1 1
0 0
1
0
1

1 0 0 1
f 0 f 1 f 1 f 0
1 0 1 1

(b)

Figura B_V-21. Lista de evenimente

Daca este generat un eveniment bun, atunci toate comparatiile pentru


stergerile din lista de defecte vor fi facute când evenimentul compus va fi
eliminat din lista de evenimente(figura B_V-18). Daca nu este generat un
eveniment bun, cu toate acestea, orice element activat Bf care nu
genereaza un eveniment ar trebui imediat comparat cu elementul bun
(ambele sunt stabile) si daca valorile lor corespund, f ar trebui înlaturat
din CLB.
Diagnoza 253

Întrucât simularea concurenta cu defect este bazata pe evaluarea


elementelor individuale, ea este direct aplicabila modelarii la nivel
functional. În simularea functionala, un eveniment poate denota si o
schimbare a unei variabile interne de stare a unui element functional.
Astfel un eveniment de stare are forma (M, i, v’) unde M este elementul a
carui variabila de stare i este planificata sa ia valoarea v’. În simularea
concurenta propagam evenimente de stare compuse de forma (M, i, L)
unde L are aceeasi forma ca si pentru evenimentele linie. Un eveniment
de stare compus este procesat ca un eveniment de linie compus, cu
singura diferenta ca atât sursa (A) cît si “fan-out-ul”(B) evenimentului
sunt acelasi element M.
Definitia data pentru o lista concurenta CL implica faptul ca pentru
fiecare intrare xf stocam toate valorile intrarilor, iesirilor si variabilelor de
stare apartinatoare. Aceasta necesita o cantitate mare de memorie pentru
un element functional X cu un numar mare de variabile de stare, pentru
ca majoritatea timpului pe durata simularii, majoritatea valorilor
elementelor din CLX ar fi aceleasi cu valorile bune. Atunci este preferabil
sa mentinem doar diferentele între valorile fiecarui xf în lista de defecte si
valorile elementelor bune (aceasta reprezinta o aplicatie de nivel secund a
principiului simularii concurente). Memoriile sunt exemple tipice de
elemente din aceasta categorie. Putem vedea o memorie ca fiind compusa
din cuvinte adresabile , si putem pastra , asociata fiecarui cuvânt bun, o
lista concurenta de defecte care afecteaza continutul acestui cuvânt.

2.6.Comparatie

În aceasta sectiune, comparam tehnicile paralele, deductive si


concurente, cu respectarea urmatoarelor criterii:
-capacitatea mânuirii unor valori logice multiple.
-compatibilitatea cu modelarea la nivel functional.
-abilitatea în a procesa diferite modele de întârziere.
În tip ce simularea paralela si deductiva sunt eficiente pentru 2 valori
logice, folosirea a trei valori logice (0,1,u) creste semnificativ necesitatile
lor de calcul, si ele nu sunt practice pentru mai mult de trei valori logice.
Ambele metode sunt doar partial compatibile cu modelarea la nivel
functional, întrucât pot procesa doar componente ce pot fi descrise în
întregime de ecuatii booleene.
254 Fiabilitate si Diagnoza

Atât în simularea paralela cît si în cea deductiva, structurile de date de


baza si algoritmii sunt puternic dependenti de numarul valorilor logice
folosite în modelare. Prin contrast, metoda concurenta asigura doar un
mecanism pentru reprezentarea si mentinerea diferentelor între circuitul
bun si un set de circuite defecte, si acest mecanism este independent de
modul în care circuitele sunt simulate. Deci simularea concurenta este
transparenta sistemului de valori logice folosit si nu impune nici o
limitare în numarul lor. Fiind bazata pe evaluarea elementelor
individuale, simularea concurenta nu constrânge modelarea elementelor,
si deci este total compatibila cu modelarea la nivel functional si poate
sustine nivele mixte si modelare ierarhica.
Au fost descrise cele trei metode presupunând un nivel nominal
independent de tranzitie al întârzierii. Folosirea unor modele cu tratare
amanuntita a timpului- ca de exemplu ridicari si caderi de fronturi cu
întârziere, întârzieri inertiale etc - duce la mari complicatii în metodele
paralela si deductiva. Prin contrast, datorita separarii clare între
procesarea defectelor si evaluarea elementelor, un simulator concurent
poate fi oricât de sofisticat. Deci modelele detaliate de întârziere pot fi
incluse în simularea concurenta fara complicatii cauzate de mecanismul
procesarii defectelor.
Analiza teoretica arata ca pentru un circuit combinational de porti,
timpul de rulare pentru metodele deductiva si paralela sunt proportionali
cu n2 si respectiv n3. Este putin probabil ca orice algoritm de simulare cu
defect poate avea cazuri de complexitate liniara. Rezultatele
experimentale prezentate ne arata ca folosind o logica cu doua valori,
simularea deductiva este mai rapida decât simularea paralela pentru
majoritatea circuitelor secventiale, exceptându-le pe cele mici (n<500).
Desi nici o comparatie directa între metodele deductiva si concurenta nu
a fost facuta, argumentele calitative sugereaza ca simularea concurenta
este mai rapida. O diferenta semnificativa între cele doua metode este ca
un simulator concurent proceseaza doar circuitele cu defect active.
Aceasta diferenta devine mai evidenta când schimbarile apar numai în
circuitul cu defect si în special când un circuit cu defect oscileaza.
Motivul este ca un simulator deductiv recalculeaza întotdeauna o lista
completa de defecte ( chiar pentru a adauga sau a sterge o singura
intrare), în timp ce un simulator concurent propaga schimbarile numai în
circuitul activ. Alta diferenta este ca un simulator concurent ,bazat pe o
Diagnoza 255

evaluare a elementelor individuale, poate folosi tehnici de evaluare


rapide, ca de exemplu cautarea în tabele.
Principalul dezavantaj al simularii concurente este ca necesita mai multa
memorie decât celelalte metode. Motivul este ca valorile VXf ale fiecarui
element xf dintr-o lista concurenta de defecte trebuie sa fie disponibile
pentru evaluarea individuala a lui xf. Cu toate acestea ,acest dezavantaj
poate fi depasit prin partitionarea setului de defecte pentru simulare
multipass. Chiar daca este disponibila o cantitate nelimitata de memorie,
partitionarea setului de defecte îmbunatateste eficienta simularii
concurente prin limitarea dimensiunii medii a listelor concurente. Cele
mai importante avantaje ale simularii concurente sunt compatibilitatea sa
cu diferitele nivele de modelare si abilitatea sa de a procesa valori logice
multiple; acesti factori o fac adecvata pentru circuite de o complexitate
sporita si pentru tehnologii tot mai avansate.
Liste de valori paralele (PVL) este o metoda de simulare cu defect care
combina mai multe trasaturi ale tehnicilor paralela ,deductiva si
concurenta. Consideram reprezentarea listei de defect bazata pe o
structura de vector caracteristic, prezentata în figura B_V-11(b).
Presupunem ca valorile defectuoase ale fiecarei linii sunt stocate în alt
vector paralel vectorului caracteristic (sau mai multi vectori paraleli
pentru logica multivalori) . Setul de defecte este partitionat în grupuri de
W defecte. Când toate valorile vectorului caracteristic dintr-un grup sunt
0, toate valorile defectuoase sunt aceleasi cu valoarea buna si nu sunt
reprezentate explicit. Grupurile ramase, în care cel putin o valoare
defectuoasa este diferita, sunt mentinute într-o lista înlantuita, similara
listei concurente de defect. Date de grupurile de lista de defect a intrarilor
unui dispozitiv, grupurile listelor de defect de iesire sunt determinate prin
operatii de reuniune si intersectie pe multimi, similare celor folosite în
simularea deductiva. Calcularea valorilor defectuoase pentru grupurile de
iesire se face ca si în simularea paralela. Metoda listei de valori paralele
necesita mai putin spatiu decât simularea concurenta.

3.Simularea cu defect pentru circuite combinationale

Metodele specializate de simulare cu defect pentru circuitele


combinationale sunt justificate de larg-raspândita folosire a designului
pentru tehnicile de testabilitate ,care transforma un circuit secvential într-
unul combinational în vederea testarii. Pentru testarea statica, în care
256 Fiabilitate si Diagnoza

pasul de baza consta în aplicarea uni vector de intrare si observarea


rezultatelor dupa ce circuitul s-a stabilizat, suntem interesati doar de
valorile finale (stabile). Într-un circuit combinational valorile finale ale
iesirilor nu depind de ordinea în care intrarile sau liniile interne se
modifica. Deci simularea cu defecte pentru circuitele combinationale
poate folosi un model de întârziere simplificat (0 sau 1).

3.1.Propagarea paralela, dupa model ,a unui singur defect

Metoda propagarii paralele, dupa model, a unui singur defect combina


doua concepte separate: propagarea unui singur defect si propagarea
paralela dupa model.
Propagarea unui singur defect este o metoda seriala de simulare cu defect
specializata pentru circuitele combinationale. Dupa ce un vector a fost
simulat folosind un simulator fara defect, defectele sunt inserate unul câte
unul. Valorile în fiecare circuit cu defect sunt calculate de acelasi
algoritm de simulare fara defect si comparate cu valorile bune
corespondente. Calcularea valorilor defectuoase începe de la locul
defectului si continua pâna când toate valorile defectuoase devin identice
cu valorile bune sau defectul este detectat.
Evaluarea paralela dupa model este o tehnica de simulare care simuleaza
W vectori concurent. Pentru o logica cu doua valori valorile semnalului
în W vectori sunt stocate într-o locatie de memorie de W biti. Evaluarea
portilor prin instructiuni booleene, operând pe operanzi de W biti ,
genereaza valorile de iesire pentru W vectori în paralel. Desigur, aceasta
metoda este valabila numai pentru circuite combinationale, unde ordinea
aplicarii vectorilor nu este relevanta.
Diagnoza 257

0
0 1 A

1
1
0

0
0 1
1 0 1

1 B 0
0
1 (a)
C
1

0
0 1 A

1
1
0

0
0 1
1 0 1

1 B 0
0
1 (b)
C
1

Figura B_V-22 Exemplu de trasare a caii critice într-un circuit fara fan-
out-uri
258 Fiabilitate si Diagnoza

Un simulator lucrând în acest fel nu poate fi condus de evenimente,


pentru ca evenimentele pot aparea numai în unii din cei W vectori
simulati în paralel. Aceasta implica faptul ca toate portile din circuit ar
trebui evaluate în fiecare vector, în ordinea nivelului lor (pentru aceasta,
putem folosi o tehnica de simulare compilata). Fie a<1 activitatea medie
în circuit, aceasta însemnând fractiunea din numarul total de porti care au
evenimentele de la intrarile lor într-un vector. Atunci evaluarea paralela
dupa model va evalua 1/a mai multe porti decât un simulator condus de
eveniment. Cu toate acestea, pentru ca W vectori sunt simulati simultan,
evaluarea paralela dupa model este mai eficienta daca W>1/a. De
exemplu ,W≥20 va compensa o valoare a lui a de 5%. Accelerarea totala
este Wa.
Metoda propagarii paralele, dupa model, a unui singur defect combina
aceste doua concepte dupa cum urmeaza: mai întâi face o simulare
paralela fara defect a unui grup de W vectori. Apoi defectele sunt
injectate serial si valorile defectuoase sunt calculate în paralel pentru
acelasi set de vectori. Comparatiile între valorile bune si cele defectuoase
implica W biti. Propagarea efectelor continua atâta tip cît valorile
defectuoase sunt diferite de valorile bune în cel putin un vector. Defectele
detectate sunt înlaturate si acest pas se repeta pâna când toti vectorii sunt
simulati sau toate defectele sunt detectate.
1
A 1

B1 D
1 1
B
B2 0 F
0
1
C E
(a)

1
A 1
D
1 B1 1
B
B2 0 F
0
0
C E
(b)

Figura B_V-23 Exemplu de analiza (a) B se automascheaza (b) B este


critica
Diagnoza 259

Aceasta metoda a fost folosita cu succes pentru evaluarea seturilor largi


( continând 0.5 milioane) de vectori aleatori. Cu toate acestea, nu poate
sustine un proces algoritmic de generare a testelor, de tipul celui din
figura B_V-2, în care avem nevoie sa stim defectele detectate de un
vector, înainte de a genera urmatorul test.

3.2.Trasarea caii critice

Sunt prezentate principalele concepte ale metodei numite trasarea caii


critice, care include si extinde trasaturile tehnicilor mai putin avansate de
simulare cu defect a circuitelor combinationale.
Pentru fiecare vector de intrare, aceasta metoda simuleaza mai întâi
circuitele fara defecte, apoi determina erorile detectate, prin gasirea
valorilor critice ale semnalului.
Definitia 2.1.O linie I are o valoare critica v în vectorul de test t daca t
detecteaza defectul Is-a-v. O linie cu o valoare critica în t este numita linie
critica în t.
Gasind liniile critice într-un test t, stim imediat defectele detectate de t.
În mod clar ,iesirile primare sunt critice în orice test (presupunem teste
complet specificate, de aici toate valorile sunt binare). Celelalte linii
critice sunt gasite printr-un proces de tip “back-tracking”, pornind de la
iesirile primare. Acest proces determina caile compuse ale liniilor critice,
numite “cai critice”. Se foloseste conceptul de “intrari sensibile”.
Definitia 2.2.O intrare este sensibila la un test t daca ,complementându-I
valoarea, se modifica valorile iesirii portii.
Intrarile sensibile ale unei porti cu doua sau mai multe intrari sunt
determinate cu usurinta dupa cum urmeaza:
1.Daca numai o intrare j are valoarea de control ( c ) a portii, atunci j
este sensibila.
2.Daca toate intrarile au valoarea c , atunci toate intrarile sunt sensibile.
3.Altfel nici o intrare nu este sensibila.
Intrarile sensibile ale unei porti pot fi identificate cu usurinta în timpul
simularii circuitului fara defect, întrucât cautarea intrarilor cu valorile de
control este o parte inerenta a evaluarii.
Urmatoarea lema asigura baza algoritmului trasarii caii critice.
260 Fiabilitate si Diagnoza

Lema 2.1.Daca o iesire a unei porti este critica, atunci intrarile sale
sensibile, daca exista, sunt de asemenea critice.
Exemplul urmator ilustreaza trasarea caii critice într-un circuit fara “fan-
out-uri”.
Exemplul 2.4.Figura B_V-22(a) prezinta un circuit ,valorile sale de linie
pentru un test dat, si intrarile sensibile (marcate cu punct). Trasarea caii
critice începe prin marcarea primei iesiri ca si critica. Celelalte linii
critice sunt identificate prin aplicarea recursiva a lemei 2.1.Figura B_V-
22(b) arata caile critice cu linii îngrosate.
Este important sa se observe ca algoritmul a evitat complet zonele
marginite de B si C, pentru ca mergând înapoi de la iesire, mai întâi
determina ca B si C nu sunt critice. Prin contrast, un simulator
conventional ar propaga efectele tuturor defectelor în aceste zone (B si C)
înainte de a descoperi la poarta de iesire ca aceste defecte sunt detectate.
Pentru circuitele fara “fan-out-uri”, trasarea caii critice poate fi executata
de o procedura simpla de traversare în adâncime a unui arbore, care
marcheaza drept critice si urmareste recursiv pe rând fiecare intrare
sensibila a unei porti cu iesirea critica. Exemplul urmator ilustreaza
problema care apare în extinderea trasarii caii critice la cazul general al
circuitelor cu “fan-out-uri” reconvergente.
Exemplul 2.5.Pentru circuitul si testul dat în figura B_V-23(a) începem
de la iesirea primara, si folosind în mod repetat lema 2.1, identificam F,
D, A si B1 drept critice. Nu putem, cu toate acestea, determina daca
tulpina B1 este critica fara o analiza aditionala. Într-adevar, efectele
defectului Bs-a-0 se propaga pe doua cai cu paritati de inversiune diferite,
asa încât se anuleaza una pe cealalta când reconverg la poarta F.
Fenomenul, numit automascare, nu apare pentru testul prezentat în
figura B_V-23(b), pentru ca propagarea efectelor de-a lungul caii
începând de la B2 se opreste la poarta E. Aici B este critica.
Deci principala problema este sa determinam daca o tulpina x este
critica, data de existenta unor ramuri “fan-out” ale tulpinii, care sunt
critice. Fie v valoarea lui x în testul analizat t. O solutie evidenta este sa
simulam implicit defectul x s −a −v , si daca t detecteaza acest defect, atunci
marcheaza x drept critica. Trasarea caii critice rezolva aceasta problema
printr-un alt mod de analiza, descris în cele ce urmeaza.
Definitia 2.3.Fie t un test care activeaza defectul f într-un circuit
combinational cu o singura iesire. Fie y o linie cu nivelul Iy, sensibila la f
Diagnoza 261

prin t. Daca vreo cale sensibila la f trece prin y sau nu atinge vreo linie cu
nivel mai mare de Iy, atunci y este numita linie de captura a lui f în testul
t.
O linie de captura, daca exista, este propice pentru propagarea efectelor,
pentru ca este comuna tuturor cailor în care efectele lui f se pot propaga
spre iesirea primara în testul t. Daca t detecteaza f, atunci exista cel putin
o linie de captura a lui f, aceasta fiind însasi iesirea primara. Daca efectul
lui f se propaga pe o singura cale, atunci fiecare linie de pe aceasta cale
este o linie de captura a lui f.
linii de captura

1
defect 1
n 1
b 1 e 0
1 1
a 1 j
q
1 1

0 p
1
calea sensibila

Figura B_V-24 Exemplu de linii de captura

Exemplul 2.6.Consideram circuitul din figura B_V-24 si fie f - bs-a-


0.Liniile de captura a lui f în testul aratat sunt e, j si q. Liniile n si p sunt
sensibile la f ,dar nu sunt linii de captura a lui f.
Fie y o linie de captura a lui f în testul t si presupunem ca y are valoarea
v în t. Este usor de aratat ca orice linie de captura a lui y s −a −v este de
asemenea o linie de captura a lui f. Altfel spus, liniile de captura ale unui
defect formeaza un lant tranzitiv. De exemplu, în figura B_V-24, j si q
sunt de asemenea linii de captura pentru es-a-0, respectiv js-a-0.
Teorema 2.2.Un test t detecteaza toate defectele f daca toate liniile de
captura a lui f în t sunt critice în t.
Demonstratie: mai întâi sa observam ca daca nu exista linii de captura,
atunci t nu detecteaza f (pentru ca altfel exista cel putin o linie de
captura). Fie y o linie arbitrara de captura a lui f în t si fie v valoarea sa.
Valoarea lui y în prezenta lui f este v ,si nici un alt efect al lui f exceptând
262 Fiabilitate si Diagnoza

y = v nu poate atinge vreo linie al carei nivel este mai mare decât cel al
lui y.
1.Sa presupunem ca toate liniile de captura a lui f în t sunt critice. De
aici, eroarea y = v cauzata de y s −a −v se propaga spre iesirea primara.
Atunci acelasi lucru este adevarat pentru defectul y = v cauzat de f. Deci
testul t detecteaza defectul f.
2.Sa presupunem ca testul t detecteaza defectul f. De aici, eroarea y = v
cauzata de f în y se propaga spre iesirea primara. Atunci aceasta este
adevarat pentru eroarea y = v cauzata de y s −a −v . Deci t detecteaza
y s −a −v * si deci toate liniile de captura a lui f sunt critice în t.
CI
CI1
X2

X X1 CI2 T U S
I Q T1
I1 N
T2
I2
Y R N1 N2
Y1
Y2 T3 C0

I3
(a)

CI
CI1
X2
X1 I CI2 T U S
Q T1
X I1 N
T2
Y I2 V
R N1
Y1
Y2 N2

(b)

Figura B_V-25 (a) Circuit (b) Conurile pentru S - partitionate în regiuni


fara fan-out-uri

Teorema 2.1 ,împreuna cu proprietatea de tranzitivitate a unui set de linii


de captura, arata ca pentru a determina daca o tulpina este critica, am
putea avea nevoie sa propagam efectele erorii din tulpina “tot drumul”
spre o iesire primara, ca si în simularea cu defect explicita. Mai curând
,este suficient sa propagam efectele spre prima linie de captura a tulpinii
Diagnoza 263

defectului (sau una apropiata tulpinii). Atunci tulpina este critica daca
linia de captura este critica.
Întrucât liniile de captura sunt definite pentru un circuit cu o singura
iesire, partitionam un circuit cu mai multe iesiri primare în circuite cu o
singura iesire numite conuri. Un con contine toata logica ce alimenteaza
o iesire primara. Pentru a profita de simplitatea trasarii caii critice în
circuitele fara “fan-out-uri”, în interiorul fiecarui con identificam
“regiunile fara fan-out-uri”. Figura B_V-25 arata aceste structuri pentru
un circuit cu doua iesiri. Intrarile unei regiuni fara fan-out-uri sunt puncte
de verificare ale circuitului, adica ramuri “fan-out” si/sau iesiri primare.
Iesirea unei regiuni fara fan-out-uri este o tulpina sau o iesire primara.
Construirea conurilor si a regiunilor fara fan-out-uri este un pas de
preprocesare al algoritmului. Figura B_V-26 schiteaza algoritmul trasarii
caii critice pentru evaluarea unui test dat. Presupunem ca simularea fara
defect, incluzând marcarea intrarilor portilor sensibile, a fost efectuata.
Algoritmul proceseaza fiecare con, începând cu iesirea sa primara, si
alterneaza între doua operatii principale: trasarea caii critice într-o
regiune fara fan-out-uri ,reprezentata de procedura Extend ,si verificarea
daca o tulpina este critica, efectuata de procedura Critical. Odata ce o
tulpina j este determinata drept critica, trasarea caii critice continua de la
j.
for every iesire primara z
begin
ramuri_de_verificat = ∅
Extend (z)
while ( ramuri_de_verificat ≠ ∅)
begin
j = ramura de cel mai înalt nivel în ramuri_de_verificat
îndeparteaza j din ramuri_de_verificat
if Critical (j) then Extend (j)
end
end

Figura B_V-26 Schitarea trasarii caii critice

Extend (i)
begin
264 Fiabilitate si Diagnoza

marcheaza i drept critica


if i este o ramura fan-out then
adauga ramura (i) la ramuri_de_verificat
else
for every intrare j a lui i
if sensitive (j) then Extend (j)
end

Figura B_V-27 Trasarea caii critice într-o regiune fara fan-out-uri

Figura B_V-27 prezinta procedura recursiva Extend( i ), care revine pe


toate caile critice din interiorul unei regiuni fara fan-out-uri, începând cu
o linie critica i, urmarind liniile marcate ca sensibile. Extend() se opreste
la intrarile regiunii fara fan-out-uri si colecteaza toate tulpinile din setul
Tulpini de verificat.

Critical(j)
begin
Frontiera = {fan-out-urile lui j}
repeat
begin
i = poarta de cel mai jos nivel din Frontiera
îndeparteaza i din Frontiera
if (Frontiera ≠ ∅) then begin
if Propagates (i) then adauga fan-out-urile lui i la Frontiera
end
else begin
if Propagates (i) and i este critica then return TRUE
return FALSE
end
end
end

Figura B_V-28 Analiza ramurilor

Figura B_V-28 schiteaza functia Critical(j), care determina daca o


tulpina j este critica printr-o propagare în latime a efectelor erorii tulpinii.
Diagnoza 265

Frontiera este setul tuturor portilor în mod curent la frontiera acestei


propagari. O poarta din frontiera a fost atinsa de unul sau mai multe
efecte provenite de la j, dar nu am determinat înca daca acestea se
propaga prin poarta. Aceasta analiza este efectuata de functia Propagates.
Pentru ca efectele erorii sunt propagate doar într-un singur con, frontiera
este obligata sa devina goala. Daca ultima poarta înlaturata din frontiera
propaga efectele erorii, atunci iesirea sa este prima linie de captura a
erorii tulpinii si rezultatul depinde de starea (critica sau nu) a liniei de
captura.
Functia Propagates(i) determina daca poarta i propaga efectele erorii
care ating intrarile sale, bazându-se pe urmatoarea regula:

Lema 2.2 o poarta i propaga efectele erorii daca:


1.sau efectele erorii sosesc numai la intrarile sensibile ale lui i.
2.sau efectele erorii sosesc la toate intrarile senzitive ale lui i cu
valorile de control.

1 1 0 0 0 0
1 1 0
1 1 1

Figura B_V-29 Propagarea efectelor defectului printr-o poarta SI

Figura B_V-29 exemplifica diferitele cazuri de propagare a efectelor


erorii printr-o poarta SI. Efectele erorii sunt indicate de sageti.

ramuri linii critice ramuri_de_verifi ramuri linii de


FFR cat verificate captura
trasate
S S, U, CI1,T1 T,C1
C1 T U
T T, N1 CI, N
CI N U
N N, Q, R, L1, CI, L
L2
CI L N
L L, X1 , Y1 CI, X, Y
266 Fiabilitate si Diagnoza

X, Y CI U
CI CI X, Y
Y X R
X X Y
∅ Y Q
Y Y ∅
CO CO, L3 L
∅ L -

Figura B_V-30 Executia trasarii caii critice în circuitul din figura 2.25
pentru testul 1 1 1

Exemplul 2.6: tabelul din figura B_V-30 prezinta executia trasarii caii
critice în circuitul din figura B_V-25(a) pentru testul 1 1 1. Figura B_V-
31 arata caile critice obtinute. De observat ca tulpina L este critica în
conul S, dar se automascheaza în conul CO.
CI
CI1
X2
X1 I CI2 T U S
Q N T1
X I1
T2
Y I2 V
R N1
Y1
Y2 N2

Figura B_V-31 Cai critice în circuitul din figura B_V-25 pentru


testul 1 1 1

Când analizam o tulpina, am urmarit calea critica între o iesire primara si


una dintre ramurile fan-out ale tulpinii. Efectul erorii tulpinii s-ar propaga
pe aceeasi cale critica, daca nu ar aparea automascarea. Aceasta poate
avea loc doar atunci când efectele erorii tulpinii ating o poarta
reconvergenta pe cai cu paritate de inversiune diferita (figura B_V-23).
Daca examinam circuitul din figura B_V-25, observam ca aceasta situatie
nu poate aparea pentru tulpinile T si L în conul S.
Comparata cu simularea cu defect conventionala, trasaturile distinctive
ale trasarii caii critice sunt urmatoarele:
- identifica direct defectele detectate de un test.
Diagnoza 267

- trateaza defectele numai implicit.


- este o metoda aproximativa.

4. Esantionarea defectelor

Necesitatile de calcul (timp de rulare si memorie) a metodelor generale


de simulare cu defect cresc cu numarul defectelor simulate. Fie M
numarul SSF pliate (collaps) în circuitul analizat si k numarul de defecte
detectate de secventa de test evaluata. Atunci acoperirea defectelor lui T
este F = K/M. Esantionarea defectelor este o tehnica ce reduce costul
simularii cu defect prin simularea numai a unui esantion aleator de m<M
defecte.
Fie K numarul de defecte detectate de T când simulam m defecte. Exista
o relatie între costul simularii cu defect si acuratetea acoperirii estimate a
defectului f = k/m. Problema este determinarea marimii unui esantion
demn de încredere (cu un nivel de încredere specificat c) asa încât
eroarea în acoperirea estimata a defectului sa fie marginita de un emax dat.
Altfel spus dorim sa determinam m asa încât acoperirea estimata a
defectelor f sa apartina intervalului [F-emax, F+emax] cu o probabilitate c.
Întrucât cele m erori din esantion sunt selectate aleator, putem privi
numarul de erori detectate k ca o variabila aleatoare. Probabilitatea ca T
sa detecteze k erori dintr-un esantion aleator de marime m, data de
detectarea a k erori din întregul set M, este:
 K  M − K
  
 k m − k 
Pk (m, M , k ) =
 M
 
m 
Aceasta este o distributie hipergeometrica cu media:
K
µk = m ⋅ = mF
M
K K M −m  m
si varianta σ k2 = m 1 −  = mF (1 − F ) 1 − 
M M  M −1  M
unde σk denota deviatia standard. Pentru M mare, aceasta distributie
poate fi aproximata de o distributie normala cu media µk si deviatia
standard σk. De aici acoperirea estimata a defectului f poate fi considerata
o variabila aleatoare cu distributie normala si media
268 Fiabilitate si Diagnoza

µK
µF = =F
m
si varianta
σ k2 1  m
σ l = 2 = F (1 − F ) 1 − 
2
m m  M
Cu un nivel de încredere de 99,7%, putem pretinde ca acoperirea
estimata a defectului este în intervalul [F-3σf, F+3σf]. De aceea, este
aproape sigur ca estimatia erorii este marginita de 3σf. Eroarea maxima
emax este data de:
 m 1
emax = 3 F (1 − F ) 1 − 
 M m
m=500
0.07
Eroarea 0.06
maxima emax m=1000
0.05
0.04 m=2000
0.03
0.02
0.01

0 0.2 0.4 0.6 0.8 1


Acoperirea defectului F

Figura B_V-33 Eroarea maxima în acopeirrea estimata a


defectelor

Pentru a reduce semnificativ costul simularii cu defect, marimea


esantionului nu ar trebui sa fie mult mai mica decât numarul total de
defecte M. Cu m<M, putem aproxima (1-m/M)=1. Atunci eroarea devine
independenta de numarul total de defecte M. Figura B_V-33 ilustreaza
modul în care emax depinde de F pentru mai multe valori ale lui m.
Observam ca cel mai rau caz apare atunci când adevarata acoperire a
defectelor F este de 50%.
Esantionarea defectelor poate asigura o estimare corecta a acoperirii
defectelor la un cost substantial mai scazut decât cel al simularii
întregului set de defecte. Cu toate acestea ,nici o informatie nu este
Diagnoza 269

disponibila despre detectarea starii defectelor neincluse în esantion. De


aici rezulta ca poate fi dificil de îmbunatatit acoperirea defectelor.

5.Analiza statistica a defectelor

Pentru ca simularea exacta a defectelor este un proces de calcul scump,


tehnicile aproximative de simulare a defectelor au fost dezvoltate în
scopul reducerii substantiale a costurilor de calcul, chiar daca acuratetea
rezultatelor scade. Vom prezenta principiile folosite de metoda STAFAN,
o metoda statistica de analiza a defectelor care asigura o alternativa
ieftina a simularii exacte cu defect.
Ca si la simularea cu defect conventionala, STAFAN include o simulare
fara defect a circuitului analizat N pentru o secventa de test. STAFAN
proceseaza rezultatele simularii fara defect pentru a estima, pentru fiecare
defect individual luat în calcul, probabilitatea sa de a fi detectat.
Acoperirea totala a defectelor este atunci estimata pe baza probabilitatii
de detectie a defectelor individuale.
Întâi presupunem ca N este un circuit combinational. STAFAN trateaza
T ca un set de n vectori aleatori independenti. Fie df probabilitatea ca un
vector selectat aleator al lui T sa detecteze defectul f. Pentru ca vectorii
sunt presupusi independenti, probabilitatea nedetectarii lui f pentru n
vectori este (1-df)n. Atunci probabilitatea dfn ca un set de n vectori sa
detecteze f este:
dfn =1-(1-df)n
Fie Φ setul de defecte ce prezinta interes. Numarul asteptat de erori
detectate de n vectori este Dn = ∑ d nf ,iar acoperirea defectelor asteptata
este Dn / [∅] (care este si probabilitatea medie de detectare).
Baza pentru calculele de mai sus este data de probabilitatea de detectie
df. Fie f defectul s-a-v în linia I. Pentru a detecta f, un vector trebuie sa
activeze f prin setarea lui I la valoarea v si trebuie sa propage efectul
rezultat la o iesire primara. STAFAN proceseaza rezultatele simularii fara
defect pentru a estima separat probabilitatea activarii f si probabilitatea
propagarii unui defect spre/de la o iesire primara. Aceste probabilitati
sunt definite dupa cum urmeaza:
-C1( I ), numita 1-controlabilitate a lui I ,este probabilitatea ca un
vector selectat aleator din T sa seteze linia I la valoarea 1. 0-
controlabilitatea, C0( I ), este definita similar pentru valoarea 0.
270 Fiabilitate si Diagnoza

-O( I ), numita observabilitatea lui I , este probabilitatea ca un vector


selectat aleator din T sa propage un efect de la I la o iesire primara.
STAFAN foloseste presupunerea ca activarea defectului si propagarea
efectelor sunt evenimente independente. Atunci probabilitatile de
detectare ale defectelor s-a-0 si s-a-1 în I pot fi calculate prin C1(I)C0(I)
si C0(I)O(I).
Pentru a estima cotrolabilitatea si observabilitatea , STAFAN numara
diferitele evenimente care apar în timpul simularii fara defect a n vectori.
Numarul de valori 0 si numarul de valori 1 sunt mentinute pentru fiecare
linie I; ele sunt incrementate ,respectiv ,în fiecare test în care I are
valoarea 0 sau1. Dupa simularea a n vectori, 0- si 1-controlabilitatea lui I
sunt calculate astfel:
nr − 0 nr − 1
C0(I) = si C1(I) =
n n
O valoare aditionala de sensibilitate este mentinuta pentru fiecare intrare
de poarta I. Aceasta valoare este incrementata în fiecare test în care I este
o intrare sensibila a portii (vezi definitia 5.2). Dupa simularea a n vectori,
probabilitatea S( I ) ca un vector selectat aleator sa propage un efect de la
I la iesirea portii este:

nr.sensibilitate
S(I) =
n

Calculul observabilitatii începe prin setarea O( i )=1 pentru fiecare iesire


primara i. Observabilitatea pentru alte linii este calculata printr-o
traversare înapoi a circuitului, în care O( I ) este calculat pe baza
observabilitatii succesorului sau imediat. Fie I o intrare a unei porti cu
iesirea m. Pentru propagarea unui efect de la I la o iesire primara, avem
nevoie sa-l propagam de la I la m si de la m la o iesire primara. Folosind
presupunerea simplificatoare ca aceste doua probleme sunt independente,
obtinem O( I ) ca:
O ( I )=S ( I ) O( m )
Diagnoza 271

l1

l l2

lk

Figura 2.34

Acum fie I o tulpina cu k ramuri subordonate I1, I2, …,Ik (vezi figura
B_V-34). Presupunem ca am calculat toate valorile O(I1) si acum dorim
sa determinam O( I ). Fie Li(L) notatia pentru evenimentul a carui
probabilitate este O(li)(O(l)), adica propagarea efectelor de la li(l) la o
iesire primara. Vom face doua presupuneri: 1.Evenimentele {Li} sunt
independente si 2.Evenimentul L apare daca si numai daca apare orice
subset al lui {Li}.Atunci:
K
L = U Li
i =1
Din cauza fan-out-urilor reconvergente, L poate aparea chiar si atunci
când nici unul din evenimentele {Li} nu se produce, si aparitia unui
subset al lui {Li} nu garanteaza ca L va avea loc. STAFAN trateaza
K
probabilitatea lui UL
i =1
i ca o limita superioara a valorii lui O( I ).

Marginea inferioara este obtinuta presupunând ca L poate fi cauzat de cel


mai probabil Li. Deci:
K 
max1≤ i ≤ kO(Ii) ≤ O(I) ≤ P  U Li 
 i =1 
De exemplu, pentru k=2 P(L1∪L2)=O(I1)+O(I2)-O(I1)O(I2). Bazându-se
pe aceste limite, STAFAN calculeaza observabilitatea tulpinii I prin
K 
O(I) = (1-α) max1≤ i ≤ kO(Ii) +αP  U Li 
 i =1 
unde α este o constanta în intervalul [0 , 1]. Marginea inferioara pentru
O( I ) este obtinuta cu α=0, iar marginea superioara cu α=1. Experimental
,s-a constatat ca rezultatele nu depind de α.
272 Fiabilitate si Diagnoza

STAFAN aplica aceleasi reguli de calcul pentru a estima probabilitatea


de detectare într-un circuit secvential (sunt folosite unele tehnici
aditionale pentru a trata buclele cu revenire). Aceasta duce la mai multe
aproximatii, pentru ca atât activarea cît si propagarea erorii sunt în
general realizate prin secvente de vectori înruditi, si nu prin vectori
independenti. În ciuda aproximarilor sale, acoperirea defectelor realizata
de STAFAN a fost calculata ca fiind diferita prin cel mult 6% de cea
realizata de un simulator conventional.
Având drept criteriu probabilitatea lor de detectare, calculata de
STAFAN, defectele sunt grupate în urmatoarele trei grupe:
-grupa cu probabilitate înalta, continând defectele cu probabilitate de
detectare mai mare de 0,9.
-grupa joasa, continând defecte cu probabilitate de detectie sub 0,1.
-grupa de mijloc, continând defecte cu probabilitati de detectie coprinse
între 0,1 si 0,9.
Defectele din grupa înalta sub considerate ca foarte posibil de detectat de
testul aplicat. Cele din grupa joasa sunt presupuse nedetectate, si nu este
facuta nici o presupunere asupra detectabilitatii defectelor din grupa de
mijloc. Rezultatele experimentale prezinta corectitudinea presupunerilor
dupa cum urmeaza:
-între 91 si 98% din defectele din grupa înalta sunt într-adevar detectate.
-între 78 si 98% dintre defectele din grupa joasa sunt într-adevar
nedetectate.
-grupa de mijloc contine între 2 si 25% dintre defecte (în cele mai multe
cazuri mai putin de 10%).
De asemenea, se constata ca lipsa de corectitudine în etichetarea
rezultatelor este principala problema în aplicarea metodei STAFAN.
STAFAN necesita efectuarea urmatoarelor operatii aditionale în timpul
unei simulari fara defecte. Mai întâi, count-0 si count-1 pentru fiecare
iesire de poarta, si valoarea de sensibilitate a fiecarei iesiri de poarta
trebuie actualizate în fiecare vector. Apoi, controlabilitatea,
observabilitatea si probabilitatea de detectie sunt calculate dupa
simularea unui grup de n vectori. Pentru ca n poate fi mare,
complexitatea lui STAFAN este determinata de primul tip de operatii
(numarul operatiilor de actualizare); numarul lor este proportional cu Gn,
unde G este numarul portii.

6.Concluzii
Diagnoza 273

Simularea cu defect joaca un rol important în asigurarea unei înalte


calitati a circuitelor digitale. Costul sau ridicat de calcul motiveaza noile
cercetari în acest domeniu. Principalele directii de cercetare sunt
sustinerea hard, noi algoritmi si folosirea unor modele ierarhice.
Un mod de a folosi partea hard pentru a face simularea cu defect mai
rapida este prin acceleratori cu scop special atasati unui computer gazda
cu scop general. Arhitecturile pentru simularea cu defect sunt similare
celor descrise în capitolul 3 pentru simularea logica. Desi orice
accelerator hardware pentru simularea logica poate fi adaptat cu usurinta
pentru simularea seriala cu defecte, natura seriala a acestui proces
împiedica realizarea unei accelerari semnificative. Implementarile hard si
microprogramate ale algoritmului concurent dau rezultate mult mai bune.
Procesoarele de scop general, interconectate, pot de asemenea asigura
suportul pentru simularea cu defect prin partitionarea setului de defecte
între procesoare. Procesoarele pot fi procesoare paralele conectate pe
aceeasi magistrala sau procesoare independente conectate în retea. Cu
proceduri corecte de partitionare a setului de defecte, accelerarea obtinuta
creste aproape liniar cu numarul de procesoare folosite.
Au fost dezvoltati doi noi algoritmi pentru circuitele secventiale
sincrone, folosind un model de 0-întîrziere. Unul este bazat pe extinderea
caii critice; celalalt, numit simularea diferentiala cu defect, combina
conceptele simularii concurente si cele ale propagarii unui singur defect.
Simularea diferentiala cu defect simuleaza pe rând fiecare circuit defect,
pastrând diferentele între valorile sale si cele ale circuitului simulat
anterior.
Simularea ierarhica cu defect se bazeaza pe un model ierarhic al
circuitului simulat, ale carui componente au un model functional (o rutina
C) si un model functional (o interconectare a elementelor primitive).
Simulatorul foloseste metoda concurenta si este capabil sa comute între
modelele structurale si cele functionale ale componentelor. Eficienta este
sporita datorita folosirii modelelor de nivel înalt pentru propagarea
efectelor.
274 Fiabilitate si Diagnoza