Sunteți pe pagina 1din 9

Tema 3.2.

Algoritmul D

Algoritmul D este o metodă structurală de elaborare a testelor, care conduce


la obţinerea unui test de diagnosticare a unui defect în termenii intrărilor şi ieşirii
porţii defecte, generând simultan toate căile posibile de propagare a defectului la
toate ieşirile primare ale circuitului. La fiecare pas al algoritmului se verifică
convergenţa căilor, renunţându-se la caile care nu sunt divergente. În final, se
urmăresc până la intrările primare toate căile de propagare generate, căutându-se în
mod automat valorile logice ale semnalelor de intrare, care evidenţiază manifestarea
defectului la ieşirile primare.
Algoritmul D utilizează noţiunile de cub singular sau cub de definiţie şi cub
D pentru descrierea porţilor logice din circuit.

Cuburi singulare

Funcţionarea porţilor logice poate fi descrisă prin tabele de adevăr. Dacă în


aceste tabele valorile de intrare, ce nu influenţează valoarea semnalului de ieşire, se
vor considera valori indiferente (notate prin simbolul *), vom obţine un nou tabel.
Acest tabel va fi format din cuburi singulare, totalitatea cărora va forma acoperirea
singulară a funcţiei logice, care descrie comportamentul porţii respective.
De exemplu, pentru determinarea cuburilor singulare a porţii logice ŞI cu două
intrări se ţine seama de următoarele considerente:
- este de ajuns ca o singură intrare să fie egală cu 0 pentru a avea la ieşire
valoarea 0;
- este necesar ca ambele intrări să fie egale cu 1 pentru a avea la ieşire valoarea
1.
Obţinerea cuburilor singulare din tabelul de adevăr al porţii logice ŞI cu două
intrări :
x1 x2 y x1 x2 y
0 0 0 0 * 0 CS1
0 1 0  * 0 0 CS2  cuburi singulare
1 0 0 1 1 1 CS3
1 1 1
Elementele cubului singular sunt denumite coordonate sau noduri. De
exemplu, cubul singular 0*0 are nodurile 000 şi 010 cu coordonatele x1, x2 şi y.
Cuburile singulare ale porţilor logice ŞI, SAU, ŞI-NU şi SAU-NU cu două
intrări:
ŞI ŞI-NU SAU SAU-NU
x1 0 * 1 0 * 1 1 * 0 1 * 0
x2 * 0 1 * 0 1 * 1 0 * 1 0
y 0 0 1 1 1 0 1 1 0 0 0 1

Cuburi D de propagare

Pentru a obţine un cub D pentru o poartă logică se intersectează două cuburi


singulare cu valori diferite ale ieşirii conform următoarelor reguli:
0 0 0 ** 0 0
1 11 *  * 11
* ** (2.1)
1 0D
0 1 D

De exemplu, pentru a obţine cuburile D ale porţii logice ŞI (vezi figura 2.9)
putem intersecta CS3 cu CS1 şi CS3 cu CS2:
CS3  1 1 1 CS3  1 1 1
CS1  0 * 0 CS 2  *0 0
CS3 CS1  D1D CS3 CS 2  1DD

Cubul D exprimă dependenţa semnalului de la ieşirea porţii logice faţă de cea


aplicată la una din intrările ei. D poate avea două valori: 0 sau 1. De exemplu, cubul
D1D are nodurile 010 şi 111. Aceasta mărturiseşte despre faptul că, dacă poarta e
corectă, atunci semnalul de la ieşirea y este determinat doar de semnalul de la
intrarea x1, x2 fiind fixat în 1 logic. Astfel, apariţia defectului x 11 (x10) este
detectată la ieşirea porţii respective.
Dacă semnalul oricărei coordonate a cubului D , notat prin D , are valoarea
1(0), atunci toate celelalte coordonate, notate prin D , vor fi egale cu 1(0), iar
semnalele coordonatelor, notate prin D , vor fi egale cu 0(1).
Se deosebesc cuburi D singulare şi cuburi D multiple. În cuburile D
singulare doar o singură intrare e notată prin D sau D . În cuburile D multiple două
sau mai multe intrări sunt notate prin simbolurile D sau D . Necesitatea utilizării
cuburilor D multiple se explică prin faptul că la intrările unei porţi logice se pot
întâlni mai multe semnale D , atunci când în circuit sunt prezente ramificaţii.
Cuburile D ale porţilor logice se mai numesc cuburi D de propagare (CDP).
CDP ale porţilor logice ŞI, SAU, ŞI-NU şi SAU-NU cu două intrări.

ŞI ŞI-NU SAU SAU-NU


x1 D 1 D D D 1 D D D 0 D D D 0 D D

x2 1 D D D 1 D D D 0 D D D 0 D D D

y D D D 0 D D D 1 D D D 1 D D D 0

Cuburi D ale defectelor (CDD)

