Sunteți pe pagina 1din 44

Genererea automat a vectorilor de test (ATG)

pentru circuite combinaionale


Metoda diferenei booleene
Metoda activrii unei ci
Metoda cii critice

Presupunem c avem un circuit cu n variabile de


X ( x1 , x2 ,..., xi ,..., xn )
intrare:
El realizeaz la ieire funncia boolean:
F ( X ) F ( x1, x2 ,...,xi ,...xn )

Dac variabila xi este eronat datorit unui defect,


adic ia valoarea x i , funcia realizat la ieire va fi:
F ( x1, x2 ,...,x i ,...xn )
Eroarea poate fi detectat dac:
F ( x1, x2 ,...xi ,...xn ) F ( x1, x2 ,...,xi ,...xn ) 1
3

Aceast operaie SAU EXCLUSIV realizat pentru


funcia F(X) n raport cu variabila de intrare xi se numete
diferena boolean a funciei F n raport cu xi. Ea se
noteaz cu: dF ( X )

dxi

Dac aceast diferen boolean este nul nseamn c


circuitul are acelai rspuns i n prezena defectului ca i
n lipsa lui i deci, acest defect nu poate fi pus n
eviden.

P1 :

dF ( X ) dF ( X )

dxi
dxi

P2 :

dF ( X ) dF ( X )

dxi
d xi

P3 :

dF ( X )
0
dxi

dac F(x) nu depinde de xi

P4 :

dF ( X )
1
dxi

dac F(x) depinde numai de xi

P5 :

d [ F ( X )G( X )]
dG( X )
dF ( X ) dF ( X ) dG( X )
F(X )
G( X )

dxi
dxi
dx
dxi
dxi

P6 :

d [ F ( X ) G( X )]
dG( X )
dF ( X ) dF ( X ) dG( X )
F(X )
G( X )

dxi
dxi
dx
dxi
dxi

Vectorii de test pentru defectul PP0 a variabilei xi se


determin cu:

dF ( X )
xi
1
dxi

Vectorii de test pentru defectul PP1 a variabilei xi se


determin cu:

dF ( X )
xi
1
dxi
6

La ieirea Z se realizeaz
funcia:
Z ABC B D ABD

Diferena boolean raportat la


variabila A este:
dZ
d ( ABC B D ABD )

BD
dA
dA

PP1 la intrarea A se testeaz cu:


A

dZ
ABD
dA

PP0 la intrarea A se
testeaz cu:
dZ

Vectorii de test sunt:


ABCD=01x1
Vectorii
7

dA

ABD

de test sunt:

ABCD=10x1

Ieirea Z raportat la E este:


Z EC ED B D

Diferena boolean raportat la


variabila E este:
dZ d ( EC ED B D)

BC D
dE
dE

PP1 n nodul E se testeaz cu:


E[ BC D] ABC AD BC BD

Vectorii de test sunt:


ABCD=001x, 0xx1, x01x, x0x1

PP1 la intrarea A se
testeaz cu:

E[ BC D] AB[ BC D] ABD
Vectorii

de test sunt:
ABCD=11x1
8

Metoda diferenei booleene are cteva avantaje majore:


Garanteaz gsirea vectorului de test pentru punerea n eviden a
unui defect, dac acest vector de test exist.
Metoda ofer toi vectorii de test care pun n eviden un anumit
defect.

Metoda nu este practic pentru circuitele care au un


numr foarte mare de pori, deoarece presupune
efectuarea unui volum mare de calcule.

10

Pasul 1: Activarea defectului


Se determin valorile intrrilor primare din circuit care
produc n nodul testat o valoare logic complementar
celei corespunztoare defeciunii.

Pentru defectul PP0 n nodul H determinm valorile intrrilor care


stabilesc 1 n nod:
C
0
X

D
X
0

H
1
1

Pentru defectul PP1 n nodul H determinm valorile intrrilor care


stabilesc 0 n nod:
C
1

D
1

H
0

11

Pasul 2: propagarea defectului


