In continuare, este explicata metoda de generare a testelor bazata pe structura circuitului, care este cea mai folosita metoda.
Figura 3 prezinta acelasi circuit cu defectare blocat-in-0. Pentru a detecta defectarea, un sablon (1,1) trebuie plasat la cele doua intrari a si b ale portii AND pentru a face ca iesirea sa sa fie 1. Astfel, defectarea este "activată" şi există "efect de defectare" pe linie.
Aparent, acest efect al defectarii trebuie observat la iesirea circuitului.
Un 0 trebuie pus la cealalta linie de intrare a portii OR pentru a face ca acest efect de defectare sa se "propage" prin aceasta poarta. Pentru a plasa acest 0, linia de intrare c trebuie sa fie "justificata" pentru a fi 0. Cu acest proces, se obtine sablonul de intrare (1,1,0) pentru a fi testat sa detecteze defectarea blocat-in-0.
Figura 3 Generarea de sabloane de testare din structura circuitului
Cei trei pasi de mai sus, activarea defectarii, propagarea defectarii, si justificarea liniei constituie coloana vertebrala a generarii structurale de teste. Ultimul pas, e justificare a liniei, pentru pasii de activare a defectarii si propagare. Uneori este usor a se justifica o linie.
Un exemplu este prezentat in Figura 4 cu o poarta AND:
- pentru a justifica valoarea liniei c = 1 → a si b trebuie sa fie 1 (acest proces este denumit "implicare", deci, c = 1 implica a = b = 1)
- pentru a justifica c = 0 → a = 0 sau b = 0
Uneori, o decizie incorecta poate face sa esueze justificarea valorii unei linii si trebuie incercata o alta decizie.
Figura 4 Implicarea si decizia
Pentru a justifica c=1 → a=1 si b=1 (implicare)
Pentru a justifica c=0 → a=0 sau b=0 (necesita luarea deciziei)
Figura 5 arata un circuit pentru care se va genera un test pentru defectarea blocat-in-1 la iesirea portii G 1. Pentru a activa defectarea, trebuie ales a = b = c =1. Un efect al defectarii 0/1 exista la linia de iesire a portii G 1, iar iesirea lui G 3 este implicata pentru a fi 0.
Exista doua cai pentru a propaga acest efect al defectarii la iesirile acestui circuit:
- prin G 5 spre f 1
- prin G 6 spre f 2.
Daca este aleasa calea G 5 , iesirea lui G 2 trebuie sa fie 1 pentru a lasa efectul defectarii sa treaca prin G 5 → d si a trebuie sa fie 0.
Oricum, mai intai, linia a este setata deja 1, deci apare o contradictie. Astfel trebuie facuta o intoarcere la pasul anterior pentru a face o alta alegere, pentru a propaga efectul defectarii prin poarta G 6 spre iesirea f 2.
Pentru aceasta alegere, la iesirea portii G 4 trebuie plasat un 1 , deci, linia de intrare e trebuie sa fie 0 si linia de iesire a portii G 3 trebuie sa fie 0 care exista deja.
Sablonul (1,1,1,x,0) este astfel generat pentru a detecta defectarea.
Un arbore de decizie este aratat si inserarea figurii poate fi folosita pentru a descrie procesul decizional de mai sus, unde nodurile terminale F reprezinta "failure" (esecul) pasului din proces iar S reprezinta "success" pentru proces. Mai sus, linia d este setata x (nu are importanta) din moment ce nu conteaza ce valoare este plasata pe linie.
Figura 5 Decizia pentru propagarea defectarii
(a) Circuitul exemplu
(b) Arborele sau de decizie
Figura 6(a) este un alt circuit pentru care testul va fi generat la eroarea blocat-in-1 la linia h:
-pentru a activa acesta eroare, e = f =1 si h=0 → o=0;
-pentru a propaga efectul erorilor, liniile q si r trebuie sa fie 1;
-pentru a confirma q=1, amandoua, linia l si linia k trebuie alese ca fiind 1;
- daca l=1, liniile c si d trebuie confirmate ca fiind 1→ m=n=0;
- pentru a justifica q=1,linia l sau linia k trebuie aleasa sa fie 1;
- daca l = 1, linia c si d trebuie sa fie justificate pentru a fi 1, ceea ce implica m = n = 0, care implica in schimb r = 0; oricum, r = 0 este in contradictie cu cerinta anterioara ca r = 1;
- astfel, este necesara o intoarcere la punctul in care s-a luat decizia l = 1; o noua decizie trebuie luata, astfel, k = 1 trebuie aleasa;
- pentru aceasta alegere, liniile a si b trebuie setate 1 si nu cauzeaza nici un conflict.
Un arbore decizional pentru alegerea de mai sus poate fi desenat, lucru care este prezentat in Figura 6(b). Totodata, mai sus, "intoarcerea" permite o explorare sistematica a spatiului complet al alegerilor posibile, si recuperarea din deciziile incorecte.
Figura 6 Decizia pentru justificarea liniei
(a) Circuit exemplu
(b) Arborele sau decizional
In exemplul de mai sus, efectele defectarii 1/0 (sau 0/1) sunt reprezentate printr-un simbol D (sau D'). Pe parcursul fiecarui pas de propagare a defectarii, portile la care ajunge D (sau D') sunt denumite "frontiera D".
De exemplu, cand D' a fost la linia de iesire a portii G1, frontiera D a fost {G5, G6}.
De asemenea, pe timpul fiecarui pas de justificare, setul de porti ale caror valori de iesire sunt cunoscute dar ale caror intrari trebuie justificate sunt denumite "frontiera J".
De exemplu, pentru justificarea liniei q = 1, frontiera J este k = 1 si l = 1.
In ceea ce priveste implicarea, exista reguli simple pentru a face implicarea portilor. Figurile 7(a) si (b) prezinta regulile pentru implicarile inainte si inapoi pentru o poarta AND. In figuri, x reprezinta o valoare necunoscuta cand o linie nu este inca justificata.
Figura 7 Regulile implicarii pentru o poarta AND
(a) Inainte
(b) Dupa
In exemplele de mai sus, se poate defini implicarea ca un pas din cadrul procesului care calculeaza valorile logice ce sunt unic determinate de liniile circuitului.
Implicatiile pot fi:
- locale
- globale
Figurile (a) si (b) arata respectiv implicatiile pentru o poarta AND.
Figura 8 arata trei exemple de implicatii globale care sunt bazate pe D-drive unic, studiul static si, respectiv, cel dinamic. Uzual, pentru un proces de generare de teste, este de dorit maximizarea numarului de implicatii posibile in timpul pasului de asignare a unei valori unei linii.
Figura 8 Implicatiile globale in studiu static si studiu dinamic
In exemplele de mai sus, se poate vedea ca este nevoie sa se adopte o strategie de intoarcere inteleapta si inteligenta care permite o explorare sistematica a spatiului complet de solutii posibile pentru a gasi sablonul. Totodata in timpul procesului de intoarcere, este necesar un mecanism pentru a acoperi valorile liniilor de deciziile incorecte.