133
Sadržaj I Sadržaj 1. UVOD .......................................................................................... 1 2. Pouzdani sistemi ......................................................................... 7 2.1. Trendovi u razvoju elektronskih proizvoda sa aspekta pouzdanosti ........................ 7 2.2. Defekti u integrisanim kolima .............................................................................. 10 2.2.1. Defekt, greška, otkaz ..................................................................................... 11 2.2.2. Klasifikacija defekta ...................................................................................... 11 2.2.3. Modeli defekata............................................................................................. 15 2.2.4. Modeli grešaka .............................................................................................. 15 2.2.5. Manifestacija tranzijentnih defekata u digitalnim kolima ............................... 16 2.3. Tehnike projektovanja sistema tolerantnih na defekte ........................................... 18 2.3.1. Hardverska redundansa ................................................................................. 21 2.3.2. Informaciona redundansa .............................................................................. 25 2.3.3. Vremenska redundansa.................................................................................. 25 2.3.4. Softverska redundansa ................................................................................... 26 2.4. Oblasti primene sistema otpornih na defekte ........................................................ 27 3. Konkurentna detekcija greške ................................................ 29 3.1. On-line testiranje.................................................................................................. 29 3.2. Principi konkurentne detekcije greške .................................................................. 30 3.3. Principi samoprovere i kodovi za detekciju greške ............................................... 31 3.3.1. Kôd parnosti .................................................................................................. 33 3.3.2. Kodovi za detekciju višestrukih grešaka ........................................................ 35 3.3.2.1. Neuređeni kodovi za detekciju jednosmernih grešaka ............................. 35 3.3.2.2. Kodovi za detekciju t jednosmernih grešaka ........................................... 37 3.3.3. Kodovi ostatka .............................................................................................. 38 3.3.4. AN kodovi .................................................................................................... 39 3.3.5. Kodovi dupliciranja ....................................................................................... 39 3.3.6. Kontrolna suma ............................................................................................. 39 3.4. Klasifikacija kola sa samoproverom ..................................................................... 39 3.4.1. Kola sa potpunom samoproverom ................................................................. 41 3.4.2. Kola koja su potpuno sigurna u prisustvu defekta .......................................... 42 3.4.3. Kola sa potpunim razdvajanjem kodova ........................................................ 43 3.5. Kola za proveru koja imaju osobinu potpune samoprovere ................................... 44

Sadržaj 1. UVOD1 2. Pouzdani sistemi - es.elfak.ni.ac.rses.elfak.ni.ac.rs/Papers/Projektovanje SC mreza.pdf · su). Ali i pored toga, činjenica je da u toku rada ovih sistema može

Embed Size (px)

Citation preview

Sadržaj

I

Sadržaj

1. UVOD .......................................................................................... 1

2. Pouzdani sistemi ......................................................................... 7

2.1. Trendovi u razvoju elektronskih proizvoda sa aspekta pouzdanosti ........................7

2.2. Defekti u integrisanim kolima ................................ ................................ ..............10

2.2.1. Defekt, greška, otkaz ................................ ................................ .....................11

2.2.2. Klasifikacija defekta................................ ................................ ...................... 11

2.2.3. Modeli defekata................................ ................................ ............................. 15

2.2.4. Modeli grešaka................................ ................................ .............................. 15

2.2.5. Manifestacija tranzijentnih defekata u digitalnim kolima ............................... 16

2.3. Tehnike projektovanja sistema tolerantnih na defekte................................ ...........18

2.3.1. Hardverska redundansa ................................ ................................ .................21

2.3.2. Informaciona redundansa ................................ ................................ ..............25

2.3.3. Vremenska redundansa................................ ................................ ..................25

2.3.4. Softverska redundansa................................ ................................ ...................26

2.4. Oblasti primene sistema otpornih na defekte ................................ ........................ 27

3. Konkurentna detekcija greške ................................................ 29

3.1. On-line testiranje................................ ................................ ................................ ..29

3.2. Principi konkurentne detekcije greške ................................ ................................ ..30

3.3. Principi samoprovere i kodovi za detekciju greške ................................ ...............31

3.3.1. Kôd parnosti................................ ................................ ................................ ..33

3.3.2. Kodovi za detekciju višestrukih grešaka ................................ ........................ 35

3.3.2.1. Neuređeni kodovi za detekciju jednosmernih grešaka ............................. 35

3.3.2.2. Kodovi za detekciju t jednosmernih grešaka ................................ ...........37

3.3.3. Kodovi ostatka ................................ ................................ .............................. 38

3.3.4. AN kodovi ................................ ................................ ................................ ....39

3.3.5. Kodovi dupliciranja................................ ................................ ....................... 39

3.3.6. Kontrolna suma................................ ................................ ............................. 39

3.4. Klasifikacija kola sa samoproverom................................ ................................ .....39

3.4.1. Kola sa potpunom samoproverom ................................ ................................ .41

3.4.2. Kola koja su potpuno sigurna u prisustvu defekta ................................ ..........42

3.4.3. Kola sa potpunim razdvajanjem kodova ................................ ........................ 43

3.5. Kola za proveru koja imaju osobinu potpune samoprovere................................ ...44

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

II

3.5.1. Strukture kola za proveru ................................ ................................ ..............44

3.5.1.1. Kolo za proveru jednakosti ................................ ................................ .....45

3.5.1.2. Kolo za proveru sa dva izlaza ................................ ................................ .45

3.5.1.3. Komparator sa potpunom samoproverom................................ ................48

3.5.1.4. Kolo za proveru izdvojivih kodova ................................ ......................... 48

3.6. Sekvencijalna kola sa samoproverom ................................ ................................ ...50

3.6.1. Defekti u sekvencijalnim kolima ................................ ................................ ...51

3.6.2. Principi samoprovere u sekvencijalnim kolima................................ ..............52

3.7. Sistemi sa samoproverom................................ ................................ .....................53

3.8. Manifestacija grešaka na nivou sistema................................ ................................ 54

4. Projektovanje logičkih mreža sa samoproverom.................. 57

4.1. Razlozi i značaj projektovanja kola sa samoproverom................................ ..........57

4.2. Osnovne metode za projektovanje kola sa samoproverom ................................ ....57

4.3. Metoda projektovanja mreža sa samoproverom na osnovu VHDL-a.....................60

4.4. Projektovanje kombinacionih mreža................................ ................................ .....64

4.4.1. Tehnike dupliciranja kola ................................ ................................ ..............66

4.4.2. Tehnike primene Berger-ovog koda................................ ............................... 69

4.4.3. Tehnike primene Bose-Lin-ovog koda................................ ........................... 73

4.4.4. Tehnike primene koda parnosti................................ ................................ ......75

4.5. Tehnike za projektovanje sekvencijalnih mreža................................ ....................78

4.5.1. Model sekvencijalne mreže ................................ ................................ ...........78

4.5.2. Sekvencijalne mreže sa samoproverom................................ .......................... 79

4.5.2.1. Tehnike dupliciranja ................................ ................................ ...............80

4.5.2.2. Tehnike primene Berger-ovog, Bose-Lin-ovog i koda parnosti ...............80

4.6. Sinteza kombinacionih i sekvencijalnih mreža sa samoproverom ......................... 83

5. Implementacija mreža sa samoproverom..............................85

5.1. Digitalna integrisana kola................................ ................................ .....................85

5.1.1. Klasifikacija PLD kola ................................ ................................ ..................86

5.1.1.1. CPLD arhitekture................................ ................................ ....................87

5.1.1.2. FGPA arhitektura................................ ................................ ....................89

5.2. Projektovaje pomoću PLD-a ................................ ................................ ................91

5.3. Primena PLD kola kod projektovanja pouzdanih sistema ................................ .....93

5.4. Projektovaje kola sa samoproverom pomoću PLD-a................................ .............95

5.5. Merila kvaliteta kod PLD kola ................................ ................................ .............97

Sadržaj

III

5.5.1. Površina kao mera kvaliteta................................ ................................ ...........97

5.5.2. Procena performansi................................ ................................ ...................... 97

5.5.3. Mere kvaliteta kod CPLD kola ................................ ................................ ......98

5.5.4. Mere kvaliteta FPGA kola ................................ ................................ .............99

5.5.5. Merila kvaliteta koje mi koristimo................................ ............................... 101

5.6. Implementacija kola sa samoproverom na CPLD i FPGA tehnologije ................ 101

5.7. Poređenje dobijenih rezultata ................................ ................................ .............108

6. Zaključak ................................................................................ 111

7. Literatura ................................................................................ 113

Dodatak A ................................................................................... 121

Dodatak B....................................................................................123

Dodatak C ................................................................................... 125

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

IV

Korišćene skraćenice

V

Skraćenice koje se koriste u ovoj tezi

ASIC - Application Specific Integrated Circuits - integrisana kola specifične aplikacije CAD - Computer Aided Design - projektovanje uz pomoć računara CED - Concurrent Error Detection - konkurentna detekcija greške CLB - Configuration Logic Blocks - konfiguracioni logički blokovi CPLD - Complex Programmable Logic Devices - složena programabilna logička kola CRF - Combinationally Redundant Faults - kombinaciono redundantni defekti DFT - Design For Testability - projektovanje za testabilnost EDIF - Electronic Design Interchange Format - format za razmenu elektronskog dizajna ECC - Error Correcting Code - kôd za korekciju greške ES - Embedded System - sistem sa ugrađenim računarom FIT - Failure-In-Time - broj otkaza koji se javljaju u jedinici vremena FPGA - Field Programmable Gate Array - programabilna logička polja koja se

programiraju na licu mesta FS - Fault-Secure - sigurnost u prisustvu defekta FSM - Finite State Machine - konačni automat FT - Fault Tolerance - visoka pouzdanost FTMP - Fault Tollerant Multiprocessor - visoko pouzdani multiprocesorski sistem HDL - Hardware Description Language - jezik za opis hardvera IC - Integrated Circuit - integrisano kolo IOB - Input/Output Blocks - ulazno-izlazni blokovi LSI IC - Large-Scale Integration Integrated Circuit - integrisana kola visokog stepena

inegracije LUT - Look Up Table - tabela pretraživanja ITRS - International Technology Roadmap for Semiconductors - ime neprofitne

međunarodne organizacije MIS - Multiple-level logic optimization System - alat za višenivovsku logičku

optimizaciju kombinacionih kola MPSoC - Multiprocessor System-on-a-Chip - višeprocesorski sistem na čipu MSI IC - Medium-Scale Integration Integrated Circuit - integrisana kola srenjeg stepena

inegracije NMR - N-Modular Redundancy - N-modularna redundansa PAL - Programmable Array Logic - logičko AND-OR polje kod koga je AND matrica

programabilna, a OR matrica fiksna PFS - Path Fault Secure - sigurnost u prisustvu defekta na putu PLA - Programmable Logic Array - logičko AND-OR polje kod koga se obe matrice

mogu programirati PLD - Programmable Logic Devices - programabilna logička kola REDWC - REcomputing with Duplication With Comparasion - ponovno izračunavanje koje

koristi udvostručavanje sa poređenjem

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

VI

RESO - REcomputing with Shifted Operands - ponovno izračunavanje sa pomerenim operandima

RESWO - REcomputing with SWapped Operands - ponovno izračunavanje sa preokrenutim operandima

ROM - Read Only Memory - samoočitavajuća memorija RTL - Register Transfer Level - prenos na nivou registara SER - Soft Error Rate - procenat soft greške SC - Self-Checking - samoprovera SCC - Self-Checking Checker - kolo za proveru sa mogućnošću samoprovere SEU - Single-Event Upset - efekat strujnog impulsa, koji je posledica čestice zračenja SFS - Strongly Fault-Secure - sigurnost u prisustvu defekta pod strogim uslovima SIC - Standard Integrated Circuits - standardna integrisana kola SIFT - Software Implemented Fault Tollerant - softverski implementirana visoka

pouzdanost SIS - System for Sequential Circuit SyntheSIS - alat za sintezu i optimizaciju

sekvencijalnih kola

SoC - System-on-a-Chip - sistem na čipu SPLD - Simple Programmable Logic Devices - jednostavna programabilna logička kola SRF - Sequentially Redundant Faults - sekvencijalno redundantni defekti SSI IC - Small-Scale Integration Integrated Circuit - integrisana kola niskog stepena

inegracije ST - Self-Testing - samotestiranje STC - Self-Testing Checker - samotestirajuće kolo za proveru TAP - Test Access Port - port za testiranje TMR - Triple Modular Redundancy - trostruka modularna redundansa TRC - Two Rail Checker - kolo za proveru sa dva izlaza TRGC - TRansceiver Generator/Checker - primopredajnik koji generiše i proverava

dodatne bitove TSC - Totally Self-Checking - potpuna samoprovera TSCC - Totally Self-Checking Checker - kolo za proveru koje ima mogućnost potpune

samoprovere VHDL - (Very high speed integrated circuits) Hardware Description Language - jezik za

opis hardvera visokog nivoa VLSI - Very Large Scale Integration - visok stepen integracije

Reference autora koje se odnose na ovu tezu

VII

Reference autora koje se odnose na ovu tezu

[Stan102] T. Stanković, M. Stojčev, "Parity Error Detection in Transceiver Circuit", IV simpozijum Industrijska elektronika INDEL 2002, Zbornik radova, Banja Luka, November 2002, pp. 67-73

[Stan202] M. Stojčev, T. Stanković, "Parity Error Detection in Embedded System", 28. naučno stručni skup, HIPNEF 2002, Zbornik radova, Vrnjačka Banja, October 2002, pp. 215-220

[Stan103] Tatjana R. Stanković, Mile K. Stojčev, "Implementation of Totally Self-checking Combinational Logic on FPGA and CPLD Circuits Using VHDL Descriptions", Cyprus Computer Society, Vol. 5, No. 5, June, 2003, pp. 40-44

[Stan203] T.R. Stanković, M.K. Stojčev, G.Lj. Djordjević, "Design Of Self-Checking Combinational Circuits", 6th International Conference on Telecommunications in Modern Satellite, TELSIKS 2003, Niš, Serbia and Montenegro, October 1-3, 2003, pp. 763-768

[Stan303] T.R. Stanković, M.K. Stojčev, G. Lj. Djordjevic, "On VHDL synthesis of self-checking two-level combinational circuits", Third Triennial International Conference on Applied Automatic Systems, Ohrid, Republic of Macedonia, September 18-20, 2003, pp. 225-230

[Stan403] Tatjana R. Stanković, Mile K. Stojcev, Goran Lj. Djordjević, "Design of totally self-checking combinational circuits based on VHDL description", Proc. XLVII Conference ETRAN 2003, Herceg Novi, Serbia and Montenegro, June 2003, pp. 39-42

[Stan104] Tatjana R. Stanković, Mile K. Stojčev, Goran Lj. Djordjević, "Design of Totally Self-Checking Combinational Circuits Based on VHDL Description", ETF Journal of Electrical Engineering, Vol. 12, No. 1, May 2004, pp. 153 –161

[Stan204] T.R. Stanković, M.K. Stojčev, G.Lj. Djordjević, "On VHDL Synthesis of Self-Checking Two-Level Combinational Circuits", Facta Universitatis (Niš), Series: Electronics and Energetics, Vol. 17, No. 1, April 2004, pp. 69-80

[Stoj201] M. Stojčev, T. Stanković, "Parity error detection in embedded system", Second International Conference on Informatics and Information Technology, CiiT 2001, Molika, December 20-23, 2001, pp. 293-307

[Stoj104] M.K. Stojčev, G.Lj. Djordjević, T.R. Stanković, "Implementation of self-checking two-level combinational logic on FPGA and CPLD circuits", Microelectronics Reliability, Vol. 44, Issue 1, Elsevier, January 2004, pp. 173-178

[Stoj204] M.K. Stojčev, G.Lj. Djordjević, T.R. Stanković, "VHDL-Based Design of FSM with Concurrent Error Detection Capability", Proc. 24th International Conference on Microelectronics, MIEL 2004, Vol. 2, Niš, Serbia and Montenegro, May, 2004, pp. 759-762

[Djor04] G.Lj. Djordjević, M.K. Stojčev, T.R. Stanković, "Approach to partially self-checking combinational circuits design", Microelectronics Journal, Vol. 35, Elsevier, December 2004, pp. 945-952

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

VIII

1. Uvod

1

1. UVOD

Motivacija

Korišćenje digitalnih sistema proteže se ka svim poljima današnjeg života. Embedded sisteme (ES) srećemo, takoreći u svim oblastima, počev od aparata za domaćinstvo kakve su mikrotalasne peći i veš mašine, pa sve do složenih aplikacija kakve imamo kod automobila, lokomotiva, satelita, medicinskih uređaja, itd. Prvenstveno zbog mesta na kome rade kao i uloge koju imaju, ovakve sisteme karakteriše dobra operativnost u radu (uvek su spremni za rad), visoka produktivnost (malo troše i efikasni su), i jako izražena fleksibilnost (prilagodljivi su). Ali i pored toga, činjenica je da u toku rada ovih sistema može doći do otkaza.

Projektovanje embedded sistema usmereno je danas ka jednom čipu, odnosno SoC (System-on-a-Chip) dizajnu, koji obuhvata različite funkcionalne blokove kao što su mikroprocesori, memorije, interfejsi i drugo. Kompleksnost takvih sistema uzrokuje razne probleme u projektovanju i eksploataciji. Kao i svaki uređaj, i ES-mi su podložni kvarovima i otkazima. Neki od defekata nastaju još u fazi projektovanja prvenstveno zbog nedoslednosti i nesagledavanja svih činjenica od strane projektanata, drugi mogu biti posledica uticaja spoljnih efekata kakvi su defekti u proizvodnji, treći se javljaju kao posledica uticaja ambijentalnih uslova (povećani ili smanjeni mrežni napon, udari groma, smetnje od rada velikih potrošača, i dr.), četvrti nastaju usled namernog/nenamernog nekorektnog manipulisanja sa uređajem, itd.

Sa druge strane, napredak u tehnologiji integrisanih kola uslovio je znatno povećanje kompleksnosti sistema koji se realizuju kao jedan VLSI čip. Prelazak sa standardnih ASIC kola na SoC uslovio je razvoj novih metoda projektovanja, arhitektura sistema i kola, kao i tehnika testiranja. Usled smanjenja dimenzija komponenti, povećanja broja tranzistora na čipu, smanjenja nivoa napona napajanja i povećanja brzine rada dolazi do redukcije margina šuma. Zbog toga se, u toku normalnog rada ovih sistema, javljaju razni tipovi defekata, koji su uzrokovani delovanjem neutrona i alfa čestica, preslušavanjem, gličevima, povećanim kašnjenjem ili oscilacijama signala, a predstavljaju izvore tranzijentnih grešaka [Zngh00]. Drugim rečima, kako kompleksnost komponenata raste tako one postaju osetljivije na tranzijentne defekte, a saglasno tome, njihova pouzdanost opada [Pfla00]. Zbog toga, visok nivo pouzdanosti postaje zahtev svakog digitalnog sistema čija je korektna funkcionalnost u direktnoj vezi sa ljudsom bezbednošću i ekonomskim investicijama.

Pored toga što se mogućnost pojave defekata nikada ne može u potpunosti eliminisati, ipak postoji jasna potreba da sistem bude pouzdan u širem smislu (dependable). Da bi sistem bio pouzdan u širem smislu, on mora da bude dostupan za korišćenje uvek kada je to potrebno (available), mora da odezbedi kontinuitet usluga za sve vreme korišćenja (reliable), otkaz sistema ne sme da ima katastrofalne posledice na okolinu (safe), i mora da sačuva poverljivost informacija (secure) [Lapr92]. Iako se mogu razmatrati nezavisno, svi ovi aspekti pouzdanosti su međusobno zavisni.

Pouzdanost sistema u širem smislu može se ostvariti samo ako se uzmu u obzir sve faze razvoja sistema. O pouzdanosti mora se voditi računa kako u fazi projektovanja, implementacije i funkcionisanja sistema tako i u fazi održavanja i poboljšanja sistema. U fazi

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

2

projektovanja, primenom tehnika izbegavanja defekata (fault avoidance) može se minimizirati njihovo pojavljivanje i na taj način povećati pouzdanost. U fazi implementacije za povećanje pouzdanosti neophodna je primena tehnike odstranjivanja defekata (fault removal). U toku samog rada sistema, za njegovu pouzdanost neophodna je tehnika tolerancije defekata (fault tolerance). Sistem sa osobinom tolerancije defekata, (Fault Tolerant - FT), mora da ima mogućnost detekcije, lokalizacije i maskiranja defekata i povratka sistema u normalno stanje.

U cilju očuvanja zadovoljavajućeg nivoa pouzdanosti, kao obavezan uslov nameće se projektovanje integrisanih kola koja mogu obavljati svoju funkciju i nakon pojave defekta. Za ovakva kola se kaže da imaju mogućnost tolerancije defekata. Drugim rečima, tolerancija defekata je osobina sistema da nastave izvršenje svojih aktivnosti sa istim ili redukovanim nivoom performansi, ali u svakom slučaju na način koji će biti bezbedan za okolinu, uprkos neočekivanoj pojavi hardverske ili softverske greške. U suštini, cilj tolerancije defekata je da zaštiti sistem od prostiranja defekata do njegovog izlaza, a samim tim i od otkaza.

FT osobina predstavlja zbog toga imperativ koji treba da ispuni svaki ES čija je korektna funkcionalnost povezana sa bezbednošću ljudskih života (sistemi koji rade u hazardnim uslovima rada, kakvi su rudnici sa jamskom eksploatacijom uglja) ili velikim ekonomskim investicijama (sateliti, lokomotive). Jednom rečju, tolerancija defekata je neophodna osobina onih aplikacija u kojima je greška u radu sistema neprihvatljiva [Entr101]. Iz tog razloga, sistemi za kritične aplikacije, zasnovani na čipovima koji imaju veliku brzinu rada i mogućnost tolerancije defekata, zahtevaju ugradnju tehnike samoprovere (Self-Checking - SC), zasnovane na FT tehnici [Lala01].

Osnovu FT tehnike predstavlja koncept redundanse. U zavisnosti od toga šta je potrebno za ispravan rad sistema, redundansa može biti dodavanje hardverskih resursa, vremena ili informacije iznad nivoa koji neophodan za obavljanje zahtevanih funkcija. Većina FT sistema zasniva se na izračunavanju iste funkcije u dva ili više podsistema, tako da ako jedan otkaže, drugi nastavlja sa radom [John89]

FT tehnika se može primeniti na tri različita nivoa. Prvi nivo je hardverska tolerancija defekata koja podrazumeva dodatne procesore, dodatnu memoriju, i druge komponente. Drugi nivo je softverska tolerancija defekata koja se zasniva na mehanizmima kao što su tačke provere, procedure za oporavak, i više verzija programa. Treći nivo je sistemska tolerancija defekata čiji mehanizmi zavise od specifičnosti aplikacije.

FT tehnika najčešće koristi hardversku redundansu, kao što je duplikacija sa poređenjem, ali ova metoda je, zbog visoke cene, neprihvatljiva za većinu aplikacija. SC kola koriste alternativnu FT tehniku koja kombinuje informacionu i hardversku redundansu i omogućava toleranciju defekata uz mnogo manje povećanje hardvera. SC kola imaju mogućnost da verifikuju ispravnost rezultata u toku normalnog rada, bez narušavanja osnovne funkcije sistema. Tolerancija defekata kod ovakvih kola podrazumeva konkurentnu (on-line) detekciju defekta i ponavljanje izračunavanja nakon detektovanog defekta. Naime, standardnim tehnikama off-line testiranja ne mogu se detektovati tranzijentni uzroci grešaka, jer se testiranje vrši u toku startovanja sistema što omogućava detekciju efekata permanentnih defekata. Efekti tranzijentnih defekata mogu se detektovati jedino on-line testiranjem koje se vrši u toku rada sistema. Na ovaj način se može garantovati pouzdanost u radu, pa zato on-line detekcija greške postaje neophodna karakteristika mnogih integrisanih kola [Pfla00].

Kola sa samoproverom sastoje se od funkcionalne jedinice, čiji su izlazi kodirani nekim od kodova za detekciju greške, i kola za proveru (checker) koje verifikuje ispravnost podatka na izlazu funkcionalne jedinice. Kolo za proveru ima mogućnost da generiše signal za indikaciju greške u slučaju da se defekt javi u funkcionalnoj jedinici ili u samom kolu za

1. Uvod

3

proveru. Funkcionalna jedinica može biti kombinaciono ili sekvencijalno kolo. Za kodiranje izlaza funkcionalne jedinice najčešće se koriste izdvojivi kôdovi kao što su: Berger-ov, Bose-Lin-ov i kôd parnosti. Primena ovih kôdva određuje tehniku za generisanje SC kola. Današnje tehnike za projektovanje SC kola usmerene su ka višenivovskoj implementaciji logičkih funkcija pomoću programabilnih logičkih kola, uz ispunjenje uslova minimalne površine [JhaN93], [DeK94], [Toub94], [Sapo97].

U početku su SC tehnike korišćene samo u sistemima koji zahtevaju visok nivo pouzdanosti. Zbog relativno malog broja takvih sistema korišćen je manuelni način projektovanja. Međutim, kako razni uzroci defekata imaju sve veći uticaj na sisteme razvijene savremenom tehnologijom, postoji jasna potreba za integracijom FT tehnike i u okviru aplikacija široke potrošnje. Samim tim, potrebni su i alati za projektovanje kola sa većom pouzdanošću. Takvi alati moraju da budu kompatibilni sa postojećim načinom projektovanja.

Metode za projektovanje SC kola mogu se podeliti u dve kategorije: niskog i visokog nivoa. Metode niskog nivoa odnose se na modifikaciju procesa sinteze kombinacionih i sekvencijalnih kola, kako bi svaki interni defekt uzrokovao samo onu grešku koja se može detektovati određenim kodom. Na osnovu kodova za detekciju greške (kôd dupliciranja, parnosti, Berger-ov, Bose-Lin-ov i drugi) predložene su različite tehnike za sintezu kola sa samoproverom [DeK94], [Bolc98], [Moha103], [JhaN93], [DasD99], [Wake82]. S obzirom da se ove tehnike primenjuju na niskom nivou, tj. nivou gejtova, generisana rešenja su efikasna i obično obezbeđuju potpunu samoproveru. Međutim, iz istog tog razloga, integracija tehnika niskog nivoa u standardni tok projektovanja podržan komercijalnim CAD alatima je otežana. Takođe, većina tehnika niskog nivoa podrazumeva da se kolo implementira u full- i semi-custom tehnologijama i one nisu direktno primenljive za implementaciju u tehnologiji programabilnih logičkih kola.

Metode visokog nivoa zasnivaju se na modifikaciji VHDL opisa kola, pri čemu se u određenim tačkama dodaje kôd koji predstavlja hardversku ili informacionu redundansu. S obzirom da se modifikacija obavlja pre sinteze, ove metode omogućavaju korišćenje komercijalnih CAD (Computer Aided Design) alata za sintezu i olakšavaju integraciju SC tehnika u standardni tok projektovanja. Osnovna prednost ovakvog, u odnosu na prethodni pristup, ogleda se u mogućnosti insertovanja potrebnih SC mehanizama u početnim fazama projektovanja i ranog potvrđivanja pouzdanosti kola. Sa druge strane, performanse generisanih kola (u smislu brzine rada i površine) nešto su slabije u odnosu na prvi pristup. Ovakve metode su korišćene za modifikaciju VHDL opisa zadatog kola primenom različitih SC tehnika [Bolc00], [Entr101], [Leve02], [Lópe01]. U cilju utvrđivanja cene postojećih metoda projektovanja, vršeni su eksperimenti nad različitim bencmark kolima i pokazano je da za većinu njih primena koda parnosti zahteva najmanje povećanje površine. Postojeće metode projektovanje SC kola visokog nivoa teže automatizaciji insertovanja struktura za konkurentnu detekciju greške, sa minimalnim direktnim učešćem projektanta. Međutim, pored već navedenih prednosti, postoje i nedostaci tih metoda koji se ogledaju u limitiranom izboru SC tehnika i nedovoljno ispitanim performansama generisanih rešenja. Takođe, nedostaje procena praktične primene raznih metoda u odnosu na povećanje površine, smanjenje radne frekvencije i pogodnosti za implementaciju na FPGA i CPLD tehnologije korišćenjem dostupnih komercijalnih CAD alata. To je, upravo, cilj ove teze, koja je fokusirana na drugi pristup.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

4

Doprinos

U ovoj tezi predložena je metoda projektovanja kombinacionih i sekvencijalnih mreža sa samoproverom koja se zasniva na poluautomatskom dodavanju različitih struktura za konkurentnu detekciju greške u postojeći VHDL opis mreže [Stoj104], [Stan104], [Stan403]. Za detekciju greške korišćene su tehnike dupliciranja, primene Berger-ovog, Bose-Lin-ovog i koda parnosti. Svaka od ovih tehnika, u odnosu na ostale, ima svoje prednosti i nedostatke. Duplikacija je jedina koja može garantovati 100% pokrivanje defekata, dok sve ostale tehnike garantuju pokrivenost samo za usvojeni model defekata. S druge strane duplikacija unosi veliko povećanje površine. Tehnika parnosti je najjednostavnija i unosi najmanje dodatno kašnjenje, ali zato ispoljava nizak nivo pokrivenosti defekata. Bitom parnosti se može detektovati samo neparan broj pogrešnih bitova na izlazu mreže, tako da vrlo lako može doći do maskiranja uticaja defekta [Stoj101]. Tehnika primene Bergerov-og koda pruža mogućnost detekcije jednosmernih višestrukih grešaka, uzrokovanih defektima određenog tipa. Zbog načina generisanja ovog koda, SC kolo je dosta složeno. Primena Bose-Lin-ovog koda omogućava detekciju samo određenog broja jednosmernih grešaka, ali je zato SC kolo jednostavnije u odnosu na kolo sa ugrađenim Berger-ovim kodom. S obzirom da ne postoji tehnika koja po svim kriterijumima daje najbolje rešenje, optimalan izbor se može izvršiti tek nakon implementacije i evaluacije svih raspoloživih tehnika [Stoj204]. U tom cilju izvršena je modifikacija VHDL opisa, sinteza i implementacija 24 proizvoljno izabranih kombinacionih i sekvencijalnih kola različite složenosti, među kojima su koderi, dekoderi, sabirači, množači, pomerači i druga [Stan103], [Stan204]. Površina SC kola jednaka je zbiru površine prvobitno zadatog kola, površine kola za detekciju greške i površine kola za proveru. Povećanje površine i kašnjenja zavisi od složenosti strukture kola za detekciju greške i kola za proveru, odnosno zavisi od primenjenog koda za detekciju greške. Na osnovu dobijenih rezultata nakon implementacije prvobitno zadatih i SC kola na FPGA ili CPLD komponente odabrane familije, određen je procenat povećanja površine i smanjenja brzine modifikovanog u odnosu na zadato kolo [Stan203], [Stan303]. Na taj način je, ustvari određena cena za svaku od primenjenih SC tehnika, koja predstavlja osnovni parametar pri izboru odgovarajuće tehnike.

Struktura rada

Ova teza sadrži pet poglavlja i tri dodatka u kojima se opisuju sve faze projektovanja kombinacionih i sekvencijalnih kola sa samoproverom. Polazi se od definisanja svih potrebnih uslova za generisanje SC kola. Zatim se određuju funkcije svih neophodnih elemenata, opisuju se u VHDL-u i smeštaju u biblioteku. Na osnovu izabrane tehnike za konkurentnu detekciju greške i VHDL opisa, određena SC kola se implementiraju u konkretnoj tehnologiji.

U drugom poglavlju definisani su osnovni pojmovi i predstavljen je koncept sistema visoke pouzdanosti. Razmatra se tehnološki razvoj elektronskih proizvoda i potreba savremenih sistema za ugradnjom tehnika koje omogućavaju pouzdanost u radu. Takođe se vrši klasifikacija defekata na osnovu njihovih karakterističnih osobina kao što su priroda, trajanje, rasprostranjenost, vrednost i uzroci defekata. Ilustruje se i uzročno posledična veza između defekta, greške i otkaza, kao i manifestacija defekata na primeru digitalnog kola. U daljem tekstu obrađuju se tehnike za sprečavanje pojave otkaza sistema usled pojave defekta,

1. Uvod

5

kao što su: izbegavanje, meskiranje i tolerancija defekata. S obzirom da se tolerancija, odnosno otpornost sistema na defekte zasniva na uvođenju redundanse u sistem, razmatraju se i sledeći tipovi redundanse: hardverska, informaciona, vremenska i softverska. Poseban osvrt dat je na model aktivne hardverske redundanse, koja se zasniva na ugradnji dva identična hardverska modula i poređenju njihovih rezultata, kao i na model informacione redundanse, koja se zasniva na dodavanju redundantnih informacija podacima, odnosno kodiranju. Na ovim modelima je zasnovana metoda projektovanja kola sa samoproverom. Na kraju ovog poglavlja date su oblasti primene sistema otpornih na defekte.

U trećem poglavlju definisani su principi on-line testiranja i konkurentne detekcije greške. Zatim je predstavljen opšti princip i struktura kola sa samoproverom, koje ima mogućnost da detektuje interni defekt odmah nakon njegovog pojavljivanja. SC kola su zasnovana na kodiranju izlaza funkcionalnog bloka pomoću kodova za detekciju greške. Za metodu projektovanja SC kola, koja se predlaže u ovoj tezi, od posebnog značaja su izdvojivi kodovi kao što su: Berger-ov, Bose-Lin-ov i kôd parnosti. Pored opštih definicija kodova izložena je i analiza efikasnosti ovih kodova za standardne modele grešaka. U daljem tekstu izvršena je klasifikacija SC kola i date su definicije i potrebni uslovi za dobijanje sledećih tipova: kola sa potpunom samoproverom (Totally Self-Checking - TSC), kola koja su sigurna u prisustvu defekta pod stogim uslovima (Strongly Fault-Secure - SFS), kola sa strogim razdvajanjem kodova (strongly code-disjoint). S obzirom da se kod svakog SC kola provera kodiranog podatka na izlazu funkcionalnog bloka vrši pomoću kola za proveru (checker), u daljem tekstu daje se poseban naglasak na tipove i osobine ovih kola. Svi principi samoprovere definisani za kombinaciona kola mogu se proširiti i na sekvencijalna kola. Zato se u ovom poglavlju predstavlja i model sekvencijalnog kola sa samoproverom. Na kraju je ilustrovana struktura sistema sa samoproverom i objašnjena manifestacija greške na primeru arhitekture protočnog i složenog računarskog sistema.

U četvrtom poglavlju opisane su osnovne metode za projektovanje logičkih mreža sa samoproverom. Detaljno je objašnjena metoda projektovanja SC mreža koja se zasniva na VHDL opisu. Data je globalna arhitektura kombinacione i sekvencijalne SC mreže za svaku od primenjenih tehnika među kojima su: dupliciranje, primena Berger-ovog, Bose-Lin-ovog i koda parnosti. Generator bitova za proveru i kolo za proveru su dva modula koja odlikuju primenjenu tehniku. Zato su u ovom poglavlju predstavljene blok šeme i algoritmi za dobijanje generičkih VHDL opisa svih ovih modula. Na kraju su data ograničenja koja treba uvesti da bi se, na osnovu VHDL opisa, izvršila sinteza i implementacija SC kola.

U petom poglavlju data je klasifikacija PLD kola sa posebnim osvrtom na CPLD i FPGA strukture. Zatim su opisane sve faze projektovanja SC kola pomoću PLD-a, počev od VHDL opisa kola, preko simulacije i sinteze, pa do implementacije na odabranu FPGA ili CPLD komponentu. U ovom delu definisane su mere kvaliteta kod PLD kola, kao i mere koje se koriste za određivanje cene SC kola dobijenih primenom predloženih metoda. Na kraju je izvršena implementacija 24 proizvoljno izabranih benchmark kola različite složenosti, i to najpre na osnovu njihovog prvobitno zadatog a zatim i modifikovanog VHDL opisa kojim je dobijeno SC kolo. Na osnovu dobijenih rezultata nakon implementacije kola na FPGA i CPLD tehnologiju, izračunato je prosečno povećanje površine i smanjenje brzine za svaku od primenjenih tehnika za detekciju greške.

Zaključak ove teze predstavlja kratku rekapitulaciju onoga što je urađeno i daje neka usmerenja za dalji rad na polju projektovanja mreža sa samoproverom.

Ova teza pored teoretskih i praktičnih razmatranja datih u Poglavljima 1-5 sadrži i tri dodatka koji su namenjeni pružanju dodatnih objašnjenja o realizaciji predložene metode. Dodatak A sadrži definicije i objašnjenja osnovnih pojmova sistema visoke pouzdanosti, koje

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

6

služe čitaocu za lakše praćenje teksta. U Dodatku B date su osnovne definicije kombinacionih i sekvencijalnih mreža sa samoproverom. Dodatak C je, iz praktičnih razloga, dat na CD-ROM-u, a uključuje VHDL opise svih modula potrebnih za generisanje SC kola opisanih u ovoj tezi. Sastavni delovi Dodatka C su dva ilustrativna primera sinteze kombinacionog kola 4-bitni množač i sekvencijalnog benchmark kola b01.

2. Pouzdani sistemi

7

2. Pouzdani sistemi

Računarski sistemi imaju široku primenu u svakodnevnom životu. Većina takvih sistema koristi se u hazardnim uslovima i za daljinsku kontrolu, kao na primer u nuklearnim reaktorima, avionima i svemirskim brodovima. U takvom okruženju računarski sistemi su, pre svega zbog uticaja zračenja, u velikoj meri podložni greškama. Održavanje i popravka takvih sistema je vrlo skupa i zahteva dosta vremena. Zbog toga, pored performansi, otpornost na defekte (fault tolerance), koja predstavlja mogućnost sistema da korektno funkcioniše uprkos pojavi defekata, postaje vrlo važno pitanje [Siew92].

Sistemi zasnovani na ASIC (Application Specific Integrated Circuits) kolima mogu da se optimizuju u skladu sa zahtevima aplikacije i obično imaju bolje performanse od računarskih sistema opšte namene. Međutim, cena projektovanja ASIC kola je obično visoka, a i jedanput proizvedena ASIC kola ne mogu se ažurirati, poboljšavati i korigovati. U kritičnim aplikacijama, bilo koji kvar u ASIC komponenti ne može da se popravi bez kompletne zamene postojeće komponente novom. Aplikacije opšte namene mogu da se ažuriraju i poboljšaju loadovanjem novog softverskog programa. Međutim, u slučaju fizičkog defekta u čipu javlja se isti problem kao kod kritičnih aplikacija i jedino rešenje za popravljanje je potpuna zamena komponente. S obzirom na visoku cenu takvog rešenja javlja se potreba za novim ekonomičnim tehnikama koje će obezbediti visoku pouzdanost.

2.1. Trendovi u razvoju elektronskih proizvoda sa aspekta pouzdanosti

Napredak u VLSI tehnologiji i pojava velikog broja novih aplikacija uzrokovali su brojne promene u specifikaciji, projektovanju i realizaciji integrisanih kola u toku prethodnih trideset godina. Evolucija paradigme u projektovanju integrisanih kola prikazana je na slici 2.1. [Mezh04].

Slika 2.1 Evolucija kriterijuma projektovanja kod CMOS IC-a

Kao što se vidi sa slike 2.1, tokom 60-ih i početkom 70-ih godina prošlog veka interesi proizvođača poluprovodničkih komponenti uglavnom su bili usmereni ka smanjenju površine čipa, tako da je kompaktnost kola predstavljala primarni kriterijum u procesu projektovanja

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

8

integrisanih kola. Usled ograničenog nivoa integracije tipični sistemi u to vreme, kakvi su računari, sastojali su se od nekoliko desetina pa do nekoliko hiljada integrisanih kola niskog stepena inegracije (SSI IC) [Haye88]. Kao rezultat toga, komunikacija između čipova, koja se ostvarivala na nivou štampanih ploča, ili na nivou ploča, ograničavala je ukupne performanse sistema. U poređenju sa vezama unutar čipa, veze na štampanoj ploči karakteriše veliko kašnjenje i velika disipacija snage, a to je dovodilo do ograničenja brzine rada i redukcije performansi sistema. Takođe, pouzdanost sistema, zbog velikog broja ploča, bila je jako niska [Siew91].

Napredak tehnologije, sredinom 70-ih godina, omogućio je ugradnju većeg broja funkcionalnih jedinica na monolitnoj pločici silicijuma što je obezbedilo realizaciju složenijih elektronskih sistema. U razvoju i proizvodnji IC-a izdiferencirala su se dva pravca. Prvi je imao za cilj povećanje brzine rada uz smanjene površine čipa, a drugi je bio orijentisan ka smanjenju disipacije [Chan92]. Nivo integracije CMOS kola kretao se od srednjeg do visokog (MSI/LSI IC), napon napajanja bio je obično 5 V, granična frekvencija rada do 20 MHz, a pouzdanost u radu sistema relativno niska zbog velikog broja komponenti i štampanih ploča od kojih su se projektovali i gradili elektronski sistemi [Prad72], [Prad86].

Sredinom 80-ih godina istraživanja i razvoj IC-a evoluirali su u tri smera. Kod prvog imperativ je bila brzina (karakteristična za razvoj mikroprocesora), kod drugog kompromis između povećanja brzine rada i smanjenja potošnje (baterijski napajani uređaji), a kod trećeg mikropotrošnja (biomedicinski uređaji) [Mezh04]. Za digitalna kola realizovana u periodu od sredine 80-ih do sredine 90-ih godina, uglavnom napajana sa 5V, smatra se da su zbog visokih logičkih margina i imunosti na šum relativno pouzdana.

Od sredine 90-ih godina pa do danas uglavnom egzistiraju dva pravca u razvoju IC-a. Prvi pravac karakteriše smanjenje potrošnje (mikropotrošnja) što se ostvaruje zahvaljujući smanjenju napona napajanja kao i raznim tehnikama za dinamičko upravljanje potrošnjom (mobilni telefoni) [Beni00]. Drugi pravac je bio orijentisan ka kompromisnom rešenju postizanja velike brzine uz malu potrošnju i visoku pouzdanost u radu [Shoo02]. Oba pravca su usmerena ka agresivnom skaliranju dimenzija tranzistora, povećanoj kompleksnosti kola, povećanim performansama, povećanoj brzini rada, i smanjenoj disipaciji. Kao rezultat toga, sa tačke gledišta pouzdanosti, javljaju se dva nepoželjna efekta: a) povećanje internih smetnji zbog uticaja parazitnih impedansi (otpornih, induktivnih i kapacitivnih) na vezama unutar čipa; i b) smanjenje logičkih margina.

Slika 2.2. Evolucija prosečne struje kod visoko performansnih mikroprocesora

2. Pouzdani sistemi

9

U daljem tekstu, ilustracije radi, ukazaćemo kako smanjenje napona napajanja IC-a utiče na povećanje smetnji. Promene napona napajanja se manifestuju kao šum-napajanja. Šum-napajanja negativno utiče na korektan rad IC-a sa tačke gledišta sledećih mehanizama: a) neodređenosti u kašnjenju signala; b) on-chip džitera; c) degradacije margina; d) degradacije pouzdanosti oksidnog sloja gejta [Mezh04]. Za digitalno kolo kažemo da korektno radi ako generiše ulazne i izlazne napone u okviru specificiranih naponskih nivoa, tj. definisanih opsega naponskih vrednosti. Opseg naponskih vrednosti naziva se margina šuma-napajanja. Primarni cilj projektovanja je da obezbedi da šum-napajanja ne premaši margine.

Evolucija prosečne struje kod visoko performansnih mikroprocesora prikazana je na slici 2.2. Kao što se vidi sa slike prosečna struja, za procesor Itanium 2, trenutno dostiže vrednost od 100 A, a ima trend povećanja sa tehnologijom skaliranja. Predviđanja od strane ITRS-a [ITRS03] ukazuju da će se ona, saglasno Moore-ovom zakonu, duplirati sa svakom novom generacijom mikroprocesora (18-24 meseca), vidi sliku 2.3.

Slika 2.3. Povećanje zahteva za strujom napajanja kod visoko performansnih mikroprocesora u

zavisnosti od tehnologije skaliranja/vremena u skladu sa predviđanjima ITRS-a

Shodno slici 2.3, uočljiv je brži porast tranzijentne struje u odnosu na prosečnu, što je posledica povećanja interne taktne frekvencije čipa. Tranzijentna struja kod današnjih savremenih visoko performansnih procesora iznosi aproksimativno 1 TA/s (1012 A/s), a očekuje se da će 2016. godine premašiti vrednost od 100 TA/s. Tranzijentna struja ovako velike vrednosti posledica je zahteva za komutacijom nekoliko stotina ampera u okviru dela nanosekunde kod rada sinhronih digitalnih kola. Obezbeđenje adekvatnog integriteta signala (signal bez izobličenja) pri smanjenom naponu napajanja kola i povećanom strujom predstavlja ključni projektantski izazov za postizanje visokih performansi uz pouzdan rad [Mezh04].

Na slici 2.4 prikazan je uzajamni odnos efekta redukcije margina šuma kod CMOS kola za dve tehnologije sa različitim dimenzijama tranzistora. Kao što se vidi sa slike 2.4, skaliranjem i smanjenjem napona napajanja smanjuju se i margine, a samim tim i pouzdanost kola. Ovaj efekat nameće potrebu za nalaženjem novih tehnika projektovnja IC-a koje će obezbediti pouzdan rad. U ovoj tezi se upravo razmatra problematika koja je u uskoj vezi sa projektovanjem visoko pouzdanih kola.

Sa smanjenjem dimenzija, kapacitivnosti MOS tranzistora (kako kapacitivnosti gejta tako i parazitne, difuzione kapacitivnosti) se smanjuju. Sa jedne strane, to ima za posledicu

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

10

smanjenje propagacionog kašnjenja i potrošnje. Međutim, sa druge strane, smanjenje kapacitivnosti gejta uporedno sa smanjenjem radnog napona dovodi i do smanjenja količine naelektrisanja prisutne u kanalu MOS tranzostora (Q=CV). U današnjoj tehnologiji količina naelektrisanja u formiranom kanalu MOS tranzistora je reda femtokulona (fC). Prema tome, čak i slabe električne smetnje prisutne na gejtu tranzistora mogu da dovedu do razelektrisanja gejta, prekida kanala, i shodno tome narušavanja informacije koja se obrađuje u datom kolu.

Slika 2.4. Redukcija margina šuma kod CMOS kola u zavisnosti od tehnologije skaliranja Napomena: NMH i NML su margine šuma kod logičkog visokog i logičkog niskog nivoa, respektivno

U zaključku, poluprovodnička elektronska industrija doživela je impresivan napredak od trenutka izrade prvih monolitnih integrisanih kola, ranih 60-ih godina prošlog veka, pa do danas. Neprekidno uvođenje novih proizvoda poboljšanih performansi, manjih dimenzija, disipacije i cene, karakteriše današnje tržište koje je "preplavljeno" novim komercijalnim proizvodima. Potrošačka elektronika je dobar primer uvođenja proizvoda koji nude nove mogućnosti, uglavnom bazirane na tehnološkim poboljšanjima u izradi integrisanih kola. Personalni računari, Internet i mobilne komunikacije samo su neki od najznačajnijih primera novih masovnih tehnologija koje su vremenom napredovale od tehničkih mogućnosti da se neki proizvod projektuje do njegovog masovnog korišćenja. Impresivan napredak u izradi integrisanih kola pre svega je bio zasnovan na smanjenju geometrije tranzistora, smanjenju napona napajanja i povećanju taktne frekvencije. Međutim, sa druge strane treba istaći da zajedničko dejstvo ova tri faktora dovodi do povećanja verovatnoće pojave defekata. Realizacija pouzdanih kola korišćenjem, u osnovi, neopouzdanih tehnologija, zahteva primenu posebnih tehnika projektovanja. Cilj ovih tehnika je projektovanje kola i sistema otpornih na defekte, tj. kola i sistema koji će biti u stanju da uprkos pojavi defekta nastave sa normalnim izvršavanjem svojih funkcija. Danas, zbog svih navedenih razloga, otpornost na defekte se zahteva ne samo od visoko pouzdanih sistema, već i od proizvoda široke potrošnje. Zbog toga razvoj tehnika za kompenzaciju negativnog uticaja defekta na pouzdanost kola predstavlja aktivnu istraživačku oblast.

2.2. Defekti u integrisanim kolima

U nastavku izlaganja definisaćemo neke pojmove i ukazati na neke od tehnika koje standardno srećemo kod visoko pouzdanih sistema [John89].

2. Pouzdani sistemi

11

2.2.1. Defekt, greška, otkaz

U procesu projektovanja sistema otpornih na defekte koriste se tri osnovna termina, a to su defekt, greška i otkaz. Između njih postoji uzročno posledična veza. Konkretno, defekti su uzrok grešaka, a greške su uzrok otkaza.

Defekt (fault) je fizička neispravnost, nepotpunost, ili oštećenje koje se javlja unutar neke hardverske ili softverske komponente. Defekt je takođe mana, slabost ili zastarelost određene hardverske ili softverske komponente. Primeri defekata uključuju kratke spojeve između električnih provodnika, otvorene ili prekinute veze, fizička oštećenja ili nedostatke u poluprovodničkim komponentama, i drugo. Slično, za softver, primer defekta je programska petlja iz koje se, kada se jednom uđe, više ne može izaći.

Greška (error) je manifestacija defekta. Konkretno, greška je odstupanje od tačnosti ili ispravnosti. Na primer, pretpostavimo da na vezi postoji spoj koji rezultuje time da je linija uvek na nivou logičke 1. Fizički spoj je defekt u kolu. Ako se pojavi stanje koje zahteva da se linija prebaci na nivo logičke 0, vrednost na liniji će biti pogrešna. Drugim rečima, ispravna vrednost na liniji bi bila logička 0, ali postojanje defekta će rezultovati pogrešnom vrednošću na liniji. S druge strane, ako je stanje kola takvo da na konkretnoj liniji treba da bude nivo logičke 1, postojanje defekta ne uzrokuje grešku. Dakle, čak i ako postoji defekt, greška ne mora da se ispoljava u svim situacijama.

Konačno, ako greška rezultira time da sistem neku svoju funkciju izvršava pogrešno, došlo je do otkaza (failure) sistema. Suštinski, otkaz je neizvršavanje neke akcije na način na koji bi trebalo, ili kako se to očekuje. Otkaz takođe predstavlja i izvršavanje neke funkcije u neodgovarajućem kvalitetu ili kvantitetu.

Slika 2.5 ilustruje vezu između defekata, grešaka i otkaza. Otkazi su uzrokovani greškama, koje su uzrokovane defektima.

Slika 2.5. Defekt dovodi do greške; greška uzrokuje otkaz sistema

2.2.2. Klasifikacija defekta

Defekti se mogu javiti zbog uticaja raznovrsnih pojava kako unutar samih elektronskih komponenata, tako i u njihovom okruženju, ili mogu biti inicirani još u fazi projektovanja ili proizvodnje komponente ili sistema.

Takođe, defekti se razlikuju po trajanju, rasprostranjenosti i manifestaciji. Klasifikacija defekta se može obaviti prema različitim kriterijuma, na način koji je prikazan na slici 2.6 [John89], [Siew92].

Uzroci defekta Mogući uzroci defekata mogu se povezati sa problemima u četiri osnovne oblasti:

specifikacija, realizacija, komponente i spoljašnji faktori [John89].

Prvi mogući uzrok defekata su problemi u specifikaciji. Oni uključuju netačne algoritme, arhitekturu, ili pogrešne specifikacije u projektovanju hardvera i softvera.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

12

Slika 2.6. Karakteristike defekta

Sledeći mogući uzrok defekata su problemi u realizaciji. Realizacija je proces transformacije hardverske i softverske specifikacije u fizički hardver i operativni softver. U toku realizacije kvarovi se mogu javiti zbog lošeg projekta, lošeg izbora komponenti, loše konstrukcije, ili grešaka u kreiranju softvera.

Sledeći uzrok defekata, odnosno kvarova su fizički defekti komponenata. Nesavršenosti u proizvodnji, slučajni otkazi uređaja, i istrošenost komponenti su tipični primeri defekta komponenti. Fizički defekt može biti rezultat prekida veza u kolu ili korozije metala.

Poslednji mogući uzrok defekata su spoljašnji poremećaji, kao na primer, radijacija, elektromagnetna interferencija, greške operatera, i ekstremne promene u radnoj sredini. Naime, elektronski sistemi su veoma osetljivi na temperaturne promene, elektrostatičke izvore (udar groma), elektromagnetne izvore (indukovane smetnje od rada motora), radijacione smetnje, i drugo. Takođe, greške operatera se smatraju spoljašnjim poremećajima jer, gledano sa fizičke strane samog sistema, operater vrši spoljašnji uticaj.

Priroda defekta Po prirodi, defekt može biti hardverski ili softverski, takođe on može biti u analognom ili

digitalnom kolu, i sl. Greška u programu je primer softverkog defekta.

Trajanje defekta Trajanje defekta se odnosi na dužinu vremenskog perioda u kome je defekt aktivan. Za

nas su od interesa defekti koji se javljaju kod VLSI integrisanih kola. Saglasno vremenu trajanja definišu se sledeća tri tipa defekata [Cons03]:

1) Stalni ili permanentni defekt (permanent fault) traje neograničeno dugo i manifestuje se sve dok se ne preduzmu odgovarajuće mere korekcije. Permanentni defekti posledica su ireverzibilnih fizičkih promena. Poboljšanja u procesu projektovanja kao i tehnike izrade poluprovodnika u značajnoj meri smanjuju stopu pojave permanentnih defekata. Ako sistem ne izvršava namenjenu funkciju na korektan način, to znači da je pod uticajem defekta došlo do otkaza. Za komponentu ili sistem definiše se stopa otkaza (failure rate) koja predstavlja broj otkaza koji se javljaju u jedinici vremena (Failure-In-Time - FIT) [Moha203]. Na slici 2.7 prikazana je evolucija pojavljivanja permanentnih otkaza kod CMOS mikroprocesora, kao i statičkih i dinamičkih memorija u toku protekle decenije. Kao što se vidi sa slike pouzdanost procesora i memorije je značajno poboljšana u toku prve polovine dekade. Značajno

2. Pouzdani sistemi

13

smanjenje otkaza kod SRAM-ova velikog kapaciteta ostvareno je u drugoj polovini dekade. Poluprovodnička industrija je u zadnjoj deceniji počela da koristi bakar za realizaciju međuveza unutar integrisanog kola. Ovaj trend je imao pozitivan uticaj na smanjenje stope permanentnih defekata iz razloga što bakar ima bolje osobine sa aspekta elektromigracije u odnosu na aluminijum.

0

100

200

300

1990 1992 1995 1997 2001Godina

STO

PA

OTK

AZA

MikroprocesoriSRAM 256 kBSRAM 4MBDRAM 1 MBDRAM 32 MB

Slika 2.7. Evolucija pojavljivanja permanentnih otkaza kod CMOS mikroprocesora

Napomena: Veličina FIT predstavlja broj otkaza u vremenu od 109 časova [Cons03]

2) Povremeni defekt (intermittent fault) se pojavljuje, nestaje, i zatim se ponovo pojavljuje u toku nekog vremenskog perioda. Teško ih je predvideti, ali su njihovi efekti u velikoj meri korelisani. Povremeni defekti se javljaju zbog nestabilnosti u radu hardvera, a mogu biti uzrokovani povećanjem temperature ili promenom napona napajanja. Kod najvećeg broja slučajeva ovi tipovi defekata prethode pojavi permanentnih defekata. Veoma je teško da se napravi razlika između povremenih i tranzijentnih defekata zbog njihove sličnosti u manifestacijama. Zato se koriste tri glavna kriterijuma na osnovu kojih se određuje uzrok otkaza, odnosno koji je tip defekta uzrokovao grešku, a samim tim i otkaz. Kao prvo, povremeni defekti se javljaju repetitivno na istoj lokaciji. Kao drugo, greške koje se javljaju od strane trenutnih defekata po prirodi su paketne (burst tipa). Kao treće, zamenom dotrajalog kola eliminišu se povremeni defekti, nasuprot tranzijentnim defektima koji sa zamenom kola i dalje ostaju.

3) Prolazni ili tranzijentni defekt (transient fault) se može pojaviti i zatim nestati u veoma kratkom vremenskom periodu. Tranzijentni defekti dešavaju se zbog privremene promene ambijentnih uslova. Nekoliko fenomena uzrokuje pojavu tranzijentnih defekata: alfa i neutronske čestice, šum usled napona napajanja i međuveza, elektromagnetna interferencija i elektrostatička pražnjenja. Tranzijentni defekt se ne manifestuje trajnim oštećenjem strukture poluprovodičkog materijala, već kratkotrajnim poremećajem u radu kola (pojava strujnih impusa u čvorovima prekidačke mreže ili gubitak naelektrisanja u memorijskim ćelijama), što uzrokuje promenu ili gubitak informacije koja se obrađuje u kolu. S obzirom da uništavaju jedino podatak, ali ne i samo kolo, za tranzijente defekte se često koristi termin soft defekti. Učestalost tranzijentih defekata u konkretnom kolu karakteriše se stopom soft grešaka (Soft Error Rate - SER).

Kod savremenih poluprovodničkih tehnologija, sa radnim naponom ispod 1.8 V i veličinom SRAM ćelija ispod 10 µm2, radijacija, u obliku kosmičkog i jonizacionog alfa zračenja, čak i u normalnim dozama, postaje dominantan izvor soft defekata. Ova pojava je ilustrovana na slici 2.8 [Osad04]. Kosmičko zračenje je prisutno u vidu neutrona velike

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

14

energije, dok alfa čestice potiču od nečistoća u materijalima za pakovanje integrisanih kola. Udarom ovih čestica u osetljivu oblast poluprovodničkog materijala dolazi do njihove interakcije sa jonima i atomima silicijuma što ima za posledicu izbijanje elektrona. Energija koja se predaje elektronu u ovom procesu dovoljna je da ga iz valentne prebaci u provodnu oblast čime nastaje par elektron-šupljina. Šta više, energija koja ostaje izbijenom elektronu je dovoljana da on pri udaru u drugi atom kreira novi par elektron-šupljina, čime dolazi do pojave svojevrsne lančane reakcije. Slobodni nosioci naelektrisanja nastali u ovom procesu šire se kroz poluprovodnik, a nastala jonizaciona traka uzrokuje tranzijentni impuls struje. S obzirom da je za pojavu ovakvog strujnog impulsa dovoljna samo jedna čestica zračenja, efekat koji takav impuls ima na rad kola zove se single-event upset (SEU) [Dupo02].

Slika 2.8. Generisanje naelektrisanja od strane kosmičkog zračenja

SEU može uzrokovati da neki leč ili memorijski element u složenom kolu promeni svoje stanje. Pored toga, SEU može da se pojavi u internom čvoru kombinacione mreže, promeni logički nivo tog čvora, koji se zatim prostire kroz mrežu do leča gde greška biva zapamćena [Moha103]. Na slici 2.9 prikazan je uticaj bombardovanja neutronskih i alfa čestica na SER kod CMOS SRAM-ova različitog memorijskog kapaciteta. Kao što se vidi sa slike bombardovanje alfa čestica povećava SER 30 puta ako se tehnološki proces promeni sa 0.25 µm na 0.18 µm, a napon smanji od 2 V na 0.6 V.

μ

μμμ

Slika 2.9. SER za dve CMOS SRAM tehnološke generacije [Cons03]

2. Pouzdani sistemi

15

Rasprostranjenost defekta Rasprostranjenost defekta određuje da li je uticaj kvara lokalizovan na konkretni

hardverski ili softverski modul, ili on globalno utiče na rad sistema. Na primer, bilo koji defekt vezan za napon napajanja je primer globalnog uticaja na sistem, dok defekt u memoriji ima lokalizovan uticaj na sistem.

Vrednost defekta Vrednost defekta može da bude određena ili neodređena. Određenu vrednost ima defekt

koji se ne menja tokom vremena bez spoljašnjeg uticaja. Neodređenu vrednost ima defekt čiji je status različit u različitim vremenskim trenucima.

2.2.3. Modeli defekata

Defekti u kolima opisuju se modelima [Lala01], [Moha103]. Pri ovome treba istaći da je veoma teško analizirati rad digitalnih sistema u prisustvu svih tipova defekata, kao na primer, istovremena pojava tranzijentnih i neodređenih defekata. Da bi se korektno opisao rad sistema u prisustvu defekta neophodno je poznavati statistiku defekata. Tako na primer, shodno slici 2.5, do otkaza neke komponente dolazi ako su se prethodno manifestovale greške u toj komponenti, a greške su, u principu, bile uzrokovane nekim defektima, u materijalu, u programu itd. Najveći broj modela kojima se opisuju sistemi otporni na otkaze polazi od činjenice da se u datom trenutku, kod realnih sistema, može javiti najviše jedna greška [DeK94], [Toub97], [DasD99]. Ako se usvoji ovakva strategija tada je procedure za simulaciju rada i testiranje relativno lakše kreirati i one veoma pouzdano mogu da opišu i simuliraju rad sistema u prisustvu defekata. U ovoj tezi upravo je usvojen ovakav pristup.

Modeli defekata nam omogućavaju da definišemo specifične tipove defekata koji će se razmatrati, kao i njihovo ponašanje. I pored toga što nisu 100% tačni, projektanti koriste modele zato što oni olakšavaju rešavanje problema u cilju postizanja visoke pouzdanosti u radu. Najčešće se koriste dva osnovna modela defekata:

i) logički model defekta postavljanja (stuck-fault) - koristi se na nivou logičkih kola, i

ii) tranzistorski model defekta postavljanja - koristi se na nivou tranzistora.

Logički model defekta postavljanja može se predstaviti kao model defekta postavljanja na 0 (stuck-at-0) ili postavljanja na 1 (stuck-at-1). Tri osnovne karakteristike ovog modela su sledeće:

- kao rezultat defekta u modulu jedan od njegovih ulaza ili izlaza je fizički postavljen na 1 ili 0

- defekt ne menja osnovnu funkciju kola - defekt je permanentan.

Logički modul je jedan gejt ili skup gejtova koji izvršavaju neku logičku funkciju.

Tranzistorski model defekta postavljanja može se predstaviti kao model zasićenog tranzistora (stuck on) ili model zakočenog tranzistora (stuck off).

2.2.4. Modeli grešaka

Pored modelovanja defekata koriste se i tehnike za modelovanje posledica defekata, odnosno radije se modeliraju greške, a ređe defekti. Osnovni razlog ovakvog pristupa je da bilo koji defekt izaziva promenu logičke vrednosti na izlazu sistema. Za kombinaciona

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

16

logička kola ova promena predstavlja modifikaciju tabele istinitosti. Poređenjem tabele istinitosti formirane na osnovu ispravnog odziva i tabele istinitosti formirane na osnovu dobijenog odziva, dobija se informacija o ispravnosti rezultata.

Modeli grešaka koriste se za projektovanje i verifikaciju mnogih kola koja imaju mogućnost samotestiranja, ali se ne koriste kao sredstvo za generisanje test signala. Takođe, model greške podrazumeva da mora da prođe neko vreme pre nego što se utvrdi postojanje defekta.

2.2.5. Manifestacija tranzijentnih defekata u digitalnim kolima

Razvoj CMOS tehnologije povećava osetljivost kola na okruženje a samim tim i verovatnoću pojave tranzijentnih defekata. S obzirom da postoji veliki uticaj stalno prisutnih pojava u okolini, kao što su promene vrednosti signala usled uticaja čestica (ili SEU), naročito neutrona iz atmosfere, jasno je da tranzijentni defekti predstavljaju glavne izvore grešaka kod VLSI kola. Takođe, istraživanja na ovom polju pokazala su da su tranzijentne greške najčešći uzrok otkaza u VLSI kolima/sistemima (82-98%) [Cast82] u kojima se sve više smanjuju nivoi napona i margine šuma, a povećava se osetljivost na tranzijentne defekte [Leve02], [Dupo02].

Smanjenje stope otkaza kao posledice tranzijentnih grešaka, odnosno defekata u VLSI kolima, može se ostvariti detekcijom greške. Način detekcije tranzijentnih ili soft grešaka zavisi od zahteva određene aplikacije za stopom otkaza. Naime, u kritičnim aplikacijama (kontrola saobraćaja, bankarstvo, medicina) primarni cilj je postići vrlo visoku pouzdanost bez obzira na cenu, dok u standardnim aplikacijama primarni ciljevi su cena i performanse. Zato su tehnike za detekciju greške u početku bile razvijene samo za kritične aplikacije. Međutim, kako tehnološki proces uslovljava povećanje gustine dolazi do sve veće osetljivosti logičkih kola u standardnim aplikacijama na tranzijentne defekte. Primena detekcije greške u standardnim aplikacijama ograničena je iz dva razloga [Moha103], [Moha203]:

1) Veliko povećanje potrošnje, površine i kašnjenja - Logička kola nemaju regularnu strukturu pa je primena detekcije greške još kompleksnija, a i konvencionalne tehnike razvijene su samo za kritične aplikacije da bi obezbedile visok nivo pouzdanosti.

2) Smanjenje osetljivosti na tranzijentne defekte - Logička kola imaju prirodnu barijeru na propagaciju SEU-a ka svom izlazu. Verovatnoća da SEU bude lečovan zavisi od toga koji čvor u kolu je bombardovan. Kada se bombardovanje čestice javi na internom čvoru logičkog kola postoje tri maskirajuća faktora - logički, električni i prozor-lečovanja - koji mogu da spreče lečovanje SEU-a a samim tim i rezultujuću soft grešku.

Na slici 2.10 prikazan je mehanizam generisanja greške na izlazu kombinacione mreže. Naime, udarom čestice u MOS tranzistor logičkog kola, koje je deo složenije kombinacione mreže, nastaje lanac događaja koji uzrokuje grešku na izlazu mreže.

Kolo sa slike 2.10 sastoji se od kombinacione mreže i izlaznih lečeva u koje se pod dejstvom taktnog signala upisuje rezultat. Da bi SEU koji se desi u kombinacionoj mreži uzrokovao pogrešan podatak i da bi taj podatak bio upisan u izlazne lečeve, moraju da budu zadovoljeni sledeći uslovi [Dupo02]:

2. Pouzdani sistemi

17

Slika 2.10. Dijagram kola koji pokazuje kako od tranzijentnog defekta nastaje soft greška

• Smetnja uzrokovana udarom čestice mora da bude dovoljno jaka da generiše signal na nekom od čvorova u kombinacionoj mreži. To može da se desi bilo gde u mreži i u bilo koje vreme. Pojava smetnje dovoljog intenziteta zavisi od energije čestica i intenziteta zračenja, ali i od osetljivosti kola na ovakve poremećaje.

• Tako generisani signali najčešće su u obliku impulsa kratkog trajanja (do nekoliko stotina pikosekundi). Međutim, kratkotrajni impuls na ulazu logičkog kola može da izazove promenu logičkog nivoa na njegovom izlazu samo ako je trajanje imulsa duže od propagacionog kašnjenja kroz kolo. Logička kola realizovana savremenim poluprovodničkim tehnologijama poseduju propagaciono kašnjenje od oko 100 ps, što je dovoljno brzo za prenošenje signala nastalih udarom čestica. Takođe, SEU mora da bude impuls značajnijeg trajanja i amplitude kako bi prošao kroz svaki stepen logičke jedinice na putu do leča. Impuls će biti oslabljen zbog električnih osobina svakog gejta kroz koji prolazi, pa zato mora da se obezbedi da se SEU, u svakom slučaju, prenese do leča. Ako je impuls toliko oslabljen pre nego što dođe do leča onda će SEU biti električno maskiran.

• Da bi se promena logičkog nivoa na izlazu logičkog kola pogođenog česticom, manifestovala kao greška i na izlazu kombinacione mreže, neophodno je da kroz mrežu, od tačke koja predstavlja izlaz logičkog kola do nekog od izlaza mreže postoji aktivna logička putanja. Drugim rečima, neophodno je da postoji funkcionalno osetljiv put od mesta pojave SEU-a do leča, što zavisi od primenjenog vektora na ulazu. Na primer, neka je u mreži sa slike 2.10 na izlazu AND kola U5 nastao poremećaj tako da je umesto logičke 1-ce na izlazu ovog kola prisutna logička 0. Međutim, da bi se ova pogrešna vrednost prenela na izlaz mreže, neophodno je da na izlaz AND kola U4 bude na logičkoj 1, jer samo pod tim uslovom između izlaza kola U5 i izlaza mreže postoji aktivna logička putanja. Ako ne postoji takav put, onda će SEU biti logički maskiran.

• Na kraju, da bi pogrešan podatak na izlazu kombinacione mreže prouzrokovao pogrešan rad sistema, on, kao takav, mora da bude upisan u izlazne lečeve. Prema tome, vremenski interval u kome na izlazu mreže postoji pogrešan podatak mora da obuhvati i trenutak dejstva rastuće ivice takta. Dodatno, moraju biti zadovoljeni i zahtevi u pogledu vremena postavljanja (set-up-time) i vremena držanja (hold-time) leč kola. Povećanje širine impulsa i taktne frekvencije utiču na povećanje verovatnoće lečovanja tranzijentnog defekta, što je ilustrovano na slici 2.11. Sa slike 2.11a) vidi se da vrednost tranzijentnog defekta neće biti lečovana ako se ne poklopi sa ivicom takta, dok se sa slike 2.11b) vidi da je sa povećanjem taktne frekvencije veća i verovatnoća lečovanja. Znači, tajming SEU-a mora da

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

18

bude takav da impuls stigne do leča u trenutku pojave ivice takta kako bi leč "uhvatio" njegovu vrednost. Ako se SEU pojavi van "prozora lečovanja" onda će biti maskiran.

Slika 2.11. Efekat povećanja širine impulsa i taktne frekvencije

Ako su ispunjena sva četiri prethodno navedena uslova onda poremećaj usled tranzijentnog defekta generiše grešku u podatku VLSI čipa. Drugi, treći i četvrti uslov predstavljaju "prirodnu" prepreku širenju SEU defekta, što je, uz veću otpornost MOS tranzistora na udare čestica, činilo da su kod starijih tehnologija opisani efekti bili tretirani kao minorni uzročnici nepouzdanosti u radu VLSI kola. Međutim, kod savremenih tehnologija, uporedno sa smanjenjem radnog napona i dimenzija MOS tranzistora smanjuje se i naelektrisanje čvora što omogućava da čestice manje energije uzrokuju SEU, pa je zato verovatnoća pojavljivanja SEU defekta (prvi uslov) daleko veća. Iako postojanje aktivnog puta (treći uslov) zavisi isključivo od trenutne vrednosti ulaznog podatka i nije uslovljeno tehnologijom, smanjenje propagacionog kašnjenja kroz logička kola (drugi uslov) i trend povećanja radne frekvencije (četvrti uslov) dovode do smanjenja sposobnosti "filtriranja" SEU defekta. Zbog toga, kod savremenih VLSI kola, imlementacija posebnih tehnika za detekciju tranzijentnih grešaka postaje neminovnost [Moha203].

Od velikog interesa su i tranzijentne greške u memorijama zato što memorije sadrže daleko veći broj i veću gustinu bitova osetljivih na udare čestica, u odnosu na ligička kola [Zieg96].

2.3. Tehnike projektovanja sistema tolerantnih na defekte

Integritet podataka je glavni izazov u procesu projektovanja sistema. Zbog sve većeg uticaja defekata poluprovodnička industrija preusmerila je razvoj i proizvodnju na VLSI kola kod kojih će ti uticaji biti manji. Uglavnom poboljšani tehnološki procesi dovode do smanjenja svih tipova defekata. No, nezavisno od toga čini se da se uticaj defekata ne može u potpunosti eliminisati i sve je izraženiji sa povećanjem stepena integracije [Cons03].

Sa aspekta projektovanja, za poboljšavanje ili zadržavanje nominalnih performansi, odnosno za postizanje visoke pouzdanosti u radu sistema, u okruženju u kome su defekti mogući, koriste se tri osnovna pristupa: izbegavanje defekata, maskiranje defekata, i tolerancija na defekte [Cons03], [John89].

Izbegavanje defekta (fault avoidance) je bilo koja tehnika iskorišćena za sprečavanje pojave hardverskih defekata ili softverskih grešaka. Ovakve tehnike se pre svega baziraju na korišćenju boljih materijala i poboljšanju tehnoloških procesa i metoda projektovanja kola. Na primer, veze unutar kola koje karakteriše niži nivo emisije alfa zračenja karakteriše manji SER. Silicijum na izolatoru je rešenje koje se standardno koristi kao proces za smanjenje osetljivosti kola na pojavu tranzijentnih otkaza [Cons03]. Izbegavanje defekata uključuje procese kao što su preispitivanje projekta, zaštita komponenti, testiranje, i druge metode

2. Pouzdani sistemi

19

kontrole kvaliteta. Naime, ako se pregled projekta izvrši korektno mnoge greške nastale u specifikaciji mogu se otkloniti. Takođe, ako se sistem oklopi mogu se sprečiti spoljašnji uticaji. Isto tako, ako se sistem pažljivo testira, mnogi kvarovi se na vreme mogu otkriti i ukloniti pre nego što se sistem startuje.

Maskiranje defekta (fault masking) je bilo koja tehnika koja sprečava da defekti u sistemu proizvedu greške unutar strukture sistema. Primeri maskiranja defekata su: memorije sa mogućnošću korekcije grešaka, ili većinsko izglasavanje u sistemima gde postoje tri istovetna modula, i gde dva, na osnovu većine mogu maskirati treći neispravan modul [Stoj201]. Sistemi koji koriste maskiranje defekata ostvaruju osobinu otpornosti "sakrivanjem" defekata koji se javljaju. Cilj je da uticaj svih defekata bude lokalnog karaktera. Tehnike zadržavanja defekta, koje se zasnivaju na maskiranju, sprečavaju širenje njihovih efekata kroz sistem.

Tolerancija defekata (fault tolerant) je sposobnost sistema da nastavi sa izvršavanjem svojih zadataka i posle pojave defekta. Tehnološki razvoj je prirodno nametnuo pitanje: Zašto je tolerancija na defekte u elektronskim komponentama toliko važna i zašto je predmet interesovanja mnogih projektanata? Naime, tolerantnost na defekte je atribut koji omogućava sistemu da bude otporan na defekte. Takav sistem može da nastavi korektno izvršavanje specificiranih zadataka i u prisustvu hardverskog defekta. Detekcija i korekcija internih defekata u toku normalnog rada omogućava korišćenje ovih kola u kritičnim aplikacijama [Entr201].

Vremenski dijagram sa slike 2.12 prikazuje sve faze koje postoje od pojave defekta do otkaza sistema. Sa slike se vidi da se detekcijom defekta, odnosno njegovog efekta, odmah nakon pojavljivanja, može izbeći otkaz sistema. Drugim rečima, sistem neće otkazati ako postoji dovoljno vremena za primenu mehanizama tolerancije defekata.

Slika 2.12. Faze koje postoje od trenutka pojave defekta do otkaza sistema

Osnovni cilj tolerancije, odnosno otpornosti na defekte je sprečavanje pojave otkaza sistema usled pojave defekta. Tolerancija na defekte može se implementirati na nivou kola ili na nivou sistema. Ona je u vezi sa konkurentnom detekcijom grešaka, oporavljanjem od grešaka, kodovima za korekciju grešaka (Error Correcting Code - ECC), kao i prostornom i vremenskom redundansom. Projektanti podjednako uspešno koriste kako hardverske tako i softverske implementacije. FPGA kola sa samoproverom i ASIC kola standardno koriste interne resurse za on-line detekciju grešaka i otkaza. Hardverska rešenja zasnovana na Berger-ovim kodovima često se koriste za detekciju grešaka kod RISC procesora. Hardverska detekcija grešaka koja se obično izvodi kao ECC ili parnost, kao i firmversko oporavljanje od grešaka su standardne tehnike koje se koriste kod Intel Itanium procesora i drugih [Lala01], [JhaN93], [DeK94], [DasD99] .

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

20

Cilj sistema koji su tolerantni na defekte je da, pored funkcionalnosti, ispune i zahtev pouzdanosti u širem smislu, odnosno uslužnosti (dependability). Ovo je kompleksna karakteristika koja objedinjuje veći broj aspekata pouzdanosti koji se odnose na pouzdanost u užem smislu, dostupnost, bezbednost, performabilnost, održivost i testabilnost. Svi ovi pojmovi definisani su u Dodatku A ove teze. Ostvarivanje pouzdanosti u širem smislu podrazumeva primenu osnovnih, prethodno pomenutih pristupa, u cilju otklanjanja uticaja defekata, odnosno grešaka ili otkaza sistema. Koncept pouzdanosti u širem smislu koji obuhvata karakteristike pouzdanih sistema, načine za njihovo ostvarivanje i uticaje negativnih efekata ilustrovan je na slici 2.13.

Slika 2.13. Koncept pouzdanosti u širem smislu

Tolerancija na defekte može se postići mnogim tehnikama. Jedna od njih se sastoji u tome da se defekt detektuje i locira, a da se zatim, sistem rekonfiguriše kako bi se eliminisao uticaj pokvarene komponente ili modula. Uopšteno govoreći, rekonfiguracija je proces eliminisanja iz sistema entiteta sa kvarom i vraćanja sistema u operativno stanje. Rekonfiguracija obuhvata sledeće aktivnosti [John89]:

1. Detekcija defekta je proces otkrivanja defekta koji se pojavio. 2. Lokalizacija defekta je proces određivanja lokacije na kojoj se defekat pojavio i

utvrđivanja komponente koja je neispravna, tako da se sistem, nakon toga, može vratiti u normalan rad.

3. Izolacija defekta je proces izolovanja defekta i sprečavanja da se njegovi efekti prošire kroz sistem.

4. Sanacija defekta je proces koji obezbeđuje da se i u prisustvu defekta, a uz pomoć rekonfiguracije, zadrži ili ponovo uspostavi operativni status sistema; rekonfiguracija se obično ostvaruje fizičkim ili logičkim odstranjivanjem i zamenom komponente koja je u kvaru.

Tolerancija defekata, koja je do skoro bila korišćenja kao pristup samo kod profesionalnih uređaja koji su bili namenjeni za rad u hazardnim uslovima i kritičnim misijama, postala je danas neminovnost koja se uvodi i kod komercijalnih proizvoda [Cons03], [Moha103], [Mezh04]. Projektanti su danas primorani da ugrade koncepte tolerantnosti na defekte u VLSI kola, posebno kod mikroprocesora, sa ciljem da se na jedan adekvatniji način manipuliše sa defektima i greškama, a takođe i izbegnu posledice koje se javljaju zbog narušavanja verodostojnosti podatka [Good85], [Hals85]. U savremena VLSI kola danas se ugrađuju znatno sofisticiranije tehnike kakve su one koje se odnose na poboljšanu sposobnosti za

2. Pouzdani sistemi

21

konkurentnu detekciju i korekciju grešaka, samoproveru, vremensku i prostornu redundansu, pa šta više i tripliciranje u glasanju [Lala01], [DasD99], [DeK94]. Prikupljanje podataka o defektima i greškama, analiza otkaza, i uzroci pojavljivanja defekata imaće najznačajnu ulogu kod razumevanja mehanizama propagacije grešaka i rada kola u režimu kada se javi defekt. Predikcija otkaza biće centralna tema istraživanja narednih godina imajući u vidu da se broj trenutnih grešaka sve više povećava. Poboljšanje pouzdanosti rada VLSI kola zahteva nova sredstva za pouzdano modeliranje trenutnih ili tranzijentnih defekata kao i grešaka generisanih od strane ovih defekata [Cons03]. Ova teza ima za cilj da ukaže na tehnike koje se koriste za konkuretnu detekciju svih tipova grešaka.

Sve pomenute tehnike, koje se koriste za postizanje visoke pouzdanosti, zahtevaju korišćenje nekog oblika redundanse. Povećanje gustine, smanjenje potrošnje snage i smanjenje cene IC-a kao dela VLSI kola, omogućilo je implementaciju redundantnih pristupa. Današnji mikrokompjuteri i drugi digitalni sistemi su dovoljno kompaktni tako da se mogu primeniti redundantne tehnike.

Redundansa predstavlja dodavanje informacija, resursa, ili vremena pored onoga koje je potrebno za normalan rad sistema. Redundansa može imati više oblika, a to su: hardverska, informaciona, vremenska i softverska redundansa.

Procena sistema razmatra se kao sastavni deo procesa projektovanja. Da bi projekat bio uspešan paralelno sa procesom projektovanja vrši se i procena. Na ovaj način se dovoljno rano otkrivaju problemi u projektovanju i omogućava se korekcija. Na primer, problem u hardveru se može lako korigovati ako se otkrije pre nego što se projekat završi. Za analizu sistema dostupne su mnoge metode procene. Tu spadaju Markovi modeli pouzdanosti, modeli obnove sistema, kombinatorni modeli pouzdanosti, modeli dostupnosti, modeli održivosti.

2.3.1. Hardverska redundansa

Hardverska redundansa predstavlja dodavanje hardvera, obično u cilju detekcije ili tolerancije defekata. U svom osnovnom obliku ovaj metod obuhvata dupliciranje funkcije i poređenje rezultata dve kopije specificiranog kola pomoću kola za proveru. Prednost ovakvog postupka je u tome što se može primeniti na bilo koju funkciju.

Fizičko umnožavanje hardvera je najčešći oblik redundanse koji se danas koristi u cilju postizanja otpornosti na otkaze. Kako poluprovodničke komponente postaju sve manje i jeftinije hardverska redundansa postaje praktičnija. Postoje tri osnovna oblika hardverske redundanse: pasivna, aktivna i hibridna.

Pasivne tehnike koriste princip maskiranja defekta kako bi sakrile pojavu defekta i sprečile da defekt prouzrokuje pojavu greške. Ovakvim tehnikama postiže se otpornost na defekte bez zahteva za određenim akcijama na delovima sistema, odnosno bez potrebe za detekcijom defekata ili rekonfiguracijom sistema. Pasivna hardverska redundansa oslanja se na mehanizam glasanja kako bi maskirala pojavu defekata. Većina pasivnih tehnika zasnovana je na principu većinskog glasanja.

Osnovni princip trostruke modularne redundanse (Triple Modular Redundancy - TMR), kao i što se vidi sa slike 2.14, je utrostručavanje hardvera i primena većinskog glasanja pri određivanju izlaza sistema. Ako se jedan modul pokvari, dva preostala ispravna modula, pri većinskom glasanju, maskiraju rezultate neispravnog modula.

Osnovni problem sa TMR-om je glasač; ako glasač otkaže, ceo sistem će otkazati. Drugim rečima, pouzdanost najjednostavnijeg oblika TMR-a nije bolja od pouzdanosti glasača. Bilo

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

22

koja pojedinačna komponenta unutar sistema čiji otkaz dovodi do otkaza sistema zove se jedinstvena tačka otkaza, ili singularitet.

Slika 2.14. Model pasivne hardverske redundanse sa tri istovetna modula i jednim glasačem

Nekoliko tehnika se može upotrebiti za prevazilaženje efekta otkaza glasača. Jedna od njih, prikazana na slici 2.15, je utrostručavanje samog glasača i obezbeđivanje tri nezavisna izlaza. (Pretpostavka je da se tri izlaza vode na tri ulaza podsistema koji takođe koristi trostruku modularnu redundansu.)

Slika 2.15. Model prevazilaženja jedinstvene tačke otkaza korišćenjem

tri nezavisna glasača i tri izlaza

N-Modularna redundansa (N-Modular Redundancy - NMR) predstavlja generalizaciju TMR-a. NMR koristi iste principe kao i TMR, ali koristi N modula. U većini slučajeva, N je izabrano kao neki neparan broj tako da se mogu primeniti principi većinskog glasanja. Prednost korišćenja N modula umesto samo tri je da se može tolerisati kvar više od jednog modula.

Sam proces glasanja uključuje nekoliko proceduralnih problema. Prvi je odlučivanje da li će biti iskorišćen hardverski glasač, ili će proces glasanja biti realizovan u softveru. Drugi problem sa praktičnom realizacijom glasanja je taj da se, na primer, tri rezultata u TMR sistemu ne slažu u potpunosti, čak i u slučaju kada ne postoji kvar. Drugim rečima, većinski glasač može utvrditi da ne postoje dva rezultata koja se slažu u TMR sistemu, iako sistem radi ispravno.

Jedan od pristupa koji ublažava problem neslaganja rezultata je tehnika selekcije srednje vrednosti. U osnovi, tehnika selekcije srednje vrednosti, od tri ponuđene vrednosti u TMR sistemu bira onu koja se nalazi između preostale dve.

Sledeći pristup koji se obično koristi kada se binarne vrednosti ne slažu u potpunosti je da se ignorišu bitovi najmanje težine. Drugim rečima, većinsko glasanje se izvodi sa k bitova

2. Pouzdani sistemi

23

najveće težine. Broj bitova koji se ignorišu zavisi od aplikacije i funkcija je tačnosti upotrebljenih komponenti [John89].

Aktivne ili dinamičke tehnike postižu osobinu otpornosti na defekte detektovanjem postojanja defekta i izvođenjem akcija uklanjanja (ili izolovanja) pokvarenog hardvera iz sistema, odnosno rekonfiguracijom sistema. Aktivna hardverska redundansa koristi detekciju defekta, lokaciju defekta, i sanaciju defekta u cilju postizanja tolerancije na defekte. Aktivna hardverska redundansa ne poseduje osobinu maskiranja defekta i primenjuje se kod sistema koji mogu tolerisati privremene, pogrešne rezultate, pod uslovom da se sistem rekonfiguriše i povrati svoj operativni status u zadovoljavajućem vremenu.

Osnovni princip udvostručavanja sa poređenjem, prikazan na slici 2.16, je ugraditi dva identična hardverska modula, pustiti ih da u paraleli rade ista izračunavanja, i zatim uporediti njihove rezultate. U slučaju neslaganja, generiše se signal greške. U svom najosnovnijem obliku, princip udvostručavanja može samo detektovati postojanje kvara, a ne i tolerisati ga, jer ne postoji način za određivanje koji od dva modula je u kvaru.

Slika 2.16. Model aktivne hardverske redundanse, gde se posle paralelne obrade rezultati

upoređuju

Opisani metod aktivne redundanse poseduje nekoliko potencijalnih problema. Naime, otkaz ulaznog uređaja ili linija preko kojih ulazni signali moraju biti preneseni do modula rezultovaće time da oba modula proizvedu isti, pogrešan rezultat. Konačno, kvarovi u komparatoru mogu prouzrokovati signal greške iako greška ne postoji, ili, još gore, komparator se može pokvariti tako da eventualni kvar u modulima ne bude detektovan.

Za prevazilaženje pomenutih problema mogu se primeniti mnoge metode. Po jednoj od njih, neophodna poređenja mogu se realizovati softverski, pomoću dva procesora. Po drugoj metodi, jedan modul je operativan, a jedan ili više modula služe kao rezerva. Ako je defekt detektovan i lociran, pokvareni modul se uklanja iz sistema i zamenjuje se rezervnim. Ova metoda može vratiti sistemu punu operativnu sposobnost posle pojave kvara, ali izaziva trenutno narušavanje performansi dok se izvodi rekonfiguracija. Ako ovo narušavanje rada mora biti minimizirano, primenjuje se “vruća spremna rezerva”. Naime, kod ove tehnike, rezervni moduli rade sinhrono sa aktivnim modulima, i spremni su da preuzmu sistem bilo kada. Nasuprot ovome, imamo “hladnu spremnu rezervu” kod koje su rezervni moduli neaktivni, sve dok se ne javi potreba da zamene pokvareni modul. Nedostatak “hladne spremne rezerve” je vreme koje je potrebno da se modul priključi na napajanje i da se uvede u aktivan rad. Prednost je da rezervni moduli nisu priključeni na napajanje, a time i ne troše energiju, sve dok se ne javi potreba za zamenom pokvarenog modula.

Ključna komponenta opisanog pristupa je način na koji se detektuje greška i locira neispravni modul. Dve tehnike koje se mogu koristiti za ovu namenu biće opisane u nastavku.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

24

“Par i rezerva” tehnika koristi prednosti i “spremne rezerve” i udvostručavanja sa poređenjem. U osnovi, “par i rezerva” tehnika koristi “spremnu rezervu”, ali tako da uvek dva modula rade u paraleli sve vreme, i njihovi rezultati se upoređuju u cilju detekcije greške. Signal greške iz komparatora je upotrebljen da inicira proces rekonfiguracije koji uklanja pokvarene module i zamenjuje ih rezervnim. Treba napomenuti da se, iako je pokvaren jedan modul, iz sistema odstranjuje i njegov par, prvenstveno zbog nemogućnosti detekcije koji je od njih u kvaru.

Oblik aktivne hardverske redundanse koji je veoma koristan za detekciju kvarova u sistemu je watchdog tajmer. Princip watchdog tajmera je da je izostanak neke akcije indikator kvara. Watchdog tajmer je tajmer koji se mora periodično resetovati. Osnovna je pretpostavka da je sistem ispravan ako je sposoban da periodično izvršava ovu jednostavnu funkciju. Watchdog tajmer se može primeniti za detekciju kvarova i u hardveru i u softveru sistema [Mahm88].

Hibridna tehnika koristi dobre osobine pasivnog i aktivnog prilaza. Maskiranje kvara se koristi u hibridnim sistemima da spreči generisanje pogrešnih rezultata. Onda kada maskiranje nije više u stanju da obezbedi ispravan rad sistema, primenjuje se neka aktivna tehnika kako bi se kvar locirao i sanirao zamenom pokvarenog hardvera rezervnim.

U osnovi, hibridna hardverska redundansa koristi dobre osobine i pasivne i aktivne hardverske redundanse. Maskiranje kvara se koristi da spreči sistem da proizvede pogrešne rezultate, a detekcija, lokacija i sanacija kvara koriste se za rekonfiguraciju sistema u slučaju pojave kvara.

Princip NMR sa rezervama je obezbediti konfiguraciju od N modula uključenih u glasanje, ili neku drugu vrstu glasanja. Glasanje obezbeđuje maskiranje pokvarenog modula za vreme dok se pokvareni modul ne zameni rezervnim. U poređenju sa pasivnom NMR tehnikom, NMR tehnika u kombinaciji sa rezervama zahteva manji broj modula za ostvarivanje istog nivoa pouzdanosti.

Osnovni princip redundanse sa samoizbacivanjem sličan je principu koji imamo kod NMR-a sa rezervama. Razlika je u tome što kod tehnike samoizbacivanja sve jedinice aktivno učestvuju u radu sistema, dok kod NMR-a rezervne jedinice nisu aktivne sve dok se ne pojavi kvar. Svaki od N identičnih modula je napravljen sa sposobnošću da ukloni sebe iz sistema u slučaju da se njegov izlaz razlikuje od izglasanog izlaza sistema.

Redundansa sa “prosejavanjem” modula je tehnika koja takođe koristi N identičnih modula koji su povezani u sistem korišćenjem specijalnih blokova: komparator, detektor i kolektor. Uloga komparatora je da upoređuje izlaz svakog od modula sa izlazima preostalih modula, i pri tome proizvodi po jedan signal za svako poređenje koje je izvršio. Signal koji generiše komparator je 1 ako se dve poređene jedinice ne slažu, a 0 u suprutnom slučaju. Uloga detektora je da odredi koja neslaganja je komparator prijavio, i da onesposobi jedinicu koja se ne slaže sa većinom preostalih modula. Detektor proizvodi po jedan signal za svaki modul, i vrednost tog signala je 1 ako se dati modul ne slaže sa većinom preostalih modula, i 0 u suprutnom. Uloga kolektora je da proizvede izlaz sistema, koristeći pri tome izlaze pojedinačnih modula i signale iz detektora koji indiciraju koji je od modula pokvaren. Modulu koji je identifikovan kao pokvaren nije dozvoljeno da utiče na izlaz sistema.

Tehnika utrostručeno-dvostruka arhitektura kombinuje udvostručavanje sa poređenjem i trostruku modularnu redundansu. Po dva modula rade u tandemu. Komparator pridružen paru modula poredi njihove rezultate i isključuje tandem iz sistema ukoliko ustanovi

2. Pouzdani sistemi

25

neslaganje. Upotreba TMR-a dozvoljava maskiranje kvara, i neprekidan, pravilan rad sa jednim neispravnim modulom [John89].

2.3.2. Informaciona redundansa

Poznato je da digitalni sistemi koriste podatke predstavljene u obliku grupe bitova, koji se nazivaju informacioni bitovi. Pošto u toku obrade i memorisanja informacije može doći do greške u sistemu, neophodna je neka mera za detekciju pogrešnih bitova. Takođe, može se javiti potreba za korekcijom grešaka u cilju uspostavljanja normalnog rada sistema. Da bi se ostvarili ovi zahtevi, odnosno da bi se obezbedila pouzdanost i integritet podataka, informacionim bitovima pridružuju se redundantni bitovi za detekciju i/ili korekciju greške.

Informaciona redundansa predstavlja dodavanje redundantnih informacija podacima sa ciljem da se omogući detekcija kvara, maskiranje kvara, ili čak tolerancija kvara. Dobri primeri informacione redundanse su kodovi za detekciju, kao i kodovi za korekciju grešaka, koji se formiraju dodavanjem redudantnih informacija rečima, ili prevođenjem reči u neki novi oblik koji sadrži redundante informacije. Detaljan pregled kodova za detekciju grešaka dat je u Poglavlju 3.

2.3.3. Vremenska redundansa

Vremenska redundansa koristi dodatno vreme za izvršavanje funkcija sistema tako da se može postići detekcija defekta, a često i tolerancija defekta. Metodi vremenske redundanse nastoje da smanje količinu dodatnog hardvera po cenu korišćenja dodatnog vremena. U mnogim aplikacijama vreme je od znatno manje važnosti od hardvera, zato što je hardver fizički entitet koji značajno utiče na težinu, veličinu, potrošnju snage, i cenu.

Osnovni princip vremenske redundanse je, korišćenjem istog hardvera i istih ulaza, izvršavati ista izračunavanja u dva ili više vremenskih trenutaka i upoređivati rezultate u cilju određjivanja eventualnog neslaganja, kao što je prikazano na slici 2.17. Ako se detektuje greška, izračunavanje se može ponoviti kako bi se videlo da li neslaganje ostaje, ili nestaje. Ovakav pristup je dobar za detekciju grešaka nastalih usled nekog prolaznog, tzv. tranzijentnog defekta, ali se ne može iskoristiti za detekciju grešaka nastalih usled nekog stalnog defekta.

Vremenska redundansa ima mogućnost da, pored tranzijentnih, detekcije i permanentne, nepromenljive defekte, uz korišćenje minimuma dodatnog hardvera. Značajna su četiri pristupa [John89]:

- naizmenična logika, - ponovno izračunavanje sa pomerenim operandima (REcomputing with Shifted

Operands – RESO), - ponovno izračunavanje sa preokrenutim operandima (REcomputing with SWapped

Operands - RESWO), i - ponovno izračunavanje koje koristi udvostručavanje sa poređenjem (REcomputing

with Duplication With Comparasion – REDWC).

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

26

Slika 2.17. Osnovni princip vremenske redundanse

Osnovni princip svih ovih prilaza je isti, a jedina razlika je u izvođenju drugog izračunavanja. Za vreme prvog izračunavanja ili prenosa podataka, operandi se koriste onakvi kakvi oni stvarno jesu, a rezultati se smeštaju u neki registar. Neposredno pre drugog izračunavanja ili prenosa, operandi se kodiraju korišćenjem funkcije kodiranja, e. Nakon sto su izvršene operacije sa kodiranim podacima, rezultati se dekodiraju, i onda porede sa rezultatima dobijenim tokom prvog izračunavanja. Izbor kodirajuće funkcije je urađen tako da omogući detekciju defekata u hardveru. Metod naizmenične logike kao funkciju kodiranja koristi komplement operatora. RESO kao funkciju kodiranja koristi aritmetičko pomeranje, RESWO koristi funkciju rotiranja za kodiranje operanada, a REDWC je varijacija RESWO-a. U nastavku će biti opisana tehnika naizmenične logike.

Princip naizmenične logike se primenjuje u prenosu digitalnih podataka preko žičanih medija i u detekciji kvarova u digitalnim kolima. Pretpostavimo da želimo da detektujemo greške u podacima koji se prenose putem paralelne magistrale pomoću vremenske redundanse. U trenutku 0t poslali smo originalni podatak, a u trenutku δ+0t šaljemo komplement podatka. Ako je, recimo, neka linija magistrale permanentno postavljena bilo na 1 ili na 0, dve verzije podataka koje smo primili neće biti komplementi jedna druge, tako da se detektuje kvar. U suštini, ako korišćenjem ovog prilaza šaljemo neku sekvencu informacija, svaka bitska linija, u slučaju da je prenos bez grešaka, naizmenično će menjati svoju vrednost između logičke 1 i logičke 0. Otuda i potiče naziv naizmenična logika.

2.3.4. Softverska redundansa

Softverska redundansa predstavlja dodavanje softvera, pored onog neophodnog za obavljanje zadatih funkcija, a u cilju detekcije i tolerancije defekata. U aplikacijama koje koriste računare, mnoge tehnike za detekciju i toleranciju defekata mogu biti implementirane u softveru. Redundantni softver se može realizovati u više oblika, i nije potrebno replicirati celokupne programe da bi dobili redudantni softver. Softverska redundansa se može realizovati kao nekoliko dodatnih linija naredbi koje se koriste za proveru amplitude signala, ili kao mala programska procedura koja se koristi za periodično testiranje memorije upisivanjem i čitanjem sa određenih lokacija.

Postoje tri glavne tehnike softverske redundanse: kontrola doslednosti, kontrola sposobnosti, i metoda replikacije softvera.

2. Pouzdani sistemi

27

Kontrola doslednosti koristi a priori znanje o karakteristikama neke informacije da bi verifikovala ispravnost date informacije. Na primer, u nekim aplikacijama unapred je poznato da digitalna veličina nikad ne bi smela dostići određenu vrednost. Ako signal ipak dostigne tu vrednost, prisutna je neka vrsta greške.

Kontrola sposobnosti se primenjuje da bi potvrdili da sistem poseduje očekivane performanse. Postoji nekoliko formi provere sposobnosti. Prva je prosto testiranje memorije. Sledeći oblik provere sposobnosti odnosi se na testiranje ALU jedinice. I treći oblik kontrole sposobnosti sastoji se od verifikacije sposobnosti svih procesora u sistemu da međusobno komuniciraju.

N-verziono programiranje je razvijeno u cilju omogućavanja detekcije određenih projektantskih propusta u softveru. Osnovni princip N-verzionog programiranja je projektovati i programirati softverski modul N puta i onda uporediti N rezultata dobijenih sa ovih softverskih modula. Svaki od N modula projektuje i programira posebna grupa programera. Svaka grupa projektuje softver na osnovu istih specifikacija tako da svaki od N modula izvršava iste funkcije. Ovo je urađeno sa nadom da N nezavisnih projektantskih grupa neće načiniti iste greške.

2.4. Oblasti primene sistema otpornih na defekte

Postojeće primene sistema otpornih na defekte mogu se kategorizovati u četiri primarne oblasti: aplikacije sa dugim vremenom života, aplikacije sa kritičnim izračunavanjima, aplikacije sa odloženim održavanjem, i aplikacije visoke dostupnosti.

Primeri aplikacija sa dugim vremenom života su svemirske letelice i sateliti bez ljudske posade. Osnovni zahtev koji se postavlja za ovakve aplikacije je da verovatnoća njihove operativnosti bude 0.95 i nakon perioda od deset godina. Ovoj kategoriji pripadaju sistemi koji duži vremenski period moraju raditi samostalno, bez mogućnosti direktne intervencije radi popravke eventualnog kvara, odnosno defekta, te stoga treba da postoje ugrađeni mehanizmi koji će omogućiti da u slučaju pojave kvara, sistem samostalno preuzme odgovarajuće aktivnosti kako bi se sprečio otkaz.

Najšira primena sistema otpornih na defekte su izračunavanja kritična za ljudsku bezbednost, očuvanje okoline, ili zaštitu opreme. Primeri uključuju sisteme za kontrolu leta aviona, vojne sisteme, i određene tipove industrijskih kontrolera. U aplikacijama sa kritičnim izračunavanjima neispravan rad sistema bi skoro sigurno doveo do katastrofalnih posledica. Tipičan zahtev koji se postavlja pred ovakve sisteme je da imaju pouzdanost od

79.0 na kraju tročasovnog perioda. Glavni cilj u skoro svim aplikacijama sa kritičnim izračunavanjima je sprečiti da elektronika bude "slaba tačka" u sistemu.

Aplikacije sa odloženim održavanjem najčešće se javljaju u slučajevima kada su operacije održavanja (servisiranja) ekstremno skupe, neprikladne, ili teške za izvođenje. Osnovni cilj je koristiti toleranciju otkaza da bi se omogućilo odlaganje servisiranja do prikladnijeg i ekonomičnijeg vremena. Osoblje održavanja može obilaziti lokaciju mesečno i vršiti neophodne popravke. Između ovih servisnih obilazaka, sistem koristi toleranciju otkaza za neprekidno izvršavanje svojih zadataka.

Primeri aplikacija sa visokom dostupnošću su bankarski i drugi sistemi zasnovani na on-line opsluživanju korisnika. Korisnici ovakvih sistema, nakon što su zatražili uslugu očekuju veliku verovatnoću da budu opsluženi.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

28

3. Konkurentna detekcija greške

29

3. Konkurentna detekcija greške

Kao što je rečeno u prethodnom poglavlju, tehnološkim napretkom drastično je povećana kompleksnost integrisanih sistema u toku poslednje dve dekade, i ovaj trend će se verovatno nastaviti. Posledica toga je sve veća osetljivost sistema na permanentne i tranzijentne defekte, odnosno negativan uticaj na pouzdanost sistema. Zbog sve veće potrebe za održavanjem i obnavljanjem nedovoljno pouzdanih sistema neophodno je projektovati ih tako da imaju mogućnost otkrivanja permanentnih i tranzijentnih defekata.

Detekcija greške, koja nastaje kao posledica defekta, neophodan je prvi korak u cilju dobijanja visoko pouzdanih sistemima. Testiranje kola je klasičan način detekcije greške. Međutim, testiranje nije dovoljan uslov za većinu VLSI kola od kojih se zahteva visoka pouzdanost i lako održavanje. Malo je verovatno da se testiranjem detektuje prisustvo tranzijentnih defekata koji su, kao što je poznato, najčešći uzrok otkaza.

Za detekciju defekta u toku rada sistema, koji čine kritične ili standardne aplikacije, najčešće se koristi on-line testiranje. Cilj on-line testiranja je da detektuje efekte defekta, ili greške, i da preduzme odgovarajuće postupke korekcije. Na primer, u nekim kritičnim aplikacijama sistem se isključuje nakon detektovanja greške. U drugim aplikacijama, detekcija greške aktivira mehanizam rekonfiguracije koji omogućava da sistem nastavi sa radom, uz moguću degradaciju performansi.

3.1. On-line testiranje

Testiranje predstavlja obavezan, završni korak u procesu fabrikacije integrisanih kola i obavlja se u cilju razdvajanja ispravnih od neispravnih jedinica. Ovakav način testiranja, tzv. off-line testiranje, zahteva specifičnu opremu koja se koristi za generisanje stimulusa, u obliku testnih vektora, i analizu odziva kola koje se testira. Međutim, tradicionalna strategija off-line testiranja ne može da detektuje permanente defekte koji se javljaju u toku eksploatacije kola, kao ni tranzijentne defekte. Iz tog razloga, u novije vreme, VLSI kola se projektuju tako da poseduju ugrađene mehanizme za on-line detekciju greške [Lala01].

On-line testiranje može da se predstavi kao oblik eksternog ili internog praćenja i proveravanja kola korišćenjem hardvera ili softvera. Interno praćenje drugačije se naziva samotestiranje (self-testing), a potreban hardver ili softver nalazi se na istom čipu (IC-u) kao i kolo koje se testira.

U cilju projektovanja različitih šema on-line testiranja neophodno je razmotriti sledeće primarne parametre [AlAs98]:

- pokrivanje greške (error coverage) – predstavlja deo modelovanih grešaka koje su detektovane, a izražava se u procentima,

- latencija greške (error latency) – vremenska razlika između trenutka kada greška postaje aktivna i trenutka detekcije te greške,

- redundansa (redundancy) – hardverska i vremenska (povećanje površine i kašnjenja).

Za otkrivanje svih ranije opisanih tipova defekata projektanti koriste dva različita načina on-line testiranja: konkurentno i nekonkurentno. Kokurentno testiranje vrši se u toku

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

30

normalnog rada sistema, dok se za nekonkurentno testiranja rad sistema privremeno zaustavlja. Oba načina testiranja imaju za cilj da omoguće sveobuhvatno on-line testiranje uz prihvatljivu cenu. Na slici 3.1 prikazana je podela tehnika on-line testiranja [AlAs98].

Slika 3.1. Taksonomija metoda on-line testiranja

Nekonkurentno testiranje aktivira se periodično u unapred određenim vremenskim trenucima, ili se javlja kao posledica nekog događaja. Ovaj način testiranja karakteriše mala prostorna i vremenska redundansa. Cilj nekonkurentnog testiranja je detekcija permanentnih defekata. S obzirom da hardver čine različite komponente, na svaku od njih se primenjuje karakterističan test. Nekonkurentnim testiranjem ne mogu se detektovati povremeni i tranzijentni defekti zato što njihovi efekti vrlo brzo nestaju. Alternativa periodičnom testiranju (kao što su, na primer, scan metode [Blee93]) je konkurentna detekcija greške u toku rada kola ili sistema.

Konkurentno testiranje kontinualno proverava da li u kolu postoji greška nastala usled povremenih i tranzijentnih defekata. Osnovni način konkurentnog testiranja, posebno za detekciju grešaka u upravljačkim kolima, je watchdog tajmer ("pas-čuvar" tajmer). To je brojač koga sistem resetuje u određenim intervalima da bi se utvrdila njegova ispravnost. Ključni element konkurentnog testiranja za greške u podacima je redundansa. Ovaj način testiranja obuhvata sva tri oblika redundanse, hardversku, informacionu i vremensku [AlAs98].

3.2. Principi konkurentne detekcije greške

Konkurentna detekcija greške namenjena je detekciji greške odmah nakon njenog pojavljivanja, odnosno nakon otkaza sistema, pa prema tome, ima mogućnost detekcije permanentnih i tranzijentnih defekata.

Tehnike za konkurentnu detekciju greške koje se koriste u digitalnim sistemima mogu se podeliti u sledeće dve klase: a) tehnike na nivou kola; i b) tehnike na nivou sistema [Mahm88].

Korišćenje kodova za detekciju dvostrukih i korekciju jednostrukih grešaka u memorijama, korišćenje kodova parnosti na magistralama podataka, zatim kodova ostatka, Bergerovih kodova, Bose-Lin-ovih kodova i m-od-n kodova u aritmetičkim i sekvencijalnim kolima, primeri su tehnike za detekciju greške na nivou kola.

Adresiranje zasnovano na pripadnosti adrese nekom skupu, watchdog tajmeri, struktura podataka koja je otporna na defekte, korišćenje repliciranja, kao što je FTMP (Fault Tollerant

3. Konkurentna detekcija greške

31

Multiprocessor) i SIFT (Software Implemented Fault Tollerant), i N-verziono programiranje (N-version programming) su neki od primera tehnike za detekciju greške na nivou sistema.

Alternativno, konkurentna detekcija greške naziva se on-line ili implicitna detekcija greške.

3.3. Principi samoprovere i kodovi za detekciju greške

Digitalno kolo (interna jedinica u čipu, čip, ploča, sistem) ima mogućnost samoprovere (self-checking), ako je u stanju da autonomno (bez korišćenja spoljašnjih test signala) detektuje interni defekt, odmah nakon njegovog pojavljivanja. Opšti princip samoprovere ilustrovan je modelom sa slike 3.2. Funkcionalni modul realizuje glavnu funkciju kola tako što transformiše ulaznu reč X u izlazu reč Y=f(X). Pri tome, funkcionalni modul je tako projektovan da sve reči, koje se mogu pojaviti na njegovom izlazu, zadovoljaju neku specifičnu osobinu. Modul za proveru, neprekidno nadgleda izlaz funkcionalnog modula i signalizira pojavu reči koja ne poseduje traženu osobinu. Odsustvo tražene osobine može biti posledica jedino poremećene funkcije funkcionalnog modula usled pojave internog defekta. Osobina koju poseduju izrazne reči ispravnog funkcionalnog modula zove se kôd. Indikacija greške na izlazu modula za proveru, usled pojave defekta, može da se iskoristi za iniciranje automatskog obnavljanja ili rekonfiguracije, ili za jednostavno zaustavljanje sistema.

Slika 3.2. Opšta struktura kola sa samoproverom

S obizirom da izlazi funkcionalnog modula moraju zadovoljiti specifičnu osobinu, neminovno je uvođenje informacione redundanse, odnosno upotreba većeg broja izlaznih linija od minimalnog koji je potreban za predstavljanje rezultata funkcije f(X). Informaciona redundansa podrazumeva dodavanje informacija podatku, ili prevođenje podatka u neki novi oblik koji sadrži redundante informacije. Generalno, svaki podatak može se predstaviti nizom bitova koji mogu, ili ne moraju, imati određenu osobinu. Zato ćemo u daljem tekstu definisati neke bitne pojmove, vezane za predstavljanje podataka.

Kôd (code) je način predstavljanja informacija, ili podataka, korišćenjem unapred definisanog skupa pravila.

Kodna reč (code word) je skup simbola koji su iskorišćeni za predstavljanje određenog dela podatka na osnovu definisanog koda. Na primer, binarni kôd je onaj u kome se simboli za formiranje kodnih reči sastoje samo od bitova 0 i 1. Svaki n-bitni kôd može da se posmatra kao podskup svih mogućih n-bitnih nizova. Nizovi koji pripadaju ovom podskupu predstavljaju kodne reči, dok ostali nizovi predstavljaju nekodne reči.

Kodiranje (encoding) je proces određivanja odgovarajuće kodne reči za zadati podatak. Drugim rečima, proces kodiranja uzima originalni podatak i konvertuje ga u kodnu reč koristeći pravila koda.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

32

Dekodiranje (decoding) je proces ekstrahovanja originalnog podatka iz kodne reči. Drugim rečima, proces dekodiranja, na osnovu kodne reči, određuje podatak koji ona predstavlja.

Kôd za detekciju greške je specifična prezentacija simbola koja omogućava detekciju grešaka unutar kodne reči. Ovakav kôd ima osobinu da neki tipovi grešaka menjaju kodnu reč u nekodnu reč.

Kôd za korekciju grešaka predstavlja kôd koji ima sposobnost da ispravlja greške. Ovakvi kodovi se obično opisuju brojem bitskih grešaka koje mogu ispraviti.

Stopa koda (code rate) predstavlja odnos broja informacionih bitova (simbola) i ukupnog broja bitova u kodnoj reči. Tako će na primer binarni kôd od n bitova, dobijen kodovanjem informacionih bitova dužine k , imati k2 validnih kodnih reči, ( )kn 2-2 nevalidnih, tj. nekodnih reči, i stopu koda nk . Skup od k2 validnih kodnih reči naziva se blokovski kôd (block code).

Primarni zahtevi koda su sledeći [Lala01]: 1. Detekcija svih mogućih grešaka – uzroci grešaka su povremeni i stalni defekti unutar

sistema, a mogu se definisati kao razlika između podatka koji se prenosi kroz sistem i podatka koji se dobija na njegovom izlazu.

2. Mogućnost postizanja željenog stepena detekcije greške uz korišćenje minimalne redundanse.

3. Jednostavan i brz proces kodiranja i dekodiranja, tj. odgovarajući hardver nije kompleksan.

Kodovi se mogu podeliti na izdvojive i neizdvojive. Kod izdvojivog kôda, u cilju formiranja kodne reči, originalnom podatku je pridružena nova informacija, omogućavajući pri tome da se proces dekodiranja sastoji od jednostavnog uklanjanja dodatne informacije i zadržavanja originalnog podatka. S druge strane, neizdvojivi kodovi ne poseduju mogućnost razdvajanja, i samim tim zahtevaju složenije procedure dekodiranja. Zbog toga izdvojivi kodovi nalaze širu primenu [Lala01].

Izdvojiv kôd koji ima k informacionih bitova naziva se sistematski kôd ako se u kodnim rečima pojavljuju svih k2 kombinacija informacionih bitova. Ako pretpostavimo da informacioni simbol ima k bitova, broj dodatnih bitova za proveru r , i da kodna reč ima

rkn += bitova, onda se razlika između sistematskog i izdvojivog koda može definisati na sledeći način [JhaN93]:

Definicija 1: Skup binarnih n-torki, C, naziva se sistematski kôd ako: 1) sadrži k2 n-torki, nk ≤≤1 ; i 2) xxCSISxxC == , gde je kIS x = i rCS x = , i svaka od k2 kombinacija

informacionih simbola predstavlja deo neke kodne reči .

Definicija 2: Skup binarnih n-torki, C, naziva se izdvojiv kôd ako 1) sadrži ks 2< n-torki, nk ≤≤1 , i 2) xxCSISxxC == , gde je kIS x = i rCS x = , i svakai od s kombinacija

informacionih simbola predstavlja deo neke kodne reči .

Kodovi za detekciju i korekciju grešaka su dobri primeri informacione redundanse koja zahteva i ugradnju dodatnog hardvera. Na funkcije prenosa i memorisanja podataka mogu se primeniti određeni načini kodiranja, dok se na funkcije manipulisanja sa podacima kao što su sabiranje, pomeranje i logičke operacije mora primeniti drugačije kodiranje. Međutim, nije pogodno imati različite tipove kodiranja podataka unutar istog računarskog sistema. Zato su

3. Konkurentna detekcija greške

33

za funkcije kao što su aritmetičke operacije predložene metode za predviđanje parnosti koje dozvoljavaju da se isti kodovi parnosti koriste u toku memorijskih i aritmetičkih operacija.

Tehnike za projektovanje kola sa mogućnošću samoprovere nisu univerzalne jer zavise od specifičnosti primenjenog tipa kodiranja podataka. U daljem tekstu biće obrađeni neki od najčešće korišćenih kodova.

3.3.1. Kôd parnosti

Najjednostavniji oblik izdvojivog koda je kôd parnosti. Osnovni princip parnosti je veoma jednostavan, ali su moguće i brojne varijacije osnovne ideje. Jednobitni kôd parnosti nastaje tako što se binarnom podatku dodaje jedan bit, koji ima vrednost 0 ili 1 u zavisnosti od toga da li je broj jedinica među informacionim bitovima paran ili neparan, odnosno da li se želi parna ili neparna parnost. Ako se binarni oblik kodne reči predstavi kao

( )cnn aa...aaa 021 −−= , gde 021 a...,,a,a nn −− predstavljaju informacione bitove, a ca bit provere (check bit), onda je:

1) 021 a...aaa nnc ⊕⊕⊕= −− , za slušaj da se koristi parna parnost i da je ukupan broj jedinica u kodnoj reči paran (neparan),

2) 1021 ⊕⊕⊕⊕= −− a...aaa nnc , ako se koristi neparna parnost i ako je ukupan broj jedinica u kodnoj reči paran (neparan).

Iako su matematički ekvivalentne, preferira se neparna parnost zato što obezbeđuje najmanje jednu jedinicu u kodnoj reči. Kodiranje ovakvim kodom je brzo i jednostavno jer zahteva jedino stablo EXOR gejtova. Nedostatak ovog koda ogleda se u tome što se bitom parnosti može detektovati samo neparan broj grešaka.

Najčešća primena kodova parnosti je u memorijama računarskih sistema. Pre nego što se upiše u memoriju, podatak se kodira. Kodiranje se sastoji u dodavanju jednog bita sa ciljem da rezultujuća reč ima, na primer, paran broj jedinica. Kada se potom podatak čita iz memorije, parnost se mora proveriti da bi se verifikovalo da li se, kao posledica neke greške, promenila ili nije.

Šema za konkurentnu detekciju greške, u najvećem broju slučajeva, zasniva se na generisanju bita parnosti za dati izlaz. Na osnovu jednog bita parnosti, dobijenog na osnovu kombinacije bitova na izlazu, ne mogu se detektovati sve greške u višenivovskom kolu. Razlog za to je činjenica da među različitim izlazima postoji podela zajedničkih članova, tj. različiti izlazi koriste iste gejtove. U tom slučaju, u bitu parnosti može da bude maskiran uticaj defekta. Na slici 3.3 prikazan je uticaj jednog defekta na više izlaza što može dovesti do njegovog maskiranja [DeK94].

Slika 3.3. Defekt koji se ne može detektovati jednim bitom parnosti

Mogućnost detekcije greške na osnovu bita parnosti može se proširiti uvođenjem bita parnosti za određene grupe informacionih bitova (na primer za svaki bajt). Pri tome se

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

34

određenoj grupi izlaznih bitova dodaje po jedan bit za proveru, koji predstavlja njihovu parnost. Svaka grupa izlaznih bitova, koja se proverava jednim bitom, naziva se grupa parnosti (parity group). Ako dva izlaza pripadaju istoj grupi parnosti onda ne bi trebali da dele istu logiku. Na osnovu pripadnosti izlaznih bitova jednoj ili većem broju grupa parnosti mogu se izdvojiti dve tehnike [Zeng99]:

1) Tehnika sa jednom grupom parnosti (single parity group) - svi izlazi pripadaju istoj grupi parnosti i svaki izlaz se sintetiše nezavisno, tako da različiti izlazi neće deliti istu logiku (slika 3.4a)).

2) Tehnika višestruke grupe parnosti (multiple parity group) - izlazi su podeljeni u nekoliko različitih grupa parnosti, a korišćenje iste logike dozvoljeno je samo među izlazima koji pripadaju različitim grupama parnosti (slika 3.4b)).

a) b) Slika 3.4. Tehnike grupe parnosti: a) jednostruka i b) višestruka

Ilustracije radi, možemo reći da kod tehnike sa jednim bitom za proveru postoji samo jedna grupa parnosti koja sadrži sve izlaze, dok u slučaju dupliciranja kola sa n izlaza postoji n grupa parnosti i svaka sadrži samo jedan od izlaza [Toub97], [Prad80].

U radu [DeK94] predložena je šema za konkurentnu detekciju greške zasnovana na korišćenju koda parnosti, ali i na podeli izlaznih bitova u logičke blokove pri čemu nije dozvoljeno da različiti blokovi koriste ista logička kola. Ako je k broj izlaza logičkog bloka koji ima najviše izlaza onda je iskorišćena k-grupa parnosti, odnosno grupa parnosti koja proverava k izlaznih bitova jednim bitom parnosti. Sekvenca izlaznih signala podeljena je u različite grupe na takav način da svaka grupa parnosti sadrži ne više od jednog izlaza iz svakog logičkog bloka. Zatim su, za svaku od k grupa parnosti, na osnovu bita parnosti, izračunate funkcije za proveru koje zatim formiraju drugi logički blok. Izlazi jednog bloka mogu međusobno da dele istu logiku, ali nije dozvoljena podela logike između dva izlaza koji pripadaju različitim blokovima. S obzirom da nema logičke podele između blokova, greška nastala postavljanjem unutrašnje veze na određenu vrednost može da utiče samo na izlaze jednog logičkog bloka. Pošto svaki od izlaza jednog logičkog bloka pripada različitim grupama parnosti i, prema tome, proverava se od strane različitih bitova parnosti, greška ne može da bude maskirana, što znači da će biti detektovana. S druge strane, implementacija ove tehnike zahteva relativno kompleksan hardver i utiče na smanjenje brzine sistema.

Kombinacija parne i neparne parnosti za grupe bitova može pojednostaviti detekciju stanja sve nule ili sve jedinice. Primena ovakve šeme zasniva se na deljenju informacionih bitova na nekoliko blokova pri čemu se svaki bit pojavljuje u okviru nekoliko blokova, a bit parnosti se izračunava za svaki od blokova, pojedinačno. Ovakav način preklapanja bitova parnosti ne samo da detektuje greške na većem broju bitova, već omogućava da se greška na jednom bitu detektuje i locira [YenM87], [Lala01].

3. Konkurentna detekcija greške

35

3.3.2. Kodovi za detekciju višestrukih grešaka

Razne vrste defekata u VLSI kolima mogu prouzrokovati različite tipove grašaka. Kodovi za detekciju greške klasifikuju se na osnovu tipova grešaka koje mogu detektovati. Na primer, kodovi koji detektuju grešku na jednom bitu mogu se koristiti samo kod slučajnih jednostrukih grešaka. Međutim, najčešće greške u logičkim kolima su višestruke prirode. Višestruke greške pripadaju jednoj od sledećih klasa [Lala01]:

- Simetrične (symmetric) - greške tipa 0→1 i 1→0 pojavljuju se istovremeno i sa istom verovatnoćom u jednoj kodnoj reči.

- Nesimetrične (unsymmetric) - samo jedan tip greške, 0→1 ili 1→0, može se pojaviti u jednoj kodnoj reči, dok se drugi tip nikada neće javiti.

- Jednosmerne (unidirectional) - greške tipa 0→1 i 1→0 mogu se pojaviti, ali ne istovremeno, u jednoj kodnoj reči.

Statistički podaci o razvijenim VLSI kolima pokazuju da većina nastalih defekata u kolu dovodi do pojave jednosmernih grešaka, što znači da su sve greške istog tipa, 0→1 ili 1→0. To je dovelo do razvoja nekoliko kodova za detekciju ovakvih grešaka. Iz istog razloga, izlazni vektori kola koje obavlja neku funkciju predstavljaju se pomoću kodova za detekciju jednosmernih grešaka. Pre pregleda ovakvih kodova neophodno je definisati neke pojmove koji će se kasnije koristiti.

Neka su X i Y dva binarna skupa od k elemenata. Neka je N(X,Y) broj prelaza 1→0 iz skupa X u skup Y. Na primer, ako je 101010=X i 110101=Y , onda je 2=N(X,Y) a

3=N(Y,X) . Reč ), ..., x, xX(x k21 pokriva (cover) drugu reč ), ..., y, yY(y k21 , simbolički predstavljeno kao YX ≥ , ako za 1=iy sledi da je 1=ix pri čemu , ..., k, i 21= . Drugim rečima, pozicije 1-ca u skupu Y su podskup pozicija 1-ca u skupu X. Na primer, ako je

X 101010= i 101000=Y , onda YX ≥ . Može se još i reći da ako skup X pokriva skup Y, onda je 0=N(Y,X) . Ako skup X ne pokriva skup Y i skup Y ne pokriva skup X, onda su X i Y neuređeni (unordered) skupovi. Kôd u kome nema kodne reči koja je pokrivena nekom drugom kodnom reči naziva se neuređeni kôd [Lala01].

3.3.2.1. Neuređeni kodovi za detekciju jednosmernih grešaka

Neuređeni kôd ima mogućnost detektovanja svih jednosmernih grešaka, zato što u takvom kodu, jednosmerna greška ne može da promeni jednu kodnu reč u drugu. Neuređeni kodovi mogu biti izdvojivi (Bergerov kôd) ili neizdvojivi (m-out-of-n kodovi). Ovi kodovi mogu detektovati greške na jednom bitu, kao i jednosmerne višestruke greške [Lala01].

m-od-n kod Kodna reč m-od-n (m-out-of-n) koda sadrži tačno m jedinica i (n-m) nula. Ukupan broj

validnih kodnih reči je (n-m)!m!n! . Osnovna prednost m-od-n koda je u tome što vrlo lako vizuelizuje proces detekcije greške. Međutim, glevni nedostatak je u tome što je m-od-n neizdvojiv kôd pa je teško izvršiti proces kodiranja, dekodiranja i detekcije, a samim tim povećava se kašnjenje i broj modula u sistemu [Moha77].

Specifičan podskup m-od-n koda je 1-od-n kôd u kome je samo jedan bit 1 a svi ostali su 0. Ako je u m-od-n kodu 2n/m = , onda je kôd optimalan. Drugim rečima, ne postoji drugi neuređen kôd, sem koda n/2-od-n, koji ima više kodnih reči dužine n. Ovakav kôd je najlakše generisati jer kodna reč od n bitova sadrži tačno n/2 jedinica, a generiše se dodavanjem n/2 bitova informaciji koja takođe sadrži n/2 bitova. Nedostatak n/2-od-n koda je što ima dva puta

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

36

više bitova od onih koji su potrebni za predstavljanje informacije, što znači da je redundansa koda 100%. Prednost je u tome što su procesi kodiranja i dekodiranja jednostavni zbog toga što je ovo izdvojiv kôd. Dekodiranje se vrši jednostavnim odstranjivanjem dodatnih bitova iz kodne reči.

Berger-ov kôd Berger-ov kôd je najmanje redundantan neuređeni kôd. Ako ovaj kôd ima dužinu od n

bitova, pri čemu je k informacionih i c bitova za proveru, onda je )(kc 1log2 += i ckn += . Kodna reč se formira tako što se informacionim bitovima dodaje komplement binarne prezentacije broja jedinica u informacionim bitovima. Ovi dodatni bitovi čine bitove za proveru (check bits). Na primer, ako je 0101000=k , 317log2 =+= )( c , a pošto Berger-ov kôd mora da ima dužinu 3)7(10 += , c bitova za proveru generišu se na sledeći način: Neka je broj jedinica u informacionim bitovima 2=k , onda je binarni ekvivalent 0102 = , komplement binarnog broja 010 je 101, što predstavlja c bitova za proveru, pa je

n = 0101000 101 k c

Na osnovu prethodnog može se reći da su c bitova za proveru, ustvari, binarna prezentacija broja 0 u okviru k informacionih bitova. Šema koja, kao bitove za proveru, koristi komplement binarne prezentacije broja 1-ca u informacionim bitovima naziva se B1 šema kodiranja. Druga šema koja koristi komplement binarne prezentacije broja 0-a u informacionim bitovima naziva se B0 šema kodiranja.

Ako je broj informacionih bitova u Berger-ovom kodu 12 -I c= , 1≥c , onda je to Berger-ov kôd maksimalne dužine. Na primer, Berger-ov kôd 0101000 101 je maksimalne dužine pošto je 3=c i )-(k c 127 == , dok kôd 110100 011 nije maksimalne dužine zato što je 3=c i 6=k [Lala01].

Motivacija za izbor Berger-ovog koda dolazi od činjenice da defekti u kolima najčešće uzrokuju jednosmerne greške, a Berger-ov kôd je optimalan izdvojiv kôd kojim se mogu detektovati sve jednosmerne greške [Moha77]. Berger-ovim kodom mogu se detektovati greške na jednom bitu i jednosmerne višestruke greške u kodnoj reči zbog sledećih činjenica:

1) Ako postoje jednosmerne greške u informacionom delu, onda će broj nula u informacionim simbolima pogrešne reči biti veći od vrednosti provere u slučaju greške 1→0, a manji u slučaju grešaka 0→1.

2) Ako postoje jednosmerne greške u delu za proveru, onda će broj nula u informacionim simbolima pogrečne reči biti manji od vrednosti provere u slučaju greške 0→1, a veći u slučaju grešaka 1→0.

3) Ako postoje jednosmerne greške u informacionom delu i u delu za proveru, onda će se broj nula u informacionim simbolima pogrečne reči povećati u slučaju grešaka 1→0 i smanjiti u slučaju grešaka 0→1. Sa druge strane, vrednost za proveru pogrečne reči smanjiće se u slučaju grešaka 1→0, a povećati u slučaju grešaka 0→1. U svim navedenim slučajevima mogu se detektovati višestruke jednosmerne greške.

Šema zasnovana na Berger-ovom kodu predložena je u radu [DeK94]. Zbog podele zajedničkih članova u višenivovskim kolima, jedan defekt u logičkom gejtu takvog kola može potencijalno da utiče na više izlaza. Ako defekt uzrokuje da jedan izlaz generiše pogrešnu vrednost 1 umesto korektne vrednosti 0, a drugi izlaz generiše pogrešnu vrednost 0 umesto korektne vrednosti 1, onda se korišćenjem Bergerovog koda defekt ne može detektovati. Kao

3. Konkurentna detekcija greške

37

što se vidi sa slike 3.5, usled defekta unutar kola može se javiti bidirekciona greška na primarnim izlazima pQ i qQ ako na putu od mesta defekta do izlaza pQ ne postoji invertor, a na putu do izlaza qQ postoji jedan invertor. Zato se višenivovska kola moraju projektovati uz neka ograničenja, na taj način da defekt rezultuje jednosmerne greške na izlazima [DeK94].

Slika 3.5. Defekt u višenivovskom kolu može da uzrokuje bidirekcionu grešku na izlazima

Jasno je da za detektovanje svih jednosmernih grešaka u kodnoj reči treba izabrati Berger-ov kôd, ali ako treba detektovati samo određen broj, t, jednosmernih grešaka onda ovo nije najoptimalnije rešenje.

3.3.2.2. Kodovi za detekciju t jednosmernih grešaka

Konstrukcija koda za detekciju jednosmernih grešaka radije se bazira na detekciji određenog broja, t, jednosmernih grešaka nego na detekciji svih mogućih jednosmernih grešaka. Jedna od karakteristika kodova za detekciju t jednosmernih grešaka je simetričnost, jer su bitovi za proveru izdvojeni od informacionih bitova. Za ove kodove se može implementirati paralelno kodiranje/dekodiranje, pa su zato pogodni za brze računarske sisteme. Pored toga, ovakvi kodovi imaju tačno određen broj bitova za proveru koji ne zavisi od broja informacionih bitova. Jedan od kodova za detekciju t jednosmernih grešaka je Bose-Lin-ov kôd [Bose85].

Bose-Lin-ov kôd Bose i Lin su predložili sistematski kôd za detekciju t jednosmernih grešaka (t-

unidirectional error detecting codes, t-UED). Oni su definisali optimalan kôd za detekciju jednosmernih grešaka višestrukosti 2, 3, i 6 uz korišćenje 2, 3, i 4 bita za proveru, respektivno. Ako je k0 - broj 0-a u informacionim bitovima, a c - broj bitova za proveru, onda se bitovi za proveru (check symbol - CS) generišu se na sledeći način [Jha191]:

i) 40 modkCS = , sa 2=c detektuju se 2 jednosmerne greške

ii) 80 modkCS = , sa 3=c detektuju se 3 jednosmerne greške

iii) ( ) 480 += modkCS , sa 4=c detektuje se 6 jednosmernih grešaka.

Primera radi, bitovi za proveru koji su potrebni da bi se detektovale 2-, 3- i 6-bitne jednosmerne greške u informacionom vektoru

1011010111000111 su 10(=2), 110(=6), i 1010(=10), respektivno.

Bose i Lin su, takođe, pokazali da višestrukost grešaka koje se mogu detektovati korišćenjem kodova za detekciju jednosmernih grešaka zavisi od načina formiranja bitova za proveru. Oni su predložili dve metode za konstrukciju koda. Prvi metod se koristi u slučaju da je za kodiranje potrebno maksimalno četiri bita, a drugi metod važi za slučaj da je za kodiranje potrebno četiri ili više bitova.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

38

Detaljno ćemo opisati prvi metod koji se sastoji od sledeća dva koraka:

1. Broj bitova za proveru, c, koji su potrebni da bi se detektovale 2- i 3-jednosmerne greške iznosi 2

0 2modk i 30 2modk , respektivno, gde je 0k broj 0-a u informacionim

bitovima. 2. Ako je za proveru potrebno četiri ili više bitova oni se dele u dva bloka pri čemu

prvom bloku pripadaju dva bita najveće težine, a drugom bloku ostalih ( )2−c bitova. Prvo se određuje ( )012

10 2mod , q, ..., qqk c-

c- = , a onda bitovi za proveru 011 , p, ..., ppc- gde je

21 c-c- qp = , 22 c-c- qp = , i jj qp = za bilo koje j.

Maksimalan broj jednosmernih grešaka koje se mogu detektovati ovim načinom kodiranja je 22 2 c-c- + .

Na primer, za sledeću grupu informacionih bitova

1011111110000011

najpre određujemo 012141

0 1102mod62mod qqqk -c- === , a zatim dobijamo bitove za proveru 10100123 =pppp [Lala01].

3.3.3. Kodovi ostatka

Kodovi ostatka su izdvojivi kodovi koji se najčešće koriste za detekciju grešaka u rezultatu aritmetičkih i aritmetičko logičkih operacija u digitalnim sistemima [Moha77]. Ostatak, r, pri deljenju celog broja, N, osnovom provere, A, predstavlja se kao ANr mod= . Broj bitova za proveru određuje se kao [ ]A2log . Konkatenacijom binarnih prezentacija broja N i ostatka r dobija se kodna reč, Nr, za kôd ostatka.

Na primer, ako su bitovi podatka 1110 i osnova provere 3=A , onda je broj bitova za proveru [ ] 23log2 = , a u binarnom obliku: 23mod14 = , tj. 10.

Primenom koda ostatka mogu se proveriti aritmetičke operacije sabiranja i oduzimanja na taj način što se poredi ostatak rezultata operacije nad brojevima N1 i N2 sa rezultatom operacije po modulu A nad njihovim ostacima r1 i r2, a može se predstaviti na sledeći način:

( ) ( ) ArrANN modmod 2121 ±=±

( ) ( ) ArrANN modmod 2121 =

Kompleksnost u realnoj implementaciji kodova ostatka može da se smanji pogodnim izborom osnove provere. Za tu svrhu predstavićemo ceo broj X u obliku ( )021 ...XXXX nn −−= , gde Xi za 1...,,1,0 −= ni predstavlja bajt širine b-bitova. Izračunavanje ostatka znatno je pojednostavljeno izborom osnove provere 12 −= bA , jer se u tom slučaju bitovi provere izračunavaju na sledeći način [Tohm86]:

( ) ( )12mod12mod1

0−

∑=−=

=

bn

ii

bc XXX

Kodovi ostatka sa osnovom provere 12 −b nazivaju se kodovi ostatka sa niskom cenom (low-cost residue codes). Korišćenjem ovog koda mogu se detektovati greške na jednom bitu.

3. Konkurentna detekcija greške

39

3.3.4. AN kodovi

AN kôd je primer neizdvojivog koda. Za ceo broj N kodna reč se formira kao proizvod broja N i celobrojne osnove provere A. Korišćenjem ovog koda zbir dva broja N1 i N2 može se predstaviti u obliku ( )2121 NNAANAN +=+ koji je jednak kodovanom obliku njihovog zbira [Tohm86].

3.3.5. Kodovi dupliciranja

Kodovi dupliciranja formiraju kodnu reč tako što se originalna informacija kompletno duplicira. Varijanta ovog osnovnog pristupa je komplementirano dupliciranje (Dual-Rail Code).

Prednost ovog koda je jednostavnost jer se bitovi informacije dodaju sami sebi, a nedostatak koda je veliki broj dodatnih bitova. Najopštiji izdvojiv kôd je kôd dupliciranja kod koga je deo za proveru jednak delu koji predstavlja podatak. Kodovi dupliciranja su našli veliku primenu u memorijskim i komunikacionim sistemima [John89].

3.3.6. Kontrolna suma

Kontrolna suma predstavlja vrstu izdvojivog koda koji se koristi kada se blokovi podataka (poruke) prenose iz jedne tačke u drugu. Kontrolna suma predstavlja određenu količinu informacija koja se na predajnoj strani dodaje bloku podataka radi lakše detekcije grešaka na prijemnoj strani. Mogu se koristiti četiri osnovna tipa kontrolnih suma: kontrolna suma jednostruke tačnosti, kontrolna suma dvostruke tačnosti, kontrolna suma tipa Honeywell, i kontrolna suma ostatka [John89].

3.4. Klasifikacija kola sa samoproverom

Jedan od načina za projektovanje kola sa samoproverom je korišćenje kodova za detekciju greške. Ovaj princip se može objasniti na osnovu preslikavanja ulazno/izlaznih signala kola. Neka kolo ima n primarnih ulaznih i m izlaznih linija. Onda n2 binarnih vektora dužine n formiraju ulazni prostor, X , a skup od m2 binarnih vektora određuje izlazni prostor, Z . Kôd deli izlazni prostor na dva razdvojena skupa. Prvi je skup kodnih reči, tj. vektori koji zadovoljavaju traženu osobinu a drugi je skup nekodnih reči, tj. vektori koji ne zadovoljaju traženu osobinu.

Detekcija defekata zavisi od mogućnosti primenjenog koda. Pojavljivanje nekodne reči na izlazu predstavlja prisustvo defekta u kolu. Drugim rečima, pomoću kola sa samoproverom detektuje se svaki defekti koji generiše izlaznu konfiguraciju koja ne pripada skupu kodnih reči. Međutim, defekt koji generiše kodnu reč na izlazu ne može da bude detektovan. Takav defekt ili ne uzrokuje grešku (sistem je redundantan na defekte) ili generiše kodnu ali nekorektnu reč (kritična situacija). Prema tome, kodiranje podataka je operacija koja garantuje detekciju greške, ali ne i detekciju defekata. Zato je neophodno da se pri projektovanju kola ima u vidu i potrebna strategija sinteze za dobijanje mreže u kojoj svi defekti uzrokuju jedino greške koje se mogu detektovati. Ukažimo sada na ovakve i još neke probleme koji prate projektovanje kola sa samoproverom.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

40

Na osnovu prethodno rečenog, jasno je da pojava nekodne izlazne reči nepobitno ukazuje na pristutvo defekta u funkcionalnom modulu, ali da obrnuto tvrđenje u opštem slučaju ne mora biti tačno. Naime, prisutvo kodne reči na izlazu nije 100%-na garancija da kolo funkcioniše ispravno. Može se desiti da je manifestacija defekta takva da se na izlazu generiše pogrešna, ali ipak kodna reč. U tom slučaju, greška prolazi nedetektovana. Na primer, ako je funkcionalni modul kola sa samoproverom koje koristi kôd parnosti otkazao na takav način da su svi njegovi izlazi fiksirani na 0, kolo za proveru neće detektovati grešku. S tim u vezi, o samoproveri se uvek govori u kontekstu pretpostavljenog skupa defekata. Na primer, najčešće korišćeni model defekta je stuck-at model koji podrazumeva da u kolu ne postoje defekti ili postoji samo jedan defekt stuck-at tipa, što znači da su neki od ulaza ili izlaza komponente u kolu stalno postavljeni (povezani) na logičku 1 ili 0. Osnovni razlog za ovu standardnu pretpostavku da sistem može imati najviše jedan defekt, je taj što je sistem testiran pre nego što je počeo da radi i da tada nije bilo defekata. Takođe, verovatnije je da će se u jednom trenutku javiti jedan defekt, a ne svi odjednom. Da bi važila prethodna pretpostavka neophodno je pretpostaviti i to da je vreme između pojave i detekcije defekta dovoljno malo tako da se taj defekt može detektovati pre nego što se drugi pojavi. Ovo vreme između pojave i detekcije defekta je period latencije greške [Sand90].

U kolima sa samoproverom izlazi su kodirani određenim kodom za detekciju greške, a pojava defekta unutar kola utiče na promenu izlaza kola. Međutim, jedan defekt može da utiče na jedan, ali i na više izlaza, pa konstrukcija koda postaje teža. U cilju rešavanja ovog problema uvodi se još jedno ograničenje po kome jedan defekt može uticati na više izlaza, ali su promene svih izlaza u istom smeru, odnosno dozvoljene su samo jednosmerne greške (0 prelazi u 1, ili 1 prelazi u 0). Takve greške mogu da detektiju kodovi za detekciju jednosmernih grešaka, kao na primer Berger-ov i m-od-n kôd [Sand90].

Osim u funkcionalnom modulu, defekt se može javiti i u kolu za proveru. Kao posledica takvog defekta, izlaz kola za proveru može ostati neaktivan. Iz tog razloga, posebna pažnja se posvećuje projektovanju kola za proveru, koja moraju biti u stanju ne samo da detektuju nekodne reči funkcioalnog modula, već i prisustvo defekta u sopstvenoj strukturi.

Na osnovu prethodnog, zaključak je da projektovano kolo može imati mogućnost samoprovere samo za pretpostavljeni skup defekata. Takav skup uključuje defekte na jednom bitu (single stuck-at faults) i jednosmerne višestruke defekte (unidirectional multiple faults). Kod defekata na jednom bitu pretpostavlja se da je fizički defekt u kolu doveo do postavljanja (stuck-at) jedne od linija signala na logičku 0 ili na logičku 1. Ako je u isto vreme više od jedne linije u kolu postavljeno na 1 ili na 0, onda kolo ima višestruku grešku. Možemo reći da je jednosmerna greška varijanta višestruke greške kod koje su svi elementi, odnosno sve linije postavljene na 1 ili na 0, ali ne istovremeno na obadve vrednosti. Ako je neka ulazna promenljiva prisutna u izrazima za dobijanje izlaza kola u svom normalnom ili komplementarnom obliku, ali ne u oba, onda će bilo koji defekt na putu od ulaza koji odgovara toj ulaznoj promenljivoj do primanih izlaza uzrokovati ili grešku na jednom bitu ili jednosmerne višestruke greške na izlazima. Prema tome, ne postoji defekt koji će generisati bidirekcione greške [Lala01].

Kola sa samoproverom moraju da imaju sledeće osobine: - samotestiranje (Self-Testing - ST) - sigurnost na defekat (Fault-Secure - FS).

Kolo ima mogućnost samotestiranja ako, za svaki defekt iz pretpostavljenog skupa, generiše nekodnu reč na izlazu za najmanje jednu kodnu reč na ulazu. Da bi ovo ilustrovali neka F bude pretpostavljen skup defekata, a I i Y1 skup ulaznih i izlaznih kodnih reči. Kao što

3. Konkurentna detekcija greške

41

je prikazano na slici 3.6, ako je Z izlazni prostor a Y2 skup nekodnih reči, onda je 2YYZ 1 ∪= . Ako je za ulaz Ii ∈ korektan izlaz kola 11 Yy ∈ , onda je, u prisustvu defekta Ff ∈ , za isti ulaz i nekorektan izlaz kola 2

'1 Yy ∈ [Lala01].

Slika 3.6. Osobina samotestiranja

Osobina samotestiranja omogućava da za svaki defekt u pretpostavljenom skupu postoji najmanje jedna ulazna kodna reč za koju se kao rezultat dobija nekodna reč na izlazu. Drugim rečima, bilo koji defekt iz predloženog skupa detektovaće se pomoću najmanje jedne kodne reči na ulazu [Lala01], [Moha77], [Maro78].

Za pretpostavljeni skup defekata kolo je sigurno u prisustvu defekta (fault-secure) ako, za bilo koji defekt u skupu, izlaz kola je ili korektna kodna reč ili nekodna reč. Drugim rečima, za kodnu reč na ulazu kolo nikad ne daje nekorektnu kodnu reč na svom izlazu. Preslikavanje kodne reči na ulazu u kodnu reč na izlazu u prisustvu defekta Ff ∈ prikazano je punom linijom na slici 3.7. Primetimo da, u prisustvu defekta, izlaz ne može da bude kodna reč i da se u isto vreme razlikuje od korektne kodne reči na izlazu, y1. Prema tome, sve dok je na izlazu kodna reč moramo pretpostaviti da će biti korektna [Lala01], [Moha77], [Maro78].

Slika 3.7. Osobina sigurnosti na defekte

3.4.1. Kola sa potpunom samoproverom

Cilj koji postižu kola sa samoproverom često se naziva cilj potpune samoprovere (Totally Self-Checking - TSC). To znači da će svaka greška na izlazu kola koje obavlja neku funkciju uzrokovati indikaciju greške na izlazu kola za proveru.

Kolo ima sposobnost potpune samoprovere ako zadovoljava uslove samotestiranja i sigurnosti u prisustvu defekta. Ovakva kola su vrlo pogodna za projektovanje digitalnih sistema zato što, u toku normalnog rada kola, bilo koji defekt iz datog skupa uzrokuje grešku na izlazu koja se može detektovati. Prednosti kola sa potpunom samoproverom su sledeće:

- Povremeni defekti se mogu detektovati na isti način kao i stalni. - Defekti se detektuju odmah nakon pojavljivanja, što je preventivna mera u očuvanju

podataka.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

42

- Softverski dijagnostički programi se eliminišu ili znatno pojednostavljaju.

Na slici 3.8 prikazan je model kola sa potpunom samoproverom. Sastoji se od funkcionalnog kola i kola za proveru (checker). U toku normalnog rada funkcionalno kolo ne generiše sve moguće izlazne kombinacije bitova, tj. generiše podskup izlaznog kodnog prostora koji se sastoji od kodnih reči [Sand90]. Na prisustvo defekta u kolu ukazuje pojavljivanje nekodnog izlaza. Funkcija kola za proveru je da proveri validnost izlazne kodne reči. Na osnovu izlaza kola za proveru moguće je detektovati bilo koji defekt u funkcionalnom kolu ili u samom kolu za proveru. Međutim, na osnovu informacije dobijene na izlazu kola za proveru nije moguće locirati defekt [Lala01].

Slika 3.8. Model kola sa potpunom samoproverom

Osobina sigurnosti na defekte namenjena je garanciji da su bilo koji prethodni rezultati u indikaciji greške korektni, a osobina samotestiranja namenjena je otkrivanju svih defekata što znači da oni ne mogu formirati nemodelovane defekte [Smit83].

3.4.2. Kola koja su potpuno sigurna u prisustvu defekta

Sposobnost kola sa potpunom samoproverom zasniva se na pretpostavkama da svaki defekt pripada pretpostavljenom skupu defekata i da se oni pojavljuju sekvencijalno sa dovoljno dugim vremenskim intervalom između dva defekta kako bi se omogućilo da svi kodirani ulazi budu primenjeni na kolo za testiranje. Prema tome, kolo sa potpunom samoproverom, u prisustvu defekta, daje nekodnu reč kao pogrešan izlaz [Lala01].

Ako je kolo sigurno u prisustvu defekta a nije samotestirajuće za skup defekata, F, onda, za primenjeno kodiranje na ulazu, može da postoji defekt Ff ∈1 koji neće generisati nekodnu reč na izlazu, i javiće se nekorektan izlaz. Drugim rečima, defekt f1 može da ostane nedetektovan i da se, eventualno javi drugi defekt. Kada se javi drugi defekt Ff ∈2 kolo ima kombinovani defekt 21 ff ∪ , koji ne pripada skupu F. Prema tome, ne može se garantovati da će kolo biti sigurno i u prisustvu defekta 21 ff ∪ , i nekorektna kodna reč se može javiti na izlazu [Smit78].

Za defekt Ff ∈1 , a u odnosu na skup defekata F, možemo reći da je kolo, pod strogim uslovima, sigurno u prisustvu defekta (strongly fault-secure - SFS) ako je:

1. samotestirajuće i sigurno u prisustvu defekta 2. sigurno u prisustvu defekta f1, a ako se javi drugi defekt Ff ∈2 , onda za sekvencu

21 ff ∪ važi jedna od osobina 1 ili 2.

Kolo je sigurno u prisustvu svih defekata iz skupa defekata F, pod strogim uslovima, ako je sigurno i u prisustvu svih sekvenci defekata čiji članovi pripadaju skupu F. Može se lako videti da pod ovom pretpostavkom svako kolo postiže cilj potpune samoprovere ako je, pod

3. Konkurentna detekcija greške

43

strogim uslovima, sigurno u prisustvu defekata. Kolo koje je sigurno u prisustvu defekata, ali nije pod strogim uslovima, na izlazu će pre generisati nekorektnu kodnu reč nego nekodnu reč.

Definicije mreža koje su pod strogim uslovima sigurne na prisustvo defekata i mreža koje imaju osobinu potpune samoprovere, sastoje se od funkcionalnog opisa kola i njegovog ponašanja u prisustvu defekata. Međutim, u cilju konstrukcije takvih mreža neophodno je razmotriti karakteristike koje se odnose na strukturu povezivanja gejtova i na kodiranje izlaza. U tom smislu definiše se osobina sigurnosti u prisustvu defekata na putu (path fault secure – PFS). Kolo je sigurno u prisustvu defekata na putu (PFS) ako za svaki defekt u specificiranoj klasi defekata, propagacija greške kroz bilo koji skup strukturnih puteva od strane defekta ka izlazima neće nikad generisati nekorektnu kodnu reč na izlazu [Toub97]. Ova osobina implicira osobinu stroge sigurnosti u prisustvu defekata i ima prednost nad njom jer se lako verifikuje.

Na slici 3.9 [Smit78] prikazana je veza koja postoji između mreža koje su sigurne na defekte, pod strogim uslovima sigurne na defekte, sigurne na defekte na putu i mreža sa potpunom samoproverom.

Slika 3.9. Veza između mreža koje su FS, SFS, PFS i TSC

3.4.3. Kola sa potpunim razdvajanjem kodova

Kolo je kodno-razdvojeno (code-disjoint) ako se ulazne kodne reči preslikavaju u izlazne kodne reči, a ulazne nekodne u izlazne nekodne reči. Pojam osobine kodnog-razdvajanja ilustrovan je na slici 3.10 pri čemu pune linije predstavljaju preslikavanje ulaznih kodnih u izlazne kodne reči, a isprekidane linije predstavljaju preslikavanje ulaznih nekodnih u izlazne nekodne reči [Lala01].

Slika 3.10. Osobina razdvajanja kodova

Kolo je potpuno kodno-razdvojeno (strongly code-disjoint) za pretpostavljen skup defekata ako je, za svaki defekt u skupu, kodno razdvojeno i samotestirajuće, ili, u slučaju da nije samotestirajuće onda, ako je i dalje kodno razdvojeno za kombinaciju nedetektovanih i drugih defekata iz skupa defekata. Drugim rečima, kolo ostaje kodno razdvojeno za bilo koju

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

44

sekvencu grešaka iz skupa grešaka. U nekim slučajevima nekodna reč na ulazu preslikava se u kodnu reč na izlazu; ova osobina je poznata kao slabo kodno-razdvajanje (weakly code-disjoint). Pre diskusije o ovoj osobini neophodno je koristiti neke ranije pomenute definicije o osobinama pokrivenosti i neuređenosti skupova.

Ako najmanje jedna kodna reč pokriva nekodnu reč, onda se ona naziva pokrivena nekodna reč. Alternativno, ako nekodna reč pokriva najmanje jednu kodnu reč onda se ona zove pokrivajuća nekodna reč. Nekodna reč će biti neuređena nakodna reč ako je neuređena u odnosu na sve kodne reči [Lala01].

Smatra se da je kolo slabo kodno-razdvojeno ako i samo ako zadovoljava sledeće osobine:

1. Na izlazu daje nekodnu reč za neuređenu nekodnu reč na ulazu. 2. Na izlazu daje nekodnu reč ili korektnu kodnu reč za pokrivajuću kodnu reč na ulazu i.

Drugim rečima, izlaz je isti kao da je dobijen pomoću ulaznih kodnih reči pokrivenih sa i. 3. Na izlazu daje nekodnu reč ili korektnu kodnu reč za pokrivenu nekodnu reč na ulazu

j; tako je kodna reč na izlazu ista kao da je dobijena pomoću ulaznih kodnih reči koje pokrivaju j [Lala01].

Ako kolo ispunjava uslove samotestiranja i razdvajanja kodova onda se naziva kolo za proveru koje ima mogućnost samoprovere (Self-Checking Checker - SCC) [Moha77], [Maro78].

3.5. Kola za proveru koja imaju osobinu potpune samoprovere

Mnoga digitalna kola sadrže detektore grešaka, odnosno kola za proveru, koja detektuju i signalizuju pojavu grešaka. Osnovni razlozi uvođenja ovakvih kola su lociranje mesta na kome postoji defekt i sprečavanje prostiranja grešaka kroz sistem. Jedan od načina da se, pri prenosu podataka, ovi zahtevi ostvare, jeste da se primljeni podatak proveri i da se, u slučaju detektovanja greške, zahteva ponovni prenos ili korekcija primljenih podataka. Drugi način se koristi kod aritmetičkih izračunavanja pri čemu se, u slučaju detektovanja pogrešnog rezultata, izračunavanje ponavlja [McCl90].

3.5.1. Strukture kola za proveru

Struktura kola za proveru uglavnom je određena na osnovu koda za detekciju greške. Ovim kodom se kodira podatak koji će se proveravati. Najvažnija karakteristika koda je ta da li je izdvojiv ili ne, odnosno da li se svaka reč može se podeliti na dva dela: deo koji predstavlja podatak i deo za proveru datog podatka. Opšta struktura kola za proveru za bilo koji izdvojiv kôd data je na slici 3.11 [McCl90].

Slika 3.11. Opšta struktura kola za proveru za izdvojiv kôd

3. Konkurentna detekcija greške

45

Kolo za proveru određuje da li kodirana informacija, koja se sastoji od bitova podatka i bitova za proveru, a generiše je funkcionalna jedinica, pripada skupu kodnih reči ili ne. To zavisi od prisustva defekta unutar funkcionalne jedinice. Na primer, za podatak veličine jednog bajta koji je kodiran kodom parnosti, kolo za proveru ima devet bitova na svom ulazu i određuje njihovu parnost [McCl90].

Kolo za proveru koje ima mogućnost potpune samoprovere (Totally Self-Checking Checker - TSCC) je svako kolo koje ima sledeće osobine [Moha77], [JhaN93]:

a) sigurnost u prisustvu defekta - ako se defekt koji pripada određenom skupu defekata pojavi u kolu za proveru, onda će na njegovom izlazu biti ili korektna kodna reč ili nekodna reč

b) samotestiranje - postoji bar jedna kodna reč na ulazu koja se koristi za testiranje kola za proveru, koje generiše nekodnu reč na svom izlazu u slučaju da u kolu postoji defekt iz određenog skupa defekata

c) razdvajanje kodova - pod uslovom da u kolu za proveru nema defekata, na njegovom izlazu javiće se kodna reč samo u slučaju da je i na ulazu kodna reč, dok u suprotnom slučaju, na izlazu je nekodna reč ako je i na ulazu nekodna reč.

Kolo za proveru ima osobinu potpune samoprovere za sledeći skup defekata [Lala01]: • postavljanje fiksne vrednosti 0 ili 1 na ulaznim ili izlaznim vezama • premošćavanje ulaznih veza • prekid na ulaznim vezama • premošćavanja između sorsa i drejna, gejta i sorsa, i gejta i drejna bilo kog tranzistora • tranzistori u stanju zakočenja ili zasićenja.

3.5.1.1. Kolo za proveru jednakosti

Kolo za proveru jednakosti upoređuje dve ulazne reči i utvrđuje da li odgovarajući bitovi tih reči imaju istu vrednost. Ovo kolo je ključna komponenta za poređenje izlaza originalnog i dupliciranog kola. Takođe se koristi u kolima za proveru izdvojivih kodova. Na slici 3.12 prikazana je struktura jednostavnog kola za proveru jednakosti dve 4-bitne reči X i Y. Svaki par bitova ovih reči dovodi se na XOR gejt čiji izlaz ima vrednost 0 sve dok sistem korektno radi. Nedostatak ovog kola je nemogućnost samotestiranja [McCl90].

Slika 3.12. Struktura jednostavnog kola za proveru jednakosti

Komplementiranjem svih bitova jedne reči dobija se kolo za proveru jednakosti koje ima mogućnost samotestiranja [McCl90].

3.5.1.2. Kolo za proveru sa dva izlaza

S obzirom da je već uvedena pretpostavka da u funkcionalnoj jedinici postoji samo jedan defekt, interesantna situacija se javlja kada postoji defekt u samom kolu za proveru. Na isti

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

46

način, može se pretpostaviti da i u kolu za proveru postoji jedan defekt, a da pri tome u funkcionalnoj jedinici nema defekta. Zato se i izlazi kola za proveru kodiraju pomoću koda za detekciju jednosmernih grešaka. Jedan bit na izlazu kola za proveru nije dovoljan za detekciju defekta zato što se na tom izlaznom bitu može javiti defekt postavljanja na određenu vrednost 0 ili 1, koji se ne može detektovati ako se u toku normalnog rada dobija vrednost 1 na izlazu kola [Hugh84]. Da bi kolo za proveru generisalo što manji broj izlaza koristi se kôd 1-od-2 (two-rail), a skup kodnih reči je 01, 10. Jednosmerna greška transformiše ovaj kôd u skup nekodnih reči 00, 11 i takvi izlazi signaliziraju pojavu greške, odnosno detekciju defekta (slika 3.13).

Slika 3.13. Izlazi kola za proveru sa dva izlaza

Kolo za proveru sa kodom 1-od-2 ima dve grupe ulaza, ( )nx...,,x,x 21 i ( )ny...,,y,y 21 , i dva izlaza, f i g. Trebalo bi da ovi izlazni signali budu komplementarni uvek kada su svi parovi ulaznih signala xj i yj, za sve vrednosti j ( nj ≤≤1 ), takođe komplementarni. Ovakvo kolo za proveru, ustvari, proverava da li svaki par ulaza ima komplementarnu vrednost tako što konvertuje n parova signala u jedan par signala koji su komplementarni jedan drugom ako i samo ako svaki od n ulaznih parova ima komplementarne vrednosti [McCl90]. Za detekciju defekta u samom kolu za proveru neophodno je odrediti ulaze koji se nazivaju test ulazi [Sand90].

Na slici 3.14 prikazano je kolo za proveru koje koristi 1-od-2 kôd i koje konvertuje dva para ulaznih signala u jedan par izlaznih signala. U slučaju da nema greške, na ulazu ovog kola su vrednosti 1110 =xx , 0010 =yy (jer važi uslov ,

ii xy = ), a izlazi kola su 0=f , 1=g . Ako se zbog pojave defekta promeni vrednost ulaznih bitova i dovede se 1010 =yy , onda nekodna reč na izlazu, 1== gf , predstavlja indikaciju greške. Činjenica je da ovakvo kolo ima osobinu potpune samoprovere za sve jednostruke i jednosmerne višestruke defekte.

B' A' BA +

B' A BA' +

A

A'

B'

B

Slika 3.14. Kolo za proveru sa dva izlaza za dva para ulaznih signala

Kolo za proveru može se testirati pomoću n2 ulaznih kombinacija, gde je n broj parova ulaznih signala [Ande73]. Prema tome, kolo sa slike 3.9 ima mogućnost samotestiranja ako se u toku normalnog rada na njegovom ulazu pojavljuju sve četiri validne kodne reči, 0101, 1010, 0110, 1001.

3. Konkurentna detekcija greške

47

Kolo za proveru sa dva izlaza i proizvoljnim brojem ulaznih parova može se projektovati korišćenjem dvonivovske AND-OR logike. Kao primer ovakve logičke strukture na slici 3.15 prikazano je kolo za proveru sa četiri para ulaza i jednim parom izlaza.

Slika 3.15. Kolo za proveru sa četiri para ulaza i jednim parom izlaza

Mnogo efikasnije rešenje u odnosu na prethodno je da se međusobnim povezivanjem modula za proveru dva para ulaznih signala (slika 3.14) napravi struktura stabla kojom se m parova ulaznih signala konvertuje u jedan par izlaznih signala. Za realizaciju višenivovske strukture stabla za proveru m parova ulaznih signala pomoću modula koji proveravaju n parova ulaznih signala potrebno je ( ) ( )[ ]11 −− nm modula i [ ]m2log nivoa. Na slici 3.16 prikazana je struktura stabla kola za proveru sa 6 parova ulaznih signala. Mogućnost samotestiranja ovakve strukture zavisi od toga da li su dovedeni ulazni signali dovoljni za testiranje ispravnosti rada tog stabla [McCl90].

Slika 3.16. Kolo za proveru sa dva izlaza i šest parova ulaznih signala

Postoji više načina za primenu kola za proveru na polju konkurentne detekcije greške, a to su: 1) samotestirajući komparator za duplicirane sisteme; 2) redukciono kolo koje smanjuje

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

48

broj izlaza kola za proveru na dva bita za indikaciju greške; 3) sastavni deo samotestirajućeg kola za proveru sistematskog koda kao što je Bergerov kôd [Mour89].

3.5.1.3. Komparator sa potpunom samoproverom

Komparator sa potpunom samoproverom verifikuje da se za sve ulazne vektore koji imaju istu vrednost (istu kodnu reč na ulazu) na izlazu dobija specificirana vrednost (kodna reč na izlazu). Izlaz kola sa potpunom samoproverom kodira se pomoću koda 1-od-2 (two-rail) što odgovara pretpostavljenom skupu defekata postavljanja jedne od veza na fiksnu vrednost 0 ili 1. Na slici 3.17 prikazan je komparator sa potpunom samoproverom sa dva k-bitna ulaza [Hugh84].

Slika 3.17. 2-ulazni k-bitni komparator

3.5.1.4. Kolo za proveru izdvojivih kodova

Način provere rada kola na osnovu bita parnosti je najjednostavniji i najčešće se koristi u računarskim sistemima. Kola za proveru parnosti primenjuju se kod memorija, registara, magistrala, konvertora kodova, komparatora i dekodera [Mour89].

Kola za proveru parnosti imaju najjednostavniju strukturu zato što kodiranje podatka pomoću koda parnosti omogućava da se deo za proveru sastoji od samo jednog bita. Na slici 3.18 prikazano je kolo za proveru parnosti 9-bitne kodne reči, a sastoji se od stabla XOR gejtova. U slučaju korišćenja koda neparne parnosti, za sve validne kodne reči, izlaz z imaće vrednost 1 [McCl90].

Slika 3.18. Kolo za proveru parnosti za 9-bitnu kodnu reč

U kolu sa slike 3.18 može se detektovati bilo koja greška nastala usled defekta postavljanja jednog od bitova na određenu vrednost 0 ili 1 u podmrežama H i J, koje imaju osobinu samotestiranja. Ove podmreže imaju osobinu samotestiranja ako bilo koji defekt postavljanja jednog od bitova na određenu vrednost uzrokuje indikaciju greške na izlazu kola za proveru za bar jednu validnu kodnu reč na njegovom ulazu. Bez obzira što podmreže H i J, posmatrane zajedno, imaju osobinu samotestiranja, kolo za proveru koje se sastoji od tri

3. Konkurentna detekcija greške

49

podmreže H, J i Z, nema ovu osobinu. Prema tome, kolo za proveru koje ima mogućnost potpunog samotestiranja mora da ima bar dva izlaza pri čemu svaki predstavlja parnost jednog od dva izdvojena ulazna podskupa [McCl90]. Razlog za ovo je već pomenut. Naime, ako postoji samo jedan izlaz i ako se na njemu javi defekt postavljanja na određenu logičku vrednost 0 ili 1, i ako se u toku normalnog rada kola upravo ta vrednost očekuje na izlazu, onda se takav defekt ne može detektovati u prisustvu kodne reči na ulazu [Stan102], [Stan202].

Kolo koje kombinuje četiri para izlaznih signala samotestirajućih kola za proveru (Self-Testing Checker - STC) u jedan par signala prikazano je na slici 3.19. Pogodno je za detekciju greške u 32-bitnim kompjuterskim sistemima. Kolo za proveru sa dva izlaza (Two Rail Checker - TRC) je kombinaciono kolo koje proverava da li sva četiri para ulaznih signala imaju komplementarne vrednosti i, ako je uslov ispunjen, na izlazu se dobijaju takođe komplementarne vrednosti signala [Tohm86].

Slika 3.19. Samotestirajuće kolo za proveru za 32-bitni podatak i 4 bita parnosti, nazvan 4STC

Projektovanje kola za proveru za Bergerov kôd zasniva se na kolu za proveru sa potpunom samoproverom za izdvojiv kôd koje je dato je na slici 3.20. Generator bitova za proveru je kombinaciona mreža koja na osnovu ulaznih informacionih bitova generiše k bitova za proveru koji čine vektor ∗

XP . U toku normalnog rada bitovi provere XP jednaki su bitovima ∗

XP . Kolo za proveru sa dva izlaza (TRC) proverava da li su dva ulaza k-torki ( XP , ∗XP ) komplementarni jedan drugom [Moha77]. Ako je na ulazu validna kodna reč i ako nema

defekata u generatoru i kolu za proveru onda su njegovi izlazi komplementarni, tj. 01 ili 10.

Slika 3.20. Kolo za proveru sa potpunom samoproverom za izdvojiv kôd

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

50

Procedura za projektovanje kola za proveru sa potpunom samoproverom za Bergerov kôd maksimalne dužine predstavljena je u [Maro78]. Generator bitova za proveru na svom izlazu generiše binarni broj koji odgovara broju jedinica u informacionim bitovima. Projektuje se pomoću skupa potpunih sabirača koji paralelno sabiraju informacione bitove ( )

1221 ...,,,−kxxx

i generišu binarni broj kggg ...,,, 21 koji odgovara broju jedinica u informacionim bitovima. Broj potrebnih modula sabirača je

( )∑ −−

=

−1

1

12k

a

a ak , gde je k broj bitova provere.

Prema tome, ako se kodna reč sastoji od tri informaciona bita i dva bita za proveru, onda se generator sastoji od jednog potpunog sabirača kod koga je izlaz za sumu 1gs = a izlaz za prenos 2gc = [Lala01].

3.6. Sekvencijalna kola sa samoproverom

U VLSI IC kolima koja implementiraju funkcije na nivou sistema, kao što su ASIC i ASIP kola, korektnost njihovog rada zavisi od korektnosti kontrolne logike. Pošto kontroleri kontinualno generišu signale za druge staze podataka i komponente, bilo koji defekt može da uzrokuje masovno prostiranje grešaka. Kontroleri su sekvencijalna kola koja, za razliku od kombinacionih, sadrže memorijske elemente. Drugim rečima, izlazi sekvencijalnog kola zavise ne samo od trenutnih vrednosti ulaznih signala već i od prethodnih vrednosti. Ponašanje kontrolera opisuje se apstraktnim modelom, poznat kao konačni automat (Finite State Machine - FSM) [Lala01]. Konačni automati se mogu opisati na nekoliko različitih načina [Ambl03]:

1) Opis FSM pomoću liste ulaza ( Σ ), stanja (Q ) i izlaza ( Ω ) koja se dopunjuje funkcijama prelaza (δ ) i izlaza ( λ ) naziva se specifikacija FSM. Funkcija prelaza, δ , obično se opisuje pomoću tabele u kojoj se novo stanje dobija kao funkcija ulaza i prethodnog stanja. Pored toga koristi se i predstavljanje funkcije prelaza pomoću krugova i strelica. Ovakav opis nije jedinstven jer dve FSM mogu biti ekvivalentne.

Funkcija prelaza, δ , definiše se kao preslikavanje QQ →×Σ . Drugim rečima, funkcija δ svakom paru stanja i ulaznog simbola pridružuje simbol stanja. Model FSM-a podrazumeva da je vreme podeljeno na intervale fiksnog trajanja, a da se prelaz iz jednog u drugo stanje dešava na početku svakog vremenskog intervala. Znači, za dato stanje i ulazne vrednosti u tekućem vremenskom intervalu, funkcija δ definiše u kom će stanju FSM biti u toku sledećeg vremenskog intervala.

Funkcija izlaza, λ , određuje izlazne vrednosti u tekućem stanju automata. Postoje dva tipa FSM-a, Murov i Milijev. Kod Murovog tipa, funkcija λ je difinisana kao preslikavanje:

Ω→Q , što znači da je svakom stanju pridružen izlazni simbol, tj. izlaz zavisi samo od tekućeg stanja. Kod Milijevog tipa, funkcija λ je preslikavanje: ΩΣ →×Q . U ovom slučaju, u svakom stanju, izlazni simbol je određen parom stanje - ulazni simbol, tj. izlaz zavisi od tekućeg stanja i ulaza.

Shodno definiciji FSM-a, skupovi Σ , Q i Ω mogu imati proizvoljan broj simbola. Međutim, kod praktičnih problema, radi se samo sa binarnim promenljivima, binarnim

3. Konkurentna detekcija greške

51

operatorima i binarinim memorijskim elementima. Iz tog razloga, funkcije δ i λ se definišu kao Bulove funkcije koje se realizuju uz pomoć logičkih kola.

2) Opis FSM pomoću liste gejtova i flip-flopova i veza između njih predstavlja detaljan opis implementacije na logičkom nivou i naziva se logička implementacija FSM. Ovaj opis se odnosi samo na sinhronu implementaciju pretpostavljajući postojanje CLOCK i RESET signala. Na ovaj način se ne dobija jedinstven opis jer projektant (ili CAD alat) mogu izabrati različite binarne kodove za predstavljanje informacija (ulazi, stanja, izlazi) što će dati različite implementacije.

3) FSM može da se opiše kao kombinacija nekoliko kola. Pri tome postoje različite kombinacije: serijska (ulazi jednog automata su izlazi drugog) i paralelna (neki od ulaza jednog automata su deo izlaza drugog i neki od ulaza drugog su izlazi prvog automata).

4) U najvećem broju slučajeva kola se opisuju kao skup registara, multipleksera, aritmetičkih operatora i magistrala. Ovaj tip opisa je Register Transfer Level - RTL koji omogućava da se kompleksni automati opišu na jednostavan način.

Svaki konačni automat može se realizovati pomoću flip-flopova i logičkih kola. Hardversku implementaciju konačnog automata čine dve glavne komponente: kombinacioni deo i memorijski element. Kombinacioni deo se sastoji od funkcije prelaza, δ , i funkcije izlaza, λ . U memorijskom elementu zadržava se trenutno stanje koje se predstavlja binarnom vrednošću. Konačni automat je kolo koje se projektuje tako da prolazi kroz posebna stanja po unapred određenom redosledu. Model konačnog automata predstavljen je na slici 3.21.

Slika 3.21. Model sinhronog konačnog automata (FSM)

3.6.1. Defekti u sekvencijalnim kolima

Defekti se u konačnom automatu mogu pojaviti na primarnim ulazima ili izlazima, ili unutar kombinacione logike narednog stanja i izlaza. Usvojen model defekata je stuck-at tipa i može se pojaviti na ulazu ili izlazu svakog gejta. Na osnovu prethodno izvedenih zaključaka za projektovanje kombinaciona kola, možemo reći da i konačni automat može imati mogućnost samoprovere samo za pretpostavljeni skup defekata. Takav skup uključuje defekte na jednom bitu i jednosmerne višestruke defekte.

Za defekt se kaže da je redundantan ako su izlazi automata sa i bez defekta identični. Redundantni defekti u sekvencijalnim kolima mogu se svrstati u dve kategorije: a) kombinaciono redundantni defekti (Combinationally Redundant Faults – CRF); i b) sekvencijalno redundantni defekti (Sequentially Redundant Faults – SRF) [Lala01].

Defekt je kombinaciono redundantan ako se njegov efekat ne može uočiti na primarnim izlazima ili ako ne utiče na sledeće stanje za svaku vrednost na ulazu i svako trenutno stanje.

Sekvencijalno redundantni defekti dele se u tri grupe:

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

52

1) Ekvivalentan SRF – pod uticajem ovog defekta automat prelazi u sledeće stanje ili u stanje koje je ekvivalentno sledećem očekivanom stanju.

2) Nevalidan SRF – ovaj defekt nije uzrok pogrešnog prelaza iz validnog u neko drugo validno stanje, ali može da uzrokuje prelaz iz nevalidnog u validno stanje.

3) Izomorfan SRF – ovaj defekt menja jedan ili više kodova stanja, ali je kolo izomorfno originalnom kolu.

3.6.2. Principi samoprovere u sekvencijalnim kolima

Princip samoprovere je, pored kombinacionih, pogodan i za projektovanje sekvencijalnih mreža koje se zasnivaju na strukturi konačnih automata. Ovaj pristup omogućava detekciju permanentnih i tranzijentnih defekata, kao i brzu identifikaciju pogrešnog ponašanja. Primena principa samoprovere na kombinaciona kola podrazumeva kodiranje izlaza, a kod sekvencijalnih kola kodiranje se primenjuje na izlaze i na stanja.

Koncepti samoprovere i sigurnosti na defekte najpre su definisani za kombinaciona kola. U cilju formalnijeg definisanja, ovi pojmovi su prošireni na sekvencijelna kola [Smit83]. Sve potrebne definicije date su u Dodatku B.

Model sekvencijalnog kola sa potpunom samoproverom odgovara modelu sa slike 3.4. Funkcionlno kolo čine logika narednog stanja i logika izlaza. Prema tome, za izlazne bitove i bitove stanja mogu se primeniti isti ili različiti načini kodiranja. U prvom slučaju, primena istog koda za obadve logike omogućava korišćenje samo jednog generatora bitova za proveru. Ali u slučaju primene različitih kodova za logike izlaza i narednog stanja uslovljava korišćenje dva različita generatora bitova za proveru, a samim tim i dva dvoizlazna kola za proveru. Izlazi ova dva kola za proveru dovode se na još jedno kolo za proveru i na kraju se, kao indikacija greške, generišu dva signala, k i j. Ovakva struktura sekvencijalnog kola sa samoproverom prikazana je na slici 3.22. Kao što se vidi, kolo za proveru je primenjeno na bitove trenutnog stanja i nalazi se iza memorijskih elemenata, mada može da se primeni i na bitove narednog stanja.

Slika 3.22. Model sekvencijalnog kola sa samoproverom

U visoko pouzdanim sistemima neophodno je detektovati greške i na stazi podataka i u samoj kontrolnoj jedinici. Za takve sisteme projektanti su predložili dva osnovna pristupa za

3. Konkurentna detekcija greške

53

on-line detekciju greške. Prvi pristup je da se primenom iste tehnike proveravaju i izlazi kontrolera i staza podataka. Drugi pristup je da se specijalne tehnike primene za posmatranje prelaza stanja, odnosno toka kontrole. Drugi pristup može da se ostvari ili kodiranjem stanja nekim od kodova za detekciju greške ili praćenjem toka kontrole specijalnim monitoring automatima. Prateći automat nadgleda rad glavnog automata, tako da se defekt u svakom automatu detektuje neposredno nakon pojavljivanja. Prateći i glavni automat rade u sinhronizmu (pobuđuju se istim taktnim signalom) i reaguju na iste ulaze. Ispravan rad glavnog automata se verifikuje poređenjem njegovog tekućeg stanja sa tekućim stanjem pratećeg automata. Trivijalno rešenje je ono kod koga je prateći automat identična kopija glavnog automata. Pojava defekta u bilo kojem od dva automata usloviće da se njihova stanja razlikuju. Međutim, ako se razmatranje ograniči na neki restriktivni model defekta, tada je moguće pojednostaviti prateći automat. Prateći automat (slika 3.23) obezbeđuje uniforman mehanizam za detekciju defekata kašnjenja i stack-at tipa [Pare95]. Za modele defekta, kao sto su defekti kašnjenja, ova tehnika omogućava značajno pojednostavljenje pratećeg automata. Međutim, za modele defekta kao što je stuck-at model, pojednostavljenje pratećeg automata obično je relativno malo. Ove tehnike dovode do povećanja površine, degradacije performansi i kašnjenja u detekciji greške. Njihov uticaj na brzinu sistema ne može da se toleriše za visoko performansne aplikacije [Hell98].

Slika 3.23. Kontrola sekvencijalnog kola

U cilju dobijanja brzih kontrolera sa samoproverom mogu se kombinovati šeme za detekciju greške i tehnike dekompozicije. Ako se, pri tome, na svaki podautomat primeni detekcija greške, dolazi do velikog povećanja površine. Zato je bolje rešenje da se u potpunosti primeni tehnika dekompozicije kontrolera na podautomate, ali da svi dobijeni automati, preko multipleksera, koriste isto kolo za proveru [Hell98].

3.7. Sistemi sa samoproverom

Svi koncepti samoprovere koji su prethodno definisani za kombinacione i sekvencijalne mreže važe i za ceo digitalni sistem. Sistem sa potpunom samoproverom prikazan je na slici 3.24 [JhaN93]. Funkcionalna kola 1 i 2 su kombinaciona, a funkcionalno kolo 3 je sekvencijalno. Izlazi kola za poveru 1, 2, 3 i 4 redukovani su korišćenjem dodatna tri kola za proveru sa dva izlaza, i na kraju su dobijena samo dva izlaza, 1z i 2z .

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

54

Slika 3.24. Sistem sa potpunom samoproverom

3.8. Manifestacija grešaka na nivou sistema

U cilju postizanja pouzdanosti prvi i osnovni korak je detekcija greške. U ovom poglavlju već su razmotreni načini detekcije i dobijanja signala o postojanju greške. Sada se postavlja pitanje: Kako se detektovana greška manifestuje na sistem? Pored mehanizma za detekciju greške sistem mora da poseduje i mehanizam za oporavak (recovery) koji manipuliše sa signalom greške.

Slika 3.25. Algoritam oporavljanja sistema od greške

3. Konkurentna detekcija greške

55

Slika 3.25 ilustruje opšti algoritam oporavljanja sistema. Greška se najpre detektuje pomoću nekog od metoda za konkurentnu detekciju greške. U prvom trenutku pojavljivanja greška se tretira kao tranzijentna, a ako se i dalje javlja onda se tretira kao permanentna greška. U slučaju pojave tranzijentnog defekta koji uzrokuje grešku, sistem se oporavlja iz pogrešnog stanja i nastavlja sa normalnim radom. Kada se javi permanentni defekt najpre se utvrđuje njegova lokacija a onda se bira pogodna konfiguracija u skladu sa dostupnom površinom i na kraju se sistem vraća u normalno stanje i nastavlja sa radom.

Na primeru protočnog sistema razmotrićemo jednu od mogućih tehnika za automatski oporavak od greške uzrokovane tranzijentnim defektom (slika 3.26). Na slici 3.26 prikazana je struktura jednog tipičnog petostepenog protočnog mikroprocesora. Svaki stepen sadrži kombinacionu logiku, koja obavlja neku specificnu obradu (kao što je pribavljanje instrukcije (IF), dekodiranje instrukcije (ID), izvršenje (EX), pristup memoriji (MEM) i upis rezultata u registar (WB)), i registar u koji se upisuje rezultat obrade i prosleđuje sledećem stepenu na dalju obradu. Kombinaciona logika u svakom stepenu poseduje sposobnost samoprovere, koja je ostvarena primenom neke od ranije razmatranih tehnika (dupliciranje, parnost, Berger-ov ili Bose-Lin-ov kôd). Pojava tranzijentnog defekta u bilo kom stepenu usloviće generisanje globalnog signala greške, koji se koristi za upravljanje globalnim taktom. Sve dok je signal greške postavljen na 0 (nema greške), sistem radi normalno – na kraju svakog ciklusa, tj. u trenutku aktivne ivice takta, rezultat obrade svakog stepena upisuje se u registar i tako prosleđuje na dalju obradu sledećem stepenu. Međutim, ako je u trenutku aktivne ivice takta, signal greške postavljen na 1, upis u registre biće onemogućen, a svi stepeni ponoviće obradu nad istim podacima. Sistem nastavlja sa normalnim radom u sledećem ciklusu, pod uslom da je u međuvremenu prestalo dejstvo tranzijentnog defekta.

Slika 3.26. Automatiski oporovak protočnog sistema od greške

Manifestaciju tranzijentne greške i mogućnosti za povratak sistema u ispravno stanje možemo, takođe razmotriti na primeru reprezentativnog računarskog sistema. Sistem se sastoji od većeg broja modula među kojima su centralna procesorska jedinica (CPU), generator taktnog signala, ROM i RAM memorija, i periferijski ili ulazno/izlazni uređaji. Komunikacija između modula ostvaruje se preko magistrale. Do greške u prenosu signala najčešće dolazi na magistrali, usled uticaja mnogih efekata kao što su preslušavanje, oscilovanje, refleksija, slabljenje, izobličenje i drugi. Pored toga, usled pojave defekata u svakom od modula može doći do generisanja pogrešnog izlaznog signala. Zato je, u cilju očuvanja integriteta podataka, neophodno primeniti tehnike za detekciju greške i na sve module i na magistralu.

Svi moduli računarskog sistema mogu se nezavisno proveravati korišćenjem neke od predloženih tehnika za detekciju greške. U svakom slučaju, modul koji ima mogućnost samoprovere, pored standardnih izlaza generisaće još dva dodatna signala za indikaciju greške, kao što je prikazano na slici 3.27. Ovako dobijeni signali greške na izlazu svakog od postojećih modula dovode se na ulaz kodera kome se dodeljuje specifična funkcija. Ako je

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

56

svakom modulu unapred dodeljena adresa, onda je funkcija kodera, upravo generisanje objedinjenog signala greške i adrese modula kod koga je detoktovana greška. Svi signali koje generiše koder dovode se do posebnog procesora koji će zatim preduzeti odgovarajuću proceduru za automatski oporavak sistema. Jedna od mogućih procedura podrazumeva poništavanje skorašnjih rezultata izračunavanja i povratak sistema u poslednje poznato korektno stanje. Drugi način, koji se koristi u slučaju da se greška ponavlja, predstavlja isključivanje iz sistema onog modula kod koga se javila greška. Primenom neke od ranije pomenutih metoda za korekciju greške ovaj modul može da se vrati u ispravno stanje i da nastavi svoj rad.

Za proveru prnosa podataka preko magistrale neophodno je da se svi moduli povežu na magistralu preko dodatnog kola koje ima ulogu predajnika ili prijemnika. U slučaju da predaje podatak ka magistrali, ovo kolo treba da generiše dodatne bitove i ima ulogu generatora bitova za proveru. Ako prima kodiran podatak sa magistrale, onda ima ulogu kola za proveru i tada generiše dva dodatna signala za indikaciju greške. Ova dodatna kola prikazana su na slici 3.27, a označena su sa TRGC (TRansceiver Generator/Checker). Signali greške svakog TRGC-a dovode se na ulaz kodera čija je funkcija generisanje jedinstvenog signala greške na magistrali. Zato se ovaj signal dovodi do posebnog procesora koji vraća sistem u poslednje poznato korektno stanje.

Slika 3.27. Opšta arhitektura računara sa automatskim oporavkom

4. Projektovanje logičkih mreža sa samoproverom

57

4. Projektovanje logičkih mreža sa samoproverom

Projektovanje mreža sa samoproverom podrazumeva proširenje osnovnog kola i obično se svodi na dodavanje hardverske strukture za konkurentnu detekciju greške u prethodno projektovano kolo. U zavisnosti od načina detekcije greške, odnosno primenjenog koda, razvijene su različite tehnike projektovanja mreža sa samoproverom. Najpre su razvijene metode projektovanja koje su se bazirale na manuelnom dodavanju strukture za konkurentnu detekciju greške od strane projektanta. Vreme projektovanja primenom takvih metoda negativno je uticalo na produktivnost projekta. Zato se javila potreba za automatskim metodama projektovanja kola sa samoproverom, uz korišćenje alata za logičku sintezu.

4.1. Razlozi i značaj projektovanja kola sa samoproverom

Razvoj VLSI tehnologije doveo je do toga da se veći sistemi, koji su do tada implementirani kao štampane ploče, smeštaju na jedan čip i da dimenzije uređaja postaju sve manje. Zbog ove nove tehnologije projektovanja i povećanja kompleksnosti, kola postaju sklona greškama, a pouzdanost dobija važnu ulogu u projektovanju VLSI kola [DeK94]. Naime, aplikacije u kojima je sigurnost sistema od kritične važnosti moraju da zadovolje zahteve pouzdanosti i visokih performansi. Projektanti obično postižu visoke performanse implementiranjem protočnih ili paralelnih puteva podataka i dekompozicijom konačnih automata u manje jedinice. Da bi bili sigurni da sistemi zadovoljavaju standarde kvaliteta, proizvođači moraju da koriste tehnike testiranja, tolerancije defekata i samoprovere.

Na osnovu prethodnog može se reći da je konkurentna detekcija greške važan zahtev pri projektovanju sistema u kojima je neophodno obezbediti pouzdanost i integritet podatka. Integritet podatka podrazumeva da sistem generiše korektan izlaz, a jedino u slučaju pojave defekta izlaz postaje nekorektan. Ova osobina je predstavljena kao osobina sigurnosti u prisustvu defekata [Siew92]. Kolo sa konkurentnom detekcijom greške može da detektuje permanentne i tranzijentne defekte, odnosno greške koje su stalno prisutne i greške koje se povremeno pojavljuju [Toub94].

4.2. Osnovne metode za projektovanje kola sa samoproverom

Pouzdanost VLSI kola može se postići hardverskom, informacionom ili vremenskom redundansom [DeK94], [John90]. Osnovni principi tih metoda predstavljeni su u Poglavlju 2.

Informaciona redundansa obuhvata korišćenje mnogih kodova. Pri tome se kodovi parnosti, Berger-ovi, Bose-Lin-ovi i drugi, koriste za funkcije prenosa i memorisanja podataka, dok se za funkcije manipulisanja sa podacima, kao što su aritmetičke i logičke operacije, koriste AN i kodovi ostatka. Osnovni oblik hardverske redundanse podrazumeva dupliciranje funkcije i poređenje rezultata dve kopije funkcionalnog kola. Hardverska i informaciona redundansa najčešće se koriste za projektovanje pouzdanih kola. Ova dva pristupa garantuju detekciju greške deljenjem skupa izlaznih kombinacija, u zavisnosti od postojanja defekta, na kodne i nekodne reči. Kolo za proveru prati konfiguracije na izlazu i, kada detektuje nekodnu reč, signalizira pojavu defekta [Bolc98]. U nekim slučajevima gde

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

58

performanse nisu od posebne važnosti, u cilju povećanja pouzdanosti, može da se primeni vremenska redundansa.

S obzirom da se metodologija VLSI projektovanja kreće ka višim nivoima automatizacije, uslovila je da se kola projektuju pomoću alata za logičku sintezu. Pri tome, stalno se težilo da uloga projektanta bude u tome da specificira ciljeve na visokom nivou, koji se odnose na minimizaciju prostora, optimizaciju kašnjenja, poboljšanje pouzdanosti i testabilnosti, a da alat za sintezu generiše kolo automatski, zadovoljavajući zadata ograničenja.

Današnja kompleksna VLSI kola obično se projektuju na više nivoa apstrakcije u koje spadaju layout, nivo tranzistora, nivo gejta, registarski nivo (Register Transfel Level - RTL), i nivo ponašanja (behavioral). Projektanti opisuju kola hijerarhijski, odnosno top-down metodom, uz korišćenje CAD (Computer-Aided Design) alata.

Konvencionalni sistemi za sintezu logičkih kola zasnivaju se na funkcionalnom opisu i usmereni su ka sledećim zahtevima: 1) smanjenju površine koju zahteva logički blok, što se meri brojem literala ili brojem gejtova; 2) poboljšanju performansi izraženih u obliku kašnjenja kroz gejtove [Wein89]; ili 3) poboljšanju testabilnosti sintetizovanog kola, što se meri redundansom rezultantnog kola [DeK91].

Jedan od sistema za optimizaciju višenivovskih logičkih kola je MIS [Bray87] čiji se algoritam za sintezu zasniva na algebarskoj faktorizaciji. Pri tome se za date Boolean-ove izraze ekstrahuju zajednički faktori, a u kolu se svaki faktor sintetiše kao čvor u Boolean-ovoj mreži. Onda izrazi kojima je potreban taj zajednički faktor koriste novi čvor umesto da više puta implementiraju taj opšti faktor. U MIS sistemu opšti faktor može da se koristi i u normalnom i u komplementarnom obliku. Alat SIS, razvijen na Univerzitetu Berkeley, koristi se kod sekvencijalnih kola za minimizaciju stanja, dodelu stanja, i optimizaciju izraza za logiku narednog stanja i logiku izlaza.

Teorija projektovanja sistema sa potpunom samoproverom prezentovana je u radu [Smit83]. Definicije metodologija za projektovanje kola sa samoproverom takođe su uslovile realizaciju alata za automatsku sintezu pouzdanih višenivovskih kola. RSYN [DeK94] je sistem namenjen automatskoj sintezi pouzdanih višenivovskih kombinacionih kola na osnovu algoritama koji su integrisani u sam sistem. Ograničen je u odnosu na MIS jer koristi faktor samo u normalnom ili samo u komplementarnom obliku. Takav sistem zahteva od korisnika da specificira logičku funkciju kombinacionog modula u Boolean-ovom obliku, a višenivovska logička prezentacija kola, sa ugrađenim dodatkom za detekciju greške, generiše se automatski. Na osnovu kodova za detekciju greške (kodovi dupliciranja, parnosti, Berger-ovi i Bose-Lin-ovi) predložene su tri šeme za dobijanje kola sa samoproverom kojima se mogu detektovati svi defekti u kolu koji su nastali fiksiranjem jedne od internih veza na vrednost 1 ili 0 (single stuck at fault), izuzev onih na primarnim ulazima. Korisnik može da izabere bilo koju od pomenutih šema, integrisanih u sistem, a on će automatski generisati pouzdano kolo sa svim kolima za proveru koja su neophodna za datu šemu i na kraju će dati layout kola [DeK94].

Procedura duplikacije dvonivovskog ili višenivovskog kola predložena u radu [DeK94] podrazumeva automatsko dupliciranje kola od strane sistema. Sistem takođe automatski generiše komparator sa potpunom samoproverom čiji je broj ulaza parametrizovan, a izlazni signali greške su kodirani kodom 1-od-2 (dual-rail).

Jedna od varijanti dupliciranja kola, koja obuhvata korišćenje originalne funkcije i komplementa te funkcije, data je u radu [Sedm80]. U slučaju direktnog dupliciranja, verovatnoća da oba kola otkažu na identičan način (opšti način otkaza) vrlo je visoka, zato što

4. Projektovanje logičkih mreža sa samoproverom

59

su ona implementirana korišćenjem istih tipova kola sa identičnim fizičkim izgledom. Ako se isti defekt pojavi u oba kola, on će biti maskiran. Sa novom predloženom šemom funkcionalnost komplementa originalne funkcije implementirana je na VLSI čip sa različitim fizičkim layout-om. Zato je malo verovatno da će se efekti identičnih defekata desiti u oba kola.

U radu [Bolc98] predložena je još jedna varijanta dupliciranja. Karakteristika ovog pristupa je implementacija dve kopije istog kola pri čemu druga kopija generiše izlazne vrednosti koje su komplementarne vrednostima prve kopije, a pomoću stabla kola za proveru sa dva izlaza ove vrednosti se porede.

U radu [Moha02] opisan je novi metod za projektovanje logičkih kola sa konkurentnom detekcijom greške. Ključna ideja je iskoristiti osetljivost čvorova u logičkom kolu na asimetrične soft greške. Ovaj pristup se zasniva na parcijalnom dupliciranju i pokazuje da je moguće značajno smanjiti stopu otkaza soft greške i sa delimičnim povećanjem površine i kašnjenja u odnosu na povećanje kod potpunog dupliciranja.

U radu [JhaN93] predložen je metod za sintezu kola sa samoproverom koji se zasniva na kodu za detekciju jednosmernih defekata (Berger-ov kôd). Po ovom metodu funkcionalno kolo je optimizovano korišćenjem MIS skripta sa algebarskim operacijama pri čemu se transformiše u kolo bez invertora (inverter free), odnosno invertori su samo na primarnim ulazima. Primarni izlazi su onda kodirani pomoću koda za detekciju jednosmernih grešaka. Pošto su invertori samo na ulazima, bilo koji defekt nastao postavljanjem neke od unutrašnjih veza na određenu vrednost, generiše jednosmernu grešku na primarnim izlazima, što znači da će sigurno biti detektovana Berger-ovim kodom.

Šema zasnovana na Berger-ovom kodu, koji može da detektuje greške na jednom bitu i višestruke jednosmerne greške, predložena je u radu [DeK94]. Cilj je da se ideja konkurentne detekcije greške proširi na višenivovska kola.

U radu [DasD99] predstavljen je metod za sintezu višenivovskih kola sa konkurentnom detekcijom greške na osnovu Bose-Lin-ovog koda. S obzirom da se jednostavniji Bose-Lin-ov kôd koristi umesto Berger-ovog koda, dobija se značajno smanjenje hardvera bez smanjenja mogućnosti za detekciju greške.

U radu [DeK94] predložen je motod za konkurentnu detekciju greške zasnovan na korišćenju koda parnosti za različite grupe izlaznih bitova. Za konkurentnu detekciju greške u logičkim kolima takođe je predloženo korišćenje predviđanja parnosti (parity prediction). Ove šeme, na osnovu ulaza, generišu bit parnosti izlaza tako da se mogu detektovati greške na jednom bitu [Prad72]. Specifične šeme su predložene da bi se generisala parnost aritmetičkih funkcija kao što su sabiranje, množenje itd. [Wake82].

Princip samoprovere je, pored kombinacionih, pogodan i za projektovanje sekvencijalnih mreža koje se zasnivaju na strukturi konačnih automata. Ovaj pristup omogućava detekciju permanentnih i tranzijentnih defekata, kao i brzu identifikaciju pogrešnog ponašanja. Primena principa samoprovere na kombinaciona kola podrazumeva kodiranje izlaza, a kod sekvencijalnih kola kodiranje se primenjuje na izlaze i na stanja.

Sekvencijalna kola sa konkurentnom detekcijom greške predložena su u [JhaN93]. Bitovi stanja su kodirani m-od-n kodom, a izlazi Berger-ovim kodom, pa su za proveru stanja i izlaza potrebna različita kola za proveru.

U radu [DasD99] predloženo je kodiranje bitova stanja i izlaznih bitova Bose-Lin-ovim kodom. U tom slučaju može da se koristi jedno kolo za proveru pa se i povećanje površine smanjuje. Sinteza kola mora da se uradi tako da svi interni defekti mogu da uzrokuju samo

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

60

one greške koje se mogu detektovati Bose-Lin-ovim kodom. Da bi se ispunio ovaj uslov moraju da budu zadovoljena dva ograničenja. Prvo ograničenje je da kolo mora da bude bez invertora (inverter free) kako bi se javile samo jednosmerne greške (ovo ogrančenje je isto kao i za Berger-ov kôd). Drugo ograničenje je da jedan primarni ulaz ne može da bude povezan sa više od t primarnih izlaza, u slučaju da se Bose-Lin-ovim kodom može detektovati t jednosmernih grešaka.

Višenivovska logička optimizacija koristi operatore koji ponovo generišu strukturu kola i minimiziraju logiku. Prema tome, ako je sinteza ograničena algebarskim transformacijama onda je uslov inverter free ispunjen. Operacije višenivovske logičke optimizacije koje restruktuiraju kolo moraju da budu ograničene tako da ne uvode fanout koji kreira put od jednog čvora do više od t primarnih izlaza. Dve operacije restrukturiranja, koje uvode fanout, su supstitucija i ekstrakcija [DasD99].

Koncepti konkurentne detekcije greške primenjeni su i na PLA kola, uz minimalno povećanje cene hardvera [Khak82]. U radu [Fuch87] predložene su dve šeme za PLA kola. Kod prve šeme ulazi i izlazi kola kodiraju se Bergerovim kodom, a kod druge šeme generišu se posebna tri izlaza kao bitovi za proveru.

4.3. Metoda projektovanja mreža sa samoproverom na osnovu VHDL-a

Mehanizmi koji omogućavaju on-line detekciju ili toleranciju defekata godinama su integrisani u kola koja su namenjena kritičnim aplikacijama kao što su kosmički brodovi, avioni i automobili, u kojima je greška u peformansama sistema neprihvatljiva a tolerancija defekata obavezna. U takvim aplikacijama negativan uticaj on-line testiranja na površinu i performanse bio je prihvatljiv jedino iz razloga potrebe za visokom pouzdanošću. Implementacija tih mehanizama uglavnom se vršila manuelno, jer relativno mali broj aplikativnih oblasti nije bio primamljiv za razvoj CAD alata koji bi bili namenjeni specifičnom projektovanju on-line testabilnih kola. Međutim, značajno vreme potrebno za ručno insertovanje (umetanje) strukture za detekcije defekata negativno utiče na produktivnost i vreme projektovanja pa nije u saglasnosti sa zahtevima tržišta na tom polju. Zato se povećala potreba za fleksibilnim alatima koji bi omogućili povećanje pouzdanosti kola [Leve02], [Entr201].

Da bi se povećala produktivnost i smanjilo vreme razvoja kola koja su otporna na defekte neophodno je korišćenje automatskih CAD alata. Takav alat mora da bude u potpunosti kompatibilan sa industrijskim tokom projekta koji se zasniva na komercijalnim alatima za sintezu i simulaciju. Takođe, alat mora da omogući različite kompromise između karakteristika pouzdanosti i povećanja površine (indukovanog povećanja cene), tako da projektant može podešavati mehanizme implementirane u različite blokove kola u saglasnosti sa ograničenjima svakog bloka [Leve90], [Entr201].

Rasprostranjeno korišćenje HDL-a (Hardware Description Languages) i alata za sintezu uslovilo je projektovanje na registarskom nivou (Register Transfer Level - RTL). Postoji nekoliko razloga zbog kojih projektanti, u cilju postizanja pouzdanosti, preferiraju modifikaciju kola opisanog u HDL-u na registarskom nivou.

Kao prvo, to je prirodan izbor, zato što danas većina projektanata uglavnom radi na ovom nivou. Ovaj izbor takođe omogućava korišćenje funkcionalne (behavioral) simulacije u cilju verifikovanja modifikovanog kola. Na ovaj način se skraćuje vreme simulacije zato što je simulacija na nivou ponašanja efikasnija od simulacije na nivou gejta.

4. Projektovanje logičkih mreža sa samoproverom

61

Modifikacija na RT nivou pruža mogućnost korisniku da prepozna izvršene izmene u kodu i na taj način dobije veće samopouzdanje u procesu modifikacije, jer ako je potrebno, korisnik može i sam da menja dobijeni opis. Takođe, korisnik može da uporedi rezultate dobijene automatskom i manuelnom modifikacijom opisa prvobitno zadatog kola.

Sa druge strane, važno je istaći da, i pored toga što svaki VHDL opis kola pruža mogućnost simulacije, ne može u potpunosti da garantuje sintezu opisanog kola. Neke VHDL konstrukcije nemaju validnu prezentaciju u digitalnoj logici, dok druge ne mogu da garantuju određenu tačnost. Algoritmi za sintezu mogu da izvrše optimizaciju RTL opisa kola i pri tome su usmereni ka određenoj tehnologiji. Algoritmi planiranja i dodeljivanja, koji vrše optimizaciju na vrlo visokom nivou apstrakcije, nisu dovoljno jasni za opšte aplikacije kola. Prema tome, rezultat sinteze VHDL opisa zavisi od stila (načina) koji se koristi. U cilju postizanja željne implementacije kola koja zadovoljava vremenska i prostorna ograničenja, korisnici alata za sintezu bi trebalo da razumeju neke od principa sinteze koji su određeni načinom VHDL kodiranja na registarskom nivou. Alati za sintezu su pogodni za rešavanje glomaznih problema logičke optimizacije na registarskom nivou, koji se javljaju u toku top-down procesa projektovanja [HDL98].

U ovoj tezi je predložen pristup automatskog dodavanja strukture za samoproveru koji je kompatibilan sa svakim okruženjem koje podržava VHDL ulaz. Na taj način je omogućeno potpuno korišćenje komercijalnih alata za sintezu. Njihovim korišćenjem, mnoge strukture sa osobinom samoprovere mogu se korektno sintetizovati, uz neznatno povećanje vremena projektovanja. Uvek kada je to neophodno, projekat se može modifikovati na nižim nivoima apstrakcije [Entr101]. S druge strane, primena mnogih tehnika u cilju dobijanja pouzdanih kola zahteva korak sinteze koji ne može da se izvrši jednostavnom zamenom neke logičke ćelije njenim testabilnim ekvivalentom (kao što je to slučaj kod strukturne DFT (Design For Testability) tehnike) sem u nekim trivijalnim slučajevima.

Osnovna prednost ovakvog pristupa, tj. modifikacije kola na registarskom nivou u odnosu na modifikaciju izvršenu na nivou gejta sastoji u tome što omogućava rano insertovanje potrebnih mehanizama i rano potvrđivanje pouzdanosti kola ili sistema. Nedostatak ovakvog pristupa ogleda se u teškoći da se precizno prati struktura implementiranih mehanizama kao i potencijalno povećanje površine i kašnjenja [Leve02].

Nakon svega što je do sada rečeno, možemo zaključiti da se projektovanje kola sa samoproverom obično vrši uvođenjem strukture za konkurentnu detekciju greške u prethodno projektovano kolo. Metodologija koja se zasniva na HDL-u podrazumeva modifikaciju HDL koda u cilju insertovanja hardverske, informacione ili vremenske redundanse u kritičnim tačkama kola. Predloženi su mnogi alati za automatsko dodavanje strukture za konkurentnu detekciju greške u postojeći HDL opis kola u cilju dobijanja HDL opisa kola koje je tolerantno na defekte. Pomoću ovakvog alata u proces projektovanja može da se uključi željena struktura, uz malo povećanje cene i vremena razvoja, i pri tome se automatski, u sladu sa korisničkim specifikacijama, dobija HDL opis kola koje ima osobinu samoprovere. Ovako dobijen projekat može da se simulira i sintetiše pomoću komercijalnih CAD alata [Entr201].

Pored svih koraka koji su neophodni za projektovanje kombinacionih kola sa samoproverom na višem nivou apstrakcije, u toku projektovanja sekvencijalnih kola neophodno je razmotriti i problem kodiranja stanja. Berger-ov i m-hot kôd najčešće se koriste za kodiranje stanja. Prednost tehnike kodiranja stanja na funkcionalnom nivou, anlizom dijagrama stanja automata, ogleda se u tome što ne zahteva poznavanje fizičke strukture kola. Muđutim, upravo iz tog razloga tehnika ne garantuje totalnu samoproveru, s obzirom da ne obezbeđuje zaštitu od slučajeva kada usled defekta automat prelazi u pogrešno sledeće stanje. Takođe, funkcionalna definicija TSC osobina nije u potpunoj vezi sa implementacijom

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

62

logičke mreže na nivou gejta. Naime, metodologija definisana na funkcionalnom nivou ne omogućava detekciju svih defekata stuck-at tipa, koji se mogu detektovati na nivou gejta. Zbog nedostatka kompletne veze defekt-greška koja sigurno postoji na strukturnom nivou i garantuje da svaki defekt generiše samo one greške koje se mogu detektovati, neophodno je definisati strategiju sinteze koja je u mogućnosti da iskoristi osobine koda koje čine defekt opservabilnim na taj način što generiše nekodnu reč. Drugim rečima, metodom projektovanja sekvencijalnih kola sa samoproverom može se postići potpuno pokrivanje defekata delovanjem na opservabilnost defekata, tj. na njihovu mogućnost da generišu grešku koja se može detektovati [Bolc00].

U radu [Bolc00] predložena je jedna sveobuhvatna metodologija za projektovanje TSC sekvencijalnih arhitektura na osnovu VHDL specifikacije. Metodologija podrazumeva da se sistem može razložiti na upravljačku jedinicu i stazu podataka, što je najčešće slučaj kod sistema koji se opisuju u VHDL-u. Upravljačka jedinica se modelira kao konačni automat, dok se staza podataka sastoji od registara i kombinacionih blokova za obradu i preusmeravanje podataka, kao što su ALU i multiplekseri. Sposobnost samoprovere na nivou upravljačke jedinice postiže se specifičnim kodiranjem stanja FSM-a koje obezbeđuje konstantno Hamming-ovo rastojanje između binarnih kodova bilo kog para tekuće-sledeće stanje. U toku rada, kolo za proveru, u svakom taktnom ciklusu, određuje Hamming-ovo rastojanje između tekućeg i sledećeg stanja i, ako se ono razlikuje od usvojenog, signalizira grešku. Da bi se ostvarila totalna samoprovera, predložena metodologija predviđa naknadnu analizu strukture sintetizovane FSM i duplikaciju onih logičkih kola čiji otkaz može da dovede do grešake, koja se inače ne može detektovati kodom. Za projektovanje staze podataka, metodologija koristi klasične tehnike za samoproveru (npr. parnost ili Berger-ov kôd) ili ad-hoc tehnike za blokove regularne strukture, kao što su aritmetička kola.

Metodologija predstavljena u radu [Bolc00] integrisana je u proces projektovanja VLSI sistema koji je opisan u VHDL-u. Na ovaj način omogućena je integracija predloženog pristupa u standardni industrijski tok projekta (design flow). Prednost predloženog metoda ogleda se u kompletnosti pristupa za realizaciju kompleksnih sistema sa potpunom samoproverom koji se zasniva na VHDL-u. Drugi pristupi uglavnom rade sa podskupom sistema (tipično su to kontroleri), a cilj je ostvariti što manje povećanje površine. Povećanje površine predloženog metoda najčešće potiče od činjenice da su sve komponente projektovane tako da budu sa potpunom samoproverom (TSC) i da su uključena sva potrebna kola za proveru kako bi se dobio sistem sa potpunom samoproverom.

U radu [Entr201] predložene su tehnike za automatsko insertovanje strukture za konkurentnu detekciju greške u VHDL opis kola na RT nivou. Predložene tehnike omogućavaju da se manuelni način insertovanja hardverske i informacione redundanse, u cilju projektovanja kola otpornih na defekte, zameni automatskim načinom, da se povećava produktivnost projekta i da se smanje šanse za grešku.

U radu [Leve02] predložen je novi alat za automatsko insertovanje strukture otporne na defekte u HDL opis kola. Sa ovim alatom verzija kola otpornog na defekte može se generisati automatski, u saglasnosti sa specifikacijama korisnika. Cilj rada [Leve02] je da proceni praktičnost i interes pristupa koji se zasniva na automatskoj modifikaciji specifikacija visokog nivoa.

Svi prethodno navedeni razlozi uticali su na to da se, u ovoj tezi, projektovanje mreža (digitalnih integrisanih kola) sa samoproverom zasniva na VHDL opisu kola i korišćenju komercijalnih CAD alata. Koristi se metod poluautomatskog dodavanja strukture za konkurentnu detekciju greške u postojeći VHDL opis prvobitno zadatog kola. Na osnovu

4. Projektovanje logičkih mreža sa samoproverom

63

ovako dobijenog modifikovanog VHDL opisa kola i korišćenjem CAD alata može da se uradi sinteza i implementacija kola sa samoproverom.

Metoda projektovanja zasnovana na VHDL-u, predstavljena u ovoj tezi, omogućava implementaciju kombinacionih i sekvencijalnih kola sa samoproverom na registarskom (RT) nivou apstrakcije. Ova metoda definiše šablone (templejte) koji su u obliku VHDL kôda. Komponente koje čine strukturu za konkurentnu detekciju greške, odnosno moduli koje bi trebalo uključiti u VHDL opis prvobitno zadatog kola, unapred su opisani i sačuvani u specificiranoj biblioteci. Svi potrebni moduli opisani su u posebnom VHDL paketu kao generičke komponente pri čemu je broj ulaza i broj izlaza predstavljen parametarski. Opis tih modula zasniva se na prethodnim istraživanjima na polju tolerancije defekata. Projektant bi trebao samo da koristi elemente postojeće biblioteke, a ne da ih ponovo generiše. Na ovaj način, korisnik ne treba da bude ekspert u razvoju tehnika za postizanje pouzdanosti, vać treba samo da uključi postojeće komponente u svoj VHDL opis. Primeri takvih komponenti su koderi, dekoderi i kola za proveru.

Predstavljena metoda nudi različite opcije projektovanja koje projektantima pružaju mogućnost lakog kreiranja VHDL opisa kola sa samoproverom. Takođe, projektanti mogu veoma rano, još u fazi projektovanja, da procene povećanje površine i kašnjenja za svaku od postojećih opcija. Naime, predstavljenom metodom vrši se modifikacija prethodno razvijenog inicijalnog VHDL opisa pomoću dodatnih modula za konkurentnu detekciju greške koji su definisani tako da je dobijeni opis kola sa samoproverom nezavisan od alata za sintezu.

Struktura predložene metode za generisanje kola sa samoproverom prikazana je na slici 4.1. Po ovoj šemi najpre se analizira početni VHDL opis prvobitno zadatog kola. Korisnički interfejs omogućava korisniku da izabere određenu tehniku za modifikaciju prvobitno zadatog kola u cilju generisanja kola sa samoproverom. Opisi komponenata, koji su neophodni za svaku od dostupnih tehnika, nalaze se u biblioteci komponenata za konkurentnu detekciju greške (CED library). Deklaracije komponenti su primeri konstrukcija koje se obično smeštaju u pakete (package). Uopšteno govoreći, VHDL paket omogućava da se pojedine VHDL konstrukcije dešinišu u jednom, a koriste u drugim izvornim fajlovima. Biblioteka predstavlja lokaciju, ili direktorijum, u fajl-sistemu računara, gde je smešten paket. Biblioteka work predstavlja radni direktorijum gde je smešten VHDL kôd koji definiše paket. Na osnovu postojećih opisa svih neophodnih komponenti, ovom metodom se, na kraju, generiše izlaz u obliku VHDL fajla, koji predstavlja modifikovanu verziju opisa prvobitno zadatog kola. Ovaj fajl može da se koristi kao ulaz svakog drugog standardnog alata za simulaciju i sintezu, koji podržava VHDL opis.

Slika 4.1. Struktura alata za konkurentnu detekciju greške

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

64

Već je pomenuto da, s obzirom na primenu različitih kodova za detekciju greške, postoji veliki broj metoda za dobijanje kombinacionih i sekvencijalnih mreža sa samoproverom. Kako bi se utvrdila cena postojećih metoda projektovanja nad različitim bencmark kolima vršeni su eksperimenti i pokazano je da za većinu njih šema sa kodom parnosti zahteva najmanje povećanje površine. Međutim, nije urađena procena praktične primene raznih metoda projektovanja na polju povećanja površine, smanjenja radne frekvencije i pogodnosti za implementaciju na FPGA i CPLD tehnologije, korišćenjem dostupnih alata. To, upravo, predstavlja cilj ove teze.

4.4. Projektovanje kombinacionih mreža

Osnovna struktura kola sa samoproverom data je na slici 4.2. Ovakva struktura je predstavljena i na slici 3.4 i detaljno je opisana u Poglavlju 3.

Slika 4.2. Model kola sa potpunom samoproverom

Generator simbola za proveru zavisi od tehnike koja se koristi, pa prema tome, može da bude kopija prvobitno zadatog kola, logika za predviđanje parnosti, generator kodne reči za dobijanje Berger-ovog i Bose-Lin-ovog kôda i drugo. Struktura kola za proveru takođe zavisi od primenjene tehnike za detekciju greške. Funkcionalno kolo može da bude bilo koja kombinaciona ili sekvencijalna mreža. Opšti model kombinacione mreže sa n ulaza i m izlaza prikazan je na slici 4.3. Ova mreža može da se opiše u VHDL-u korišćenjem modela ponašanja kao što je prikazano na slici 4.4, a nakon toga funkcionalnom simulacijom može da se verifikuje ponašanje kombinacione mreže. To je, ujedno i prvi korak u predloženoj metodi za generisanje mreže sa samoproverom [Stan204].

Opšta struktura kombinacione mreže sa slike 4.3 može da se modifikuje dodavanjem strukture za konkurentnu detekciju greške na način prikazan na slici 4.5. Struktura generatora simbola za proveru izlaza zavisi od primenjenog koda za detekciju greške. Na osnovu m izlaznih bitova i c bitova provere, kolo za proveru sa dva izlaza daje indikaciju o pojavi greške.

Slika 4.3. Opšti model kombinacione mreže

4. Projektovanje logičkih mreža sa samoproverom

65

library ieee;

use ieee.std_logic_1164.all; entity komb_log is port ( signal ulaz: in std_logic_vector (n-1 downto 0); signal izlaz: out std_logic_vector(m-1 downto 0)); end komb_log; architecture behavior of adder4 is begin process (ulaz) begin ...... end process; end behavior;

Slika 4.4. Funkcionalni opis kombinacione mreže u VHDL-u

Slika 4.5. Struktura kombinacione mreže sa samoproverom

U toku drugog koraka predložene metode za generisanje mreže sa samoproverom, na osnovu inicijalnog VHDL opisa kombinacione mreže i kodnih šablona čija je struktura prikazana na slici 4.6, kreira se VHDL opis mreže sa samoproverom. Šabloni u obliku VHDL koda definišu nekoliko podblokova (ili komponenti) čijim se povezivanjem dobija opis mreže sa samoproverom. Šabloni su definisani u skladu sa modelom mreže sa samoproverom koji je predstavljen na slici 4.5.

Slika 4.6. Struktura VHDL kodnog šablona za kombinacionu mrežu sa samoproverom

Osenčeni blokovi na slici 4.6 označavaju module za konkurentnu detekciju greške koji se kao komponente nezavisne od strukture mreže unapred projektuju i smeštaju u poseban VHDL paket (package). Modul kombinaciona mreža predstavlja VHDL modul kojim se opisuje arhitektura mreže sa slike 4.4. VHDL proces kojim je opisana arhitektura ovog bloka,

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

66

bez ikakve modifikacije kopira se iz inicijalnog opisa mreže u odgovarajući opis arhitekture mreže sa samoproverom. Modul generator simbola za proveru izlaza kombinacione mreže koristi se za generisanje bitova za proveru. Ovaj modul se sastoji iz dva dela i to kodera i duplicirane kombinacione mreže. Na ulaz kodera dovode se izlazi procesa koji opisuje odgovarajuću kombinacionu mrežu a na izlazu se dobijaju bitovi za proveru. I pored toga što je, unutar generatora simbola za proveru, modul kombinacione mreže jednostavno dupliciran, u toku procesa sinteze vrši se optimizacija ovog modula zajedno sa modulom kodera. Prema tome, nakon sinteze kompleksnost generatora simbola za proveru biće znatno manja od kompleksnosti nezavisno sintetizovanog modula kombinacione mreže [Stoj104].

Nakon izbora šeme za konkurentnu detekciju greške i insertovanja odgovarajućih modula i inicijalnog opisa mreže u kodni šablon, dobija se VHDL opis kombinacione mreže sa samoproverom. Kodni šabloni pružaju mogućnost projektantu da, na osnovu načina kodiranja, izabere jednu od sledećih tehnika za konkurentnu detekciju greške: 1) dupliciranje, 2) kôd parnosti, 3) Berger-ov kôd, 4) Bose-Lin-ov kôd. Svi potrebni moduli navedenih tehnika opisani su u posebnom paketu kao generičke komponente sa parametrizovanim brojem ulaza i izlaza. Na osnovu specificirane opcije od strane projektanta iz definisanog paketa bira se odgovarajući tip modula za kolo kodera i kolo za proveru. Jedino u slučaju dupliciranja nisu potrebni moduli za konkurentnu detekciju greške sem kola za proveru jednakosti.

4.4.1. Tehnike dupliciranja kola

Najjednostavniji pristup za konkurentnu detekciju greške u višenivovskim kolima obuhvata dupliciranje kola i poređenje izlaza dva bloka pomoću komparatora jednakosti. Ova tehnika obezbeđuje 100%-tnu detekciju jenostrukih defekta, ali je zato povećanje površine kola veliko. Naime, ova tehnika uvodi u kolo više od 100% redundanse (100% usled dupliciranog kola i nešto više zbog kola za proveru). To je vrlo visoka cena za generisanje kola koja imaju mogućnost samoprovere i otkrivanja defekata.

Na slici 4.7 prikazana je šema opšteg načina dupliciranja kola po kome jedna od kopija generiše izlazne vrednosti koje su komplementarne vrednostima druge kopije. Primarni i komplemenitirani izlazi se porede, bit-po-bit pomoću kola za proveru koje je realizovano u vidu stabla dvo-izlaznih kola sa potpunom samoproverom (TRC). Uvek kada se vrednosti primarnih i komplementarnih izlaza razlikuju, zbog pojave defekta u nekom od dva funkcionalna bloka, ili kada se javi defekt u nekom od kola za proveru, signal greške daje izveštaj o prisustvu defekta [Stan104], [Stan203], [Stan303], [Stan403].

Slika 4.7. Šema dupliciranja kola sa prvobitno zadatim i komplementarnim izlazima

4. Projektovanje logičkih mreža sa samoproverom

67

Kao što se vidi sa slike 4.7, za dobijanje kombinacione mreže sa samoproverom metodom dupliciranja potrebne su tri osnovne komponente, koje se sastoje od jednog ili više modula opisanih u VHDL-u. Prvu komponentu predstavlja inicijalni opis osnovne kombinacione mreže. Drugu komponentu čini kopija prvobitno zadatog kola sa invertovanim primarnim izlazima. Zato se u poseban paket ili CED biblioteku smešta VHDL opis modula koji na ulazu ima m bitova, svaki od njih invertuje i na izlazu daje isti broj bitova. Blok šema i arhitektura VHDL koda za opis ovog modula prikazane su na slici 4.8.

Slika 4.8. Blok šema i VHDL opis modula za invertovanje m bitova

Treća komponenta je kolo za proveru sa dva izlaza i parametrizovanim brojem ulaza. Generički VHDL opis ovog modula potrebno je, takođe smestiti u određeni paket, zajedno sa opisima ostalih potrebnih modula. Ovaj modul za proveru sastoji se, ustvari, od strukture stabla koju čine kola za proveru sa jednim parom izlaza i dva para ulaza (two-rail checker - TRC). Blok šema i VHDL opis arhitekture svakog od elemenata strukture stabla, odnosno TRC-a, predstavljen je na slici 4.9.

Slika 4.9. Blok šema i VHDL opis TRC-a sa 2 para ulaza i jednim parom izlaza

U zavisnosti od broja ulaza, paralelnim povezivanjem TRC-a u više nivoa, generiše se struktura modula za proveru, kao što je prikazano na slici 4.10. Pomoću ovakvog modula za proveru svaki izlaz prvobitno zadatog kola poredi se sa odgovarajućim komplementiranim izlazom kopije istog kola. To znači da svaki par ulaza kola za proveru čine pravi i komplementarni izlaz dveju kopija istog kola. Jasno je da će ovaj modul imati ukupno m∗2 ulaza, ili m parova ulaza. Sa povećanjem broja ulaza povećava se i složenost strukture stabla, odnosno raste broj nivoa i broj TRC kola u nivou.

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity INVERTOR is generic (m : in integer); Port (In2 : in std_logic_vector(m-1 downto 0); Out2 : out std_logic_vector(m-1 downto 0)); end INVERTOR; architecture INV_arch of INVERTOR is begin inv: for i in 0 to m-1 generate Out2(i) <= not In2(i); end generate; end INV_arch;

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity TRC is generic (M : in integer); Port (i1 : in std_logic_vector(1 downto 0); i2 : in std_logic_vector(1 downto 0); K : out std_logic; J : out std_logic); end TRC; architecture TRC_arch of TRC is begin K <= ((i1(1) and i2(1)) or (i1(0) and i2(0))); J <= ((i1(0) and i2(1)) or (i1(1) and i2(0))); end TRC_arch;

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

68

Slika 4.10. Blok šema i VHDL opis entiteta modula za proveru koga čini struktura stabla TRC-a

Algoritam, na osnovu koga se generiše višenivovska struktura stabla modula za proveru, sastoji se od sledećih koraka:

Algoritam 1

1. odrediti broj nivoa, L mL 2log=

2. for 1=i to L 2.1. odrediti broj ulaza, n, u i-ti nivo strukture na sledeći način:

if 1=i then

mn =

else

=2nn

2.2. generisati nivo od n ulaza i odrediti broj izlaza, p

=2np

2.3. if 1=i then

povezati ulaze svih TRC-a i-tog nivoa sa primarnim ulazima else

povezati ulaze svih TRC-a i-tog nivoa sa izlazima svih TRC-a nivoa i-1

entity CHECK_DUPL is generic (m : integer); Port ( In1 : in std_logic_vector(m-1 downto 0); In2 : in std_logic_vector(m-1 downto 0); K : out std_logic; J : out std_logic); end CHECK_DUPL; architecture RTL of CHECK_DUPL is begin .............. end RTL;

4. Projektovanje logičkih mreža sa samoproverom

69

3. povezati izlaze TRC-a L-tog nivoa sa primarnim izlazima

Na osnovu Algoritma 1 dobija se generički VHDL opis modula za proveru koji je, zbog složenosti, dat u Dodatku C.

Trebalo bi reći i to da šema dupliciranja nije ništa novo, ali je uvedena kao osnovna referenca za poređenje povećanja površine i kašnjenja drugih šema.

Za projektovanje višenivovskih kombinacionih mreža sa konkurentnom detekcijom greške mogu da se koriste i druge tehnike koje imaju manje povećanje površine od dupliciranja kola, ali i mogućnost detekcije samo određenih tipova internih defekata.

4.4.2. Tehnike primene Berger-ovog koda

Tehnika koja za detekciju greške koristi Berger-ov kôd zasniva se na osnovnoj šemi kola sa samoproverom koja je već data za izdvojiv kôd (slika 4.2). Struktura VHDL kodnog šablona za Berger-ov kôd prikazana je na slici 4.11. Jasno je da se generator bitova za proveru sastoji od dve komponente, kopije osnovne kombinacione mreže i Berger-ovog kodera od m ulaza i c izlaza. Druga komponenta, Berger-ov koder, koristi se i u okviru kola za proveru kao generator bitova za proveru. Na ulaz ovog generatora dovodi se m izlaznih bitova kombinacione mreže, a na izlazu se generiše c bitova. Svaki od ovih bitova treba invertovati da bi moglo da se koristi kolo za proveru sa dva izlaza. Generički VHDL opisi modula invertora i modula za proveru sa parametrizovanim brojem ulaza i dva izlaza već su dati na slikama 4.8 i 4.10, respektivno. Zato ćemo se usredsrediti samo na VHDL opis Berger-ovog kodera [Stan104], [Stan403].

Slika 4.11. Struktura VHDL kodnog šablona za Berger-ov kôd

Kao što je rečeno u Poglavlju 3, generator bitova za proveru Berger-ovim kodom treba da generiše c bitova čija binarna prezentacija odgovara komplementu binarne prezentacije broja jedinica u okviru m izlaznih bitova. Komponenta Berger-ov koder projektuje se pomoću skupa potpunih sabirača. Za realizaciju Berger-ovog kodera sa proizvoljnim brojem ulaza neophodno je, na specifičan način, povezati potpune sabirače zato što svaki od njih ima standardno tri ulaza i dva izlaza.

Ako ulaz generatora bitova za proveru čini m informacionih bitova, a izlaz čini c bitova za proveru, onda se generator projektuje pomoću skupa modula potpunih sabirača, koji paralelno sabiraju informacione bitove ( )

1221 ...,,,−cxxx i generišu binarni broj cggg ...,,, 21 koji

odgovara broju jedinica u informacionim bitovima. Za generisanje c bitova za proveru neophodna je višenivovska struktura stabla koju čini određen broj potpunih sabirača.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

70

Strukturu osnovnog modula Berger-ovog kodera sa 3=m ulaza i 2=c izlaza čini jedan potpun sabirač. Blok šema i VHDL opis arhitekture potpunog sabirača prikazani su na slici 4.12.

Slika 4.12. Blok šema i VHDL opis arhitekture potpunog sabirača

Struktura modula Berger-ovog kodera sa proizvoljnim brojem ulaza postaje sve složenija sa povećanjem broja ulaza. Zato ćemo sada razmotriti algoritam za projektovanje kodera na osnovu koga se dobija i generički VHDL opis Berger-ovog kodera. Parametar ovog modula je broj informacionih bitova.

Algoritam za projektovanje Berger-ovog kodera (generatora) čiji ulaz predstavlja skup od m informacionih bitova, ( )mxxxX ...,,, 21= , a izlaz čini ( ) 1log2 += mc bitova za proveru, sastoji se iz sledećih koraka [Lala01]:

Algoritam 2

1. Postaviti vrednosti ( ) 1log2 +== mcn i 1=J .

2. Neka je ( ) 12 1 −= −nz .

3. Podeliti skup informacionih bitova, X , na tri podskupa JA , JB i JE . Podskup JA sadrži z bitova koji su na krajnjoj levoj strani informacionih bitova, JB sadrži sledećih z bitova, i JE sadrži bit koji je poslednji na desnoj strani informacionih bitova.

4. Neka vektori ( )1,2,1, ...,,, JnJnJJ aaaa −−= , ( )1,2,1, ...,,, JnJnJJ bbbb −−= i Je predstavljaju binarne prezentacije broja jedinica u podskupovima JA , JB i JE , respektivno.

5. Neka vektor ( )1,1,, ...,,, JnJnJJgggg −= predstavlja binarnu prezentaciju broja jedinica u

skupu X . Ovaj vektor se dobija na osnovu sledećeg sabiranja:

JJJJebag ++=

ili drugim rečima,

1,2,1,,

1,

1,2,1,

1,2,1,

......

......

......

JnJnJnJ

J

JnJnJ

JnJnJ

gggg

ebbbaaa

−−

−−

−−

+

+

library IEEE; use IEEE.std_logic_1164.all; entity fulladd is port( a,b,ci : in std_logic; s,co : out std_logic); end fulladd; architecture fulladd_arch of fulladd is begin s <= a xor b xor ci; co <= (a and b) or (a and ci) or (b and ci); end architecture fulladd_arch;

4. Projektovanje logičkih mreža sa samoproverom

71

gde je nJg , bit prenosa. Za generisaje J

g koriste se ripple carry sabirači koji se povezuju

u ( )1−n nivoa.

6. if 2=n go to korak 8

else postavi vrednosti 1−= nn , JL = .

7. for JAI = , 1+= JJ

generisati vektor JL ga = ponavljajući korake 2-6, i na isti način

for JBI = , 1+= JJ

generisati skup JL gb = .

8. End

Na osnovu Algoritma 2 generiše se struktura oblika stabla. Svaki čvor u stablu predstavlja ripple carry sabirač. Čvor na i-tom nivou stabla, 11 −≤≤ ni , predstavlja ripple carry sabirač koji se sastoji od 1−n stepena (modula potpunih sabirača). Ukupan broj potrebnih potpunih

sabirača je ( )∑ −−

=

−1

1

12n

a

a an .

Treba imati u vidu da se datim algoritmom generiše binarna prezentacija broja jedinica u izlaznim bitovima, pa je u slučaju primene Berger-ove B1 šeme kodiranja potrebno invertovati dobijene bitove. U našem slučaju korišćena je B0 šema kodiranja (komplement binarne prezentacije broja 0-a) pa invertovanje bitova nije potrebno.

Primera radi, možemo prikazati način projektovanja Berger-ovog kodera koji na osnovu 7=m izlaznih bitova kombinacione mreže generiše 3=c bita za proveru. U tom cilju,

potrebno je najpre generisati 1

g korišćenjem ripple carry sabirača sa ( )132 −= stepena, kao

što je prikazano na slici 4.13. Sledeći korak je generisanje skupova 1a i 1b na osnovu potpunih sabirača koji su prikazani na slici 4.14.

Slika 4.13. Kolo za generisanje skupa

1g

Slika 4.14. Kola za generisanje skupova 1a i 1b

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

72

Potpuna struktura modula Berger-ovog kodera za 7=m i 3=c prikazana je na slici 4.15, a dobija se kombinovanjem kola sa slika 4.13 i 4.14.

Slika 4.15. Struktura modula Berger-ovog kodera sa 7=m ulaza i 3=c izlaza

Primenom istog algoritma dobija se struktura i generički VHDL opis Berger-ovog kodera sa parametrizovanim brojem ulaza. Struktura i opis entiteta ovog modula prikazani su na slici 4.16. Generisani VHDL opis modula smešta se u poseban paket ili CED biblioteku.

Slika 4.16. Struktura i generički VHDL opis entiteta Berger-ovog kodera

entity BERGER is generic (m,c : integer); Port ( Input : in std_logic_vector(m-1 downto 0); Output : in std_logic_vector(c-1 downto 0)); end BERGER; architecture RTL of BERGER is

begin ..............

end RTL;

4. Projektovanje logičkih mreža sa samoproverom

73

Važno je istaći da se na osnovu Algoritma 2 generiše VHDL opis koji se zasniva na paralelnom izračunavanju, što se i vidi sa slike 4.16. Na taj način se dobija minimalno kašnjenje signala. Shodno strukturi stabla i broju potrebnih modula sabirača, maksimalno kašnjenje odgovara kašnjenju ( )32 −n modula.

4.4.3. Tehnike primene Bose-Lin-ovog koda

Bose-Lin-ovi kodovi su efikasno rešenje za projektovanje kola sa samoproverom zato što imaju tačno određen broj bitova za proveru, nezavisno od broja informacionih bitova. U odnosu na Berger-ove kodove zahtevaju manji broj bitova za proveru i, po strukturi, jednostavniji generator bitova za proveru (kodera). Struktura VHDL kodnog šablona za Bose-Lin-ov kôd u potpunosti odgovara strukturi za Berger-ov kôd i predstavljena je na slici 4.17.

Slika 4.17. Struktura VHDL kodnog šablona za Bose-Lin-ov kôd

Iz Poglavlja 2 je poznato da je za detekciju 2 (ili 3) jednosmerne greške Bose-Lin-ovim kodom potrebno 2 (ili 3) bita za proveru, a simbol za proveru (check symbol - CS) generiše se kao 4mod0kCS = (ili 8mod0kCS = ), gde je 0k broj nula u informacionim bitovima. Prema tome, generator (koder) bitova za proveru Bose-Lin-ovim kodom najpre izračunava broj nula, a zatim moduo dobijenog broja. Za određivanje broja nula može da se iskoristi algoritam za izračunavanje broja jedinica, koji je prethodno dat kod primene Berger-ovog koda, pri čemu je neophodno invertovati generisane bitove [Stoj104].

Algoritam za konstrukciju Bose-Lin-ovog kodera (generatora) koji se zasniva na određivanju funkcije modula (mod 4, ili mod 8) broja nula u skupu od m informacionih bitova,

( )mxxxX ...,,, 21= , može se predstaviti na sledeći način [Jha291]:

Algoritam 3

1. Neka je ( ) 1log2 += mq i neka je skup celih brojeva 21,12 −≤≤−== − qjiiI jq .

Podeliti skup informacionih bitova na n grupa 1,...,,, 21 −≤ qnAAA n , pri čemu je 00 =A . Broj bitova u grupi 11, −≤≤ niAi , je najveći ceo broj iz skupa I koji je manji ili jednak

vrednosti ∑−−

=

1

0

i

jjAm . Poslednja grupa, nA može da ima 0, 1, ili 2 bita što odgovara vrednosti

∑−−

=

1

1

n

jjAm .

2. Neka ( )iAN bude kolo koje generiše broj jedinica za skup 1...,,2,1, −= niAi korišćenjem Algoritma 2 za generisanje binarne prezentacije broja jedinica u skupu informacionih bitova. Neka izlazi kola ( )iAN budu 1,2,, ,...,, iipi ggg , gde je ( )1log2 += iAp .

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

74

3. Formirati odgovarajuću strukturu stabla sabirača za izlaze kola ( ) 11, −≤≤ niAN i i bitove skupa nA . Rezultat sabiranja je 11 ...,,, YYY qq − . Ako se računa moduo c2 broja jedinica potrebno je odbaciti bitove 11 ...,,, +− cqq YYY

4. Korišćenjem potpunih i polu-sabirača generisati kolo ∗N na čijem izlazu su bitovi 11 ...,,, YYY cc − . Pri tome treba odbaciti sve sabirače koji nisu potrebni.

U ovoj tezi razmatra se projektovanje generatora bitova za proveru izlaza Bose-Lin-ovim kodom korišćenjem funkcije 4mod . Pokazaćemo primenu datog algoritma za kodiranje

11=m izlaznih bitova kombinacione mreže, ( )1121 ...,,, xxxX = , Bose-Lin-ovim kodom.

Na osnovu broja bitova ( 11=m ) dobija se ( ) 4111log2 =+=q i 3,7=I . Skup X treba podeliti u 3≤n grupa, 1A , 2A i 3A . Skup 7211 ...,,, xxxA = ima 7 bitova pošto najveći ceo broj skupa I koji je manji ili jednak m iznosi 7. Najveći ceo broj skupa I koji je manji ili jednak vrednosti 47111 =−=− Am iznosi 3, pa tako 10982 ,, xxxA = sadrži 3 bita. Skup 113 xA = sadrži jedan preostali bit. Kola ( )1AN i ( )2AN formiraju se pomoću potpunih sabirača, na osnovu Algoritma 2 koji se koristi za određivanje broja jedinica u skupovima 1A i 2A . Izlazi kola ( )1AN biće ( )1,12,13,14,1 ,,, gggg , a izlazi kola ( )2AN biće ( )1,22,2 , gg . Sabiranjem ovih izlaznih bitova i bita u skupu 3A dobija se binarna prezentacija broja jedinica ( )1234 ,,, YYYY . Sabiranje se vrši formiranjem strukture stabla pomoću tri modula potpunih sabirača i polu-sabirača. Ako za svaki modul, iM , izlazne bitove za sumu i prenos označimo sa iS i iC , onda je 34 CY = , 33 SY = , 22 SY = , 11 SY = . Ako se generiše broj jedinica po modulu 22 , onda se zanemaruju bitovi 4Y i 3Y i iz strukture stabla se odbacije polu-sabirač koji generiše ove bitove, odnosno ignorišu se bitovi prenosa koje bi trebalo dovesti na ulaz tog polu-sabirača. Prema tome, ovim algoritmom generišu se dva bita za proveru, 1Y i 2Y . Struktura modula Bose-Lin-ovog kodera za ovaj konkretan primer prikazana je na slici 4.18.

Slika 4.18. Struktura modula Bose-Lin-ovog kodera sa 11=m ulaza i 2=c izlaza

4. Projektovanje logičkih mreža sa samoproverom

75

Generički opis Bose-Lin-ovog kodera sa parametrizovanim brojem ulaza i 2=c izlaza prikazan je na slici 4.19. Već je napomenuto da se primenjuje funkcija moduo 4, pa se zato, u svakom slučaju, generiše dva bita za proveru, bez obzira na broj izlaznih bitova kombinacione mreže.

Slika 4.19. Generički VHDL opis entiteta Bose-Lin-ovog kodera

4.4.4. Tehnike primene koda parnosti

U najvećem broju slučajeva šema za konkurentnu detekciju greške zasniva se na generisanju bita parnosti za dati izlaz. Prednost ovakve šeme ogleda se u njenoj jednostavnosti, dok je nedostatak to što se na osnovu jednog bita parnosti, dobijenog na osnovu izlaza, ne mogu detektovati sve greške u višenivovskom kolu.

Kao i sve prethodno pomenute tehnike koje koriste izdvojiv kôd tako se i tehnika koja za detekciju greške koristi kôd parnosti zasniva na osnovnoj šemi kola sa samoproverom (slika 4.2). Struktura VHDL kodnog šablona za kôd parnosti prikazana je na slici 4.20. Kao kod prethodnih, i kod ove šeme generator bitova za proveru sastoji se od kopije osnovne kombinacione mreže i kodera parnosti od m ulaza i jednog izlaza. Koder parnosti iste strukture koristi se i u okviru kola za proveru kao generator bita parnosti za m izlaznih bitova kombinacione mreže. Ovako dobijeni bit parnosti zatim treba invertovati. Taj invertovani bit i bit dobijen na izlazu generatora bita za proveru predstavljaju konačne komplementarne izlaze kola za proveru, tako da je ova šema jednostavnija od prethodnih jer ne zahteva dodatno kolo za proveru sa dva izlaza. S obzirom da se i u ovom slučaju može iskoristiti VHDL opis modula invertora koji je dat na slici 4.8, predstavićemo samo VHDL opis kodera parnosti. I on se, takođe smešta u poseban paket ili biblioteku [Stan104], [Stan403].

Slika 4.20. Struktura VHDL kodnog šablona za kôd parnosti

Pošto je uloga kodera da na osnovu m izlaznih bitova kombinacione mreže generiše bit parnosti, onda se modul koder parnosti (generator bita za proveru) projektuje jednostavno

entity BOSE_LIN is generic (m : integer); Port ( Input : in std_logic_vector(m-1 downto 0); Output : out std_logic_vector(1 downto 0)); end BOSE_LIN; architecture RTL of BOSE_LIN is begin .............. end RTL;

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

76

pomoću EXOR kola. Osnovni element, EXOR kolo, kao i njegov VHDL opis predstavljeni su na slici 4.21.

Slika 4.21. Blok šema i VHDL opis EXOR kola sa dva ulaza i jednim izlazom

Modul kodera parnosti generiše se paralelnim povezivanjem određenog broja EXOR kola, u više nivoa, što zavisi od broja ulaza, m. Na izlazu modula generiše se jedan bit parne ili neparne parnosti. Struktura i VHDL opis entiteta modula kodera parnosti prikazani na slici 4.22.

Slika 4.22. Blok šema i VHDL opis entiteta modula za proveru parnosti

Kao što se vidi sa slike 4.22, struktura modula kodera (generatora) parnosti zasniva se na paralelnom izračunavanju EXOR funkcija, zbog kraćeg vremena prostiranja signala. Sa povećanjem broja ulaza povećava se i složenost strukture ovog modula, odnosno raste broj

entity PARITY is generic (m : integer); Port ( In1 : in std_logic_vector(m-1 downto 0); P : out std_logic); end PARITY; architecture PARITY_arch of PARITY is begin .............. end PARITY_arch;

library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity EXOR is Port (a : in std_logic; b : in std_logic; c : out std_logic); end EXOR; architecture EXOR_arch of EXOR is begin c <= a xor b; end EXOR_arch;

4. Projektovanje logičkih mreža sa samoproverom

77

nivoa i broj EXOR kola u nivou. Algoritam za generisanje višenivovske strukture modula za proveru parnosti, za proizvoljan broj ulaza m , sastoji se od sledećih koraka:

Algoritam 4

1. odrediti broj nivoa, L mL 2log=

2. for 1=i to L 2.1. odrediti broj ulaza, n, u i-ti nivo strukture na sledeći način:

if 1=i then

mn =

else

=2nn

2.2. generisati nivo od n ulaza i odrediti broj izlaza, p

=2np

2.3. if 1=i then

povezati ulaze svih EXOR kola i-tog nivoa sa primarnim ulazima else

povezati ulaze svih EXOR kola i-tog nivoa i izlaze svih EXOR kola nivoa i-1

3. povezati izlaz EXOR kola L-tog nivoa sa primarnim izlazom.

Algoritam 4 iskorišćen je za dobijanje generičkog VHDL opisa modula za proveru parnosti koji je, zbog složenosti, dat u Dodatku C.

Slika 4.23. Šema zasnovana na parnosti četiri grupe bitova

Pored osnovne šeme, za konkurentnu detekciju greške može se koristiti i šema zasnovana na izračunavanju koda parnosti, ali za određenu grupu izlaznih bitova kola. Sekvenca izlaznih

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

78

bitova podeljena je u grupe, a skup bitova parnosti generisan je na takav način da svaki signal parnosti zavisi od najviše jednog izlaznog bita iz svake particije. Izlazi jedne particije mogu međusobno da dele istu logiku, ali nije dozvoljena podela logike između dva izlaza koji pripadaju različitim particijama. Na slici 4.23 prikazana je šema za konkurentnu detekciju greške zasnovana na parnosti četiri grupe bitova.

4.5. Tehnike za projektovanje sekvencijalnih mreža

Za razliku od kombinacionih, sekvencijalne mreže sadrže memorijske elemente, kao što su leč kola i flip-flopovi. Kao posledica toga, izlazne vrednosti sekvencijalnih komponenti zavise ne samo od tekućih već i od prethodnih ulaznih vrednosti. Spektar sekvencijalnih komponenti proteže se od bazičnih memorijskih elemenata, kao što su leč kola i flip-flopovi, preko generičkih (standardnih) registarskih komponti, kao što su prihvatni, pomerački i brojački registri, i složenijih memorijskih struktura, kao što su RAM, FIFO, stek, do staza podataka i upravljačkih jednica koje su u mogućnosti da izvršavaju složene algoritme.

Za nas su od interesa sekvencijalne mreže koje se mogu modelirati u vidu konačnog automata što se, pre svega, odnosi na upravljačke jedinice digitalnih sistema.

4.5.1. Model sekvencijalne mreže

Postojanje memorijskih elemenata u sekvencijalnim mrežama nameće detaljnije razmatranje problema modeliranja, odnosno opisa u VHDL-u. Generička arhitektura proizvoljne sekvencijalne mreže prikazana je na slici 4.24.

Slika 4.24. Osnovna struktura sekvencijalne mreže

Postoji više načina za modeliranje iste sekvencijalne mreže korišćenjem VHDL-a. Kod korektno opisanih modela sekvencijalna logika tekućeg stanja obično je odvojena od kombinacione logike narednog stanja i izlazne logike. Najčešće se VHDL opis sekvencijalne mreže sastoji od tri nezavisna procesa, koji opisuju tri odvojena dela (logika izlaza, logika narednog stanja i registar stanja) prikazana na slici 4.24. Pored toga, u cilju dobijanja korektnog VHDL opisa neophodno je detaljnije razmotriti još jedan problem, a to je kodiranje stanja, odnosno dodela stanja.

Dodela stanja (state assignement) predstavlja način dodele binarnih brojeva simboličkim stanjima automata. Površina i kašnjenje izlazne i logike narednog stanja automata značajno zavise od načina na koji su određenim stanjima pridružene binarne vrednosti. Na primer, automat sa četiri stanja s0, s1, s2 i s3 može se ralizovati sa dva flip-flopa, koji bi sadržali

4. Projektovanje logičkih mreža sa samoproverom

79

vrednosti 00, 01, 10 ili 11. U ovom slučaju, postoji bar 4!=24 mogućih načina kodiranja za četiri stanja. U opštem slučaju, broj različitih načina kodiranja za n stanja može biti veći od n!. Iz tog razloga, eksplicitno ispitivanje i procena površine i kašnjenja za svako pojedinačno kodiranje može biti naporan posao, čak i za mali broj stanja. U cilju prevazilaženja ovog problema, projektanti koriste različite strategije za kodiranje stanja. Neki od formata kodiranja stanja su: sekvencijalni, Gray-ov, Johnson-ov, one-hot, format definisan po izboru projektanta, i definisan od strane alata za sintezu.

Za sekvencijalni način generisanja koda karakteristično je da se svakom stanju dodeljuju binarne vrednosti prirodnih brojeva. Kod Gray-ovog i Johnson-ovog načina kodiranja sukcesivnim stanjima se dodeljuju binarne vrednosti koje se razlikuju samo u jednom bitu. Osnovni razlog ovakvog načina kodiranja je smanjenje mogućnosti javljanja greške pri prelazu stanja, koje su prouzrokovane promenom asinhronih ulaza u toku vremena postavljanja flip-flopa. U slučaju Gray-ovog načina kodiranja mogu se iskoristiti svih 2n binarnih brojeva, dok je kod Johnson-ovog načina kodiranja potrebno više flip-flopova, pa uvek postoje neiskorišćeni binarni brojevi, što utiče na povećanje površine kola.

One-hot načinom kodiranja svakom stanju se dodeljuje jedan flip-flop, tako da je za n stanja potrebno n flip-flopova. Drugim rečima, svako stanje se prepoznaje po 1 u flip-flopu koji je pridružen tom stanju, dok pri tome svi ostali flip-flopovi imaju vrednost 0. To praktično znači da će pri prelazu iz jednog u neko drugo stanje, flip-flop koji odgovara prvom stanju biti resetovan, dok će flip-flop pridružen drugom stanju biti setovan. Ovako veliki broj flip-flopova obično znatno utiče na povećanje površine kola.

Način kodiranja stanja može da se definiše i po vlastitom izboru, u zavisnosti od zahteva projekta. Alat za sintezu bira format kodiranja tako da minimizira logiku narednog stanja.

Problem optimizacije kola koji se odnosi na kodiranje stanja veoma je kompleksan. I pored toga što površina koja je implicirana logikom funkcije narednog stanja ne može da bude u direktnoj vezi sa brojem bitova u stanju, površina koja se odnosi na memorijske elemente može značajno da utiče na povećanje površine sintetizovanog sekvencijalnog kola. U opštem slučaju, najbolja strategija za kodiranje stanja jeste odrediti nekoliko alternativnih načina kodiranja, za svako kodiranje proceniti površinu i kašnjenje, i onda izabrati najbolje.

4.5.2. Sekvencijalne mreže sa samoproverom

Ispunjavanjem svih prethodno navedenih uslova može se dobiti korektan VHDL opis sekvencijalne mreže. Nad ovakvim VHDL modelom prvobitno zadate arhitekture, sa nezavisnim opisima triju osnovnih delova mreže, vrši se određena modifikacija u cilju dobijanja sekvencijalne mreže sa samoproverom. Pošto se logika izlaza i logika narednog stanja mogu razmatrati kao dve nezavisne kombinacione mreže, onda se mogu i nezavisno proveravati. Znači, m izlaznih bitova može da se proširi određenim brojem bitova za proveru, u zavisnosti od primenjenog koda za detekciju greške. Takođe, k bitova, koji predstavljaju određeno stanje, može da se proširi bitovima za proveru.

Kodiranje izlaza određenim kodom za detekciju greške u potpunosti odgovara prethodno opisanom načinu kodiranja izlaza kombinacionih mreža. Kodiranje stanja je nešto složeniji problem koji je već razmatran. Naime, bitovi koji su dodeljeni stanju mogu se proširiti dodatnim bitovima za proveru, na isti način kao i svaki drugi skup informacionih bitova. S druge strane, bitovi dodeljeni stanju mogu, i bez proširenja, da zadovoljavaju neki unapred određen uslov, kao što je, na primer, one-hot šema kodiranja stanja.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

80

U cilju postizanja samoprovere, osnovna struktura sekvencijalne mreže (slika 4.20) može da se modifikuje na više različitih načina, pri čemu se na određenim mestima dodaje struktura za konkurentnu detekciju greške. Arhitektura osnovne mreže i arhitektura kola za konkurentnu detekciju greške mogu da se opišu u VHDL-u i da budu poznati pre određene modifikacije. Prema tome, predložena metoda za generisanje sekvencijalnih mreža sa samoproverom podrazumeva da se prvobitno zadatom VHDL opisu sekvencijalne mreže dodaju VHDL opisi struktura za konkurentnu detekciju greške. Predložena metoda podržava veći broj tehnika za generisanje sekvencijalnih mreža sa samoproverom, a u daljem tekstu biće detaljnije objašnjene samo neke od njih.

4.5.2.1. Tehnike dupliciranja

Duplikacija kola i poređenje izlaza je najjednostavnija tehnika za konkurentnu detekciju greške u sekvencijalnim kolima, što je bio slučaj i za kombinaciona kola. S obzirom da logika izlaza i logika narednog stanja predstavljaju dva različita kombinaciona kola, mogu se nezavisno duplicirati i porediti na osnovu izlaznih bitova i bitova stanja. U oba slučaja neophodno je prisustvo kola za proveru primarnih i invertovanih bitova. Na slici 4.25 prikazana je opšta šema dupliciranja sekvencijalne mreže.

Slika 4.25. Šema dupliciranja sekvencijalne mreže

Na osnovu slike 4.25 možemo videti da su za primenu tehnike dupliciranja sekvencijalne mreže, pored prvobitno zadatog VHDL opisa mreže, potrebna još dva modula. To su invertor i kolo za proveru sa dva izlaza. Način opisivanja ovih modula u VHDL-u već je definisan u prethodnom tekstu koji je u vezi sa tehnikom dupliciranja kombinacionih mreža. S obzirom da su generički VHDL opisi ovih modula već smešteni u biblioteci, kao takvi se mogu koristiti i u toku primene tehnike dupliciranja na sekvencijalne mreže.

4.5.2.2. Tehnike primene Berger-ovog, Bose-Lin-ovog i koda parnosti

Primenom metode koja je ranije detaljno opisana za kombinaciona kola, dobija se opšta arhitektura sekvencijalnog kola sa samoproverom. Na slici 4.26 prikazana je šema dodavanja strukture za konkurentnu detekciju greške u prvobitno zadatu sekvencijalnu mrežu. Za

4. Projektovanje logičkih mreža sa samoproverom

81

kodiranje m izlaznih bitova i k bitova stanja mogu da se koriste iste ili različite šeme. U prvom slučaju potrebno je jedno, a u drugom slučaju potrebna su dva različita kola za proveru. Njihovi izlazi se onda dovode na još jedno kolo za proveru sa dva izlaza koje daje indikaciju o pojavi greške.

Slika 4.26. Arhitektura sekvencijalne mreže sa samoproverom

Generisanje sekvencijalne mreže sa samoproverom sastoji se od dva koraka. U toku prvog koraka, sekvencijalna mreža ili konačni automat opisuje se u VHDL-u modelom ponašanja. Prilikom opisa kola projektant je ograničen na korišćenje izdvojenih procesa za opisivanje logike narednog stanja i izlazne logike. Jedino se na taj način mogu ispuniti prethodno pomenuti uslovi za generisanje korektnog VHDL opisa sekvencijalne mreže nad kojim se mogu izvršiti potrebne modifikacije. Funkcionalnom simulacijom može da se verifikuje ponašanje automata.

U toku drugog koraka, kreira se modifikovani VHDL opis konačnog automata na osnovu kodnih šablona čija je struktura prikazana na slici 4.27. Ovi šabloni definišu nekoliko podblokova (ili VHDL komponenti) čijim se povezivanjem dobija opis kola sa samoproverom. Šabloni su definisani u skladu sa strukturom sekvencijalne mreže sa samoproverom koja je predstavljena na slici 4.26. Osenčeni blokovi na slici 4.27 predstavljaju dodatne module za konkurentnu detekciju greške. U cilju primene predložene metode potrebno je da svi ovi moduli budu dostupni u izdvojenom VHDL paketu ili biblioteci kao unapred projektovane komponente.

Blokovi koji se odnose na logiku izlaza, logiku narednog stanja i registar stanja (slika 4.27) predstavljaju VHDL module kojima se opisuje arhitektura konačnog automata, prikazana na slici 4.24. VHDL procesi kojima su opisani ovi moduli, kopiraju se bez ikakve modifikacije iz inicijalnog opisa automata u odgovarajući opis arhitekture automata sa samoproverom. Modul generator simbola za proveru izlaza (stanja) koristi se za generisanje bitova za proveru izlaza (stanja). Svaki od ova dva modula sastoji se iz dva dela i to kodera i duplicirane logike izlaza (narednog stanja), pa se zato mogu razmatrati kao prethodno opisani generatori simbola za proveru kombinacione mreže. Na ulaz kodera dovode se izlazi procesa koji opisuje odgovarajuću logiku a na izlazu se dobijaju bitovi za proveru. I u ovom slučaju, u

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

82

toku procesa sinteze vrši se optimizacija modula logike izlaza (narednog stanja) zajedno sa modulom kodera, pa će zato, nakon sinteze, kompleksnost generatora simbola za proveru biti znatno manja od kompleksnosti nezavisno sintetizovanog modula logike izlaza (narednog stanja).

Slika 4.27. Struktura VHDL kodnog šablona za konačni automat sa samoproverom

Na osnovu ovakvog kodni šablona projektant može da izabere jednu od tehnika za konkurentnu detekciju greške, koje se zasnivaju na načinu kodiranja izlaza i stanja. Tehnike koje razmatramo zasnivaju se na primeni Berger-ovog koda, Bose-Lin-ovog koda, koda parnosti, ili kombinacija ovih kodova. Struktura osenčenih modula sa slike 4.27 zavisi od primenje tehnike. Primena Berger-ovog ili Bose-Lin-ovog koda podrazumeva realizaciju kodera pomoću potpunih sabirača, i struktura kodera odgovara strukturi koja je ranije opisana za kombinacione mreže. Takođe je opisana i struktura kodera koji se realizuje EXOR kolima, a potreban je u slučaju primene koda parnosti. Zato se mogu iskoristiti generički VHDL opisi svih tipova kodera, koji su već smešteni u poseban paket ili biblioteku. Jasno je da se i kola za proveru realizuju na način koji je opisan za kombinacione mreže. S obzirom da su generički opisi i ovih modula smešteni u biblioteci, mogu se kao takvi iskoristiti i u ovom slučaju, za generisanje sekvencijalnih mreža sa samoproverom.

Na osnovu specificirane opcije, od strane projektanta bira se odgovarajući VHDL opis modula za koder i kolo za proveru iz unapred definisanog paketa. S obzirom da su potrebni moduli opisani kao generičke komponente sa parametrzovanim brojem ulaza i izlaza, projektant treba samo da ih uključi u postojeći VHDL opis kola. Pri tome treba imati u vidu da se za proveru izlaza i proveru stanja mogu primeniti različite tehnike, što zavisi od izbora projektanta.

Znači, nakon selektovanja određene šeme za konkurentnu detekciju greške i insertovanja odgovarajućih modula iz inicijalnog opisa sekvencijalne mreže u kodni šablon, dobija se VHDL opis mreže sa samoproverom.

4. Projektovanje logičkih mreža sa samoproverom

83

4.6. Sinteza kombinacionih i sekvencijalnih mreža sa samoproverom

Na osnovu generisanog VHDL opisa, a pomoću komercijalnih alata za logičku sintezu može da se uradi sinteza kombinacionih i sekvencijalnih mreža sa samoproverom. Predloženi šablon je definisan tako da je nezavisan od alata za sintezu pa se može garantovati njena korektnost. Kod većine alata sinteza se obavlja postupno, u više koraka, pri čemu se u prvom koraku, na osnovu analize datog VHDL opisa, kreira sistem logičkih jednačina u kome svaka jednačina opisuje zavisnost jednog primarnog izlaza od svih primarnih ulaza. U drugom koraku, sistem logičkih jednačina se optimizuje primenom neke od metoda za minimizaciju višeizlaznih logičkih mreža. Pri tome se pojedinačne logičke jednačine ne realizuju kao nezavisne logičke mreže već se teži njihovom objedinjavanju u jedinstvenu, kompaktnu višeulaznu-višeizlaznu mrežu kod koje se ista logička kola koriste za formiranje više primarnih izlaza. S obzirom na to, nezavisni funkcionalni moduli iz polaznog VHDL opisa ne preslikavaju se na nezavisne podmreže, već se odgovarajuće podmreže najčešće međusobno preklapaju. Prilikom projektovanja kola sa samoproverom, pojava "preklapanja" funckonalnih modula je nepoželjna, jer defekt u delu mreže koji je zajednički za više funkcionalnih modula može da uslovi grešku na izlazu svakog od njih. Iz tog razloga, u toku sinteze, neophodno je obezbediti da struktura kola, sastavljena od izdvojenih modula (na primer, slika 4.27) bude očuvana i na fizičkom nivou. To se može postići na dva načina. Prvi način podrazumeva da se moduli nezavisno sintetišu, a da se dobijene mreže naknadno spoje u jedinstvenu celinu.

Drugi način izbegavanja neželjene logičke podele uzima u obzir hijerarhiju u toku procesa sinteze. To znači da se optimizacija i sinteza rade odvojeno za svaki blok. Da bi se izbegla logička podela između modula prvobitno zadate mreže i modula za konkurentnu detekciju greške selektivno se primenjuje opcija sinteze keep_hierarchy. Direktive se umeću u VHDL kôd u vidu komentara, a u toku sinteze služe kao instrukcije alatu za sinezu. Konkretno, direktiva keep_hierarchy primenjena na određen funkcionalni modul nalaže alatu za sintezu da taj modul tretira kao izdvojenu celinu. Takođe, različiti blokovi mogu da se sintetišu sa različitim opcijama, u zavisnosti od ciljeva projektanta, a proces može da se ponavlja sa različitim tehnikama za konkurentnu detekciju greške. Na primer, neki od blokova se optimizira za brzinu, a drugi za površinu. Ako su kriterijumi projekta zadovoljeni, onda je proces završen. Međutim, ako cena i performanse nisu zadovoljene, onda se proces ponavlja sa različitim tehnikama za konkurentnu detekciju greške.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

84

5. Implementacija mreža sa samoproverom

85

5. Implementacija mreža sa samoproverom

Put od ideje i početne specifikacije do fizičke realizacije kola je dug i sastoji se od više koraka ili faza. Na tom putu, projektantu su na raspolaganju različite tehnike i alati, koji mu pomažu da opiše svoju zamisao (VHDL, šematski dijagram, tabela istinitosti), proveri njenu funkcionalnu ispravnost (funkcionalna simulacija) i transformiše je u oblik pogodan za direktnu fizičku realizaciju (sinteza).

Projektanti sve više prihvataju top-down metodologiju projektovanja koja im pruža mogućnost da pređu sa nižeg, tranzistorskog nivoa na više, apstraktnije nivoe. Primenu ove nove metode omogućili su jezici za opis hardvera i komercijalni alati za sintezu. Top-down metodologija projektovanja polazi od HDL modela hardvera, na visokom nivou apstrakcije (sistemski ili algoritamski), i preko arhitekturnog ili RTL modela dolazi do nivoa gejta ili tranzistora. Ovakav način projektovanja sistema podrazumeva i korišćenje automatskih alata pomoću kojih se vrši sinteza i implementacija opisanog kola na CPLD ili FPGA tehnologiju [Smit96].

Za projektovanje visoko pouzdanih sistema takođe se koristi prethodno pomenuta metoda. Ovakvi sistemi zahtevaju dodatne resurse kao što su povećanje površine i veći broj pinova, što zavisi od primenjene tehnike za detekciju greške. Alati za sintezu i implementaciju omogućavaju procenu povećanja resursa i, na osnovu toga, izbor tehnike sa najnižom cenom.

5.1. Digitalna integrisana kola

Integrisano kolo, ili čip, je mala elekteronska komponenta napravljena od poluprovodničkog materijala. Koristi se u mikroprocesorima, audio i video opremi, automobilima i drugo. Složenost integrisanog kola meri se stepenom integracije, koji predstavlja broj osnovnih elemenata (tranzistora, gejtova) realizovanih (integrisanih) u jednom kolu.

Prema metodlogiji projektovanja, integrisana kola se mogu podeliti na standardna (Standard Integrated Circuits - SIC) i kola specifične namene (Application Specific Integrated Circuits - ASIC). Standardne komponente se, u tehnološkom smislu, proizvode nezavisno od krajnjeg korisnika i funkcionalni rad ovih komponenti unapred je tačno određen od strane proizvođača čipa. Nasuprot tome, funkcije ASIC kola ne određuje proizvođač već su one definisane od strane projektanta. ASIC kola se projektuju tako da odgovaraju konkretnoj specifičnoj nameni. ASIC kola obično imaju bolje performanse od kola opšte namene zato što se mogu optimizirati u skladu sa zahtevima aplikacije. Međutim, cena projektovanja ASIC kola je visoka. Pored toga, jedanput projektovana ASIC komponenta ne može da se ažurira ili koriguje. U kritičnim aplikacijama ovakve komponente ne mogu da se poprave u slučaju otkaza, jedino mogu da se zamene novim [YuSh01].

Razlikuju se sledeće vrste ASIC kola:

1. Full-custom - kolo se u potpunosti (do nivoa osnovnih elemenata) projektuje po naurudžbi, za tačno definisanu primenu; ostvaruju se najbolje karakterisike, ali je pojedinačna cena visoka.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

86

2. Semi-custom - za fabrikaciju naručenog kola proizvođač koristi pretprojektovane ili prefabrikovane (nedovršene) strukture koje doradom prilagođava korisničkim zahtevima; na taj način se skraćuje vreme pripreme proizvodnje, krajnja pojedinačna cena je niža, ali su performanse lošije u poređenju sa full custom projektovanjem.

- Standard cells (standardne ćelije) - proizvođač nudi veći broj standardnih ćelija (logička kola, flip-flopovi, ali i strukture SSI, MSI složenosti); korisnik isporučuje proizvođaču šemu sačinjenu od standardnih ćelija, na osnovu koje proizvođač izrađuje čip, i pri tome ne startuje od početka već samo uklapa i povezuje pretprojektovane standardne ćelije.

- Gate arrays (gejtovske matrice) - kolo se izrađuje na podlozi sačinjenoj od velikog broja prefabrikovanih jednostavnih logičkih elemenata ili MOS tranzistora koji nisu međusobno povezani; korisnik isporučuje proizvođaču šemu do nivoa osnovnih elemenata na bazi koje proizvođač obavlja doradu, tj. metalizaciju, polaznog čipa.

3. Programabilna logička kola, (Programmable Logic Devices - PLD) - to su integrisana kola koja se mogu konfigurisati (tj. programirati) od strane krajnjeg korisnika da bi ispunili zahteve koji su vezani za konkretnu aplikaciju. Strukturu PLD kola čini fiksan skup komponenata kakvi su logički gejtovi, ili složeniji logički blokovi, međusobno spojeni programabilnim vezama. Programiranjem ovih veza, krajnji korisnik definiše funkciju kola, a jednom programirana funkcija se može menjati u potpunosti ili delimično. Suštinska razlika u odnosu na ostale tipove ASIC kola je u tome da PLD kolo programira sam korisnik, čime je on u potpunosti nezavisan od proizvođača.

5.1.1. Klasifikacija PLD kola

Danas je na tržistu dostupan veliki broj tipova PLD kola, koji se razlikuju po načinu programiranja, složenosti (tj. logičkom kapacitetu, ili implementacionoj moći), unutrašnjoj strukturi, brzni rada, broju pinova. Raspoloživ logički kapacitet se kreće od nekoliko stotina do nekoliko stotina hiljada ekvivalentnih gejtova, a taktna učestanost od nekoliko desetina MHz do 200 MHz. PLD kola se pakuju u kućišta sa nekoliko desetina do nekoliko stotina pinova, što znači da su u stanju da implementiraju širok dijapazon kombinacionih i sekvencijalnih logičkih funkcija.

Prema složenosti i organizaciji unutrašnje strukture, savremena PLD se mogu klasifikovati u sledeće tri kategorije:

1. SPLD (Simple PLD). PLD kola srednjeg stepena integracije zasnovana na programabilnim AND-OR poljima, koja se koriste za implementaciju logičkih funkcija izraženih u formi “suma proizvoda” (slika 5.1). Glavni deo ove arhitekture čine dve programabilne logičke matrice: (a) AND matrica za formiranje logičkih proizvoda i (b) OR matrica za sumiranje logičkih proizvoda. Pored AND-OR polja pojedine PLD arhitekture ovog tipa poseduju izlazni stepen koji obezbeđuje: (1) povratne veze sa izlaza na ulaz, (2) mogućnost promene polariteta izlaznog signala, (3) mogućnost da se pojedini eksterni priključci koriste bilo kao ulazi bilo kao izlazi i (4) memorijske elemente za memorisanje stanja izlazih signala, što omogućuje sintezu sekvencijalnih digitalnih kola.

Uobičajeni naziv za SPLD kolo kod koga se obe logičke matrice mogu programirati je PLA (Programmable Logic Array). Pored PLA strukture u upotrebi su i AND-OR polja kod kojih je jedna od logičkih matrica fiksna, a druga programabilna. Konfiguracija fiksne matrice je permanentna, izvedena u toku fabrikacije kola i ne može se menjati od

5. Implementacija mreža sa samoproverom

87

strane krajnjeg korisnika. AND-OR polje kod koga je AND matrica programabilna, a OR matrica fiksna se zove PAL (Programmable Array Logic). AND-OR polje sa fiksnom AND matricom i programabilnom OR matricom se zove ROM (Read Only Memory).

U poređenju sa ostalim tipovima PLD kola (CPLD i FPGA), SPLD kola se odlikuju relativno niskim logičkim kapacitetom (do nekoliko stotina ekvivalentnih gejtova). Glavna namena SPLD kola je zamena standardnih digitalnih kola niskog i srednjeg stepena integracije čime se postiže ušteda prostora na štampanoj ploči, pojeftinjuje proizvodnja i povećava pouzdanost u radu. Brzina rada SPLD kola je velika. Propagaciono kašnjenje “od pina do pina” je fiksno (ne zavisi od implementirane funkcije i iznosi do nekoliko nanosekundi.

2. CPLD (Complex PLD). Sastoji se od većeg broja programabilnih funkcionalnih blokova povezanih preko centralizovane programabilne sprežne mreže (slika 5.2). Po unutrašnjoj strukturi, funkcionalni blokovi su slični tipičnom SPLD kolu.

3. FPGA (Field Programmable Gate Array). PLD kola visokog stepena integracije koje se izvodi kao polje velikog broja programabilnih logičkih blokova (ćelija) jednostavne strukture raspoređenih na infrastrukturi koja ih međusobno povezuje (slika 5.3).

Slika 5.1. SPLD arhitektura

5.1.1.1. CPLD arhitekture

Kao što je već rečeno, CPLD kola se sastoje od više funkcionalnih blokova SPLD strukture povezanih globalnom programabilnom sprežnom mrežom, odnosno prekidačkom matricom (slika 5.2). Međutim, čak i na nivou funkcionalnih blokova, CPLD kola su znatno složenija od SPLD kola. Naime, funkcionalni blok CPLD kola čini veći broj makroćelija. U većini slučajeva, funkcionalni blokovi se mogu smatrati nekom formom proširenog PAL-a, tj. PAL sa elementima PLA arhitekture. Kod klasičnih PAL-ova, raspodela logičkih proizvoda je fiksna u smislu da je svaki logički proizvod privatan za jedno izlazno AND kolo (tj. makroćeliju). Privatni logički proizvodi koji ostaju neiskorišćeni ne mogu se pridružiti nekoj drugoj makroćeliji. Takođe, makroćelije ne mogu da imaju zajedničke logičke proizvode, pa u slučajevima kada se isti proizvod koristi za formiranje logičkih funkcija u više makroćelija, taj proizvod mora da se formira u svakoj makroćelji u kojoj se koristi.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

88

(a)

(b) (c)

Slika 5.2. (a) CPLD arhitektura; (b) funkcionalni blok; (c) makroćelija

S obzirom da prekidačka matrica kod CPLD kola ne mora da bude u potpunosti povezana, tj. neke od teoretski mogućih veza izmađu izlaza i ulaza logičkog bloka ne moraju stvarno da postoje, teško se može postići 100% iskorišćenost makroćelija. Da bi se ublažili ovi nedostaci, kod savremenih CPLD kola koristi se jedna ili neka kombinacija sledećih tehnika za optimizaciju:

1) Preusmeravanje logičkih proizvoda - podrazumeva da se svakoj makroćeliji pridružuje dodatna logika koja omogućava da se logička funkcija dobijena sumiranjem privatnih logičkih proizvoda preusmeri ka susednoj makroćeliji gde se sumira sa privatnim logičkim proizvodima te makroćelije. Na ovakav način, objedinjavanjem logičkih proizvoda susednih makroćelija, moguće je formirati složenije logičke funkcije. Međutim, ostali resursi makroćelije (tipično flip-flop) čiji su logički proizvodi preusmereni, ostaju neiskorišćeni.

2) Logički ekspanderi - to su neraspoređeni logički proizvodi programabilne AND matrice koji se po potrebi mogu povezati sa bilo kojom, ili svim, makroćelijama. Ekspanderski proizvodi se invertuju i vraćaju u programabilnu matricu, gde se mogu koristiti za formiranje

5. Implementacija mreža sa samoproverom

89

složenijih logičkih funkcija. Naravno, korišćenje ekspandera povećava propagaciono kašnjenje.

3) Logički alokatori - to su prekidačke mreže ugrađene između AND matrice i izlaznih OR kola, koje omogućavaju da se svaki logički proizvod, generisan u programabilnoj AND matrici, može povezati sa bilo kojom izlaznim OR kolom. Drugim rečima, omogućavaju najekonomičnije korišćenje logičkih proizvoda. S obzirom da potpuna povezanost zahteva prekidačku matricu velikih dimenzija, obično postoji ograničenje u smislu da se jedan logički proizvod može povezati sa nekim podskupom OR kola.

Zahvaljujući relativno velikoj brzini rada, CPLD kola nalaze široku primenu, od implementacije jednostavne sprežne logike, do realizacije prototipova jednostavnijih ASIC kola. Važan razlog za sve veću primenu CPLD kola je redizajn postojećih sistema baziranih na SPLD kolima, gde se veći broj SPLD kola zamenjuje manjim brojem CPLD kola. Sistemi koji se sastoje od više međusobno povezanih funkcionalnih modula mogu se efikasno realizovati pomoću CPLD kola, tako što se svaki modul realizuje jednim funkcionalnim blokom. Opšte pravilo je da su za realizaciju u CPLD tehnologiji pogodni sistemi koji zahtevaju složenu logiku sa malim brojem flip-flopova. Dobar primer takve klase kola su konačni automati. Sva komercijalna CPLD kola su reprogramabilna, što omogućava jednostavnu i brzu izmenu dizajna. CPLD kola koja su reprogramabilna “u sistemu” omogućavaju rekonfiguraciju hardvera (npr. izmena protokola kod kola za komunikaciju) bez isključenja napajanja [Trim93].

5.1.1.2. FGPA arhitektura

Arhitekturu FPGA kola čine tri osnovna tipa gradivnih elementata: (1) konfiguracioni logički blokovi (Configuration Logic Blocks - CLB); (2) ulazno-izlazni blokovi (Input/Output Blocks - IOB) i (3) sprežna mreža. CLB blokovi obezbeđuju funkcionalne elemente za realizaciju korisničkih funkcija, IOB blokovi ostvaruju interfejs između pinova čipa i sprežne mreže, dok sprežna mreža obezbeđuje programabilnu vezu između CLB i IOB blokova. Logički blokovi imaju jednostavnu strukturu i zasnivaju se na multiplekserima ili tabelama pretraživanja (Look Up Table - LUT) sa malim brojem ulaza, koji kao takvi mogu da realizuju samo relativno jednostavne logičke funkcije, dok se složenije funkcije realizuju povezivanjem više logičkih blokova (slika 5.3). Logički blok se programira upisom konfiguracionih podataka (niza bitova). Najveći broj logičkih blokova sadrži i registre.

Slika 5.3. FPGA arhitektura

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

90

FPGA se može programirati na tri različita nivoa: (1) na nivou funkcije logičkih ćelija; (2) na nivou sprege između ćelija; i (3) na nivou ulaza i izlaza. Sva tri nivoa se konfigurišu preko niza bitova koji se preko eksternog izvora pune u kolo.

U zavisnosti od načina konfiguracije, razlikujemo četiri tipa FPGA kola. Konfigurabilna kola (prvi tip) se mogu konfigurisati od strane korisnika samo jedanput nakon čega dodatne promene konfiguracije nisu izvodljive. (Iz ovog razloga ova kola se nazivaju One-Time Programmable, ili OTP). Rekonfigurabilna kola se mogu konfigurisati nekoliko puta i dele se na dve klase: statička i dinamička. Kod statičkih kola (drugi tip) konfiguracioni niz se puni jedanput, na početku rada, i dok je kolo operativno ne menja se. Nakon reseta sistema u FPGA je moguće napuniti novi niz. Kod dinamički rekonfigurabilnih kola moguće je vršiti promene u konfiguraciji u bilo kom trenutku rada kola. Dinamički rekonfigurabilna kola se dalje mogu podeliti na potpuno rekonfigurabilna (treći tip), pri svakom novom punjenju rekonfiguriše se celo kolo, i parcijalno rekonfigurabilna (četvrti tip) kod kojih je moguća rekonfiguracija samo jednog dela kola.

Logički blokovi FPGA kola Logički blokovi savremenih, komercijalnih FPGA kola značajno se razlikuju po veličini i

implementacionoj moći. Da bi se istakle razlike u veličini i složenosti logičkih blokova, uvodi se pojam granularnost logičkog bloka, a sve savremene FPGA arhitekture neformalno se klasifikuju samo u dve široke grupe: logički blokovi fine granularnosti i logički blokovi grube granularnosti.

Logički blokovi fine granularnosti veoma su slični ćelijama gejtovskih matrica i uglavnom se sastoje od nekoliko tranzistora ili jednostavnih logičkih elemenata. Takvi blokovi poseduju malo interno propagaciono kašnjenje i s obzirom da zauzimaju malu površinu njihov broj na jednom čipu može biti veoma veliki. Jednostavna struktura logičkih blokova obezbeđuje fleksibilnost prilikom implementacije logičkih funkcija. Obično se data logička funkcija može realizovati na više različitih načina, što omogućava ostvarivanje željenog kompromisa između ukupne zauzete površine (tj. broja upotrebljenih logičkih blokova) i brzine rada. Međutim, što su logički blokovi jednostavniji to je neophodno obezbediti veći broj programabilnih veza u sprežnoj mreži. Prenos signala preko programabilnih veza je sporiji u poređenju sa prenosom unutar logičkog bloka.

Logički blokovi grube granularnosti najčešće su zasnovani na LUT tabelama i tipično sadrže dodatne logičke elemente, kao što su multiplekseri i flipflopovi. Takvi logički blokovi mogu da realizuju složenije kombinacione i sekvencijalne logičke funkcije, pa su potrebe za povezivanjem logičkih blokova programabilnim vezama manje. Složeni logički blokovi često, pored programabilnih struktura za realizaciju logike opšte namene (npr. LUT tabele), sadrže i logičke elemente za posebne namene, kao što su flipflopovi, generatori prenosa, SRAM blokovi. Kod nekih serija FPGA kola postoji mogućnost da se svaki logički blok nezavisno, po potrebi, postavi u jedan od nekoliko raspoloživih režima rada. U svakom od režima rada resursi logičkog bloka koriste se na drugačiji način. Kombinacija logičkih elemenata posebne namene i režima rada omogućava kompaktnu realizaciju logičkih struktura kao što su sabirači, komparatori, brojači. Međutim, složeni logički blokovi često su nepotpuno iskorišćeni, a ekonomičnost implementacije zavisi od nivoa usklađenosti strukture sistema koji se projektuje i FPGA arhitekture. To ima za posledicu da je logička gustina sistema realizovanih u FPGA arhitekturi grube granularnosti obično manja od one koja je deklarisana za konkretno FPGA kolo.

5. Implementacija mreža sa samoproverom

91

Sprežna mreža FPGA kola Sprežna mreža je bitna komponenta FPGA arhitekture. Na slici 5.4 prikazan je opšti

model sprežne mreže jedne tipične FPGA arhitekture. Bazični elementi sprežne mreže su: žičani segmenti i programabilni prekidači. Programabilni prekidači su grupisani u blokove za povezivanje (Connection Blocks - C) i prekidačke blokove (Switching Blocks - S). Logički blok (označen na slici 5.4 sa L) ima određeni broj priključaka sa svake strane i povezuje se sa sprežnom mrežom pomoću C bloka. Žičani segmenti prolaze neprekinuti kroz C blok, a svaki pin L bloka može se povezati sa fiksnim brojem žičanih segmenata koji prolaze kroz C blok. S blokovi omogućavaju spajanje horizonalnih i vertikalnih žičanih segmenata. Svaki žičani segment koji utiče u S blok može se povezati sa ograničenim brojem drugih žičanih segmenata koji sa drugih strana utiču u isti S blok.

Slika 5.4. Opšti model sprežne mreže FPGA arhitekture

Veze između logičkih blokova obično se formiraju pomoću više žičanih segmenata spojenih programabilnim prekidačima. Za razliku od sprežne mreže kod CPLD kola, koja omogućava proizvoljno povezivanje priključaka logičkih blokova, sprežne mreže FPGA arhitekture imaju ograničene resurse. Zbog toga, u nekim slučajevima nije moguće konfigurisati kolo čak i ako je logički kapacitet kola dovoljno veliki da ostvari sve zahtevane logičke funkcije. Veći broj žičanih segmenata i programabilnih prekidača povećava fleksibilnost prilikom konfigurisanja FPGA kola, ali takve sprežne mreže zauzimaju veću površinu na čipu i poseduju veće propagaciono kašnjenje [Rose93], [Trim93].

Arhitektura FPGA kola je fleksibilnija od CPLD kola zbog dodatnih flip-flopova. To je i razlog njihovog korišćenja u protočnim aplikacijama i u brzom procesiranju podataka. Pored toga, FPGA kola imaju veću koncentraciju gejtova po datoj površini (gušća su) od CPLD kola, pa je opravdano koristiti ih za veće projekte.

Prednost FPGA komponenti je funkcionalno prilagođenje, odnosno mogućnost brzog i lakog programiranja. Naime, komponenta može da se testira i reprogramira. Funkcija koja je verifikovana na FPGA kolu može, zatim, da se generiše kao ASIC komponenta [Smit96].

FPGA komponente su kompletno proizvedene, ali su ostale nezavisne od projekta. Svaki proizvođač FPGA komponenti proizvodi ih sa svojom vlastitom arhitekturom. Arhitektura obuhvata brojne programabilne logičke blokove koji su povezani prekidačkim matricama. Da bi se konfigurisala komponenta za određenu funkciju ove prekidačke matrice se programiraju tako da usmeravaju signale između pojedinih logičkih blokova [Smit96].

5.2. Projektovaje pomoću PLD-a

CPLD i FPGA komponente mogu se koristiti za projektovanje svakog digitalnog logičkog sistema. U odnosu na strukture na nivou gejta, programabilne logičke komponente pružaju bolje mogućnosti jer ne zahtevaju izradu prototipova pa se mogu brzo projektovati i

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

92

verifikovati. Pošto su komponente softverski konfigurisane i programirane od strane korisnika modifikacije se mogu napraviti vrlo brzo i u bilo kom trenutku. Za projektovanje sa programabilnim logičkim kolima potrebno je malo vremena što je vrlo bitan faktor današnjeg tržišta.

Na današnjem nivou tehnologije, PLD kola su u stanju da implementiraju veoma složene logičke funkcije. U fazi projektovanja složenih digitalnih kola i sistema koriste se brojne tehnike i sredstva za automatsko projektovanje. CAD alati, jezici za opis hardvera (HDL), kao i specijalizovani softveri za logičku sintezu, logičku simulaciju, strukturnu analizu i projektovanje od ključne su važnosti za efikasno projektovanje digitalnih sistema. Bez obzira na tip, obim i specifičnosti problema koji se rešava, tok projektovanja je u suštini, uvek isti. Cilj je da se projektantske ideje, predstavljene u tekstualnom ili šematskom obliku, konvertuju u fajl koji sadrži podatke o konfiguraciji za CPLD ili FPGA strukture. Osnovne faze projektovanja pomoću PLD kola prikazane su na slici 5.5.

Početna faza (design entry) podrazumeva unos projekta korišnjenjem neke od standardnih metoda, kao što su VHDL opis hardverske strukture i ponašanja, ili šematski opis. Pri projektovanju hardvera treba imati u vidu da se svi ulazni signali paralelno procesiraju, prolazeći od ulaza do izlaza kroz makroćelije i međuveze.

Nakon izvršenog unosa projekta, a u cilju verifikacije logičke ispravnosti obavlja se funkcionalna (ili logička) simulacija. Za dati skup test signala na ulazu, a na osnovu tajminga koji je definisan HDL modelom, simulator treba da potvrdi korektnost izlaznih signala. Iako problemi sa površinom i tajmingom hardvera mogu da se pojave i kasnije, projektant može da bude siguran da je logika funkcionalno korektna.

U sledećim fazama sinteze i translacije vrši se implementacija projekta, tako što se opis na visokom nivou preslikava na strukturu ciljnog CPLD ili FPGA kola. Ovo preslikavanje obuhvata:

(1) logičku sintezu - procesom kompajliranja konvertuje se opis projekta u logičke jednačine i vrši se njihova minimizacija,

(2) prilagođenje ciljnoj PLD arhitekturi (tehnology mapping) - realizacija logičkih jednačina pomoću raspoloživih makroćelija (programabilnih struktura kao što su look-up tabele, multiplekseri, CPLD logički blokovi);

(3) razmeštaj (placement) - dodela makroćelija fizičkim logičkim blokovima PLD kola;

(4) povezivanje (routing) - povezivanje logičkih blokova.

U toku ovih aktivnosti najpre se kao rezultat sinteze generiše prelazna prezentacija projektovanog hardvera koja se naziva net lista. Net lista je obično u standarnom EDIF (Electronic Design Interchange Format) formatu i nezavisna je od strukture CPLD i FPGA komponenata. Pored HDL modela projekta, ulazi u alat za sintezu su i izvesna ograničenja koja projektant može da postavi kako bi naložio alatu na koji način da tretira hijerarhiju sadržanu u HDL opisu. Takođe, projektant može da postavi maksimalna dozvoljena kašnjenja kroz pojedine module projekta i slično. Iako u ovoj fazi implementacioni detalji nisu poznati, alat za sintezu, na osnovu modela gradivnih ćelija za određenu tehnologiju, može da obavi grubu procenu i analizu tajmiga i iskoristi ove rezultate kako bi dodatno optimizovao net listu.

Nakon sinteze, vrši se mapiranje logičke strukture, opisane u formi net liste, na makroćelije, međuveze i ulazne i izlazne pinove, a kao rezultat dobija se konfiguracioni fajl koji sadrži niz bitova, gde svaki bit definiše stanje jednog internog prekidača PLD kola. Drugim rečima, rezultat svih ovih aktivnosti je implemenatcioni opis projekta koji sadrži sve detalje vezane za internu konfiguraciju PLD kola koje realizuje dati projekat.

5. Implementacija mreža sa samoproverom

93

Korišćenjem implementacionog opisa, moguće je izvršiti veoma preciznu simulaciju kako u pogledu funkcionalnosti tako i u pogledu tajminga. Najpre treba dokazati da strukturna net lista i VHDL opis kola obavljaju istu funkciju. Naime, zbog dvoznačnosti VHDL koda može doći do generisanja nekorektne net liste. Nakon toga potrebno je izvršiti tajming analizu. Na nivou VHDL opisa taktni period ima apstraktnu vrednost, dok na strukturnom nivou ova vrednost odgovara kašnjenju kroz gejtove i veze određene familije. Ukoliko se ustanovi da je funkcionalnost narušena ili da zahtevi u pogledu tajminga nisu ostvareni, projektant redizajnira projekat ili uvodi nova ograničenja, a zatim ponavlja postupak implementacije i simulacije.

U poslednjoj fazi projektovanja, na bazi implementacionog opisa projekta, generisani konfiguracioni fajl se programira u PLD kolo.

Slika 5.5. Proces projektovanja programabilnih kola

5.3. Primena PLD kola kod projektovanja pouzdanih sistema

Pojava rekonfigurabilnog hardvera pruža mogućnost za rešavanje problema pouzdanosti u sistemima kritičnih aplikacija. Rekonfigurabilni hardver, kao što su na primer PLA ili FPGA kola, mogu da se reprogramiraju u različite komponente download-ovanjem različitih konfiguracija podataka u čip. Prema tome, rekonfiguracijom mogu da se koriguju greške u projektu i nakon implementacije. Naime, delovi čipa koji su fizički otkazali mogu da se izbegnu učitavanjem nove konfiguracije koja ne koristi takve delove. Ključna komponenta u rekonfigurabilnoj komponenti je memorijska ćelija, jer je u njoj sačuvana konfiguracija kola. Učitavanjem nove konfiguracije u memorijsku ćeliju, funkcija sistema može da se promeni [Mitr04], [YuSh01].

Za rekonfigurabilna kola su razvijene mnoge tehnike koje koriste njihovu mogućnost rekonfiguracije kako bi ih učinile pogodnijim za pouzdane sisteme. FPGA proizvođači ugrađuju nove karakteristike u ova kola, koje ih čine imunim na tranzijentne greške, ili SEU, i ujedno smanjuju vreme potrebno za rekonfiguraciju. Istraživači su razvili različite tehnike za oporavak sistema, zasnovanih na FPGA kolima, od permanentnih grešaka. Međutim, tehnologije izrade i nove arhitekture u velikoj meri su poboljšale performanse i mogućnosti FPGA-ova. Ova poboljšanja biće detaljnije opisana.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

94

FPGA kola zasnovana na SRAM-ovima osetljivija su na SEU zato što SEU može da promeni logičku funkciju implementiranu na FPGA. Međutim, nova osobina konfiguracije učitava podatke u FPGA i pomaže u rešavanju ovakvih problema. Na primer, kontroler automatski čita FPGA konfiguraciju i poredi je sa originalnom konfiguracijom koja je u flash memoriji. U slučaju detekcije greške, originalna informacija se učitava u FPGA. Drugi primer je da se FPGA konfiguracija pročita iz tri FPGA-a, a konfiguracija, koja se dobija kao rezultat glasanja, upisuje se u FPGA. Da bi se smanjilo vreme rekonfiguracije, tehnika parcijalne rekonfiguracije omogućava rekonfiguraciju samo jednog dela FPGA umesto celog čipa. Međutim, novi tipovi FPGA mogu da budu rekonfigurisani bez uticaja na rad sistema na čipu. Kada se SEU pojavi i greška detektuje u FPGA konfiguraciji, nije neophodno zaustaviti rad sistema jer se korektna konfiguracija vrlo brzo download-uje u defektni (oštećen) deo FPGA-a [YuSh01], [Trim93].

Mnogi istraživači su koristili dostupne tehnike rekonfiguracije da bi obezbedili pouzdan rad u FPGA baziranim sistemima. Jedan od pristupa je generisanje nove konfiguracije nakon detekcije permanentnih defekata u sistemu.

Postojanje CAD alata i algoritama za brzo re-routing i re-mapping FPGA uslovilo je pojavu drugog pristupa. Osobina ovog pristupa je da se generiše i unapred kompajlira alternativna FPGA konfiguracija koja se mapira (bit maps) i čuva u nepromenljivoj memoriji. U slučaju pojave permanentnog defekta u postojećoj FPGA konfiguraciji, usled re-routing i re-mapping, nova konfiguracija može da se izabere bez kašnjenja.

Korišćenjem prethodno pomenutih šema za oporavak, nakon detekcije permanentnih defekata, FPGA se može vraćati u korektan način rada sve dok, za rutiranje na čipu, postoji dovoljno elemenata bez defekata koji omogućavaju da se izbegnu elementi sa defektima. Šeme za oporavak od permanentnih defekata mogu da se kombinuju sa tehnikama za obnavljanje od tranzijrntnih grešaka kako bi se uspešno obnovio projekat zasnovan na FPGA. Ovakve šeme za oporavak (vraćanje sistema u ispravno stanje) korišćene su u različitim računarskim arhitekturama da bi se obezbedila pouzdanost. Kao primer ovakvih arhitektura možemo pomenuti Dual-FPGA arhitekturu koja koristi samo rekonfigurabilni hardver i memorijske komponente. Kontroleri za oporavak su ugrađeni u svaki FPGA kako bi izvršili zadatke rekonfiguracije. Zbog korišćenja rekonfigurabilnog hardvera, u cilju vraćanja ovakvih arhitektura u ispravno stanje ne postoji potreba za zamenom komponenti sa defektom [YuSh01].

U skorije vreme, zbog brzog razvoja tehnološkog procesa, postaje sve značajnije izračunavanje potrošnje u rekonfigurabilnim sistemima. Na tržištu postoje FPGA kola koja sadrže do 10 miliona gejtova po čipu i čija je brzina rada nekoliko stotina MHz. Zbog velikih mogućnosti, dobrih performansi i nižih cena za implementaciju, FPGA kola se sve više koriste u komercijalnim aplikacijama, kao što su procesi emulacije, komunikacije, optičke mreže, obrada slike. Mnoge kompanije su projektovale procesorska jezgra opšte namene za FPGA implementaciju. Takođe se FPGA kola koriste i u kritičnim aplikacijama kao što su elektronske komponente u kamerama u svemiru [YuSh01].

Zaključak je da su FPGA komercijalno dostupna kola, i da mogu obezbediti valiku kapacitivnost, dobre performanse i brzo vraćanje sistema u normalan rad nakon detektovanja permanentnih defekata. Prema tome, FPGA kola se mogu koristiti kao alternativno rešenje u visoko pouzdanim sistemima.

Naš cilj je, upravo projektovanje sistema na FPGA ili CPLD strukturi, uz obezbeđivanje visoke pouzdanosti (fault tolerance) i očuvanje potrebnih performansi sistema. Jasno je da se većina pomenutih tehnika oslanja na mogućnost detekcije greške i podrazumeva postojanje

5. Implementacija mreža sa samoproverom

95

ugrađenih kola za konkurentu detekciju grešaka. Za razliku od drugih, rekonfigurabilni sistemi mogu da imaju grešku u konfiguracionom kolu, odnosno u memorijskim ćelijama. Pošto je konfiguracija promenjena, greške koje se javljaju su permanentne i mogu se detektovati CED šemama.

5.4. Projektovaje kola sa samoproverom pomoću PLD-a

U Poglavlju 4 detaljno je opisana metoda za generisanje mreža sa samoproverom koja se zasniva na dodavanju kola za konkurentnu detekciju greške u VHDL kôd prvobitno zadate mreže. Ovakav pristup modifikacije mreže na nivou VHDL koda, pre procesa sinteze, ima niz prednosti u odnosu na modifikaciju mreže na nivou gejta. Pre svega pruža mogućnost da kolo za detekciju greške bude optimizovano zajedno sa prvobitno zadatom funkcionalnom mrežom. Takođe, alat za sintezu uzima u obzir i kolo za detekciju greške u slučaju kada treba da zadovolji vremenska i druga ograničenja. Na ovaj način se rešava i problem ponavljanja procesa sinteze, jer se tako zadata ograničenja ne mogu narušiti.

Pristup dodavanja strukture za konkurentnu detekciju greške na nivou VHDL koda može lako i jednostavno da se inkorporira u standardni tok projekta pomoću PLD kola. To znači da se mora modifikovati algoritam sa slike 5.5, koji predstavlja tok projektovanja prvobitno zadate mreže. Najpre se, pre procesa sinteze, u VHDL opis, dodaje kolo za konkurentnu detekciju greške. Struktura ovog kola zavisi od tehnike koja će se koristiti za konkurentnu detekciju greške. Projektant može izabrati bilo koju od prethodno opisanih tehnika kao što su: dupliciranje, primena Berger-ovog, Bose-Lin-ovog ili koda parnosti.

Izbor određene tehnike za konkurentnu detekciju greške zavisi od toga kolika je cena primene izabrane tehnike. Drugim rečima, opravdanost primene određene tehnike zavisi od toga u kojoj meri su zadovoljeni postavljeni zahtevi. Najčešći kriterijumi za određivanje cene izabrane tehnike su [Moha02]:

1) Napor koji treba uložiti da se u postojeći projekat doda kolo za konkurentnu detekciju greške i da se verifikuje da li je ispunjen uslov pokrivanja defekata (fault coverage).

2) Iznos povećanja površine, kašnjenja i potrošnje kola sa dodatnom strukturom za konkurentnu detekciju greške.

Prvi uslov zavisi od automatizovanosti predložene metode, koja je opisana u Poglavlju 4. Takođe zavisi i od primenjene tehnike zato što jedino duplikacija garantuje 100% pokrivanje defekata, dok sve ostale tehnike garantuju pokrivenost samo za usvojeni model defekata. Sa druge strane, tehnika parnosti je najjednostavnija i unosi najmanje kašnjenje, ali zato često ispoljava nizak nivo pokrivenosti defekata. Međutim, ne postoji tehnika koja u svim slučajevima daje najbolje rešenje, tako da se optimalan izbor može izvršiti tek nakon implementacije i evaluacije svih raspoloživih tehnika.

Metoda koja je predložena u ovoj tezi ocenjuje se na osnovu prosečnog povećanja površine i kašnjenja kola sa samoproverom u odnosu na prvobitno zadato kolo. To znači da se, nakon izbora tehnike za konkurentnu detekciju greške, vrši sinteza dobijenog kola sa samoproverom. Na osnovu rezultata sinteze može se odrediti povećanje površine i kašnjenja, odnosno smanjenje brzine rada.

Površina sintetizovanog kola jednaka je zbiru površine prvobitno zadatog kola, površine kola za detekciju greške i površine kola za proveru. Povećanje površine zavisi od strukture kola za detekciju greške i kola za proveru, odnosno zavisi od primenjenog kôda za detekciju greške. Ako postoji neki unapred zadat uslov koji mora da se zadovolji, onda se dobijena

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

96

vrednost poredi sa zadatom vrednošću za povećanje površine i kašnjenja. U slučaju da uslov nije ispunjen i da određena cena nije zadovoljena, neophodno je izabrati novu tehniku za konkurentnu detekciju greške i ponoviti ceo postupak. Tek kada je uslov ispunjen vrši se implementacija i vremenska simulcija kola sa samoproverom. Sve opisane faze za projektovanje kola sa samoproverom mogu se predstaviti algoritmom sa slike 5.6. S obzirom da se ovaj algoritam dobija modifikacijom algoritma sa slike 5.5, možemo reći da je predložena metodologija inkorporirana u standardni tok projektovanja.

Slika 5.6. Proces projektovanja kola sa samoproverom

Kao što se vidi sa slike 5.6, cilj predložene procedure je izabor one tehnike za konkurentnu detekciju greške koja bi omogućila da se generiše kolo sa samoproverom koje zadovoljava zadata ograničenja u smislu povećanja površine i kašnjenja. Drugim rečima, cena generisanog kola mora da zadovolji zadata ograničenja. Ova cena, sa kojom bi se vršilo poređenje, može da se odredi tako što se na veći skup digitalnih kola primeni svaka od predloženih tehnika i onda se na osnovu dobijenih cena odredi njena srednja vrednost.

Tek nakon izbora metode koja zadovoljava datu cenu može da se vrši implementacija kola sa samoproverom na CPLD ili FPGA strukturu.

5. Implementacija mreža sa samoproverom

97

5.5. Merila kvaliteta kod PLD kola

Sinteza visokog nivoa generiše strukturni dizajn koji implementira dati opis kola zadovoljavajući pri tome projektantska ograničenja koja se odnose na površinu, performanse, potrošnju energije, pakovanje, testiranje i drugo. U procesu sinteze merila o kvalitetu su neohodna iz dva razloga. Kao prvo, neophodne su tačne mere na osnovu kojih se određuje kvalitet konačnog sintetizovanog kola. Merilo o kvalitetu konačnog dizajna omogućava komparaciju sa aspekta postavljenih ograničenja, a zatim i identifikaciju kritičnih tačaka u metodologiji projektovanja, CAD sredstvima ili strukturi upravaljanja. Sa druge strane, dobre procene kvaliteta dizajna su neophodne da bi se izabrala odgovarajuća sredstva za sintezu kao i odgovarajući stil projektovanja, kako ciljne arhitekture tako i drugih arhitekturnih osobina.

Obično postoje tri glavne mere koje se koriste za donošenje odluka o kavlitetu dizajna: površina, performanse, i potrošnja. Površina se odnosi na fizički obim dizajna. Performansne mere se odnose na vreme propagacije signala kroz dizajn kao i ukupno vreme izvršenja. Mere u potrošnji se odnose na disipaciju snage dizajna i ukazuju na “vruće tačke” implementacije. Pored navedenih, postoje i druge mere koje se koriste za procenu kvaliteta dizajna, a one se odnose na sposobnosti za verifikaciju, testiranje, pouzdanost, i izvodljivost fabrikacije. S obzirom da projektantske odluke zavise od ovih mera, njihova tačnost i pouzdanost su ključne za generisanje kvalitetnih rešenja [Gajs92].

5.5.1. Površina kao mera kvaliteta

Korišćenje površine kao mere za procenu kvaliteta podrazumeva podelu fizičkog dizajna na površinu koju zauzimaju aktivne jedinice i površinu koja je neophodna za spregu aktivnih jedinica. Aktivne jedinice čine funkcionalne jedinice kao što su ALU, sabirači i množači, i memorijske jedinice, kakvi su registri, registarska polja, ROM, RAM i td. Za spregu aktivnih jedinica koriste se magistrale, veze i multiplekseri.

Za merenje površine aktivne jedinice do sada su korišćene različite metode. Jedna od njih koristi broj AND, OR, NOT operatora u Boolean-ovim izrazima pomoću kojih se opisuje funkcionalna jedinica. Druga mera aproksimira površinu aktivne jedinice kao zbir površina ćelija pri čemu svaka ćelija implementira po jedan simbol u šematskom dijagramu. Površina ćelije se dobija na osnovu bibliotečkog kataloga koga daje proizvodjač. Površina se takođe može aproksimirati pomoću vrednosti koja se dobija množenjem broja tranzistora i koeficijenta gustine tranzistora (izražen u µm2/tranzistoru, a dobijen usrednjavanjem layout površine po tranzitoru za sve dostupne ćelije u biblioteci, ili usrednjavanjem u odnosu na neki jednostavan dizajn).

U odnosu na površinu sprege, najveći broj metrika pretpostavlja da je veličina layout-a ove površine direktno proporcionalna broju i veličini sprežnih jednica. Saglasno tome, broj multipleksera ili broj ekvivalentnih multipleksera tipa 2-u-1 je standardna mera za procenu površine za spregu koja se koristi kod algoritama za alokaciju staze podataka (datapath-a). Na sličan način broj multiplekserskih ulaza i broj veza se standardno koristi za određivanje mere o površini neophodnoj za razvođenje veza i magistrala [Gajs92].

5.5.2. Procena performansi

Performanse digitalnog sistema najčešće se karakterišu merama kakve su taktna frekvencija, broj instrukcija ili broj operacija tipa sabiranje/množenje koje sistem može da izvrši u jedinici vremena tj. sekundi. Nabrojane individualne mere ne karakterišu u potpunosti

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

98

stvarne performanse sistema koje se odnose na sveukupan zadatak koji sistem treba da obavi. Umesto toga, performanse sistema uobičajeno se mere ukupnim vremenom koje je potrebno za izvršenje svih zahtevanih aktivnosti. S obzirom da algoritam rada sistema može da sadrži petlje (loop) koje nemaju fiksne granice, kao i "if" iskaze kod kojih "then" i "else" grane zahtevaju različita vremena za izvršenje, ukupno vreme izvršenja zavisiće od konkretnih vrednosti ulaznih podataka. Zbog toga je vreme izvršenja jednako proizvodu broja upravaljačkih koraka koji je potreban da se izvrši algoritam i trajanju upravljačkog koraka (obično izraženo u taktnim periodama). Pored minimizacije taktnog perioda, performanse se mogu poboljšati i minimiziranjem broja upravljačkih koraka na kritičnom putu izračunavanja, kao i korišćenjem većeg broja resursa i paralelnog izvršenja uvek kada je to moguće [Gajs92].

Za dobijanje modela kašnjenja kombinacionih i sekvencijalnih kola najčešće se koristi električni model kašnjenja. Za izračunavanje kašnjenja obično se koristi RC model sa raspodeljenim parametrima, nazvan Elmore-ov model kašnjenja. Kod RC modela sa raspodeljenim parametrima, propagaciono kašnjenje na putu od početne do krajnje tačke, (tp(start,end)), izračunava se kao proizvod svih raspodeljenih otportnosti, Rj, i kapacitivnosti, Ck, na putu, tj. kao

( ) ∑∑ ×=k

kj

jp CRendstartt ,

Prethodnu jednačinu možemo koristiti za dobijanje kašnjenja veze između dve komponente, kao što je prikazano na slici 5.7(a). U CMOS tehnologiji, komponenta se modelira pomoću njene ulazne kapacitivnosti (Cin) i njene izlazne otpornosti (Rout), kako je to prikazano na slici 7(b). Za veze koje, u obliku tanke žice metala fiksne debljine, ostvaruju povezivanje komponenata, koristimo dobro poznati π-model kod koga je ulazna kapacitivnost (CV/2), otpornost veze (RV), i izlazna kapacitivnost (CV/2).

(a)

(b)

Slika 5.7. Ožičavanje: (a) RT model; (b) ekvivalentni RC model kašnjenja

5.5.3. Mere kvaliteta kod CPLD kola

Kao merila za procenu kvaliteta implementiranog dizajna kod CPLD struktura najčešće se koriste površina i performanse. Zahvaljujući strukturi sprežne mreže, koja obezbeđuje potpunu povezanost makroćelija, tajming se može precizno predvideti pre nego što je sistem realizovan, što predstavlja veoma bitnu prednost CPLD kola u odnosu na FPGA kola. Na slici 5.8, primera radi, prikazan je model kašnjenja CPLD kola XC7318 familije koji se koristi u razvojnim softverima za kreiranje izveštaja o tajmingu.

5. Implementacija mreža sa samoproverom

99

Slika 5.8. Model kašnjenja CPLD kola XC7318 familije

Model sa slike 5.8 definiše kašnjenje svakog internog hardverskog elementa u makroćeliji, sprežnoj mreži i U/I baferima CPLD kola. U zavisnosti od načina na koji je CPLD kolo programirano, ulazni signal prolazi kroz različite hardverske elamente, a sabiranjem njihovih kašnjenja dobija se ukupno propagaciono kašnjenje signala kroz CPLD kolo. Softverski alati kreiraju izveštaj o tajmingu nakon mapiranja projekta na specificirano CPLD kolo. Detaljne definicije svih vremenskih parametara, prikazanih na slici 5.8, kao i njihove tačne vrednosti mogu se naći u odgovarajućim katalozima [XiliDS], [AlteDS].

5.5.4. Mere kvaliteta FPGA kola

Kod FPGA struktura, kao i kod CPLD, kao merila za procenu kvaliteta implementiranog dizajna najčešće se koriste površina i performanse.

Površina i performanse dizajna implementiranog u FPGA tehnologiji u najvećoj meri zavise od strukture i karakteristika logičkih blokova raspoloživih u konkretnom FPGA kolu. Logički blokovi savremenih, komercijalnih FPGA kola značajno se međusobno razlikuju po veličini i implementacionoj moći. Naime, postoje dvo-tranzistorski logički blokovi veoma malih dimenzija koji mogu da realizuje samo jedan invertor, ali takođe postoje i znatno složeniji logički blokovi koji sadrže tri LUT tabele i mogu da realizuje bilo koju funkciju od pet promeljivih. Već je pomenuto da, na osnovu strukture logičkih blokova, sve savremene FPGA arhitekture mogu imati finu ili grubu granularnost.

Gustina pakovanja logičkih blokova i performanse FPGA kola u najvećoj meri zavise od granularnosti logičkih blokova. Sa povećanjem granularnosti smanjuje se broj potrebnih blokova za implementaciju projektovanog kola. Sa druge strane, višefunkcionalni logički blokovi (grublje granularnosti) zahtevaju više kola za implementaciju pa, prema tome, zauzimaju i veću površinu. Drugim rečima, sa povećanjem “finoće” FPGA arhitekture, logički blokovi postaju jednostavniji a sprežna mreža zauzima proporcijalno sve veći deo ukupne površine čipa, pa zbog toga, rad kola postaje sporiji. Osnovni problem predstavlja nalaženje "optimalne" granularnosti logičkog bloka. Optimalna granularnost se standardno procenjuje kada se izvrši FPGA imlementacija skupa benchmark kola. Dobijeni rezultati odnose se na broj logičkih ćelija, tj. aktivnu površinu, ali i na veze koje postoje između logičkih blokova.

Na osnovu prethodnog može se zaključiti da je ukupna površina FPGA čipa jednaka zbiru površine logičkih blokova i površine sprežne mreže. Linije za povezivanje zauzimaju čak 70 do 90% ukupne površine čipa. Kao mera za procenu FPGA površine može da se koristi broj memorijskih bitova potrebnih za implementaciju logičke funkcije korišćenjem LUT tabela sa

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

100

različitim brojem ulaza, k. Eksperimentalni rezultati su pokazali da se sa povećanjem broja ulaza u LUT povećava i površina logičkog bloka, a smanjuje se broj logičkih blokova potrebnih za implementaciju. Sa druge strane, sa povećanjem broja ulaza u LUT povećava se i površina koju zauzimaju linije za povezivanje. Eksperimentalni rezultati su, takođe, pokazali da će se dobiti minimalna površina logičkog bloka ako se koriste LUT tabele sa 4=k ulaza. Ovi rezultati su iskorišćeni u alatima za logičku sintezu [Rose93].

Granularnost logičkih blokova i tehnologija programiranja su u bliskoj vezi. Sprežne mreže realizovane na bazi antifuse tehnologije poseduju veću gustinu (broj programabilnih veza po jednici površine) i manje propagaciono kašnjenje od sprežnih mreža kod kojih se koristi EPROM ili SRAM tehnologija programiranja. Zbog toga kod FPGA arhitektura fine granularnosti, po pravilu se koristi antifuse tehnologija programiranja. Međutim, rekonfigurabilnost kao veoma poželjna karakteristika FPGA arhitekture, ne može se ostvariti pomoću antifuse tehnogije. Da bi smanjena gustina i povećano propagaciono kašnjenje sprežnih mreža realizovnih na bazi EPROM ili SRAM tehnologije programiranja mogli da se tolerišu, logički blokovi trebaju biti složeniji. Zbog toga rekonfigurabilne FPGA arhitekture koriste logičke blokove grube granularnosti [Rose93].

Kao što je već pomenuto, granularnost logičkog bloka ima veliki uticaj i na performanse FPGA kola. Eksperimentalni rezultati, zasnovani na implementaciji određene funkcije pomoću NAND gejtova sa dva ulaza ili LUT tabela sa tri i više ulaza, pokazali su da se sa povećanjem granularnosti smanjuje ukupno kašnjenje implementiranog kola. Takođe je pokazano da se sa povećanjem broja ulaza u LUT tabelu smanjuje broj logičkih nivoa, ali se povećava kašnjenje kroz logički blok i kroz sprežnu mrežu. Uz određeni kompromis koji se ogleda u smanjenju broja logičkih nivoa i povećanju kašnjenja kroz logički blok i sprežnu mrežu (što se obično izvodi povećanjem broja ulaza u LUT), dobija se granularnost koja odgovara "optimalnim" FPGA performansama [Rose93].

S obzirom na složenu arhitekturu, precizna procena performansi dizajna koji se realizuje u FPGA predstavlja daleko teži zadatak nego kod CPLD kola. Performanse su određene zbirom kašnjenja kroz logičke blokove i veze na kritičnoj putanji. Logički blokovi se mogu opisati jednostavnim modelom kašnjenja, međutim, pre izvršenog mapiranja, teško je proceniti broj logičkih blokova na kritičnoj putanji dizajna. Kod savremenih FPGA kola, kašnjenje na vezama čini više od 50% ukupnog propagacionog kašnjanja. Kašnjenje signala kroz FPGA sprežnu mrežu određeno je ne samo dužinom veze već i fizičkom lokacijom veze i brojem programabilnih prekidača pomoću kojih je veza formirana (nalaze se na putu prostiranja signala). Programabilni prekidač poseduje značajnu otpornost i parazitnu kapacitivnost i u električnom smislu ponaša se kao RC elemenat. Za fiksno R i C, kašnjenje signala je srazmerno kvadratu broja serijski vezanih RC elemenata. Ako je srednji broj programabilnih prekidača po ostvarenoj vezi veliki, tada će rezultujuće kolo biti sporo. S obzirom da se različite veze formiraju od različitog broja žičanih segmenata, varijacije u kašenjenju signala mogu biti značajane. Da bi se ostvario zadati tajming kola, neophodo je imati precizne informacije o očekivanom internom kašnjenju signala još u fazi projektovanja sistema. Ova informacija je zasnovana na procenjenom prosečnom kašnjenju kroz sprežnu mrežu. Ukoliko su varijacije u kašnjenju ostvarenih veza značajne, predikcija će biti neprecizna. Da bi se smanjila prosečna dužina ostvarenih veza, kod većeg broja sprežnih mreža komercijlnih arhitektura postoje žičani segmenti različitih dužina. Nemogućnost precizne procene kašnjenja je jedan od najvažnijih problema prilikom projektovanja pomoću FPGA [Rose93]. Alati za projektovanje ([XiliFou], [XiliWP], [MAX+P]) obično omogućavaju da projektanti sami zadaju ove parametre, kao ograničenja, još u početnoj fazi projektovanja.

5. Implementacija mreža sa samoproverom

101

5.5.5. Merila kvaliteta koje mi koristimo

Predložena metoda za projektovanje kola sa samoproverom podrazumeva izbor najbolje tehnike za konkurentnu detekciju greške. Za takav izbor neophodno je, na osnovu nekog kriterijuma, uporediti primenjene tehnike. Kao merila kvaliteta primenjene tehnike koristićemo površinu i performanse. S obzirom da implementaciju kola sa samoproverom vršimo na određenu CPLD ili FPGA familiju neophodno je odrediti površinu i performanse pri svakoj implementaciji. Kod CPLD tehnologije površina se određuje na osnovu broja zauzetih makroćelija, a kod FPGA tehnologije određuje se na osnovu broja zauzetih logičkih blokova (ili slajsova (slice), u terminologiji firme Xilinx). Performanse se odnose na:

(a) Maksimalno kašnjenje od pina-do-pina (pad-to-pad - tPD) - vremenu prostiranja signala kroz kolo koje uključuje kašnjenje od ulaznog pina, preko unutrašnje kombinacione logike do izlaznog pina. Ova mera se koristi za karakterizaciju performansi kombinacionih kola.

(b) Maksimalno kašnjenje od registra-do-registra (registar-to-register - tC) - vreme prostiranja signala između unutrašnjih filip-flopova, tj. od ulaza za takt flip-flopa, preko flip-flopa, dalje kroz kombinacionu logiku do ulaza za podatak narednog flip-flopa. Ovo kašnjenje određuje maksimalnu taktnu frekvenciju kola i koristi se za karakterizaciju performansi sekvencijalnih kola.

5.6. Implementacija kola sa samoproverom na CPLD i FPGA tehnologije

Za projektovanje kola sa samoproverom na osnovu algoritma sa slike 5.6, nezavisno od primenjene tehnike za detekciju greške, možemo koristiti mnoge komercijalne alate. Naš izbor su alati Active HDL V. 3.5 (za unos dizajna i simulaciju) i Xilinx ISE 4.2 (za sintezu, translaciju i programiranje PLD kola). Za implementaciju ćemo koristiti CPLD i FPGA tehnologije, i to XCR3384XL komponentu iz CoolRunner XPLA3CPLD familije i XC2S100 komponentu iz FPGA Spartan2 familije.

Modifikacija VHDL opisa, sinteza i implementacija vršena je nad sledećim skupom od 24 proizvoljno izabranih kola različite složenosti:

1) C1: 4-bitni komparator amplitude zasnovan na SN7485; 2) C2: 8-bitni komparator amplitude zasnovan na SN7485; 3) C3: dekoder ASCII-u-sedmosegmentni; 4) C4: dekoder ASCII-u-BCD; 5) C5: 4-bitni množač; 6) C6: 8-bitni množač; 7) C7: 18 segmentni alfanumerički displej HDSP-6300; 8) C8: 8-bitni sabirač sa rednim prenosom (ripple-carry adder); 9) C9: 16-bitni sabirač sa rednim prenosom (ripple-carry adder); 10) C10: 8-bitni sabirač sa ubrzanim prenosom (carry look-ahead adder); 11) C11: 16-bitni sabirač sa ubrzanim prenosom (carry look-ahead adder); 12) C12: 32-bitni funnel pomerač; 13) C13: 6-bitni binarni-u-BCD konvertor; 14) C14: 8-bitni binarni-u-BCD konvertor; 15) C15: 12-bitni binarni-u-BCD konvertor; 16) C16: prioritetni koder osam-u-tri; 17) C17: prioritetni koder šesnaest-u-četiri;

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

102

18) C18: 3-linijski-u-8-linijski dekoder/demultiplekser; 19) C19: benchmark b01 automat; 20) C20: benchmark b02 automat; 21) C21: BlackJack automat; 22) C22: CPU kontroler; 23) C23: Test Access Port - TAP kontroler; 24) C24: upravljačka jedinica protočnog procesora.

Postojeći VHDL opisi prethodno navedenih kola modifikuju se tako što se, u zavisnosti od tehnike koja se primenjuje, dodaju opisi svih elemenata potrebnih za generisanje kola sa samoproverom. VHDL opisi svih potrebnih elemenata, kao što su generatori kodova i kola za proveru, nalaze se u posebnom paketu koji je dat u Dodatku C. Pored toga, u Dodatku C se nalazi i kompletan VHDL kôd za generisanje kola sa samoproverom primenom tehnike parnosti na prvoditno zadat opis kombinacionog kola - 4-bitni množač i sekvencijalnog kola - b01 FSM.

Usled primene različitih tehnika za detekciju greške, modifikovana kola će zauzimati različite površine i imati različite brzine.

Procenat povećanja površine kola izračunava se na osnovu sledeće formule

100.

....% ×−

=kolazadatogpovrš

kolazadatogpovršomsamoproversakolapovršpovršpoveć

gde se površine prvobitno zadatog i kola sa samoproverom, u zavisnosti od primene CPLD ili FPGA tehnologije, određuju na sledeći način

=slicesofnumbermacrocellsofnumber

kolapovršina

Procenat smanjenja brzine rada kola izračunava se na osnovu formule

100.

...% ×−

=omsamoproversakolabrz

omsamoproversakolabrzkolazadatogbrzbrzinesmanj

gde se brzine rada prvobitno zadatog i kola sa samoproverom izračunavaju na sledeći način

kolazadatogkašnjenjekolazadatogbrz 1. =

omsamoproversakolakašnjenjeomsamoproversakolabrz 1. =

Na osnovu prethodnih formula vidimo da je za određivanje cene izabrane metode neophodno znati broj zauzetih makroćelija (za CPLD), broj zauzetih slices-ova (za FPGA tehnologiju), i kašnjenje koje odgovara maksimalnom pad-to-pad (tPD) vremenu prostiranja signala kroz kolo. Ove vrednosti su sadržane u tekstualnim izveštajima (reports) alata koji koristimo za sintezu i implementaciju. Pored tekstualnih postoje i grafički izveštaji kao što je osnovni izgled kola (Floor Planer). Na slikama 5.9 - 5.14 prikazani su reprezentativni primeri tekstualnih i grfičkih izveštaja korišćenih alata za sintezu i implementaciju za CPLD i FPGA tehnologiju, respektivno.

5. Implementacija mreža sa samoproverom

103

Slika 5.9. Primer tekstualnog izveštaja o broju zauzetih makroćelija za CPLD tehnologiju Xilinx

ISE 4.2 alata za sintezu

a1)

a2)

Slika 5.10. Primer tekstualnog izveštaja o vremenu prostiranja signala za: a1) kombinaciono i a2) sekvencijalno kolo za CPLD tehnologiju Xilinx ISE 4.2 alata za sintezu

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

104

Slika 5.11. Primer grfičkog izveštaja o osnovnom izgledu kola za CPLD tehnologiju Xilinx ISE

4.2 alata za sintezu

Slika 5.12. Primer tekstualnog izveštaja o broju zauzetih slices-ova za FPGA tehnologiju Xilinx

ISE 4.2 alata za sintezu

Slika 5.13. Primer tekstualnog izveštaja o vremenu prostiranja signala za: a1) kombinaciono i

a2) sekvencijalno kolo za FPGA tehnologiju Xilinx ISE 4.2 alata za sintezu

5. Implementacija mreža sa samoproverom

105

Slika 5.14. Primer grfičkog izveštaja o osnovnom izgledu kola za FPGA tehnologiju Xilinx ISE

4.2 alata za sintezu

U Tabelama I i II prikazani su rezultati dobijeni nakon implementacije svakog od izabranih kola na FPGA i CPLD tehnologiju, respektivno. U posebnim kolonama date su vrednosti za površinu i kašnjenje svih prvobitno zadatih kao i modifikovanih kola, koja se dobijaju primenom izabrane tehnike za konkurentnu detekciju greške na zadato kolo. Za FPGA tehnologiju površina kola je data u obliku broja zauzetih slajsova (#slices), a za CPLD tehnologiju u obliku broja zauzetih makroćelija (#macrocell). Brzina rada kola data je u obliku maksimalnog kašnjenja signala od ulaznih do izlaznih pinova (max.dly (ns)).

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

106

Tabela I Implementacija kola na FPGA XC2S100 komponentu iz Spartan2 familije Kolo zadato duplik. Berger Bose-Lin parnost par.gr. 2 par.gr. 4

#slices 3 9 6 6 4 6 4 C 1 max.dly (ns) 11.3 14.7 13.5 13.5 11.4 12.5 11.4

#slices 3 8 9 9 7 9 7 C 2 max.dly (ns) 11.6 15.4 15.6 15.6 13.1 16 13.1

#slices 9 23 24 19 12 18 14 C 3 max.dly (ns) 15.4 22.1 22.8 20.1 16.8 19.9 18.4

#slices 6 18 21 14 7 16 11 C 4 max.dly (ns) 11.7 20.2 20.3 17.6 14.6 17.2 15.7

#slices 14 38 78 53 32 33 40 C 5 max.dly (ns) 16.7 21.8 28.2 25.3 20.4 22.2 20.5

#slices 64 144 201 201 143 146 144 C 6 max.dly (ns) 32.3 42.1 47 48.8 39.7 42.6 38.3

#slices 66 179 137 136 165 124 107 C 7 max.dly (ns) 22.2 43.7 44.4 41.9 27.8 34.6 31.3

#slices 12 26 55 49 21 25 23 C 8 max.dly (ns) 19.2 28.5 31.5 31.1 23.4 24 26.1

#slices 24 52 103 104 40 55 47 C 9 max.dly (ns) 34.1 55.8 48.9 50.7 41.3 39.5 42.3

#slices 21 47 76 67 42 42 43 C 10 max.dly (ns) 19.2 27.9 33.4 33.8 23.6 22.9 28.5

#slices 44 95 142 137 83 90 86 C 11 max.dly (ns) 22.4 44 39.2 42.3 29.9 34.6 34.9

#slices 80 198 224 222 94 121 102 C 12 max.dly (ns) 22.5 58.0 42.9 43.2 26.3 49.2 33.3

#slices 6 19 27 17 9 18 13 C 13 max.dly (ns) 11.5 18.3 21.6 18.3 13.3 16 14.5

#slices 14 37 72 57 30 35 32 C 14 max.dly (ns) 15.5 25.9 32.6 31.6 17.8 22.6 20.1

#slices 40 96 143 128 87 93 88 C 15 max.dly (ns) 22.3 38.5 45.3 40.5 28.1 33.3 31.1

#slices 5 12 12 11 6 8 6 C 16 max.dly (ns) 11.4 16.9 17.2 15.5 13.3 13.7 13.3

#slices 13 28 30 22 16 18 17 C 17 max.dly (ns) 14.6 23.5 20.8 18.9 16.5 17.7 17.5

#slices 5 17 24 21 10 13 7 C 18 max.dly (ns) 12.1 19.1 26.2 22.7 14.9 17 15.3

#slices 7 22 17 17 19 10 19 C 19 max.dly (ns) 13.5 20.4 19.2 19.2 19.5 18.3 19.5

#slices 4 12 8 8 11 11 11 C 20 max.dly (ns) 7.6 18.6 17.4 17.4 17.0 17.0 17.0

#slices 16 52 69 60 50 46 41 C 21 max.dly (ns) 15.2 25.3 30.5 29.1 25.5 25.0 22.8

#slices 8 26 38 36 20 27 28 C 22 max.dly (ns) 17.3 24.8 25.0 23.0 20.1 20.2 22.4

#slices 9 30 64 55 16 37 9 C 23 max.dly (ns) 15.1 24.8 32.1 29.0 22.4 28.5 14.9

#slices 43 118 70 60 109 49 49 C 24 max.dly (ns) 12.0 18.5 17.8 15.2 18.3 16.2 17.6

povećanje površine (%) 0 170.8 255.9 209.6 97.1 129.4 96.5 P R smanjenje brzine (%) 0 64.1 71.9 62.7 29.0 43.8 33.9

Napomena: #slices - broj slajsova; max.dly (ns) - maksimalno kašnjenje u ns; zadato - prvobitno zadato kolo; duplik. - primena tehnike dupliciranja; Berger - primena Berger-ovog koda; Bose-Lin - primena Bose-Lin-ovog koda; parnost - primena koda parnosti na sve bitove; par.gr.2 - primena koda parnosti na grupu od dva bita; par.gr.4 - primena koda parnosti na četiri bita; PR - prosečna vrednost;

5. Implementacija mreža sa samoproverom

107

Tabela II Implementacija kola na CPLD XCR3384XL komponentu iz CoolRunner

XPLA3CPLD familije Kolo zadato duplik. Berger Bose-Lin parnost par.gr. 2 par.gr. 4

#macrocell 3 7 8 8 5 5 5 C 1 max.dly (ns) 7.5 19.2 24.8 24.8 13.6 13.6 13.6

#macrocell 3 7 5 5 5 6 5 C 2 max.dly (ns) 7.5 13.1 13.6 13.6 13.6 13.6 13.6

#macrocell 9 15 17 14 10 12 10 C 3 max.dly (ns) 13.6 31.9 55.3 38.0 19.7 19.7 19.7

#macrocell 7 10 18 15 11 14 11 C 4 max.dly (ns) 7.5 19.7 55.3 44.1 25.3 25.8 25.8

#macrocell 10 29 56 45 33 37 33 C 5 max.dly (ns) 19.7 38.0 80.2 68.5 56.3 62.4 44.1

#macrocell 79 163 242 237 182 182 175 C 6 max.dly (ns) 86.8 147.8 169.7 169.2 117.3 110.7 123.4

#macrocell 26 57 161 160 94 99 92 C 7 max.dly (ns) 18.7 62.4 103.1 98.0 49.7 50.2 37.5

#macrocell 16 34 55 46 35 34 33 C 8 max.dly (ns) 44.1 92.9 122.9 98.5 86.3 68.5 80.7

#macrocell 36 73 120 123 71 71 69 C 9 max.dly (ns) 99.0 166.1 202.2 172.2 117.3 105.1 135.1

#macrocell 18 32 55 48 37 33 35 C 10 max.dly (ns) 25.8 67.5 86.3 80.2 68.5 55.8 55.8

#macrocell 41 70 117 123 68 69 68 C 11 max.dly (ns) 50.2 68.5 129.0 145.3 68.0 74.6 80.7

#macrocell 64 129 193 191 94 99 86 C 12 max.dly (ns) 19.7 50.2 109.7 104.1 74.1 74.6 38.0

#macrocell 8 19 47 43 12 18 39 C 13 max.dly (ns) 13.6 38.0 50.2 38.0 25.3 31.9 19.7

#macrocell 15 33 63 54 33 37 36 C 14 max.dly (ns) 31.9 74.6 134.6 110.7 80.7 68.5 68.5

#macrocell 48 90 167 145 100 88 101 C 15 max.dly (ns) 68.5 141.7 171.7 165.6 141.7 123.4 141.7

#macrocell 4 6 11 7 6 7 6 C 16 max.dly (ns) 7.5 13.6 19.2 19.7 13.6 19.7 13.6

#macrocell 5 11 21 16 8 17 8 C 17 max.dly (ns) 7.5 25.8 55.8 25.8 19.7 19.2 19.7

#macrocell 8 10 18 14 12 13 12 C 18 max.dly (ns) 7.0 13.1 49.7 31.4 25.3 19.2 19.2

#macrocell 6 14 13 13 10 8 10 C 19 max.dly (ns) 12.6 24.2 29.4 29.4 18.2 16.2 18.2

#macrocell 4 10 6 6 6 6 6 C 20 max.dly (ns) 9.6 17.2 10.6 10.6 10.1 10.1 10.1

#macrocell 12 33 32 33 25 14 20 C 21 max.dly (ns) 10.6 26.6 41.6 41.1 31.8 10.6 22.8

#macrocell 6 17 16 19 12 11 10 C 22 max.dly (ns) 10.6 23.1 41.1 41.1 28.9 19.2 22.8

#macrocell 13 38 35 29 19 14 14 C 23 max.dly (ns) 15.7 25.3 58.4 64.5 40.1 15.7 15.7

#macrocell 38 115 76 65 123 59 59 C 24 max.dly (ns) 18.6 32.8 27.4 22.7 68.8 26.9 26.9

povećanje površine (%) 0 118.1 215.8 186.9 95.4 91.5 96.3 P R smanjenje brzine (%) 0 119.4 268.2 214.5 130.1 98.2 88.2 Napomena: #macrocell - broj makroćelija; važe napomene iz Tabele I.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

108

5.7. Poređenje dobijenih rezultata

Primenom različitih tehnika za konkurentnu detekciju greške na skup od 24 reprezentativnih kombinacionih i sekvencijalnih kola dolazi do povećanja površine i povećanja kašnjenja kola. Ove vrednosti su generisane nakon implementacije kola na FPGA i CPLD tehnologiju i date su u Tabelama I i II. Izračunavanjem srednjih vrednosti dobijenih rezultata za ceo skup kola, mogu se odrediti prosečno povećanje površine i prosečno povećanje kašnjenja, odnosno smanjenje brzine rada. Vrednosti izračunate na ovaj način, prikazane su, takođe, u Tabelama I i II, i ukazuju na cenu koja je neophodna za primenu algoritma za projektovanje kola sa samoproverom prikazanog na slici 5.6.

U skladu sa dobijenim rezultatima predstavljenim u Tabelama I i II možemo izvesti sledeće zaključke:

Duplikacija: Primenom ove tehnike dobija se prosečno povećanje ukupne površine od 170.8% za FPGA, i 118.1% za CPLD kola. Pored toga, dobijeno smanjenje brzine za FPGA kola je 64.1%, a za CPLD kola je 119.4%.

Berger-ov kôd. Prosečno povećanje površine iznosi 255.9.1% za FPGA i 215.8% za CPLD kola, dok smanjenje brzine iznosi 71.9% i 268.2% za FPGA i CPLD kola, respektivno.

Bose-Lin-ov kôd. U proseku, povećanje površine iznosi 209.6% for FPGA, i 186.9% za CPLD kola. Odgovarajuće smanjenje brzine iznosi 62.7% i 214.5% za FPGA i CPLD kola, respektivno.

Kôd parnosti. Razmatrane su dve šeme parnosti: tehnika sa jednim bitom parnosti (parnost) i tehnika sa više bitova parnosti (par.gr. 2 i par.gr. 4) za skup bitova podataka. U oba slučaja se generiše jedan bit parnosti po grupi. Dobija se da je prosečno povećanje površine za FPGA kola 97.1%, 129.4%, i 96.5%, za parnost, par.gr. 2 i par.gr. 4, respektivno, dok je za CPLD kola 95.4%, 91.5%, i 96.3%. Smanjenje brzine rada iznosi 29.0%, 43.8%, i 33.9%, za parnost, par.gr. 2 i par.gr. 4, respektivno, kada se koristi FPGA tehnologija. Odgovarajuće smanjenje brzine za CPLD tehnologiju je 130.1%, 98.2%, i 88.2%.

Na osnovu prethodno iznetih rezultata možemo reći da sve četiri šeme za konkurentnu detekciju greške dovode do znatnog povećanja površine i smanjenja brzine rada. Iz Tabela I i II takođe se može videti da za svako od korišćenih kola, primena različitih CED tehnika dovodi do razlike u procentu povećanja cene. Pored toga, primenom iste tehnike na specificirano kolo dobiće se različita povećanja cene ako se implementacija kola izvrši na različite komponente (familije). Takođe, povećanje cene zavisi i od složenosti prvobitno zadatog kola na koje se primenjuje određena CED tehnika. Naime, struktura i složenost kodera i kola za proveru zavisi od broja bitova na izlazu zadatog kola. Na primer, primena CED tehnike na veoma kompleksno kolo sa malim brojem izlaznih bitova uzrokovaće mnogo maje povećanje površine i kašnjenja u odnosu na kolo manje složenosti, ali sa većim brojem izlaznih bitova. Na osnovu svih ovih zaključaka jasno je da ne možemo sa sigurnošću reći da je, u svakom slučaju, jedna od šema superiorna u odnosu na sve ostale. Zato je najbolje izračunati cenu primene određene tehnike za svaki konkretan slučaj, odnosno za svako zadato kolo. Automatizovanost predložene metode pruža mogućnost da se vrlo brzo i lako dođe do takvih rezultata. Poređenjem dobijenih rezultata, koji ukazuju na procenat povećanja površine i kašnjenja, može se odabrati SC kolo sa najnižom cenom i nakon toga se može pristupiti realizaciji odabranog kola.

5. Implementacija mreža sa samoproverom

109

Ipak, u skladu sa dobijenim prosečnim vrednostima za povećanje površine i smanjenje brzine rada možemo zaključiti da je u najvećem broju slučajeva, i za FPGA i za CPLD tehnologiju, najbolje primeniti tehniku za konkurentnu detekciju greške koja se zasniva na kodu parnosti.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

110

6. Zaključak

111

6. Zaključak

Prezentovana magistarska teza inspirisana je sve većom potrebom za sistemima visoke pouzdanosti. Savremena VLSI kola imaju niz pozitivnih karakteristika među kojima su male dimenzije, velika gustina pakovanja, rad na visokim frekvencijama i nizak napon napajanja. Sa druge strane, svi ovi faktori uslovili su smanjenje margine šuma, što je dovelo do povećanja osetljivosti standardnih aplikacija na pojavu tranzijentnih defekata, koji se manifestuju kratkotrajnim poremećajem u radu kola i najčešći su uzrok otkaza u VLSI kolima/sistemima. Smanjenje stope otkaza može se ostvariti detekcijom greške, uzrokovane tranzijentnim defektom, odmah nakon njenog pojavljivanja.

U ovoj tezi predložena je metoda za projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom korišćenjem različitih tehnika za konkuretnu detekciju greške. U zavisnosti od načina kodiranja podatka koji se proverava korišćene su tehnike dupliciranja, primene Berger-ovog, Bose-Lin-ovog ili koda parnosti. Predložena metoda projektovanja zasnovana je na VHDL opisu kola, a izvršena je dodavanjem strukture za konkurentnu detekciju greške u prethodno projektovano kolo. Svi moduli koji čine strukturu za konkurentnu detekciju greške (koderi, dekoderi i kola za proveru) i koje bi trebalo uključiti u VHDL opis prvobitno zadatog kola, generisani su i sačuvani u posednoj biblioteci. Generički opisi arhitektura tih modula, sa parametarskim brojem ulaza i izlaza, raspoloživi su u posebnom VHDL paketu. Postojećem VHDL opisu kola dodavani su samo oni moduli koji su neophodni za generisanje SC kola korišćenjem odabrane CED tehnike. S obzirom da je ovakav pristup generisanja SC kola poluautomatskim dodavanjem CED strukture potpuno kompatibilan sa svakim okruženjem koje podržava VHDL ulaz, omogućeno je korišćenje raspoloživih komercijalnih alata za sintezu.

Za svaku od predstavljenih CED tehnika, korišćenjem komercijalnih alata, izvršena je najpre sinteza 24 proizvoljno izabranih benchmark kola, a zatim i sinteza, njihovom modifikacijom generisanih SC kola. Površinu sintetizovanog SC kola predstavlja zbir površina prvobitno zadatog kola, kola za detekciju greške i kola za proveru. Povećanje površine zavisi od strukture kola za detekciju greške i kola za proveru, odnosno od primenjenog koda za detekciju greške.

Nakon sinteze, sva kola su implementirana na CPLD i FPGA komponente. Shodno izveštaju korišćenog alata, dobijene su vrednosti koje predstavljaju broj zauzetih makroćelija/slice-ova i vreme kašnjenja signala. Na osnovu dobijenih vrednosti određeno je prosečno povećanje površine i smanjenje brzine rada za svaku od primenjenih tehnika za detekciju greške. Rezultati su pokazali da primena svake od predloženih CED tehnika dovodi do različitog, ali u većini slučajeva znatnog povećanja površine i smanjenja brzine rada što je u saglasnosti sa rezultatima prezentiranim u [Bolc98], [DeK94]. Takođe je pokazano da, u slučaju primene određene CED tehnike, razlike u procentu povećanja površine i smanjenja brzine zavise od složenosti zadatog kola, ali zavise i od komponente na koju se kolo implementira što se slaže sa zaključcima datim u [Bolc00], [JhaN93].

Izbor određene CED tehnike zavisi od toga kolika je cena njene primene. Određene prosečne vrednosti primenjenih CED tehnika mogu se iskoristiti kao kriterijum za izbor. Naravno, treba odabrati onu tehniku koja ima najmanje povećanje površine i najmanje povećanje kašnjenja, odnosno najmanje smanjenje brzine rada. Na osnovu dobijenih rezultata

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

112

zaključeno je da, za najveći broj slučajeva, CED tehnika zasnovana na kodu parnosti predstavlja najbolji izbor, što je u saglasnosti sa rezultatima predstavljenim u [McCl90], [Toub94]. Međutim, ne može se sa sigurnošću izdvojiti tehnika koja će u svim slučajevima dati najbolje rešenje. Zato se optimalan izbor može izvršiti tek nakon implementacije i evaluacije svih raspoloživih tehnika [Stoj104], [Stan204].

Osnovna prednost pristupa predloženog u ovoj tezi i u [Stojčev042], tj. modifikacije VHDL opisa kola na registarskom nivou, sastoji se u lakom i jednostavnom inkorporiranju u standardni tok projektovanja zasnovan na PLD kolima. Ovaj pristup takođe omogućava da, pomoću alata za sintezu, kolo za detekciju greške bude optimizovano zajedno sa prvobitno zadatom funkcionalnom mrežom. Zato se još u fazi projektovanja može proceniti povećanje površine i kašnjenja za svaku od korišćenih CAD tehnika. Nedostatak ovakvog pristupa, u odnosu na modifikaciju kola na nivou gejta, ogleda se u teškoći da se precizno prati struktura implementiranih mehanizama kao i potencijalno povećanje površine i kašnjenja, što je posledica načina sinteze softverskih alata za projektovanje.

Eksperimentalna analiza sprovedena u ovoj tezi pokazala je da implementacija CED tehnika, zasnovanih na kodiranju podatka nekim kodom za detekciju greške, unosi relativno veliko povećanje površine i kašnjenja, ali znatno manje u odnosu na implementaciju TMR tehnike [Stoj00], [Stoj101]. Na žalost, u nekim aplikacijama kakvi su SoC embedded sistemi, i pored zahteva za samoproverom, ovako visoka cena je ipak neprihvatljiva [Vahi02]. Iz tog razloga, jedan od pravaca daljeg rada u oblasti projektovanja SoC i MPSoC embedded sistema usmeren je ka projektovanju kola sa parcijalnom samoproverom. Za raziliku od tradicionalnog pristupa, koji se sreće kod satelitskih sistema, nuklearnih elektrana, bezbednosno kritičnih sistema po ljudski život i okolinu, gde potpuna samoprovera predstavlja imperativ, parcijalna samoprovera, koja egzistira kod proizvoda široke potrošnje, instrumentacije, komunikacionih sistema, omogućava nalaženje kompromisa između povećanja cene i smanjenja mogućnosti detekcije greške. Opšta je tendencija da će u bliskoj budućnosti, do 2007. godine, svaka individua biti okružena u proseku sa pet, a da će u kući biti instalirano oko 50 inteligentnih uređaja tipa embedded sistema. Svi ovi sistemi biće zasnovani na visokim tehnologijama, a osnovni zahtevi koje bi trebalo da ispune su mala potrošnja, visoke performanse, fleksibilnost i pouzdanost u radu. U cilju smanjenja cene i potrošnje ovakvih uređaja, pouzdanost bi se implementirala na nivou parcijalne samoprovere, pa je dalje istraživanje u ovoj oblasti od izuzetne važnosti.

7. Literatura

113

7. Literatura

[AlteDS] Altera Data Sheets, [Online], Dostupno: http://www.altera.com/literature/lit-ds.jsp

[Ambl03] P. Amblard, F. Lagnier, Michel Levy, "Finite State Machines: Composition, Verification, Minimization: A Case Study", 10th International Conference, MIXDES 2003, 26-28 June, pp. 214-219

[Ande73] Anderson D.A., Metze G., "Design of Totally Self-Checking Circuits for m-out-of-n Codes", IEEE Trans. on Computers, Vol. C-22, No. 3, March 1973, pp. 263-269

[AlAs98] Hussain Al-Asaad, Brian T. Murray, John P. Hayes, "Online BIST for Embedded Systems", IEEE Design & Test of Computers, October-December 1998, pp. 17-24

[Beni00] Luca Benini, Alessandro Bogliolo, and Giovanni De Micheli, "A Survey of Design Techniques for System-Level Dynamic Power Management", IEEE Trans. on VLSI Systems, Vol. 8, No. 3, June, 2000, pp. 299-316

[Blee93] Bleeker H., et al, "Boundary-Scan Test: A Practical Approach", Kluwer Academic Publishers, Dordecht, 1993

[Bolc98] Bolchini Cristiana, Salice Fabio, and Sciuto Donatella, "Fault Analysis for Networks with Concurrent Error Detection", IEEE Design & Test of Computers, Vol. 15, No 4, 1998, October-December, pp. 66-74

[Bolc00] C. Bolchini, R. Mantandan, F. Solice, D. Scito, "Design of VHDL-Based Totally Self-Checking Finite-State Machine and Data-Path Description", IEEE Trans. on Very Large Scale Integration (VLSI) Systems, Vol. 8, No. 1, February 2000, pp. 186-195

[Bose85] Bella Bose, and Der Jei Lin, "Systematic Unidirectional Error-Detecting Codes", IEEE Transaction on Computers, Vol. C-34, No. 11, November, 1985, pp 1026-1032

[Bray87] R. Brayton, R. Rudell, A. Sangiovanni-Vincentelli, and A. Wang, MIS: A Multiple-level Logic Optimization System, IEEE Trans. Computer-Aided Design, Nov. 1987, pp. 1062-1081

[Cast82] Castillo X., et al., "Derivation and Calibration of a Transient Error Reliability Model", IEEE Trans. on Computers, Vol. C-31, No. 7, July 1982, pp. 658-671

[Chan92] Anantha P. Chandrakasan, Samuel Sheng, and Robert W. Brodersen, "Low-Power CMOS Digital Design", IEEE Journal of Solid State Circuits, Vol. 27, No. 4, April 1992, pp. 473-483

[Cons03] Cristian Constantinescu, "Trends and Challenges in VLSI Circuit Reliability", IEEE Micro, July-August 2003, pp. 14-19

[DasD99] Debaleena Das and Nur A. Touba, "Synthesis of Circuits with Low-Cost Concurrent Error Detection Based on Bose-Lin Codes", Journal on Electronic Testing: Theory and Applications (JETTA), Vol. 15, Issue 1/2, Aug. 1999, pp. 145-155

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

114

[DeK91] K. De and P. Banerjee, "Can Test Length Be Reduced During Synthesis Process", 4th CSI/IEEE Int. Symp. on VLSI Design, Jan. 1991, pp. 57-62

[DeK94] K. De, C. Natarajan, D. Nair, P. Banerjee, "RSYN: A System for Automated Synthesis of Reliable Multilevel Circuits", IEEE Trans. on VLSI Systems, Vol. 2, No. 2, June 1994, pp. 184-195

[Djor04] G.Lj. Djordjević, M.K. Stojčev, T.R. Stanković, "Approach to partially self-checking combinational circuits design", Microelectronics Journal, Vol. 35, Elsevier, December 2004, pp. 945-952

[Dupo02] Eric Dupont, Michael Nicolaidis, and Peter Rohr, "Embedded Robustness IPs for Transient-Error-Free ICs", IEEE Design & Test of Computers, May-June 2002, pp. 56-70

[Entr101] Luis Entrena Arrontes, Celia López Ongil, Emilio Olías Ruiz, "Automatic Insertion of Fault-Tolerant Structures at the RT Level", IOLTW - International On-Line Test Workshop, 2001, Taormina/Italia

[Entr201] Luis Entrena, Celia López, Emilio Olías, "Automatic Generation of Fault Tolerant VHDL Designs in RTL", Forum on Design Languages, FDL, Lyon, Francia, Septembre 2001

[Fuch87] W.K. Fuchs, C.Y. Chien, and J.A. Abraham, "Concurrent error detection in highly structured logic arrays", IEEE J. Solid-State Circ., August 1987, pp. 583-594

[Gajs92] Gajski, D.D., Dutt, N.D., Wu, A.C.-H., Lin, S.Y.-L., "High-Level Synthesis An Introduction to Chip and System Design", New York, Kluwer-Academic, 1992

[Good85] A.J. Goode, "Design considerations for a single-chip fault tolerant VLSI microprocessor", Software & Microsystems, Vol. 4, No. 3, June 1985, pp. 53-58

[Hals85] R.G. Halse and C. Preece, "Errenous execution and recovery in microprocessor systems", Software & Microsystems, Vol. 4, No. 3, June 1985, pp. 63-70

[Haye88] John P. Hayes, "Computer Architecture and Organization", 2/e, McGraw-Hill Book Company, New York, 1988

[HDL98] HDL Synthesis Guide, Release 4.2, Copyright 1991-1998 Exemplar Logic, Inc. All Rights Reserved, Exemplar Logic, Inc. 6503 Dumbarton Circle, Fremont, CA 94555, [Online], Dostupno: http://www.xilinx.com/support/library.htm

[Hell98] Hellebrand Sybille, Wunderlich Hans-Joachim, and Hertwig Andre, "Synthesizing Fast, Online-Testable Control Units", IEEE Design & Test of Computers, Vol. 15, No. 4, October-December 1998, pp. 36-41

[Hugh84] Hughes L.A. Joseph, McCluskey J. Edward, and Lu J. David, "Design of Totally Self-Checking Comparators with an Arbitrary Number of Inputs", IEEE Transactions on Computers, Vol. C-33, No. 6, June 1984, pp. 546-550

[ITRS03] The 2003 International Technology Roadmap for Semiconductors, [Online], Dostupno: http://public.itrs.net

[Jha191] Jha K. Niraj, "Totally Self-Checking Checker Design for Bose-Lin, Bose, and Blaum Codes", IEEE Transactions on Computer-Aided Design, Vol. 10, No. 1, January 1991, pp. 136-143

7. Literatura

115

[Jha291] Niraj K. Jha, and Sying-Jyan Wang, "Design and Synthesis of Self-Checking VLSI Circuits and Systems", Int. Conf. on Computer Design, 1991, pp. 578-581

[JhaN93] Niraj K. Jha, and Sying-Jyan Wang, "Design and Synthesis of Self-Checking VLSI Circuits", IEEE Transaction on Computer-aided design of integrated circuit and system, Vol. 12, No. 6, June, 1993, pp. 878-887

[John89] Barry W. Johnson, "Design and Analysis of Fault-Tollerant Digital Systems", Addison-Wesley Publishing Company, 1989

[John90] B.W. Johnson, "Design and Analysis of Fault Tolerant Systems", Reading, MA, USA: AddisonWesley, 1990

[Khak82] J. Khakbaz and E. J. McCluskey, "Concurrent error detection and testing for large PLAs", IEEE Journal of Solid-State Circuits, Vol. SC-17, No. 2, April 1982, pp. 386-394

[Lala01] Lala P.K., "Self-checking and fault-tolerant digital system design", Morgan Kaufman Publishers, San Francisco, 2001

[Lapr92] J.C. Laprie (ed.), "Dependability: Basic Concepts and Terminology in English, French, German, Italian, and Japanese" Volume 5 of Dependable Computing and Fault-Tolerant Systems, Springer-Verlag, 1992

[Leve90] Leveugle R., Saucier G., "Optimized Synthesis of Concurrent Checked Controllers", IEEE Transaction on Computers, Vol. 39, No. 4, April 1990, pp. 419-425

[Leve02] R. Leveugle, "Automatic Modifications of High Level VHDL Descriptions for Fault Detection or Tolerance", Proceedings of the Conference on Design, Automation and Test in Europe, March 04-08, 2002, p. 837-841

[Lópe01] Celia López Ongil, Luis Entrena Arrontes, Emilio Olías Ruiz, "Automatic Generation of Fault Tolerant VHDL Designs in RTL", Forum on Design Languages, Septembre 2001, Lyon/France

[Mahm88] Aamer Mahmood, E. J. McCluskey, "Concurrent Error Detection Using Watchdog Processors - A Survey", IEEE Transaction on Computer, Vol. 37, No. 2, February 1988, pp. 160-174

[Maro78] Marouf M.A., Friedman A.D., "Efficient Design of Self-Checking Checker for any m-Out-of-n Code", IEEE Transaction on Computers, Vol. C-27, No. 6, June 1978, pp. 482-490

[MAX+P] Softverski paket, [Online], Dostupan: https://www.altera.com/support/software/ download/altera_design/ mp2_student/dnl-student.jsp

[McCl90] McCluskey E.J., "Design Techniques for Testable Embedded Error Checkers", IEEE Computer, July 1990, pp. 84-88

[Mezh04] Andrey V. Mezhiba, Eby G. Friedman, "Power Distribution Networks in High Speed Integrated Circuits", Kluwer Academic Publishers, Boston, 2004

[Mitr04] Mitra Subhasish, Huang Wei-Je, Saxena R. Nirmal, Yu Shu-Yi, and McCluskey J. Edward, "Reconfigurable Architecture for Autonnomous Self-Repair", IEEE Design & Test of Computers, May-June 2004, pp. 228-240

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

116

[Moha77] Ashjaee Javad Mohammad, and Reddy M. Sudhakar, "On Totally Self-Checking Checkers for Separable Codes", IEEE Transaction on Computer, Vol C-26, No. 8, August 1977, pp. 737-744

[Moha02] K. Mohanram, C.V. Krishna, N.A. Touba, "A Methodology for Automated Insertion of Concurrent Error Detection Hardware in Synthesizable Verilog RTL", Proc. International Symposium on Circuits and Systems (ISCAS), Vol. 1,2002, pp. 577-580

[Moha103] K. Mohanram, and N.A. Touba, "Cost-Effective Approach for Reducing Soft Error Failure Rate in Logic Circuits", Proc. International Test Conference (ITC), 2003, pp. 893-901

[Moha203] K. Mohanram, E. S. Sogomonyan, M. Gössel, and N. A. Touba, "Synthesis of Low-Cost Parity-Based Partially Self-Checking Circuits", Proc. International On-Line Testing Symposium (IOLTS), 2003, pp. 35-40

[Mour89] Mourad Samiha and McCluskey Edward, "Testability of Parity Checkers", IEEE Transactions on Industrial Electronics, Vol. 36, No. 2, May 1989, pp. 254-262

[Osad04] Kenichi Osada, Ken Yamaguchi, Yoshikazu Saitoh, and Takayuki Kawahara, "SRAM Immunity to Cosmic-Ray-Induced Multierrors Based on Analysis of an Induced Parasitic Bipolar Effect", IEEE Journal of Solid-State Circuits, Vol. 39, No. 5, May 2004, pp. 827-833

[Pare95] Parekhji R., et all, "Concurrent Error Detection Using Monitoring Machines", IEEE Design & Test of Computers, Vol. 12, No. 4, Fall, 1995, pp. 24-31

[Pfla00] Matthias Pflanz, "On-line Error Detection and Fast Recover Techniques for Dependable Embedded Processors", Dissertation, Technical University Cottbus, June 2000

[Prad72] D.K. Pradhan, and S. M. Reddy, "Error-control techniques for logic processors", IEEE Trans. Comput., Dec. 1972, pp. 1331-1336

[Prad80] Pradhan D.K., Stiffer J.J., "Error Correcting Codes and Self-Checking Circuits in Fault Tolerant Computers", IEEE Computer, Vol. 13, No. 3, March 1980, pp. 27-37

[Prad86] Dhiraj K. Pradhan, Ed., "Fault-Tolerant Computing: Theory and Techniques", Vol. I and II, Prentice-Hall, New Jersey, 1986

[Rose93] Rose Jonathan, Gamal El Abbas, and Sangiovanni-Vincentelli, "Architecture of Field-Programmable Gate Arrays", Proceedings of the IEEE, Vol. 81, No. 7, July 1993

[Sand90] Kundu Sandip, and Reddy M. Sudhakar, "Embedded Totally Self-Checking Checkers: A Practical Design", IEEE Design & Test of Computers, August 1990, pp. 5-12

[Sapo97] V.V. Saposhnikov, VI.V. Saposhnikov, A. Morosov, M. Gossel, "Design of self-checking unidirectional combinational circuits", Proceedings 7th Fault Tolerant Computing Symposium, June 1997

[Sedm80] R.M. Sedmak and H.L. Liebergot, "Fault Tolerance of a General Purpose Computer Implemented by Very Large Scale Integration", IEEE Transaction Computer, Vol. C-29, No. 6, June 1980, pp. 492-500

7. Literatura

117

[Shoo02] Martin L. Shooman, "Reliability of Computer Systems and Networks: Fault Tolerance, Analysis and Design", John Wiley and Sons Inc., New York, 2002

[Siew91] Daniel P. Siewiorek, "Architecture of Fault-Tolerant Computers: An Historical Perspective", Proceedings of the IEEE, Vol. 79, No. 12, December, 1991, pp. 1710-1734

[Siew92] Daniel P. Siewiorek and Robert S. Swartz, "Reliable Computer Systems: Design and Evaluation", Bedford, MA: Digital Press, 1992

[Smit78] James E. Smith, and Gernot Metze, "Strongly Fault Secure Logic Networks", IEEE Trans. on Computers, Vol. C-27, No. 6, June 1978, pp. 491-499

[Smit83] Smith J.E., Lam P., "A Theory of Totally Self-Checking System Design", IEEE Trans. on Computers, Vol. C-32, No. 9, September 1983, pp. 831-844

[Smit96] Douglas J. Smith, "Hdl Chip Design: A Practical Guide for Designing, Synthesizing & Simulating Asics & Fpgas Using Vhdl or Verilog", Madison, USA: Doone Publications, 1996

[Stan102] T. Stanković, M. Stojčev, "Parity Error Detection in Transceiver Circuit", Proc. IV simpozijum Industrijska elektronika INDEL 2002, Banja Luka, November 2002, pp. 67-73

[Stan202] M. Stojčev, T. Stanković, "Parity Error Detection in Embedded System", 28. naučno stručni skup, HIPNEF 2002, Zbornik radova, Vrnjačka Banja, October 2002, pp. 215-220

[Stan103] Tatjana R. Stanković, Mile K. Stojčev, "Implementation of Totally Self-checking Combinational Logic on FPGA and CPLD Circuits Using VHDL Descriptions", Cyprus Computer Society, Vol. 5, No. 5, June, 2003, pp. 40-44

[Stan203] T.R. Stanković, M.K. Stojčev, G.Lj. Djordjević, "Design Of Self-Checking Combinational Circuits", 6th International Conference on Telecommunications in Modern Satellite, TELSIKS 2003, Niš, Serbia and Montenegro, October 1-3, 2003, pp. 763-768

[Stan303] T.R. Stanković, M.K. Stojčev, G.Lj. Djordjević, "On VHDL Synthesis of Self-Checking Two-Level Combinational Circuits", Third Triennial International Conference on Applied Automatic Systems, Ohrid, Republic of Macedonia, September 18-20, 2003, pp. 225-230

[Stan403] Tatjana R. Stanković, Mile K. Stojčev, Goran Lj. Djordjević, "Design of Totally Self-Checking Combinational Circuits Based on VHDL Description", Proc. XLVII Conference ETRAN 2003, Herceg Novi, Serbia and Montenegro, June 2003, pp. 39-42

[Stan104] Tatjana R. Stanković, Mile K. Stojčev, Goran Lj. Djordjević, "Design of Totally Self-Checking Combinational Circuits Based on VHDL Description", ETF Journal of Electrical Engineering, Vol. 12, No. 1, May 2004, pp. 153 –161

[Stan204] T.R. Stanković, M.K. Stojčev, G.Lj. Djordjević, "On VHDL Synthesis of Self-Checking Two-Level Combinational Circuits", Facta Universitatis (Nis), Series: Electronics and Energetics, Vol. 17, No. 1, April 2004, pp. 69-80

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

118

[Stoj00] M. Stojčev, G. Djordjević, M. Krstić, I. Andrejić, "HMVSA – A Hardware Mid-Value Select Voter Architecture", in Proc. of ETAI 2000, Ohrid, Macedonia, 2000, pp. 54-59

[Stoj101] M.K. Stojčev, G.Lj. Djordjević, M.D. Krstić, "A hardware Mid-Value Select Voter Architecture", Microelectronics Journal, Vol. 32, No. 2, February 2001, pp. 149-162

[Stoj201] M. Stojčev, T. Stanković, "Parity Error Detection in Embedded System", Second International Conference on Informatics and Information Technology, CiiT 2001, Molika, December 20-23, 2001, pp. 293-307

[Stoj104] M.K. Stojčev, G.Lj. Djordjević, T.R. Stanković, "Implementation of Self-Checking Two-Level Combinational Logic on FPGA and CPLD Circuits", Microelectronics Reliability, Vol. 44, Issue 1, Elsevier, January 2004, pp. 173-178

[Stoj204] M.K. Stojčev, G.Lj. Djordjević, T.R. Stanković, "VHDL-Based Design of FSM with Concurrent Error Detection Capability", Proc. 24th International Conference on Microelectronics, MIEL 2004, Vol. 2, Niš, Serbia and Montenegro, May, 2004, pp. 759-762

[Tohm86] Tohma Yoshihiro, "Coding Techniques in Fault-Tolerant, Self-Checking, and Fail-Safe Circuits", in Fault-Tolerant Computing: Theory and Techniques, Vol. I ed. by Pradham D., Prentice Hall, New Jersey, 1986

[Toub94] Touba, N.A. and E.J. McCluskey, "Logic Synthesis Techniques for Reduced Area Implementation of Multilevel Circuits with Concurrent Error Detection," Proc. of ACM/IEEE Int. Conference on Computer-Aided Design (ICCAD), San Jose, CA, USA, Nov. 6-10, 1994, pp. 651-654

[Toub97] Touba, N.A. and E.J. McCluskey, "Logic Synthesis of Multilevel Circuits with Concurrent Error Detection", IEEE Trans. CAD, Vol. 16, July 1997, pp. 783-789

[Trim93] Trimberger Stephen, "A Reprogrammable Gate Arrays and Applications", Proceedings of the IEEE, Vol. 81, No. 7, July 1993, pp. 1030-1041

[Vahi02] Frank Vahid and Tony Givargis, "Embedded System Design: A Unified Hardware/Software Introduction", John Wiley & Sons, 2002

[Wake82] J. Wakerly, "Error Detecting Codes, Self-Checking Circuits and Aplications", Amsterdam: North-Holland, 1982.

[Wein89] N. Weiner and A. Sangiovanni-Vincentelli, "Timing Analysis in Logic Synthesis", 26th Design Automation Conf., 1989, pp. 655-661

[XiliDS1] Xilinx Data Books, Information about various Xilinx products, [Online], Dostupno: http://www.mhl.tuc.gr/OTHERSUBJECTS/data_books/Xilinx/7318.pdf

[XiliDS2] Xilinx Data Sheets, [Online], Dostupno:http://www.xilinx.com/support/library.htm

[XiliFou] Softverski paket, [Online], Dostupan: http://www.xilinx.com/ise_eval/index.htm

[XiliWP] Softverski paket, [Online], Dostupan: http://www.xilinx.com/webpack/index.htm

[YenM87] Yen M.K. et all, "Designing for Concurrent Error Detection in VLSI and Application to a Microprogram Control Unit" IEEE Journal of Solid State Circuits, Vol. SC-22, August 1987, pp. 595-605

7. Literatura

119

[YuSh01] Yu Shu-Yi, "Fault Tolerance in Adaptive Real-Time Computing Systems", A Dissertation submitted to the Department of Electrical Engineering and the Committee on graduate studies of Stanford University, December 2001.

[Zeng99] Chaohuang Zeng, Nirmal R. Saxena, Edward J. McCluskey, "Finite State Machine Synthesis with Concurrent Error Detection", Proceedings IEEE International Test Conference 1999, USA, 27-30 September 1999, pp. 672-679

[Zieg96] J.F. Ziegler, et al., "IBM Experiments in Soft Fails in Computer Electronics (1978-1994)" IBM Journal of Research and Development, Vol. 40, 1996, pp. 3-18

[Zngh00] L. Znghel, M. Nicolaidis, I. Alzaher-Noufal, "Self-checking circuits versus realistic faults in very deep submicron" VLSI Test Symposium, 2000, pp. 55-63

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

120

Dodatak A

121

Dodatak A

Definicije i objašnjenja osnovnih pojmova sistema visoke pouzdanosti koji su korišćeni u ovoj tezi:

Pouzdanost Pouzdanost (Reliability) - R(t) sistema je vremenska funkcija koja se definiše kao uslovna

verovatnoća da će sistem raditi korektno u intervalu [ 0t , t ], uz pretpostavku da je sistem radio korektno u trenutku 0t . Drugim rečima, pouzdanost je verovatnoća da će sistem biti ispravan u celokupnom posmatranom intervalu, pod pretpostavkom da je bio ispravan na početku tog intervala.

Nepouzdanost Q(t) sistema je vremenska funkcija, definisana kao uslovna verovatnoća da će sistem raditi pogrešno u intervalu [ 0t , t ], uz pretpostavku da je sistem radio ispravno u trenutku 0t . Za nepouzdanost se često koristi termin verovatnoća otkaza.

Pouzdanost najčesce karakteriše sisteme kod kojih su čak i trenutni periodi neispravnog rada neprihvatljivi, ili koje je nemoguće popraviti. Vremenski intervali pri razmatranju pouzdanosti su ponekad veoma dugi, recimo deset godina, a u nekim drugim slučajevima svega nekoliko sati. Uobičajeno je da se pri predstavljanju pouzdanosti koristi notacja i9.0

koja označava vrednost koja ima i devetki desno od decimalne tačke. Na primer, 0.9999999 se piše kao 79.0 .

Bitno je razumeti razliku između otpornosti na defekte i pouzdanosti. Otpornost na defekte je tehnika koja može poboljšati pouzdanost sistema održavajući sistem operativnim uprkos pojavi hardverskih defekata i softverskih grešaka. (Na primer, računar koji poseduje rezervni procesor, može biti projektovan tako da nastavi sa radom nakon otkaza glavnog procesora). Međutim, sistem otporan na defekte ne mora uvek da ima visoku pouzdanost. Naime, sistem može biti projektovan da toleriše bilo koji pojedinačni hardverski kvar ili softversku grešku, ali bez obzira na to, ako je verovatnoća pojavljivanja ovakvih problema velika, pouzdanost sistema biće mala. Slično, visoko pouzdani sistem ne mora obavezno biti i otporan na defekte. Na primer, visoka pouzdanost se može postići ugradnjom kvalitetnih komponenti u sistem. Međutim, bez obzira na veoma malu verovatnoću pojave hardverskog defekta, ako nakon pojave defekta sistem ne može da nastavi sa radom, takav sistem ipak nije otporan na defekte.

Dostupnost Dostupnost (Availability) - A(t), ili raspoloživost, je vremenska funkcija, definisana kao

verovatnoća da sistem radi korektno i da je na raspolaganju da izvrši svoje funkcije u vremenskom trenutku t. Za razliku od pouzdanosti koja zavisi od vremenskog intervala, dostupnost zavisi od jednog vremenskog trenutka. Mnogi sistemi se u toku svog životnog veka više puta kvare i popravljaju. Sistem može biti visoko dostupan, a da u isto vreme nije pouzdan, sve dok su intervali u kojim je sistem u kvaru kratki. Dostupnost sistema zavisi ne samo od toga koliko često sistem postaje neispravan već i od toga koliko brzo može biti

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

122

popravljen. Najčešće korišćena mera dostupnosti je očekivani vremenski period u kome je sistem na raspolaganju da korektno izvrši svoje funkcije, tj. količnik vremena u kome je sistem bio ispravan i ukupnog vremena njegovog života. Dostupnost se koristi kao cilj projektovanja kada je osnovna uloga sistema obezbediti njegove usluge sto je češće moguće.

Bezbednost Bezbednost (Safety) - S(t) je verovatnoća da će sistem ili obavljati svoje funkcije korektno

ili će, zbog nastalog kvara, prekinuti svoj rad na način koji ne ometa rad drugih sistema ili ugrožava bezbednost ljudi koji su u kontaktu sa sistemom. Bezbednost predstavlja meru sposobnosti sistema za tzv. bezbedni otkaz. Naime, ako sistem ne radi korektno, želimo da makar otkaže na bezbedan način. Na primer, poželjno je da u slučaju otkaza ventil koji kontroliše dotok neke hemikalije u reaktor ostane u zatvorenom položaju. Bezbednost sistema je verovatnoća da se to i desi.

Performabilnost Performabilnost (Performability) - P(L,t) sistema je vremenska funkcija, definisana kao

verovatnoća da će performanse sistema biti na, ili iznad, nekog nivoa L u vremenskom trenutku t. Performabilnost se razlikuje od pouzdanosti po tome što je pouzdanost mera verovatnoće da se sve funkcije izvršavaju korektno, dok je performabilnost verovatnoća da se neki podskup funkcija izvršava korektno. Na primer, kod multiprocesorskih sistema, trenutni broj operativnih procesora ukazuje na performabilnost.

Postepeno otkazivanje je važna osobina koja je usko povezana sa performabilnošću. Postepeno otkazivanje je sposobnost sistema da automatski snizi svoj nivo performansi da bi kompenzovao hardverski kvar ili softversku grešku.

Održivost Održivost (Maintainability) - M(t) je mera lakoće sa kojom sistem može biti popravljen,

kad je već otkazao. Drugim rečima, održivost je verovatnoća da “pokvareni” sistem može biti doveden u operativno stanje unutar određenog vremenskog perioda, t. Proces održivosti obuhvata lociranje problema, fizičku popravku sistema, i vraćanje sistema u njegovo operativno stanje. Održivost je kritična kod svih sistema, ali je posebno važna kad su ljudski životi, oprema ili sredina ugroženi dok se sistem popravlja.

Testabilnost Testabilnost (Testability) je sposobnost ispitivanja određenih karakteristika sistema. Test

je sredstvo kojim se utvrđuje postojanje i kvalitet određenih karakteristika sistema. Testabilnost je jasno povezana sa opravljivošću jer je važno minimizirati vreme potrebno za identifikaciju i lociranje specifičnih problema.

Pouzdanost u širem smislu Pouzdanost u širem smislu (Dependability), ili uslužnost, objedinjuje pojmove

pouzdanosti, dostupnosti, sigurnosti, održljivosti, performabilnosti, i testabilnosti. Uslužnost je kvalitet usluge koju određeni sistem obezbeđuje. Pouzdanost, dostupnost, sigurnost, održljivost, performabilnost i testabilnost su mere koje karakterišu uslužnost sistema.

Dodatak B

123

Dodatak B

Definicije kombinacionih i sekvencijalnih mreža sa samoproverom

Definicija 1: Kombinaciona (sekvencijalna) mreža je samotestirajuća (self-testing) za skup defekata F, ako i samo ako, za svaki defekt iz F, u toku normalnog rada mreža generiše nekodnu reč na izlazu za najmanje jednu kodnu reč na ulazu.

Definicija 2: Kombinaciona (sekvencijalna) mreža je sigurna u prisustvu defekta (fault-secure) za skup defekata F, ako i samo ako, za svaki defekt iz F, mreža nikada ne generiše nekorektnu kodnu reč na izlazu.

Definicija 3: Kombinaciona (sekvencijalna) mreža je sa potpunom samoproverom (totally self-checking) za skup defekata F, ako i samo ako, za svaki defekt iz F, mreža je samotestirajuća i sa potpunom samoproverom.

Definicija 4: Kombinaciona (sekvencijalna) mreža je kodno razdvojena (code-disjoint) za skup defekata F, ako i samo ako se ulazne kodne reči preslikavaju u izlazne kodne reči, a ulazne nekodne reči se preslikavaju u izlazne nekodne reči.

Definicija 5: Kombinaciona mreža je kolo za proveru sa potpunom samoproverom (totally self-checking checker) za skup defekata F, ako i samo ako, za svaki defekt iz F, mreža je samotestirajuća, sa potpunom samoproverom i sa razdvojenim kodovima.

Projektovanje kombinacionih i sekvencijalnih mreža sa samoproverom na osnovu VHDL opisa

124

Dodatak C

125

Dodatak C

Dodatak C sadrži VHDL opise svih modula potrebnih za generisanje kombinacionih i sekvencijalnih kola sa samoproverom, opisanih u ovoj tezi. VHDL opisi modula nalaze se u posebnom paketu. Dodatka C uključuje i VHDL opise dva ilustrativna primera sinteze kombinacionog kola 4-bitni množač i sekvencijalnog benchmark kola b01. Iz praktičnih razloga, Dodatak C se nalazi na CD-ROM-u.