Se caut o cale de propagare a valorii logice din nodul vizat pn la una din
ieirile primare ale circuitului. Se determin pentru fiecare nod parcurs
condiionrile logice pentru propagarea defectului i n funcie de acestea se
determin valorile intrrilor primare.
n exemplul ales ncercm propagarea defectului spre ieirea L.
Propagarea defectului spre ieirea M nu este posibil deoarece calea este cu fanout recovergent.

12

Pentru ca defectul (valoarea logica h) s se propage n nodul I obinem


condiionarea:
G
0
1

H
h
h

I
1
h

Rezult c n nodul G trebuie s avem valoarea logica 1 ceea ce determin


pentru intrrile primare B=0.

13

Pentru ca defectul (valoarea logica


condiionarea:

A
0
1

I
h
h

) s se propage n nodul L obinem

L
1
h

Rezult c n nodul A trebuie s avem valoarea logica 1 valoare obinut direct


pentru o intrare primar.

14

Rezult vectorii de test pentru punerea n eviden a defectelor din nodul H.


Pentru PP0 n nodul H:
A
1
1

B
0
0

C
0
X

D
X
0

E
X
X

F
X
X

Pentru PP1 n nodul H:


A
1

B
0

C
1

D
1

E
X

F
X

15

Aceast metod identific o cale de propagare a semnalelor


pornind de la ieirile primare pn la intrrile primare.
Pentru un vector de test aplicat la intrrile primare se consider
c un nod are valoare critica c dac vectorul respectiv permite
detectarea defectului de punere pe c n nodul respectiv.
Deci dac considerm c un anumit vector de test pune n
eviden defectul de tip PP0 n nodul vizat, atunci se consider c
nodul respectiv are valoarea critic 1c (1 critic).

16

Analizm propagarea valorii critice 0c de la ieire spre intrri


Rezult c nodurile F, G i H vor avea i ele valoarea 0c.
Parcurgnd n continuare schema spre ieiri pn la ieiri,
obinem n final urmtorul vector de test ABCD=0xx0

Acest vector va permite


detectarea defectelor de tip PP1
n nodurile A, E, D, F, H i Z.
17

Atribuim acum ieirii valoarea critica 1c


Considerm, de exemplu, condiionarea 1c pentru nodul F.
Se ajunge la condiionrile din figura alturat.
Se obine vectorul de test ABCD=111x

Acest vector va permite


detectarea defectelor de tip PP0
n nodurile A, B, C, E, F i Z
18

n tabelul urmtor este prezentat un set de vectori de


test determinat prin aplicarea metodei cii critice, set
care acoper toate defectele de tip punere pe din
circuitul analizat. Reamintim c valoarea critica c
dintr-un nod permite testarea defectului PPc .
Vector de test
ABCD
x0xx
0xxx
xx00
111x
11x1
x1x1

Valoarea critica n nod


A
B
C
D
0C
0C
0C
0C
1C
1C
1C
1C
1C
1C
1C
1C
19

E
0C
0C
1C
1C

F
0C
0C
0C
1C

G
0C
0C
0C

H
0C
0C
0C

1C
1C

Z
0C
0C
0C
1C
1C
1C

S se determine pentru
circuitul alturat vectorii
de test care pun n
evidn defectul PP0 n
G.
S se determine pentru
circuitul alturat vectorii
de test care pun n
evidn defectul PP0 n I.
Exist vectori de test care
pun n eviden ambele
defecte?

20

A
0

&

>=1

G1

G4

>=1
0

&

&

0
0

G2

0
0

E
F

G3

G6
1

G5

Pentru circuitul
alturat s se
determine setul
vectorilor de test care
disting defectul PP0
n A de defectul PP0
n C.

G1

&

&
0

G3

G2
0

&
0

&
0

Z2
0

G3

21

Z1
0

G5

Sunt i alte metode de generare a testelor, ce utilizeaz descrierea


topologic la nivel de poarta, n loc de manipularea ecuaiilor Booleene.

v / vf

AND

0 1 D

D x

OR 0

1 D D x

0/0

0 0

1 D D x

1/1