Cuburile D ale defectelor permit exprimarea testelor în termenii intrării şi


ieşirii porţii defecte. Ele se utilizează atunci când este necesar a testa nodurile interne
ale circuitului. În CDD simbolul D e interpretat ca semnal 1 logic pentru starea
corectă şi ca semnal 0 logic pentru starea defectă. Simbolul D e interpretat invers –
0 logic pentru starea corectă şi 1 logic pentru starea defectă.
CDD pentru un nod blocat la 0 poate fi obţinut prin intersecţia fiecărui cub
singular cu valoarea ieşirii egală cu 1 logic pentru poarta corectă cu fiecare cub
singular al cărei ieşire este egală cu 0 logic pentru o poartă defectă. În mod similar,
CDD pentru un nod blocat la 1 poate fi obţinut prin intersecţia fiecărui cub singular
cu valoarea ieşirii egală cu 0 logic pentru poarta corectă cu fiecare cub singular al
cărei ieşire este egală cu 1 logic pentru o poartă defectă.
CDD ale porţilor logice ŞI, SAU, ŞI-NU şi SAU-NU.
Defecte ŞI ŞI-NU SAU SAU-NU XOR
x1 x 2 y x1 x2 y x1 x 2 y x1 x2 y x1 x2 y
0 0 * D 1 * D 1 0 D
1 1 D 0 0 D
* 0 D * 1 D 0 1 D
1 0 * D 1 * D 0 0 D
1 1 D 0 0 D
* 0 D * 1 D 1 1 D

Intersecţia D

Generarea unei căi de propagare a defectului spre ieşirea primară a circuitului


este realizată prin intermediul intersecţiei D .
Fie date două cuburi D :
A  (a1 , a2 , , an )

B  (b1 , b2 , , bn ) ,

unde ai , bi  {1, 0,*, D, D}, i  1, n .


Intersecţia D se efectuează doar pentru coordonate identice conform
următoarelor reguli:
1) * ai  ai
D

* b b
D i i

2) Dacă ai  * şi bi  * , atunci
a , pentru a i  bi 
ai bi   i .
D
 , pentru ai  bi 
Intersecţia D reprezintă o formă de descriere a propagării defectului de la
nodul analizat spre ieşirea primară a circuitului.
Să analizăm o cale arbitrară, selectată pentru propagarea defectului x10
x1  0 G5 G6
x2 G7
x3
x4

Utilizând intersecţia D dintre cuburile D ale porţilor logice din calea


respectivă vom obţine cubul D al circuitului .

Formarea cubului D al circuitului


Cuburi Coordonate
x1 x2 x3 x4 G5 G6 G7
CDP5 D 1 * * D * *
CDP6 * * 0 * D D *
CDP7 * * * 1 * D D

CD al
D 1 0 1 D D D
circuitului

Cubul D obţinut ( D , 1, 0, 1, D , D , D ) verifică conexiunile x1, G5, G6 în baza


ieşirii G7, fiind fixate valorile semnalelor intrărilor primare x2, x3, x4.
Deoarece D poate lua două valori logice – 0 şi 1, cubul D al circuitului se
foloseşte la detectarea a două defecte: x10 şi x11.
Pentru x10, considerăm D =1 şi obţinem testul:
Tx10=(x1, x2, x3, x4; G7)=(1, 1, 0, 1; 1).
Pentru x11, considerăm D =0 şi obţinem testul:
Tx11=(x1, x2, x3, x4; G7)=(0, 1, 0, 1; 0).
Etapele algoritmului D

Pentru început se determină cuburile singulare (CS) şi cuburile D de


propagare (CDP) a fiecărei porţi logice din circuitul logic combinaţional (CLC).
Generarea testelor prin metoda algoritmului D constă din următoarele etape:
1) Construirea cubului D al defectului (CDD);
2) Propagarea defectului prin efectuarea intersecţiei CDD cu CDP a porţilor
logice de pe calea aleasă până la ieşirea primară;
3) Verificarea consistenţei (trecerea înapoi) prin intersecţia cubului rezultant
cu CS ale porţilor logice, care nu au fost utilizate la prima intersecţie;
4) Repetarea etapelor 1-3 până când se obţin testele pentru toate defectele
analizate pe toate căile singulare şi multiple;
5) Minimizarea testelor.

La etapa de verificare a consistenţei se pot obţine elemente vide pe anumite


coordonate. În acest caz întreaga intersecţie se consideră vidă şi se renunţă la calea
dată, deoarece ea este inconsistentă.

Să analizăm mai detaliat primele trei etape de generare a testelor pentru


circuitul logic prezentat.

G5 G7
x1
G9
x2
G6 G8

x3

x4

Testul pentru detectarea defectelor intrării primare x 10 şi x11 pe calea


