JTAG Boundary Scan
| TechnikaŚcieżka krawędziowa JTAG, to tani i skuteczny sposób testowania i programowania układów. Jej zalety wykraczają poza pierwotne założenia standardu, dla którego została stworzona. Co więcej, wraz ze wzrostem złożoności urządzeń, technika JTAG Boundary Scan staje się coraz bardziej cenna. Pomysł wprowadzenia ścieżki krawędziowej pojawił się już w latach 80., a został zestandaryzowany w 1990 roku, jako IEEE1149.1-1190. Wraz z upływem lat pierwotna koncepcja zaproponowana przez JTAG (Joint Test Action Group) ewoluowała, aby spełniać rosnące oczekiwania producentów elektroniki i ostatecznie została zaakceptowana przez inżynierów, już jako IEEE1149.1a. Od tego czasu stała się nieodzownym elementem większości cyfrowych układów scalonych, a co za tym idzie, także i całych układów elektronicznych w różnego rodzaju urządzeniach.
Ścieżka krawędziowa JTAG, to tani i skuteczny sposób testowania i programowania układów. Jej zalety wykraczają poza pierwotne założenia standardu, dla którego została stworzona. Co więcej, wraz ze wzrostem złożoności urządzeń, technika JTAG Boundary Scan staje się coraz bardziej cenna.
Pomysł wprowadzenia ścieżki krawędziowej pojawił się już w latach 80., a został zestandaryzowany w 1990 roku, jako IEEE1149.1-1190. Wraz z upływem lat pierwotna koncepcja zaproponowana przez JTAG (Joint Test Action Group) ewoluowała, aby spełniać rosnące oczekiwania producentów elektroniki i ostatecznie została zaakceptowana przez inżynierów, już jako IEEE1149.1a. Od tego czasu stała się nieodzownym elementem większości cyfrowych układów scalonych, a co za tym idzie, także i całych układów elektronicznych w różnego rodzaju urządzeniach.
Koncepcja ścieżki krawędziowej sprowadza się do obudowania układów scalonych specjalnymi szeregowo połączonymi rejestrami z równoległym wpisem i odczytem. Naturalnie, rejestry te są scalone razem z resztą układu i w trybie normalnej pracy są przeźroczyste dla całego systemu - tzn. wprowadzają jedynie niewielkie, pomijalne opóźnienia. Schemat blokowy układu zgodnego z JTAG przedstawiony jest na rysunku 1.
Jak działa JTAG?
Zasada działania jest prosta. Rejestr przesuwny powstały z połączenia ścieżek brzegowych znajdujących się na płytce układów scalonych pozwala na wprowadzenie do wnętrza urządzenia dowolnych sygnałów. Sygnały te, przenoszone są poprzez szeregowe przesuwanie rejestru, z częstotliwością generowaną przez tester. W momencie przejścia w tryb testowania, zostaną one wczytane przez poszczególne układy scalone, jako dane wejściowe, a wygenerowana odpowiedź zostanie zatrzaśnięta w innej części rejestrów ścieżki. Następnie, wysuwając dane z rejestru poprzez wyjście szeregowe, otrzymuje się odpowiedź na zadane wektory testowe. Nie ma potrzeby, aby rejestry wchodzące w skład ścieżki przesuwały w obie strony.
Technikę JTAG można wykorzystywać w celu przetestowania różnych elementów urządzenia. Mając układ elektroniczny wspierający technikę JTAG, możliwe jest zarówno testowanie samych układów scalonych obsługujących JTAG, jak i połączeń pomiędzy układami. Co więcej, da się także częściowo przetestować te elementy, które są pozbawione rejestrów ścieżki skanującej, a także układy takie jak pamięci RAM. Problem testowania połączeń sprowadza się do wprowadzania wektorów testowych w komórki ścieżki znajdujące się na wyjściach układów i odczytywania wartości z komórek poprzedzających wejścia innych układów. Oczywiście obie czynności wykonywane są poprzez przesuwanie rejestru i mogą zachodzić jednocześnie.
Testowanie układów nie wyposażonych we własne komórki ścieżki brzegowej odbywa się na tej samej zasadzie co testowanie połączeń pomiędzy układami, z tą różnicą, że podczas odczytu wartości z komórek, należy sprawdzić, czy pobrane wartości zgadzają się z wartościami, jakie powinny pojawić się na wyjściu testowanego układu po podaniu wprowadzonego wektora testowego. Odpowiednia generacja danych testowych wprowadzanych w ścieżkę pozwala na optymalizację procesu testowania i przeprowadzanie wielu testów na raz. Konieczne jest też wstępne przetestowanie integralności samej ścieżki. Aby przeprowadzić skanowanie JTAG, konieczne jest posiadanie testera, zgodnego ze specyfikacją standardu. To proste urządzenie musi mieć następujące wyprowadzenia:
- wyjście Test Data In - na które podawany jest wsuwany do rejestru bit danych,
- wyjście Test Mode Select - służące do wyboru trybu pracy układu, gdzie jeden stan oznacza pracę w trybie testowania, a drugi pracę w trybie normalnym - z pominięciem wartości z rejestru ścieżki,
- wejście Test Data Out - które odczytuje bity wysuwane z rejestru,
- wyjście zegarowe Test Clock - które steruje częstotliwością pracy układu w trybie testowania.
Ponadto, tester najczęściej będzie wyposażony w interfejs komunikacyjny pozwalający na połączenie go z komputerem, w celu pobrania wektorów testowych i zwrócenia wyników przeprowadzonego testu.
Zalety testowania JTAG
Powyżej opisane cechy standardu ścieżki krawędziowej obrazują podstawowe możliwości udostępniane przez tę technikę, lecz nie wskazują bezpośrednio zalet skorzystania z rozwiązania JTAG. A tych jest wiele. Przede wszystkim, jest to technika prosta w implementacji i tania w stosowaniu. Szczególnie pozytywnie się wyróżnia, jeśli porównać ją do innych dostępnych metod testowania układów elektronicznych. O ile większość z testów dostępnych za pomocą ścieżki krawędziowej jest możliwa do wykonania także za pomocą tzw. nail-bed, czyli podłoża z drobnymi, gęsto rozmieszczonymi szpilkami, stykającymi się w punktach kontaktowych z płytką drukowaną, to ta technika jest nieporównywalnie droższa. Wykonanie testera typu nail-bed to koszt rzędu tysięcy, do setek tysięcy dolarów, w zależności od złożoności i częstotliwości pracy układu. Należy także pamiętać o dodatkowych kosztach związanych ze zwiększeniem powierzchni płytki drukowanej, co wynika z konieczności umieszczenia dodatkowych punktów testowych na powierzchni PCB. Oczywiście, z racji swych ograniczeń, JTAG nie może zastąpić pełnej funkcjonalności testera igłowego, związanej np z testowaniem układu pod kątem szybkich impulsów i innych niestandardowych sygnałów. Niemniej, co ciekawe, bywa i tak, że ścieżka brzegowa oferuje możliwości, których zwykłe łoże ze szpilek nie jest w stanie zapewnić. Przykładem jest testowanie układów BGA, montowanych najczęściej wtedy, gdy producentowi bardzo zależy na zmniejszeniu docelowych wymiarów urządzenia. Aby dostosować układ BGA do testowania za pomocą igieł konieczne by było wyprowadzenie bardzo wielu dodatkowych punktów testowych, po jednej lub obu stronach płytki drukowanej, co spowodowałoby znaczny wzrost jej powierzchni. Co prawda, JTAG nie jest jedyną sprawną metodą testowania układów BGA w systemie, ale konkurencyjna opcja, polegająca na prześwietlaniu zmontowanej płytki, za pomocą promieni X, nie tylko wymaga większych nakładów, ale może być niebezpieczna zarówno dla testowanej elektroniki, jak i pracowników laboratorium.
Kolejna duża zaleta JTAG to możliwość testowania układu przez cały czas jego życia - od początku produkcji, aż do chwili, w której urządzenie zostaje wyłączone po raz ostatni. Testowanie JTAG pozwala w dowolnej chwili wprowadzić gotowe urządzenie w stan testowania i w prosty sposób ocenić jego sprawność, bez konieczności wymontowywania podzespołów czy też umieszczania systemu w specjalnych maszynach testujących. Wbudowanie testera na płytkę drukowaną z układem pozwala na przeprowadzenie testów nawet bez konieczności dołączania jakichkolwiek zewnętrznych urządzeń testujących. Dzięki temu możliwe staje się regularne kontrolowanie sprawności układu, a co za tym idzie, zapewnienie wysokiego poziomu bezpieczeństwa i jakości pracy całego urządzenia.
Nie do przecenienia jest także korzyść wynikająca ze znacznego uproszczenia procesu generacji testów. Wyznaczanie wektorów testowych, wymaga wielokrotnych symulacji działania sprawnego i niesprawnego urządzenia - tzn - posiadającego konkretne uszkodzenie, w celu znalezienia takiej kombinacji sygnałów wejściowych, która zapewni pobudzenie błędu i propagację zafałszowanego sygnału na któreś z wyjść układu. W przypadku występowania w układzie elementów pamiętających - czyli gdy układ jest automatem, generacja testów to wyznaczanie ciągów wektorów, które po podaniu w odpowiedniej kolejności wprowadzą najpierw automat w odpowiedni stan, a następnie pozwolą na pobudzenie i propagację uszkodzenia. Ponieważ proces wyznaczania testów bywa bardzo czasochłonny, niekiedy stosuje się testowanie losowe, które pozwala zaoszczędzić bardzo wiele czasu potrzebnego na obliczanie wektorów, a bardzo często daje dosyć duże pokrycie błędów. Niestety, czas wyznaczania wektorów rośnie, a procent pokrycia uszkodzeń maleje znacznie szybciej niż liniowo, wraz ze wzrostem złożoności układu. I w tym momencie ścieżka krawędziowa pozwala bardzo wiele zaoszczędzić. Ponieważ można dzięki niej wprowadzić wektory testowe do wnętrza testowanego układu, z pominięciem otaczających go podzespołów, a jednocześnie pozwala równie sprawnie wydobyć reakcję na zadany wektor testowy, proces generacji testów znacznie się upraszcza. W praktyce, możliwe staje się po prostu wykorzystanie w gotowym układzie testów, które wyznaczone były dla poszczególnych podzespołów, bez konieczności wtórnej i czasochłonnej generacji ani estymacji pokrycia uszkodzeń.
Ostatecznie, pomimo cyfrowej natury danych przesyłanych przez JTAG, nic nie stoi na przeszkodzie, by testować układy pod kątem niektórych analogowych właściwości, takich jak pojawiające się dodatkowe pojemności - i wynikających z nich uszkodzeń objawiających się np opóźnieniami. Możliwe jest także testowanie wrażliwości układu pracującego przy różnej częstotliwości zegarowej, co wynika z faktu, że w czasie testowania, urządzenie pracuje z częstotliwością testera.
Co jeszcze może JTAG?
Drugą, bardzo istotną kwestią, w której ścieżka skanująca ma zastosowanie, jest programowanie układów. Producenci, którzy w swoich układach scalonych zaimplementowali interfejs JTAG umożliwiają skorzystanie z niego, w celu wprowadzenia programów do pamięci Flash tychże układów lub do konfiguracji FPGA. Zalety tego rozwiązania są dosyć duże. Przestaje być problemem programowanie w systemie (ISP - In System Programming), gdyż nie trzeba już planować dodatkowych połączeń, które służyłyby procedurze programowania. Nie trzeba też zaopatrywać się w różnego rodzaju programatory, różniące się konstrukcją pomiędzy poszczególnymi rodzinami układów programowalnych. Co więcej, programowanie ISP pozwala uprościć proces produkcji, poprzez montaż dostarczonych od producenta, jednakowych układów scalonych na każdej płytce, bez konieczności wcześniejszego umieszczania ich w programatorach i wgrywania kodu. Dzięki temu, minimalizowane jest niebezpieczeństwo uszkodzenia przez wyładowania elektrostatyczne.
Wygoda programowania, oferowana przez JTAG pozwala na sprawne aktualizacje oprogramowania w urządzeniach działających u klientów końcowych. |
Programowanie może być również metodą testowania. Próba zaprogramowania na kilka sposobów układu FPGA jest dobrym testem weryfikującym sprawność tranzystorów sterujących połączeniami pomiędzy blokami logicznymi. W związku z tym, także i kod programujący może być wprowadzony do ciągu wsuwanych do ścieżki bitów testowych. Ostatecznie, wygoda programowania, oferowana przez JTAG pozwala na sprawne aktualizacje oprogramowania w urządzeniach działających u klientów końcowych. W tej sytuacji proces programowania polegać będzie na załadowaniu nowego oprogramowania firmware do pamięci Flash urządzenia, a następnie zrestartowaniu całego systemu. Nowe oprogramowanie zostanie zaczytane automatycznie po restarcie sprzętu i całość będzie ponownie gotowa do pracy, bez ingerencji do wnętrza obudowy.
Wsparcie producentów
Sprawne wykorzystanie wszystkich możliwości JTAG, wymaga programu, potrafiącego wiernie symulować zachowanie komórek ścieżki krawędziowej, w zastosowanych układach. Na rynku dostępne jest oprogramowanie, pozwalające na kompleksowe sterowanie testowanie i programowaniem JTAG. Wśród jego producentów są takie firmy jak JTAG Technologies, XJTAG, Corelis, Intellitech, Universal Scan, Applegate czy Temento Sytems. Pakiety te wykorzystują pliki BSDL, dostarczane przez producentów układów scalonych zgodnych z JTAG. Pliki te zawierają opis umieszczonych w układzie komórek JTAG i ich otoczenia. Całość zapisana jest w języku BDSL (Boundary-Scan Description Language), który jest złożony z elementów składni języka VHDL. Na podstawie wgranych plików i ciągu wygenerowanych wektorów testowych, oprogramowanie sterujące potrafi dość dokładnie obliczyć przewidywany procent pokrycia uszkodzeń. Umożliwia także precyzyjne zlokalizowanie uszkodzenia, w przypadku, gdy otrzymany na wyjściu ścieżki ciąg bitów, nie będzie zgadzał się z przewidywanym.
Podsumowując, zastosowanie ścieżki brzegowej w projektach układów cyfrowych pozwala na uproszczenie ich konstrukcji, zmniejszenie rozmiarów, usprawnienie procesu produkcyjnego, a przede wszystkim wydajne przetestowanie wyprodukowanych układów, tak by uniknąć wypuszczania na rynek zbyt dużej ilości niesprawnych podzespołów. Producenci układów scalonych znając te fakty chętnie wprowadzają boundary-scan do swoich produktów i oferując bez dodatkowych opłat, konieczne do symulacji pliki BDL. Wygląda na to, że korzyści płynące z wbudowania ścieżki krawędziowej w produkowane układy bezsprzecznie przewyższają ewentualny wzrost nakładów związany z doborem podzespołów zgodnych z JTAG.
Marcin Karbowniczek