0 1

1 1

1/0

0 D D 0

D 1 D 1 x

D 1 1 D x

0/1

D
x

0 D 0 D
0 x

1 x

1 1

x x

22

Presupune parcurgerea a doi pai fundamentali:


1. Activarea defectului. Presupune setarea valorilor la nivelul acelor PI ce
determin ca linia l s aib valoarea v.
este o instan a problemei de justificare a liniilor se refer la gsirea unei asignri de
valori pentru PI astfel nct s se realizeze setarea unei anumite valori la nivelul unei
anumite linii din circuit.
2.

propagarea erorii rezultate la o PO.


Pentru urmrirea propagrii erorii n circuit este necesar s se fac o
urmrire concomitent a valorilor de semnal att n circuitul fr defect
ct i n cel cu defect.
n acest sens se definesc valori logice compozite de forma v / v f , unde v
reprezint valoarea logic din circuitul fr defect, iar vf reprezint
valoarea logic din circuitul defect.

23

Structura unui algoritm de generare a testelor pentru pentru


un circuit fr fanout:
Begin
Seteaz la x toate valorile
Justify l, v
if v=0 then Propagate l, D
else Propagate l, D
end

24

Justificarea liniilor este un proces recursiv prin care


val. de ieire a unei pori este justificat de valorile
intrrilor sale, i aa mai departe pn se ajunge la
nivelul PI

Selectarea unei intrri se face pe baza alegerii unuia


din cuburile primitive ale porii ce duce la obinerea
valorii de ieire dorite.

25

Justify (l,val)
Begin
seteaz l la val
If l este o PI then Return
c=valoare de control pentru l
i=inversiunea lui l
inval=val i
if inval c
then for every intrare j a lui l
Justify (j,inval)
else
Begin
selecteaz o intrare j a lui l
Justify (j,inval)
end
end

26

Pentru propagarea erorii la PO a circuitului, trebuie


activat unica cale de la l spre PO.
Fiecare poart a acestei ci are o singur intrare activat
de defect, toate celelalte intrri fiind setate la valori
necontrolabile.
pb. propagrii defectului spre ieire este transformat
ntr-un set de probleme de justificare a liniilor

27

n cazul circuitelor fr fanout, problema justificrii unei linii se rezolv


independent de justificarea celorlalte linii.

Propagate (l,err)
Begin
seteaz l la err
if l este o PO then Return
k = fanout-ul lui l
c=valoarea de control a lui k
i=inversiunea lui k
for every intrare j a lui k alta dect l
Justify j, c
Propagate k , err i
End

28

Procedura de generare a testelor pentru cazul general al circuitelor cu


fanout se complic din dou motive:
1.
exist mai multe posibiliti de propagare a defectului activat pe baza
procedurii de justificare a liniei.
odat ce s-a ales una din aceste ci de propagare, problema
propagrii erorii se reduce de fapt la un set de probleme de
justificare a liniilor.
2.
n general la circuitele cu fanout (reconvergent) problemele de
justificare a liniilor nu sunt independente, cutarea soluiei implicnd
un proces de decizie ce se realizeaz printr-o strategie Backtrace ce
permite explorarea sistematic i complet a spaiului tuturor soluiilor
posibile i revenirea (ce implic restaurarea calculului la o stare
calculat naintea lurii deciziei incorecte) de la deciziile incorecte.
29

Procesul calculului valorilor de semnal impuse n


circuit de o anumit asignare de valori este denumit
proces de implicare.
Prima implicare apare dup stabilirea valorilor unice de
activare i de propagare a defectului urmrit.

30

Solve()
Begin
if Imply_and_check()=FAILURE then return FAILURE
if ((eroare la PO) and toate liniile sunt justificate)
then return SUCCESS
if (nici o eroare nu poate fi propagat la o PO)
then return FAILURE
selecteaz o problem nerezolvat
Repeat
Begin
selecteaz o maier nencercat de rezolvare a ei
if Solve()=SUCCESS then return SUCCESS
end
until s-au ncercat toate modalitile de rezolvare a ei
return FAILURE
end