(5,7,9):
Et. Explicaţii Cub Coordonate
1234 5 6 7 8 9
D* ** * * * * *
Et. 1 CDD C1
D 1* * D * * * *
Et. 2 Intersectăm C1 cu CDP al G5 C2
D1 ** D 0 D * *
Intersectăm C2 cu CDP al G7 C3
D1 ** D 0 D 1 D
Intersectăm C3 cu CDP al G9 C4
D1 ** D 0 D 1 D
Et. 3 Intersectăm C4 cu CS al G8 C5
D1 0* D 0 D 1 D
Intersectăm C5 cu CS al G6 C6

Din cubul rezultant C6 se obţin două teste:


D=1 Tx20=(x1,x2,x3,x4;8)=(1,1,0,*;1) şi
D=0 Tx21=(x1,x2,x3,x4;8)= (0, 1 ,0,*;0).
Testul pentru detectarea defectului conexiunii interne G60 pe calea (8,9).
Deoarece în CDD ale porţilor logice simbolul D poate lua doar valoarea 1, iar D
doar valoarea 0, nu este posibil a detecta printr-un singur test defectele G60 şi G61,
fiind necesare două CDD diferite.

Et. Explicaţii Cub Coordonate

1234 567 8 9

Et. 1 CDD C1=CDD C1 *11 * *D * * *

Et. 2 Intersectăm C1 cu CDP al G8 C2 *111 *D * D *

Intersectăm C2 cu CDP al G9 C3 *111 0 D 1 D D

Et. 3 Intersectăm C3 cu CS al G7 C4 *111 0 D 1 D D

Intersectăm C4 cu CS al G5 C5 0111 0 D 1 D D

Din cubul rezultant C4 se obţine următorul test:


TG50=( x1,x2,x3,x4;8)= (0,1,1,1;1).
Pentru a obţine testul detectării defectului G61 vom considera
CDD=(x2,x3,6)=(0,*, D ) sau CDD=(x2,x3,6)=(*,0, D ).
Algoritmul D este o metodă bine formalizată şi poate fi uşor programată, ceea
ce permite automatizarea procesului generării testelor. În prezent există mai multe
modificaţii ale algoritmului D , care permit accelerarea procesului de generare a
testelor. De exemplu, procedura PODEM, în care fiecare pas de propagare este urmat
de paşii de trecere înapoi până la intrările primare ale circuitului, depistându-se mai
repede căile inconsistente. Pe lângă aceasta, spre deosebire de metoda activării unei
căi, algoritmul D garantează obţinerea testului, dacă acesta există, datorită faptului
că sunt analizate toate căile de propagare a defectului, inclusiv şi cele multiple.

Exemplu. Vom obţine testele pentru intrările primare pe toate căile posibile,
inclusiv şi cele multiple.
Intrări primare Conexiuni interne Ieş.
Nr Def. Calea
x1 x2 x3 x4 5 6 7 8 9
1 x1 D 1 0 * D 0 D 1 D 5,7,9
2 x2 1 D 0 * D 0 D 1 D 5,7,9
3 х2 0 D 1 1 0 D 1 D D 6,8,9
4 х2 1 D 1 1 D D 1 D D 5-6,7-8,9
5 х2 D 1 1 1 D 6,7,9
1 1 1 D   Cale inconsistentă
6 x3 1 1 D 0 1 D D 1 D 6,7,9
7 x3 0 1 D 1 0 D 1 D D 6,8,9
8 x3 1 D 1 1 D D D 1 5,7,9
Cale convergentă
9 x4 * 1 1 D * 1 1 D D 8,9
Din cele 7 cuburi rămase, pot fi obţinute 14 teste, înlocuind simbolul D cu
valorile 0 şi 1, în dependenţă de defectul analizat .

Tabelul iniţial al testelor

Testul Testul
Nr. Def Nr. Def
x1, x2, x3, x4 ; 9 x1, x2, x3, x4; 9
1 x10 1 1 0 * 1 8 x21 1 0 1 1 0
2 x11 0 1 0 * 0 9 х30 1 1 1 0 0
3 x20 1 1 0 * 1 10 х31 1 1 0 0 1
4 x21 1 0 0 * 0 11 х30 0 1 1 1 1
5 x20 0 1 1 1 1 12 х31 0 1 0 1 0
6 x21 0 0 1 1 0 13 х40 * 1 1 1 1
7 x20 1 1 1 1 1 14 х41 * 1 1 0 0

Tabelul testelor minimizate


Nr Nr. t.iniţiale x1, x2, x3, x4; 9 Defectele detectate
1 1,3,10 1 1 0 0 1 x10, x20, x31
2 2,12 0 1 0 1 0 x11, x31
3 3,10 1 1 0 0 1 x20, х31
4 4 1 0 0 0 0 x21
5 5,11,13 0 1 1 1 1 x20, x30, x40
6 6 0 0 1 1 0 x21
7 8 1 0 1 1 0 x21
8 9,14 1 1 1 0 0 x30, x41

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