Zwiększanie wiarygodności systemów wykorzystujących układy programowalne Andrzej Kraśniewski PRUS, 17 stycznia 2013 r.
wiarygodność (dependability) niezawodność bezpieczeństwo działania (safety) Wiarygodność zabezpieczenie przed nieuprawnionym użyciem dostępność (availability) testowalność łatwość naprawy łatwość utrzymania (maintainability) zapewnienie odpowiedniej wiarygodności = przeciwdziałanie szeroko rozumianym uszkodzeniom/błędom (faults) 2
Uszkodzenia/błędy błędy projektowe Uszkodzenia/błędy defekty fizyczne wynikające z niedoskonałości procesu wytwarzania zakłócenia elektromagnetyczne występujące podczas użytkowania systemu umyślne bądź przypadkowe zakłócenia działania systemu przez człowieka... 3
Przeciwdziałanie uszkodzeniom/błędom usuwanie uszkodzeń/błędów (fault removal) weryfikacja - wykrywanie błędów projektowania testowanie (fizycznej realizacji) - wykrywanie uszkodzeń będących efektem niedoskonałości procesu wytwarzania tolerowanie uszkodzeń/błędów w trakcie normalnej pracy (fault tolerance) 4
Testowanie a inne metody przeciwdziałania błędom Testowanie 5
Testowanie cel sprawdzenie, czy system zachowuje się poprawnie, tzn. zgodnie ze specyfikacją (specyfikacją projektu) 6
Czynności związane z testowaniem PRZYGOTOWANIE TESTOWANIA wyznaczanie testów (test pattern generation) ocena testów (test pattern evaluation) zaprogramowanie testera (test program development) 7
Wyznaczanie testów metody Wektor wejściowy x jest testem dla uszkodzenia f, jeżeli odpowiedź układu z uszkodzeniem różni się od odpowiedzi układu sprawnego, tzn. jeżeli y f (x) y(x) metody oparte na modelu strukturalnym (structure-oriented approach) układ reprezentowany przez zbiór elementów i połączeń; uszkodzenia - związane z elementami i połączeniami metody oparte na modelu funkcjonalnym (function, behaviororiented approach) układ traktowany jako "czarna skrzynka" realizująca określoną funkcję (ogólna struktura może być wykorzystana); uszkodzenia - zmiany funkcji układu 8
Model funkcjonalny n układ kombinacyjny m testowanie wyczerpujące (sprawdzenie tablicy prawdy) 2 n testów (wektorów wejściowych) realizowalność? 9
Model strukturalny uszkodzenie np. s-a-0, s-a-1 n układ kombinacyjny m test (wektor testowy) (a) pobudzenie uszkodzenia (fault sensitization, fault excitation) (b) propagacja uszkodzenia (fault propagation) wyznaczenie testu dla zadanego uszkodzenia - problem NP-zupełny 10
Model strukturalny np. SSL single stuck-at line procedury ATPG np. algorytm D symulacja uszkodzeń (fault simulation) pokrycie uszkodzeń (fault coverage) 11
Testowanie losowe (pseudolosowe) obserwacja każdy wektor wyznaczony jako test danego uszkodzenia wykrywa pewną liczbę innych uszkodzeń losowo wygenerowany wektor wykrywa pewną liczbę uszkodzeń przykład: układ kombinacyjny o 20 wejściach testowanie wyczerpujące (FC = 1.0): liczba wektorów = 2 20 10 6 testowanie losowe 12
Model funkcjonalny n m blok kombinacyjny m rejestr stanu układ sekwencyjny testowanie wyczerpujące (sprawdzenie tablicy przejść-wyjść) 2 n+m testów (wektorów wejściowych) przy założeniu, że można ustawić dowolną zawartość rejestru stanu realizowalność? m 13
Model strukturalny uszkodzenie np. s-a-0, s-a-1 n m m rejestr stanu układ sekwencyjny m istnieją procedury wyznaczania testów, ale dla dużych układów trudno osiągnąć zadowalające pokrycie uszkodzeń 14
Koszt testowania koszt tranzystora w mikroprocesorze koszt testowania wkrótce przekroczy koszt zaprojektowania/wytworzenia źródło: Saluja, 2012 źródło: ITR-Semiconductor (SIA Silicon Industry Association) 15
Cost of Manufacturing Testing in 2010 Koszt testowania 0.5-1.0 GHz, analog instruments,1024 digital pins: ATE purchase price = $4.0M + 1,024 x $5,000 = $9.12M Running cost (five-year linear depreciation) = Depreciation + Maintenance + Operation = $1.80M + $0.185M + $1.5M = $3.485M/year Test cost (24 hour ATE operation) = $3.485M/(365 x 24 x 3,600) = 11.05 cents/second źródło: Saluja, 2012 problem testowania trzeba rozwiązywać na etapie projektowania układu 16
Problemy z testowaniem a projektowanie proste reguły "dobrego" projektowania unikaj logiki asynchronicznej używaj regularnych struktur logicznych zapewnij możliwość inicjalizacji logiki sekwencyjnej... metody specjalne PROJEKTOWANIE UŁATWIAJĄCE TESTOWANIE (Design for Testability) poprawa testowalności kosztem dodatkowej logiki dodatkowa logika nie ma wpływu na realizację funkcji układu w trybie 17
Projektowanie ułatwiające testowanie idea poprawić sterowalność (łatwość wymuszenia określonej wartości logicznej w wyniku zmian na wejściu układu) obserwowalność (łatwość określenia w wyniku obserwacji wyjścia układu stanu logicznego węzła) wewnętrznych węzłów logicznych podzielić układ na niezależnie testowalne fragmenty 18
Dodatkowe doprowadzenia 19
Dodatkowe doprowadzenia 20
Scan Path ścieżka przesuwająca ścieżka testująca ścieżka sterująco-obserwacyjna idea: UKŁAD SEKWENCYJNY przygotowanie testowania UKŁAD KOMBINACYJNY 21
koncepcja realizacji: prosty dostęp do elementów pamięci (przerzutników) Scan Path tryby pracy: a) normalny (SMS = 0) dodatkowa logika nie ma wpływu na działanie układu b) przesuwanie (SMS = 1) ustawianie/odczyt stanu przerzutników podczas testowania 22
Scan Path wejście wyjście blok kombinacyjny FF FF FF CLK 23
Scan Path wejście wyjście blok kombinacyjny SFF SFF SCAN_OUT SFF CLK SCAN_IN źródło: Agrawal&Bushnell, 2001 Scan Path standard JTAG (Joint Test Action Group) / IEEE 1149.1 24
Scan Path PROBLEMY znaczny koszt przygotowania testowania wątpliwa wiarygodność testowania (w przypadku korzystania z modelu SSL) testowanie losowe testowanie (pseudo)wyczerpujące duża objętość danych (pamięć testera) długi czas testowania brak możliwości testowania z normalną szybkością działania układu generacja testów i kompakcja odpowiedzi w układzie UKŁAD SAMOTESTOWALNY 25
Układ samotestowalny 26
Generator testów LFSR (z sekwencją o max. długości) automat komórkowy generator sekwencji deterministycznej Linear Feedback Shift Register (LFSR) źródło: Agrawal&Bushnell, 2001 27
Kompakcja odpowiedzi idea zmiana w strumieniu danych podlegających kompakcji będąca wynikiem uszkodzenia w układzie zmiana sygnatury (z dużym prawdopodobieństwem) 28
Kompaktor odpowiedzi oparty na LFSR (z sekwencją o max. długości) oparty na automacie komórkowym... źródło: Agrawal&Bushnell, 2001 29
Techniki samotestowania Techniki BIST (Built-In Self-Test) typy wbudowanych modułów zasady rozmieszczania modułów w strukturze układu procedura testowania Korzyści/zalety testowanie bez potrzeby użycia drogiego testera procedura przygotowania testowania nie obejmuje wyznaczania testów (ale bardziej skomplikowana ocena jakości) testowanie z normalną szybkością pracy układu (at-speed testing), co umożliwia wykrywanie uszkodzeń opóźnieniowych Wady znaczny nadmiar układowy (dodatkowy koszt) trudności w automatyzacji projektowania 30
Testowanie układów (re)programowalnych Specyfika testowania układów FPGA i CPLD dwa rodzaje testowania testowanie układu niezaprogramowanego (application-independent testing) testowanie układu zaprogramowanego (application-dependent testing) duża wariancja parametrów związanych z programowanymi połączeniami potrzeba testowania uszkodzeń opóźnieniowych 31
Testowanie układów (re)programowalnych idea: rekonfiguracja na czas testowania (samo)testowanie fragmentu FPGA przy użyciu generatorów testów i kompaktorów odpowiedzi utworzonych z pozostałych modułów FPGA nie wymaga nadmiaru układowego!!! testowanie z normalną szybkością (at-speed) zastosowanie testowanie układu niezaprogramowanego podstawowe funkcje PLB, matryce połączeń testowanie układu zaprogramowanego w warunkach bliskich normalnemu działaniu 32
PWSC Projektowanie Wiarygodnych Systemów Cyfrowych zakres tematyczny testowanie i projektowanie układów łatwo i samotestowalnych projektowanie układów i systemów odpornych na uszkodzenia/błędy pojawiające się w trakcie normalnej pracy (tolerujących uszkodzenia) naturalne, nieintencjonalne wprowadzane celowo (np. w celu złamania kryptosystemu) projekty - rozwiązania w strukturach FPGA system komputerowo-wspomaganego projektowania Quartus2 Web Edition i/lub ModelSim-Altera Starter Edition stanowiska laboratoryjne wyposażone m.in. w płytki DE2 firmy Altera z układem Cyclone2, płytki Spartan 3E-Starter firmy Xilinx i inne 33