31

Problema de la care se pleac n generarea unui test pentru defectul l s-a-v este de a
justifica valoarea
a liniei l i de a propaga eroarea de la l la o PO (La baza
algoritmului este tehnica Divide et Impera)
ncercarea de rezolvarev a unei probleme poate duce la SUCCESS sau FAILURE. La
nceput algoritmul manevreaz toate problemele ce au soluii unice, deci care pot fi
rezolvate prin procesul de implicare. Acestea sunt procesate de procedura
Imply_and_check (care verific i inconsistena).

Rezultatul procedurii Solve() este:

FAILURE dac
1. apare o inconsisten
2. ntr-o stare consistent nu se poate propaga eroarea spre o PO

SUCCESS dac se atinge scopul propus, adic dac s-a propagat eroarea la o
PO i s-au rezolvat toate problemele de justificare a liniilor.

Dac Solve() nu poate determina imediat una din aceste valori, atunci selecteaz una
din problemele curente nerezolvate (o problem de justificare a liniilor sau de
propagare a erorii). Aceast selecie, precum i selecia unei modaliti de rezolvare
a ei, este n principiu arbitrar (din punctul de vedere al obinerii unei soluii
pentru un anumit defect detectabil), cu toate c acest proces de selecie afecteaz
eficiena algoritmului, precum i vectorul de test ce se genereaz.
32

Arborele de decizie permite vizualizarea execuiei backtracking-ului unui


algoritm TG.
Un nod de decizie al acestui arbore denumete o problem pe care
algoritmul ncearc s o rezolve.
O ramur ce pleac dintr-un asemenea nod corespunde unei decizii
(ncercarea unei alternative disponibile de rezolvare a problemei).
Un nod terminal FAILURE al arborelui indic determinarea unei
inconsistene, sau a unei stri ce nu mai permite propagarea defectului spre
ieire.
Un nod terminal SUCCESS indic determinarea unui test.

Execuia algoritmului poate fi trasat printr-o traversare direct a arborelui


de decizie asociat.

33

Este important faptul c algoritmul Solve() este


exhaustiv, adic garanteaz gsirea unui test soluie
dac el exist.

dac algoritmul nu reuete s obin o soluie pentru


un anumit defect, atunci defectul este nedetectabil,
aceasta ntruct el poate enumera implicit toate soluiile
posibile.

34

Datorit naturii exhaustive a procesului de cutare, cazul cel mai defavorabil de


complexitate al algoritmului TG este exponenial (numrul operaiilor executate
este o funcie exponenial a numrului de pori din circuit).
apare n principal n cazul defectelor nedetectabile. Astfel, pentru minimizarea
timpului total TG, n practic algoritmii TG sunt limitai la un anumit numr de
decizii incorecte; la atingerea acestei limite cutarea este abandonat.

Cazul cel mai favorabil al complexitii algoritmului TG apare cnd rezultatul


cutat este obinut fr backtracking-uri (numai prin implicaii); este situaia cnd
numrul operaiilor este o funcie liniar de numrul porilor Este TG pentru
circuite fr fanout i a celor fr fanout reconvergent (toate defectele sunt
detectabile).

complexitatea algoritmilor TG poate fi controlat prin minimizarea numrului de


decizii incorecte pe care le implic, aceasta realizndu-se prin aplicarea principiului
implicaiilor maxime.

35

Este format din toate porile a cror ieire are valoarea x, dar care au
una sau mai multe valori de intrare eronate (D sau D/).
Propagarea erorii const n selectarea unei pori din frontiera D i n
asignarea unor valori pentru intrrile nespecificate astfel nct ieirea
porii s devin de valoare D sau D/ proces numit D-drive.

Dac pe parcursul execuiei algoritmului TG Frontiera D devine


goal, atunci nu se poate realiza propagarea erorii la ieirea circuitului.

36

Frontiera J este format din toate porile ale cror valori


