Testování a spolehlivost ZS 2011/2012 3. Laboratoř Program Atalanta, BIST, testování sekvenčních obvodů Katedra číslicového návrhu Fakulta informačních technologií ČVUT v Praze Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti
Program Atalanta Budeme využívat program Atalanta popsaný zde spolu s poruchovým simulátorem HOPE. 1. Analyzujte zapojení obvodu popsaného v souboru c17.bench. Nakreslete jeho logické schéma. 2. Vygenerujte jeho úplný test příkazem: atalanta -l c17.lst c17.bench 1. Ověřte výsledek testu tím, že zkontrolujete všechny vygenerované soubory, spusťe poruchový simulátor HOPE příkazem: hope.exe -l hope.log -t c17.test c17.bench 2. Zkontrolujte výpis hope.log, ověřte pokrytí poruch jednotlivými vektory. Vygenerovaný test považujte za minimální detekční test. Proveďte příkaz: atalanta -l c17.lst -N c17.bench 3. Získáte soubor c17.test, který obsahuje vyšší počet vektroů (nebyla provedena kompakce vektorů), který je nejlépe využitelný pro sestavení slovníku poruch. 3. Sestavte komprimovaný slovník poruch metodou záznamu první chybné odezvy. Slovník získáme tak, že ze seznamu vygenerovaných testovacích vektorů odstraníme postupně poslední vektory a postupně spouštíme simulátor HOPE. Seznam nedetekovaných poruch bude odpovídat poruchám detekovatelným v krocích testu, odpovídajících odstraněným vektorům. 4. Obvod realizujte na přípravcích SPARTAN-3. 5. Ověřte správnou funkci realizovaného obvodu s použitím úplného detekčního testu a slovníku poruch. 6. Ověřte možnost detekce a lokalizace poruch typu t0 a t1 fyzikálně injektovaných v libovolném místě obvodu s použitím slovníku poruch (některé poruchy vloží asistent). 1. Zjistěte použitelnost slovníku pro vícenásobné poruchy zapište odezvy a vyvoďte závěr. 7. Vygenerujte test pro některý z větších benchmarkových obvodů a proveďte rozbor výsledků testu.
Syntéza BIST Seznamte se s apletem pro syntézu obvodů BIST na adrese: http://www.ui.savba.sk/diag/tools/bist/index.html Navrhněte vlastní vestavěné diagnostické prostředky pro zadaný testovaný obvod a odsimilujte chování obvodu s BIST pomocí Modelsimu či ISE. 1. Nastavte learning module, v menu Option je možné nastavit jazyk na anglicky nebo slovensky. 2. Projděte jednotlivé kroky v režimu cvičenie. Zvolte generátor testovacích vzorků podle pokynů cvičícího. Vygenerujte VHDL kód jednotlivých komponent a celého BIST modulu. 3. Přeložte jednotlivé moduly v Modelsimu. Jako poslední překládejte modul BIST. 4. Odsimulujte test celého obvodu pomocí připravených budících signálů. Podle výsledků simulace změňte obsah registru Signature v navrhovaném BISTu tak, aby při správné funkci byl vygenerován signál BISTFAIL = 0 5. Ověřte schopnost detekovat poruchu tím, že v modulu CUT změníte funkci a odsimulujete znovu celý test.
Generování testů pro sekvenční obvody Identifikační metody Trocha teorie Při použití identifikačních metod představuje podstatnou část řešení sestavení některých ze základních posloupností, k nimž patří synchronizační, nastavovací, rozlišovací a převáděcí posloupnost. Pro sestavení prvních tří se používá některá varianta stromu následovníků (někdy též označovaného jako vývojový strom). Podle typu sestavované posloupnosti tento strom označujeme jako synchronizační, nastavovací nebo rozlišovací. Základní pravidlo pro sestavování stromu je vždy stejné: do uzlu, do něhož směřuje určitá hrana, zapisujeme následující stavy do nichž je automat převeden vstupním symbolem, přiřazeným této hraně. Jednotlivé typy stromů se liší pouze pravidly pro zjednodušení tohoto seznamu stavů a pravidly pro ukončení větve. I když pro nastavovací a synchronizační posloupnost mají určující význam hodnoty výstupu, obvykle se do stromu nezapisují. Tyto hodnoty je třeba sledovat v tabulce stavu. Největší množství informací obsahuje rozlišovací strom. Vycházíme z uzlu s jednotkovým rozkladem (všechny stavy automatu jsou v jednom bloku). Aplikace každého vstupního symbolu znamená zjemnění tohoto rozkladu, pokud se pro daný vstup vyskytují nejméně dva různé výstupní symboly. Do společného bloku zapisujeme vždy ty následující stavy, které v předchozí úrovni byly ve společném bloku a mají pro daný vstupní symbol navzájem stejný výstupní symbol. Větev se ukončí jako neprespektivní, jestliže se v jednom bloku vyskytuje určitý stav několikrát. Podobně bývá účelné (nikoli však nutné) ukončšit větev, na níž se opakuje stejný rozklad jako v předchozím uzlu. TAková větev sice nemusí být nepoužitelná, ale přidává nám do rozlišovací posloupnosti zbytečné symboly. Pokud se spokojíme s nalezením jedné rozlišovací posloupnosti, můžeme sestavování stromu ukončit ve chvíli, kdy v některém uzlu vznikne nulový rozklad. Rozlišovací posloupnost je pak tvořena vstupními symboly přiřazenými hranám na cestě od výchozího ulzu k uzlu s nulovým rozkladem. Při hledání rozliščovací posloupnosti je důležité si uvědomit, že pr některé automaty tato posloupnost neexistuje. V rozlišovacím stromu tuto skutečnost poznáme podle toho, že některé větve skončí, aniž bychom získali nulový rozklad. Při hledání synchronizační posloupnosti nás nezajímá, jaké jsou hodnoty výstupu. Proto můžeme ze stromu následovníků vynechat všechnu informaci kromě zápisu následujícího stavu. Synchronizační posloupnost je nalezena, jestliže je určitému uzlu přiřazen pouze jeden stav. Jako neprespektivní můžeme v tomto případě ukončit cesty, které neredukují počet různých stavů ve srovnání s uzlem v předcházející úrovni. Ani synchronizační posloupnost nemusí pro obecný automat existovat.
Pokud synchronizační posloupnost neexistuje je, lze její funkci nahradit kombinací nastavovací a převáděcí posloupnosti. Sestavení převáděcí posloupnosti je v podstatě základní úloha z teorie automatů, proto se jí zde nebudeme zabývat. Při hledání nastovavací posloupnosti používáme nastavovací strom, který je opět zjednodušením obecného stromu následovníků. Protože úkolem nastavovací posloupnosti je umožnit jednoznačnou identifikaci koncového stavu na základě posloupnosti výstupních symbolů, není třeba v každém uzlu rozlišovat, ze kterého výchozího stavu automat vyšel. Stačí tedy v každém bloku zapisovat určitý stav jen jednou. Nastavovací posloupnost je nalezena, vznikne-li v některém uzlu nový rozklad množin koncových stavů automatu. Cesta v nastavovacím stromě se ukončuje jako neprespektivní, jestliže se nově vzniklý rozklad vyskytuje již na některé z předcházejících úrovní. Příklad Pro automat popsaný v tabulce 3.1 sestavte rozlišovací posloupnost. a a,0 b,0 b a,0 c,1 c b,1 c,1 Tabulka 3.1: Automat Obrázek 3.1: Řešení automatu Obě cesty v rozlišovacím stromu na obrázku 3.1 musely být ukončeny, protože ve vzniklých rozkladech se opakuje jeden stav v témže bloku. Pro daný automat tedy neexistuje rozlišovací posloupnost. Úlohy Pro automat popsaný tabulkou stavů v tabulce 3.2 sestavte rozlišovací posloupnost. Odvoďte výstupní posloupnosti, které identifikují jednotlivé výchozí stavy. 1 4,1 4,1 2 1,0 5,1 3 5,,1
4 3,1 4,1 5 2,1 5,1 Tabulka 3.2: Tabulka stavů automatu Pro automat popsaný tabulkou stavů v tabulce 3.3 sestavte synchronizační posloupnost. a a,0 c,1 b a,0 b,0 c a,0 c,1 d b,1 a,1 e c,1 d,0 Tabulka 3.3: Tabulka stavů automatu Pro automat popsaný tabulkou stavů v tabulce 3.4 sestavte synchronizační posloupnost. a b,0 a,1 b c,1 a,1 c d,0 c,0 d a,1 c,0 Tabulka 3.4: Tabulka stavů automatu Prop automat popsaný tabulkou stavů v tabulce 3.5 sestavte synchronizační posloupnost. a a,0 b,1 b a,0 c,0 c c,1 d,0 d d,0 b,1 Tabulka 3.5: Tabulka stavů automatu Strukturní metody Trocha teorie Formálním prostředkem většiny strukturních metod testování sekvenčních obvodů je náhrada sekvenčního obvodu kaskádou kombinačních obvodů, vzniklých eliminací zpětných vazeb.
Jeden stupeň kaskády vznikne rozpojením všech zpětovazebních smyček a náhradou každé smyčky jedním vstupem a jedním výstupem. Tyto nově vzniklé vstupy a výstupy propojují jednotlivé stupně kaskády tak, aby souhlasil index vnitřní proměnné. Ve vzniklé kaskádě kombinačních obvodů můžeme pak odvodit testovací posloupnost pro sekvenční obvod, případně též posloupnost nutnou pro nastavení požadovaného počátečního stavu v sekvenčním obvodu. Obě tyto úlohy řešíme v kombinačním obvodu, a proto pro ně můžeme použít kteroukoliv ze známých metod generování testů pro kombinační obvody. Úloha Pro obvod na následujícím obrázku navrhněte transformaci na kaskádu kombinačních obvodů, umožňující generovat test některou ze strukturních metod. Nakreslete alespoň dva stupně kaskády a označte proměnné. Obrázek 3.2: Sekvenční obvod určen pro transformaci Literatura Diagnostika a spolehlivost, J. Hlavička Diagnostika a spolehlivost cvičení, J. Hlavička