F A U L T S I M ======================================================================== VERSIE 3.1 (C) W.M.J. de Valk Inleiding. ========== Faultsim is een stuck-at foutensimulator, waarmee de foutendekking van een set testvectoren voor een combinatorisch netwerk of een synchrone sequentiele schakeling kan worden onderzocht. Met een random testvectorgenerator is het daarenboven mogelijk om voor niet al te ingewikkelde, behoorlijk testbare schakelingen, in een redelijke tijd, een 100% dekkende set van vectoren te genereren. De invoer voor de simulator bestaat uit een netlist van het poortmodel van de te onderzoeken schakeling, de uitvoer wordt gevormd door de set van testvectoren die een bijdrage leveren aan de dekkingsgraad met de bijbehorende nominale netwerkrespons. De te onderzoeken testvectoren kunnen interactief worden aangeboden, random gegenereerd, dan wel worden uitgelezen uit een stimulus-file. De uitvoerfile kan rechtstreeks dienen als basis voor het samenstellen van een set fysieke testsignalen voor een chip. Het simulatieproces kan worden geobserveerd aan de hand van de schermuitvoer. Behalve de in- en uitgangsvectoren en de dekkingsgraad wordt aangegeven welke fouten worden gedekt met een aangeboden testvector. Aanroep: ======== faultsim [optie] Een van de onderstaande opties is mogelijk: -s single-coverage: per aangeboden vector wordt de afzonderlijke dekkingsgraad bepaald, in tegenstelling tot de gebruikelijke cumulatieve. -n no-coverage: er vindt alleen logische simulatie plaats ter verificatie van de in de netlist gespecificeerde poortschakeling. -w screen width: Bepaalt de breedte van het scherm (default 80 karakters). Ingangsvectoren worden gesplitst in stukken die binnen het scherm passen. syntax: -w[:] -------------------------------------------------------------------- | NB. Op een PC onder MS-DOS geldt de conventie dat command line | | switches met een slash (/) worden aangeduid, in plaats van | | de dash (-) bij UNIX. Vervang dus bij de PC-versie de | | dashes in deze handleiding door slashes. | -------------------------------------------------------------------- De naam van de netlist file dient de extensie '.net' te bezitten, de extensie mag bij de bovenstaande aanroep niet worden meegegeven. In deze file-naam mogen verder geen punten (.) voorkomen. UNIX maakt onderscheid tussen hoofd- en kleine letters (is case-sensitive), waarmee rekening moet worden gehouden bij het invoeren van een file-naam. De gegenereerde uitvoerfile krijgt dezelfde naam met de extensie '.out'. Na inlezen en analyseren van de netlist worden de niet-equivalente stuck-at fouten geintroduceerd en wordt naar een opdracht gevraagd. Behalve uit een te onderzoeken ingangsvector, welke geen spaties mag bevatten en de correcte lengte dient te bezitten, kan de opdracht bestaan uit een van de onderstaande commando's: 'DO' of 'FILE' Lees de testvectoren uit een stimulus-file. 'RANDOM' [nn] Genereer [nn] random ingangsvectoren. 'MASK' Creeer een masker voor uit een file uitgelezen dan wel random gegenereerde vectoren. 'LIST' [nn] [mm] Overzicht van de status van de netlist, vanaf nodenr [nn] t/m [mm]. 'DROPLIMIT' [n] Aantal potentiele detecties bij een sequentiele schakeling zonder scanpad welke als voldoende voor definitieve detectie wordt beschouwd. 'SETSTATE' Bepaal de initiele toestand van het state- register van een sequentieel circuit zonder scanpad. 'ROTATE' Keer de hele set van reeds gesimuleerde ingangsvectoren om en hersimuleer deze. Dit commando werkt niet indien niet-scanable flipflops in de netlist aanwezig zijn. 'PROMPT' Schakel om tussen aanduiding van alle ingangsvariabelen en alleen de lengte van de ingangsvector. 'SUSPEND' [n] Simuleer [n] vectoren zonder de dekkingsgraad te bepalen, teneinde bv. de schakeling in een bepaalde toestand te brengen. 'QUIT' Beeindig de simulatie. De naam van de stimulus-file, welke na het commando 'DO' of 'FILE' wordt gevraagd, mag elke voor UNIX dan wel MS-DOS acceptabele syntax bezitten en moet volledig met extensie worden opgegeven. UNIX is in tegenstelling tot MS-DOS case-sensitive, zodat zo'n file-naam daar in de regel met kleine letters moet worden opgegeven. De netlist-file. ================ De netlist file bevat een netlist van het poortmodel van de te onderzoeken schakeling. De naam ervan dient van de extensie '.net' te worden voorzien en mag verder geen punten bevatten. Ook hierbij is het feit van belang dat UNIX case-sensitive is. In de file kan commentaar, beginnend met aanhalingstekens ("), worden geplaatst. De inhoud van de file is niet case-sensitive. De netlist bestaat uit een aantal nodes welke worden aangeduid met een identifier bestaande uit maximaal 14 karakters. Geen onderscheid wordt daarbij gemaakt tussen hoofd- en kleine letters. Voorgedefinieerde nodes zijn 'VDD' en 'VSS' met als logische waarde '1' resp '0'. De file dient te beginnen met het keyword 'NETLIST' gevolgd door de naam van het poortmodel. Nu volgt de specificatie van de ingangen en de uitgangen van het combinatorische of sequentiele netwerk: INPUT ..... OUTPUT ...... Meerdere input- en outputregels kunnen worden opgegeven, zij mogen door elkaar worden geplaatst. Het maximale aantal van beide bedraagt 250, met inbegrip van de pseudo-primaire scanpad-ingangen en -uitgangen; elke schakeling moet tenminste een uitgang bezitten en een combinatorisch circuit bovendien minstens een ingang. Sequentiele netwerken kunnen van een scanpad worden voorzien. De flipflops (SCFF) moeten daarbij als gecombineerde in/uitgang voor het combinatorische next-state- en outputdecodernetwerk worden opgevat. Dit scanpad moet derhalve worden geplaatst bij de inputs en outputs, en wordt verder niet expliciet in de netlist opgenomen. De scanable flipflops, welke perse van het type SCFF moeten zijn, komen in volgorde in de lijst van in- en uitgangsnodes voor: INPUT ..... OUTPUT ...... SCANPATH ...... INPUT ..... OUTPUT ...... Bovenstaande constructie levert een volgorde van in- en uitgangen op, waarvan de header in de uitvoerfile er als volgt uitziet: inputs outputs ============= QQ DD NNnnNN NNnnNN OOooOO OOooOO DDddDD DDddDD EEeeEE EEeeEE 014567 234589 ============= Hierna komt de eigenlijke netlist. Per regel wordt de naam van een node verwacht, gevolgd door de sturende poortfunctie, gevolgd door een lijst van nodes waarop de ingangen van de betreffende poort zijn aangesloten: .... Het totale aantal nodes in de netlist, met inbegrip van een tweetal dummy-nodes is beperkt tot 4000. De volgende primitieve poortfuncties zijn mogelijk: BUF buffer met 1 input INV inverter met 1 input AND met 2 - 10 inputs OR met 2 - 10 inputs NAND met 2 - 10 inputs NOR met 2 - 10 inputs SCFF scanable D-flipflop met 1 input DFF D-flipflop met 1 input TFF T-flipflop met 1 input JKFF JK-flipflop met 2 inputs (input1: J, input2: K) SRFF SR-flipflop met 2 inputs (input1: S, input2: R) Belangrijk: alleen combinatorische of synchrone sequentiele netwerken kunnen worden onderzocht, d.w.z. er mogen geen gesloten, uitsluitend combinatorische lussen in de netlist voorkomen zonder dat daarin een synchrone D-, T-, JK- of SR-flipflop, dan wel een scanable D-flipflop is opgenomen. Dit wordt door het programma afgetest. Klokcircuits en set/reset-lijnen van synchrone state-machines worden niet in de netlist vermeld, alhoewel zij uiteraard wel degelijk voor het functioneren van de schakeling zijn vereist. Stuck-at fouten op het klokcircuit verstoren de werking zodanig dat zij onmiddelijk worden gedetecteerd, set- of resetlijnen kunnen functioneel worden getest. Bij sequentiele schakelingen kan de combinatoriek afzonderlijk worden getest door de testvectoren en de gegenereerde respons via een scanpad in te voeren en uit te lezen. Dit scanpad wordt eveneens impliciet aanwezig geacht bij gebruik van scanable flipflops en wordt dus evenmin in de netlist opgenomen. Indien van flipflops de geinverteerde uitgangssignalen zijn benodigd, moeten deze m.b.v. een inverter afzonderlijk worden gegenereerd. Denk er daarbij aan dat, als zo'n geinverteerde uitgang niet wordt gebruikt, deze inverter in principe een ontestbare situatie oplevert, hetgeen niet conform de werkelijkheid is. Als echter de inverter in de netlist onmiddelijk op de eerste regel na de bijbehorende flipflop volgt, worden geen fouten op die inverter aangebracht indien deze niet wordt gebruikt. De netlist wordt afgesloten met het keyword 'END'. Voorbeeld 1: de netlist van een exor poort: netlist exor input a b output z na inv a nb inv b anb and a nb bna and na b z or anb bna end Voorbeeld 2: een eenvoudige statemachine: netlist 2bit_updown_counter; input up output co n_up inv up q1 dff d1 n_q1 inv q1 q0 dff d0 n_q0 inv q0 net1 and n_q1 n_q0 n_up net2 and q1 n_q0 up net3 and q0 up net4 and q1 n_up net5 and n_q1 up net6 and n_q0 n_up d1 or net3 net6 d0 or net4 net5 co or net1 net2 end Voorbeeld 3: dezelfde statemachine met ingebouwd scanpad netlist 2bit_updown_counter; input up output co >> SCANPATH Q1 Q0 n_up inv up >> q1 SCFF d1 n_q1 inv q1 >> q0 SCFF d0 n_q0 inv q0 net1 and n_q1 n_q0 n_up net2 and q1 n_q0 up net3 and q0 up net4 and q1 n_up net5 and n_q1 up net6 and n_q0 n_up d1 or net3 net6 d0 or net4 net5 co or net1 net2 end Foutdekking. ============ Na inlezen van de netlist kunnen testvectoren worden aangeboden. Het netwerk wordt in foutloze toestand doorgerekend waardoor de nominale signaalwaarde op alle knooppunten bekend is. Nu worden alle openstaande foutklassen stuk voor stuk aangebracht, waarbij wordt vastgesteld of een verandering van de uitgangsvector optreedt. Indien dit inderdaad het geval is, wordt de betrekkende fout, als deze in de geproduceerde chip optreedt, door de aangeboden testvector gedetecteerd. Alle gedetecteerde foutklassen worden nu van de lijst afgevoerd en de testvector wordt samen met de nominale uitgangsvector in de uitvoerfile geplaatst. De stimulus-file. ================= Deze file bestaat uit een aantal stimulus-vectoren, alle op een afzonderlijke regel. Deze vectoren mogen geen spaties bevatten. De vector wordt afgesloten met een spatie, waarna alle verdere tekst op de regel wordt genegeerd. Dit biedt de mogelijkheid om de volgorde van de regels in een uitvoerfile van een simulatie met random ingangsvectoren te wijzigen en het resultaat na een rename weer aan de simulator ter optimalisatie aan te bieden. Syntactisch incorrecte regels geven aanleiding tot een foutmelding op het scherm en worden verder genegeerd. Na het bereiken van een dekkingsgraad van 100% heeft verder uitlezen van de file geen zin meer en wordt dan ook beeindigd. Evenals de netlist mag de stimulus-file worden voorzien van commentaar, beginnend met aanhalingstekens ("). Een stimulus-file voor een 100% dekkende test van de bovenstaande exor-netlist: "exor stimulus file "AB 00 Tekst na de spatie achter de 01 ingangsvectoren wordt volledig 10 genegeerd. 11 "Bij een exor poort zijn alle "ingangscombinaties benodigd Het masker. =========== Bepaalde foutklassen worden door slechts een zeer gering aantal ingangsvectoren omvat. Bij random generatie kan het dan zeer veel pogingen vergen om een 100% dekkende test te genereren. In veel gevallen kan van een aantal inputbits gemakkelijk worden vastgesteld welke waarde zij dienen te bezitten om zulke moeilijk testbare fouten te kunnen omvatten. Deze bits kunnen m.b.v. een masker een vaste waarde worden gegeven, terwijl de overige uit een stimulus-file worden uitgelezen, dan wel met de random-generator worden gegenereerd. De maskeervector dient te bestaan uit de symbolen "0", "1", "-" of spaties. Deze vector mag niet langer zijn dan de ingangsvectoren, bij een geringere lengte wordt deze aangevuld met spaties. Dat betekent dus dat met een lege vector het masker kan worden verwijderd. Als er reeds een masker was gespecificeerd zal faultsim dit tonen na het 'MASK'-commando en u de keuze laten om een nieuw masker in te voeren dan wel het oude intact te laten. De uitvoerfile. =============== Deze file bevat de ingangs-stimuli welke hebben bijgedragen aan de foutendekkingsgraad van de schakeling met de bijbehorende nominale uitgangsvectoren. De uitvoerfile kan daardoor als basis dienen voor het genereren van een set van fysieke testsignalen voor de chip. Voorbeeld: het resultaat van de eerder genoemde exor netlist: FAULTSIM SIMULATION OUTPUT FOR NETWORK: EXOR =============== AB Z COVERAGE =============== 00 0 41.67 % 01 1 66.67 % 10 1 83.33 % 11 0 100.00 % De situatie is complexer in het geval van een state- machine zonder scanpad. In de uitvoerfile worden daarbij eveneens de vectoren geplaatst die de potentiele dekkingsgraad hebben vergroot en verder alle vectoren die alleen maar een toestandsverandering teweeg hebben gebracht. Slechts op deze wijze wordt de garantie verkregen dat het aanbieden van de bewuste set vectoren inderdaad tot de bij de simulatie aangegeven dekkingsgraad zal leiden. Men dient zich ervan bewust te zijn dat het aantal vectoren, dat bij random generatie aldus in de uitvoerfile wordt geplaatst, reeds bij kleine state-machines excessieve proporties aanneemt. De praktische bruikbaarheid van een dergelijke aanpak is dan ook zeer beperkt. De list. ======== De nodes in het netwerk worden met een volgnummer, de logische waarde na de laatste testvector, en de aangebrachte stuck-at foutklassen op het scherm afgedrukt. Default wordt de list van het volledige poortmodel gegeven, optioneel kan na het 'LIST'-commando het nummer van de eerste en de laatste te listen node worden gespecificeerd. In de netlist volgen na de ingangsnodes altijd de dummy-nodes 'VDD' en 'VSS'. De ingangen van de poorten worden in de list niet bij naam aangeduid maar met het volgnummer van de node met die naam. De scanable fliflop (SCFF) wordt beschouwd als een combinatie van een primaire netwerkingang en een primaire netwerkuitgang. In de netlist wordt deze dan ook gesplitst in twee verschillende nodes. De uitgang van zo'n scanable flipflop wordt gebruikt als netwerkingang (SF-Q), de D-ingang ervan vormt een primaire uitgang (SF-D). De nodenummers bij de door een bepaalde ingangsvector gedekte foutklassen verwijzen naar de volgnummers in de list. Niet-aangebrachte stuck-at fouten worden met een '.' aangeduid, wel aangebrachte en nog niet gedekte met een '1'; na te zijn gedekt worden deze vervangen door een '*'. De fouten worden in groepjes van 2 aangegeven in de volgorde sa0,sa1. Eerst komen de fouten op de node, indien de bijbehorende functie ingangen bezit volgen na een schuine streep de fouten daarop. De volgorde van de ingangen is die in de netlist. Met de cijfers 2 t/m 9 wordt de potentiele dekkingsgraad van de betreffende foutklasse bij state-machines zonder scanpad aangeduid. Het aantal potentiele detecties is een lager dan de grootte van dat getal. Meer dan 8 potentiele detecties worden dus niet aangegeven. Voorbeeld van de netlist van de exor poort direct na inlezen: CURRENT SA0,SA1 FAULTS on NR NODE VALUE TYPE INPUTS OUTPUT / INPUTS ======================================================================= 1 A 0 INP 11 2 B 0 INP 11 3 VDD 0 4 VSS 0 5 NA 0 INV 1 .. / .. 6 NB 0 INV 2 .. / .. 7 ANB 0 AND 1 6 .. / .1 .1 8 BNA 0 AND 5 2 .. / .1 .1 9 Z 0 OR 7 8 11 / 1. 1. ======================================================================= FAULT INDICATION: . :collapsed 1-9:uncovered *:covered sa1 sa1 ----- A --x--x-----------------------x--| | sa0 | | & |---ANB | _____ NB--x--| | | | | | | sa1 ----- | | ----| 1 |O--- | sa0 ----- | | |_____| --x--| | sa1 | | _____ | >=1 |--x----x--- Z | | | | --x--| | sa0 ---|----| 1 |O--- | sa0 ----- | |_____| | sa1 ----- | | NA--x--| | | sa0 | | & |---BNA B --x--x-----------------------x--| | sa1 sa1 ----- Na aanbieden van de ingangsvector '00' wordt de onderstaande melding op het scherm afgedrukt: COVERED FAULT CLASSES: 9:sa1-OUT 8:sa1-IN2 7:sa1-IN1 2:sa1-OUT 1:sa1-OUT OUTPUT VECTOR: 0 FAULT COVERAGE: 41.67 % of 12, INCREASE: 41.67 % In de netlist zijn nu de omvatte foutklassen met een '*' gemarkeerd. CURRENT SA0,SA1 FAULTS on NR NODE VALUE TYPE INPUTS OUTPUT / INPUTS ======================================================================= 1 A 0 INP 1* 2 B 0 INP 1* 3 VDD 1 4 VSS 0 5 NA 1 INV 1 .. / .. 6 NB 1 INV 2 .. / .. 7 ANB 0 AND 1 6 .. / .* .1 8 BNA 0 AND 5 2 .. / .1 .* 9 Z 0 OR 7 8 1* / 1. 1. ======================================================================= FAULT INDICATION: . :collapsed 1-9:uncovered *:covered Generatie van SLS-stimulus files. ================================= Het kan gemakkelijk zijn om resultaten van een faultsim simulatie te vergelijken met de resultaten van de SLS-simulatie van hetzelfde circuit, na invoer m.b.v. de ESCHER schematic editor van het NELSIS pakket. Door de gewenste variabelen op te nemen in SLS_STIM opdrachtregels worden de vereiste stimulusfiles ( .cmd en .net ) voor de Switch- Level Simulator automatisch aangemaakt, mits Faultsim in functionele mode ( -n optie ) wordt aangeroepen. Deze SLS_STIM regels moeten aan de eigenlijke netlist voorafgaan, en kunnen vrijelijk worden gemengd met de INPUT-, OUTPUT- of SCANPATH- regels. Faultsim maakt geen onderscheid tussen upper- en lowercase karakters, het NELSIS-pakket doet dat wel. Het is derhalve noodzakelijk om de vermelding van de signaalnamen in de SLS_STIM-regels exakt identiek te maken aan de benaming van de terminals in het ESCHER-schema. De terminals voor de voedingsspanning in alle schema's moeten met de namen "vdd" resp "vss" worden aangegeven in kleine letters. In (volledig synchrone) sequentiele schakelingen moet een resetingang "rst" en een klokingang "clk" aanwezig zijn, eveneens gebruik makend van kleine letters. Beide zijn hoog-aktief. In het begin van de Faultsim-simulatie dient het state-register m.b.v. het SETSTATE commando in de conditie te worden gebracht, welke de ESCHER-schakeling verkrijgt door aanbieden van het "rst"-signaal. Gebruik in Batch Mode. ====================== Door redirection van in- en output is het mogelijk om Faultsim in batch mode te gebruiken. De commando's voor de simulator worden in een commandofile geplaatst. De uitvoer, die normalerwijze naar het scherm wordt gestuurd, kan in een logfile worden geschreven, zodat het verloop van het proces achteraf kan worden bestudeerd, dan wel worden uitgeprint. Als voorbeeld nemen we weer de exor-netlist, waarvoor de onderstaande commandofile 'EXOR.CMD' is gecreeerd: list random 2 file exor.stm list 2 6 quit Het zal duidelijk zijn dat een commandofile met 'QUIT' moet eindigen, op straffe van de foutmelding 'UNEXPECTED END OF COMMAND INPUT FILE' in de logfile. Nu kan Faultsim zowel vanaf de commandoregel als vanuit een batch-file worden opgestart met: faultsim exor exor.log Bedenk dat voorgaande simulatieresultaten altijd in een volgende run kunnen worden opgenomen door een rename of copy van de uitvoerfile naar een stimulusfile en deze met het 'FILE'-commando opnieuw in de simulatie op te nemen. Sequentiele schakelingen. ========================= Deze kunnen we verdelen in de categorie met en die zonder scanpad. Schakelingen met een scanpad kunnen worden opgevat als combinatorische netwerken met extra primaire ingangen via dat scanpad. De afhandeling is identiek met die van de combinatorische netwerken. Het in shiftmode aanbieden van de vectoren via het scanpad wordt in de netlist en de simulatie impliciet gerealiseerd. State-machines zonder scanpad. ============================== De situatie is complexer indien niet-scanable flipflops in de schakeling aanwezig zijn. Voor deze categorie schakelingen wordt een gewijzigd algoritme toegepast. De hieraan ten grondslag liggende filosofie is de volgende. Eis is dat het state register in een gedefinieerde initiele toestand wordt gebracht met bv. een set- of resetcommando dan wel door het doorlopen van een volgorde van toestanden welke met zekerheid tot een bepaalde eindconditie leidt. Faultsim neemt aan dat het state register initieel is gereset, m.b.v. het SETSTATE commando kan anders worden besloten. Nu wordt een ingangsvector op de primaire netwerkingang geplaatst, waarna automatisch een klokpuls wordt gegeven. De uitgangsvector wordt na die klokpuls uitgelezen, ook de list van het netwerk toont de signaalwaarden na die klokpuls. Evenals bij de combinatorische netwerken wordt van alle openstaande foutklassen nagegaan of zij aanleiding geven tot een verandering van de uitgangsvector t.o.v. de nominale waarde. Er bestaat nu echter de mogelijkheid dat, alhoewel een foutklasse aanleiding geeft tot een foutieve inhoud van het state-register, het gevolg niet onmiddelijk zichtbaar is op een primaire uitgang. Doordat de state-machine nu in een verkeerde cyclus terecht is gekomen zal de kans groot zijn dat (evt. na enkele tussentoestanden) pas in een later stadium detectie plaats vindt op een van de primaire uitgangen. De foutklasse wordt nu als potentieel gedetecteerd beschouwd. Dit wordt in de list van het netwerk aangeduid door de indicatie van de foutklasse met 1 op te hogen. Het maximale aantal te registreren potentiele detecties bedraagt 8, aangegeven dus door het cijfer 9. Na een bepaald aantal (1 - 9) potentiele detecties kan de foutklasse als definitief gedetecteerd worden beschouwd. Dit aantal bedraagt 3 bij opstart van Faultsim, m.b.v. het commando 'DROPLIMIT' kan dit op een andere waarde worden ingesteld. Door dit 0 te stellen zal potentiele detectie nooit tot definitieve detectie leiden. Indien een foutklasse door het overschrijden van de droplimit als gedetecteerd wordt beschouwd, wordt dit in de schermuitvoer aangegeven met een sterretje achter de gedetecteerde fout. Belangrijk: Werkelijke detectie van zulke foutklassen staat eerst met zekerheid vast nadat zij fysiek in de netlist zijn aangebracht, waarna de set uitgangsvectoren bij functionele simulatie afwijkingen vertoont t.o.v. de nominale waarden. Hiervoor wordt Faultsim in functionele mode opgestart met de -n optie, waarbij de eerder in de uitvoerfile geplaatste set vectoren ter simulatie wordt aangeboden. (Vergeet de rename van de uitvoerfile niet !!!) Optimalisatie van de testpatronen. ================================== In de regel kan een reductie van ca. 25% van de omvang van de set testvectoren, verkregen door aanbieden van random vectoren, worden bereikt door de volgorde van de in de uitvoerfile geplaatste vectoren om te keren en het resultaat opnieuw te simuleren. Hiervoor kan het commando ROTATE worden gebruikt. Deze optimalisatie is niet mogelijk bij state-machines zonder scanpad. De hele simulatie is in dat geval afhankelijk van de volgorde van de toestanden, zoals werd bepaald door de combinatie van alle ingangsvectoren. Door een zorgvuldige analyse blijkt het niettemin in een aantal gevallen wel mogelijk om de set vectoren significant in omvang te reduceren; het voert echter te ver om dat hier te beschrijven. Het verdient sterk de aanbeveling om state-machines standaard met een scantest uit te rusten, zelfs indien de omvang beperkt is. Modificaties. ============= Versie 1.1: Anders dan bij 1.0 wordt nu de random generator bij het opstarten van de simulator random geinitialiseerd, zodat verschillende runs ook verschillende resultaten opleveren. Versie 1.2: Direct na de aanroep van het programma kan een optie worden gekozen waarmee het mogelijk is om de foutendekking van elke testvector afzonderlijk te bepalen: -s (single-coverage), dan wel in het geheel geen foutendekking te bepalen zodat alleen logische simulatie van de netlist wordt uitgevoerd: -n (no-coverage). In beide gevallen wordt het resultaat van elke aangeboden vector in de uitvoerfile geplaatst. Versie 1.3: Na het commando LIST kan nu optioneel het eerste en het laatste te listen nodenummer worden opgegeven. Verder is een bug bij het inlezen van het aantal te genereren random vectoren verwijderd. Tenslotte is de afhandeling in Batch mode verbeterd. Versie 1.4: Het is nu mogelijk om bepaalde bits van uit een stimulus- file uitgelezen dan wel random gegenereerde ingangsvectoren te maskeren m.b.v. het commando 'MASK'. Versie 2.0: Scanable D-flipflops zijn als primitieve poortfunctie toegevoegd, in combinatie met de specificatie van een scanpad tussen de in- en output statements. Daarmee wordt het mogelijk om direct de netlist van een sequentieel (sub)systeem in te lezen en de combinatoriek ervan afzonderlijk te testen. Verder kunnen synchrone sequentiele schakelingen worden onderzocht welke zijn uitgerust met D-, T-, JK- en SR-flipflops, ook zonder een ingebouwd scanpad. De netlist is derhalve niet noodzakelijkerwijs downward compatible met de voorgaande versies. Versie 2.1: Als prompt kan nu een kop van alle namen van de ingangs- variabelen worden getoond. M.b.v. het 'PROMPT' commando kan dit worden onderdrukt. Versie 2.2: Er is de mogelijkheid gecreeerd om in functionele (-n) mode stimulusfiles voor de SLS-simulator van het NELSIS-pakket (.cmd en .res) te genereren. Teneinde een uit de NELSIS-ESCHER-omgeving geextraheerde netlist probleemloos te kunnen executeren, worden op een inverter geen foutklassen aangebracht, indien aan diens uitgang geen andere poortingang of primaire uitgang is aangesloten, en als de ingang ervan is gekoppeld aan de uitgang van een flipflop die er in de netlist direkt aan vooraf gaat. Verder zijn diverse bugs gerepareerd. Versie 2.3: Het maximale aantal in- en uitgangen wordt vergroot tot 200, in de voorlopige APOLLO-versie echter tot niet meer dan 78. Voorts worden de besturings-commando's 'SETSTATE' en 'DROPLIMIT' nu in de uitvoerfile geplaatst, en worden ook uitgevoerd indien aanwezig in een stimulusfile. Ook het FILE commando kan nu in de stimulusfile worden geplaatst, waardoor van file wordt gewisseld, hetgeen de mogelijkheid biedt om meerdere stimulusfiles achter elkaar in te lezen. Tenslotte kunnen ook 'MASK' en 'RANDOM [nn]' vanuit de stimulusfile worden uitgevoerd, na 'MASK' moet op de eerstvolgende regel het nieuwe masker worden geplaatst, zonder voorafgaande spaties. Versie 3.0: Er is een hierarchische netlist expander FSEXPAND beschikbaar gekomen, die na de eigenlijke netlist, waarin de knooppunten aangeduid worden als "@nn", een vertaaltabel ofwel referentielijst bevat. De nieuwe versie van Faultsim leest deze in en vervangt de interne knooppunts- nummers door de in de referentielijst vermelde benamingen. Vanaf 3.03 is er het alternatief 'DO' voor het 'FILE' commando en wordt het stimuli- roteerprogramma FSROTATE meegeleverd. Versie 3.1: Het maximale aantal knooppunten in een netwerk is vergroot tot 4000, het aantal in- resp. uitgangen tot 250; de signaalnamen mogen nu maximaal 14 karakters lang zijn; het stimuli-roteercommando 'ROTATE' is nu binnen Faultsim opgenomen en vervangt het afzonderlijke programma; de -w switch werd geintroduceerd; het 'SUSPEND' commando toegevoegd; op de PC blijft bij opstart van Faultsim de schermmode nu ongewijzigd. Opmerkingen. ============ In het public-domain is een MS-DOS versie van dit programma beschikbaar, (PC-versie 3.1), waarvan de ongewijzigde code voor uitsluitend educatieve, niet-commerciele toepassing vrij van auteursrechten kan worden gebruikt, gecopieerd en verspreid. Alle andere rechten worden door de auteur volledig voorbehouden. Ter zake doende op- of aanmerkingen op dit programma worden hogelijk op prijs gesteld. Adresseren aan: W.M.J. de Valk, Hogeschool Eindhoven, Sector TO, afd E, Postbus 347, 5600 AH Eindhoven.