de ieire sunt cunoscute, dar ele nu sunt implicate de
valorile intrrilor lor Evidena componenei acestei
frontiere este util pentru urmrirea problemelor curente
de justificare a liniilor ce nu sunt rezolvate.
Fie c valoarea de control i i inversiunea unei pori din
Frontiera J. Dac valoarea de ieire este ci, atunci cel
puin dou intrri trebuie s aib valoarea x, i nici o
intrare nu poate avea valoarea c.

37

Sarcinile procesului de implicare reprezentat de rutina


Imply_and_check sunt:
Se calculeaz toate valorile ce pot fi determinate prin
implicare
Se face verificarea consistenei i se face asignarea valorilor
Se menine Frontiera D i Frontiera J.

38

Procesul de implicare este de fapt un proces de simulare modificat cu


ntrziere zero.
Ca i n simularea, se ncepe cu asignarea anumitor valori; aceste asignri
pot determina prin implicare noi valori, i aa mai departe, pn nu se mai
genereaz noi valori. Toate valorile asignate sunt procesate printr-o coad
de asignare, similar cozii de evenimente utilizat n simulare.
Spre deosebire de simulare unde propagarea valorilor se face doar spre PO,
n implicare propagarea se poate face i spre PI.
O intrare a cozii de asignare are forma: (l,v,directie) unde v este valoarea
ce se asigneaz liniei l, i directie (inainte, inapoi). Pentru generarea unui
test pentru defectul l s-a-1, avem dou asignri iniiale pentru coada de
asignri: (l,0,inapoi) i (l, D/, inainte).

39

40

n a in t e

D up
&

1
1

x
1

&

0
1

x
x

&

0 F r o n t ie r a J = ( . . . )

x
x

x
x

&

&

&

1
&

(b )
F r o n t ie r a J = ( . . . a )
1

&
x

(a)

(c)
(d )

41

n a in t e

D up

0
x

&

0
x

&

1
1

&

1
1

&

0
x

&

F r o n t ie r a J = ( . . . )

0
x

&

1
x

&

F r o n t ie r a J = ( . . . a )

1
0

&

D
1

&

F r o n t ie r a D = ( . . . a )

D
1

&

D
0

&

F r o n t ie r a D = ( . . . a )

D
0

&

a
a

a
a

(a)

(b )

F r o n t ie r a J = ( . . . )

(c)

F r o n t ie r a J = ( . . . )

(d )

F r o n t ie r a D = ( . . . )

(e)

F r o n t ie r a D = ( . . . )

( f)

42

Dac dup propagarea tuturor valorilor, Frontiera D conine o singur


intrare, s zicem a, atunci singura cale de propagare a erorii prin poart este
a. Implicaiile rezultate din aceast situaie sunt referite prin D-drive unic.

n a in t e

D up

D
x

&

D
1

&

D
D

&

F r o n t ie r a D = ( . . . )

F r o n t ie r a D = ( . . . a )

D
1

&

D
1

&

D
D

&

F r o n t ie r a D = ( . . . )

(c)

F r o n t ie r a D = ( . . . )

(d )

F r o n t ie r a D = ( . . . a )

(a)

(b )

&

F r o n t ie r a D = ( . . . a )

&

43

D-alg()
Begin
if Imply_and_check()=FAILURE then return FAILURE
if (eroarea nu este la PO) then
Begin
if Frontiera D = then return FAILURE
repeat
Begin
Selecteaz o poart G nencercat din Frontiera D
c=valoarea de control a lui G
Asigneaz c/ la fiecare intrare a lui G ce are valoarea x
if D-alg() = SUCCESS then return SUCCESS
end
until s-au ncercat toate porile din Frontiera D
return FAILURE
end
/ eroarea este propagat la o PO /
If Frontiera J = then return SUCCESS
Selecteaz o poart G din Frontiera J
c=valoarea de control a lui G
Repeat
begin
selecteaz o intrare j a lui G ce are valoarea x
Asigneaz c la j
if D-alg() = SUCCESS then return SUCCESS
Asigneaz la j / inverseaz decizia/
end
until sunt specificate toate intrrile lui G
return FAILURE
end

45

S-ar putea să vă placă și