Projektowanie płytek drukowanych – wskazówki dla projektantów
Wstęp
Poniższy rozdział zawiera pewne wskazówki, dla projektantów płytek drukowanych, dotyczących poprawienia testowalności płytek drukowanych z wykorzystaniem systemu XJTAG. Poniższe zalecenia nie powinny stanowić sztywnych i twardych wskazań ale powinny być traktowane jako sugestie. Projektowanie dla poprawienia testowalności nie powinno być jedynym wyznacznikiem w tworzeniu produktu ale stanowić jako jeden z pozostałych warunków, które są brane pod uwagę podczas projektowania. Są to: funkcjonalność, koszty elementów, wielkość płytki oraz poziom skomplikowania.
Wykorzystanie układów JTAG
System XJTAG umożliwia testowanie układów typu non-JTAG, ale pomimo tej możliwości, najlepiej jest wykorzystywać układy typu JTAG, gdzie tylko jest to możliwe. Im większa ilość zastosowanych układów JTAG, tym większa ilość węzłów sieci JTAG znajduję się na płytce. Wówczas obszar testowania płytki zwiększa się a czas potrzebny na przygotowanie procedury testowej znacznie się skraca.
Sprawdzanie plików BSDL dla układów JTAG
Układy JTAG wymagają plików BSDL (Boundary Scan Description Language) i powinny być dostępne dla każdego układu JTAG. Pliki te zawierają opis struktury łańcucha JTAG Boundary Scan. Należy wcześniej się upewnić się czy pliki BSDL są dostępne, najczęściej na stronie producenta oraz czy plik BSDL jest aktualny i zgodny ze standardem. Składnia oraz poprawność pliku BSDL jest sprawdzana przez system XJTAG.
Upewnić się czy łańcuch JTAG jest poprawnie zaprojektowany i wyprowadzony na zewnątrz
Należy się upewnić czy wszystkie układy JTAG mają poprawnie wyprowadzone sygnały z wewnętrznego kontrolera TAP. Preferuję się aby sygnały JTAG poprowadzone zostały z dala od innych aktywnych sygnałów oraz odseparowane za pomocą linii zasilających (VCC lub GND). Należy również stosować odpowiednio dopasowane (standardowe) konektory aby umożliwić łatwy dostęp do sygnałów JTAG.
Odpowiednie zakończenie sygnałów JTAG
Sygnał TCK powinien być zakończony rezystorem 68 Ω podpiętym szeregowo oraz zwarty do masy kondensatorem 100 pF. Sygnały TDI oraz TMS powinny być podciągnięte do linii zasilających za pomocą rezystora 10 kΩ. Sygnał TDO również podciąga się do zasilania rezystorem 10 kΩ oraz dodatkowo podłącza się szeregowo rezystory 22 Ω przy wyprowadzeniu z ostatniego układu w łańcuchu. Również linia nTRST wymaga podpięcia do masy rezystorem aby zapobiec wejściowym upływom. Wartość rezystora powinna być indywidualnie dobrana.
Testowanie układów synchronicznych
Układy synchroniczne, również mogą być testowane przez system XJTAG, pod warunkiem, że możliwa jest kontrola nad sygnałem zegarowym. Na przykład: pamięć SDRAM podłączona do układu FPGA może być testowana w momencie kiedy sygnał zegarowy będzie kontrolowany przez układ JTAG. Jeżeli natomiast pamięć SDRAM będzie taktowana samodzielnym zegarem, wówczas XJTAG nie będzie mógł synchronizować wektory testujące wysyłane do SDRAM w czasie rzeczywistym.
Jeżeli możliwe jest aktywowanie łańcucha boundary scan w układzie CPLD lub FPGA, który będzie sterował pamięcią SDRAM, należy samodzielny sygnał zegarowy poprowadzić przez ten układ sterujący. Dodatkowo można zastosować bufor.
Uwaga na Watchdog’a
Jeżeli projekt zawiera watchdog, należy upewnić się że układ ten może być wyłączony podczas przeprowadzania testów. Watchdog’a można wyłączyć wykorzystując obejście sygnałów watchdog’a. Drugie rozwiązanie to sterowanie układem watchdog za pomocą JTAG’a. Nieokreślone skutki mogą się pojawić gdy układ watchdog’a wyśle sygnały resetujące podczas testów. Alternatywnym rozwiązaniem jest upewnienie się, że czas programowy watchdog’a jest dłuższy od czasu przeprowadzenia testów.
Zabezpieczenie przez niebezpieczeństwem wystąpienia przesłuchu pomiędzy liniami JTAG
Bardzo ważne jest aby przeprowadzone operacje odbyły się poprawnie, bez przekłamań na liniach JTAG. Szczególnie dotyczy to linii TCK oraz TMS, ponieważ to one są odpowiedzialne za kontrolowanie łańcucha. Dodatkowo długość linii oraz pojemność pasożytnicza powinna być równa dla każdej z linii.
Buforowanie sygnałów TAP
Jeżeli to możliwe, należy buforować sygnały JTAG aby minimalizować szum, niedopasowanie impedancji oraz aby poprawić obciążalność wyjściową.
Zapasowe wyprowadzenia pinów układów JTAG
Dodatkowe wyprowadzenia sygnałów z nieużywanych pinów układów JTAG umożliwiają w niektórych sytuacjach, monitorowanie dodatkowych obszarów na płytce pod warunkiem, że nie będą wchodziły w konflikt z normalnymi operacjami układów. Procedura ta może znacznie poszerzyć obszar testowalności.
W pełni wykorzystać wyprowadzenia I/O układów JTAG
W przypadku gdy układ JTAG połączony jest z układem non-JTAG, należy wykorzystać piny układu JTAG aby przeprowadzić komunikację pomiędzy tymi układami. W tym celu wysyłamy odpowiednią sekwencję danych do układu non-JTAG a następnie odczytujemy odpowiedź.
Obejście układu opcjonalnego
Jeżeli na płytce znajduję się układ JTAG, którego obecność jego jest opcjonalna, należy zapewnić. odpowiednio obejście linii danych. W momencie gdy opcjonalny układ będzie nie wykorzystany (nie zamontowany) wówczas należy odpowiednio połączyć linie danych.
Dodatkowa opcjonalna płyta zewnętrzna
Jeżeli do płyty głównej dołączona jest dodatkowa płyta zewnętrzna, wówczas możemy do niej również poprowadzić łańcuch JTAG. Należy jedynie pamiętać, aby wykonać odpowiedni układ logiczny do detekcji płytki aby zapewnić odpowiednie poprowadzenie linii danych w momencie gdy płytka nie będzie podłączona.
Układy typu ASIC
Jeżeli na płytce będą znajdować się układy ASIC, projektant powinien wziąć pod uwagę połączenia go z układem JTAG.
Dostęp do programowalnych układów
Jeżeli płytka wymaga zastosowania układów programowalnych (EEPROM, Flash, FPGA, CPLD) a układy te nie mają implementacji JTAG, wówczas dostęp do wszystkich pinów jest możliwy za pośrednictwem pinów układu JTAG.
Czasami wykorzystuje się krótkie rozgałęzienie łańcucha JTAG aby kontrolować wyprowadzenie układów, którego stan często zmienia się (sygnał nWE układu pamięci Flash). Takie rozwiązanie skraca długość łańcucha oraz poprawia oraz zapewnia lepszą kontrolę.
Pogrupowane układy logiczne
Jeżeli płytka będzie zawierała kilka układów logicznych typu non-JTAG to należy je pogrupować w taki sposób aby tworzyły klaster zakleszczony pomiedzy układami JTAG. Wówczas można kontrolować sygnały wejściowe oraz monitorować sygnały wyjściowe. Należy się upewnić, że ilość węzłów łańcucha JTAG jest wystarczająca aby przeprowadzić pełne testy. Jeżeli liczba węzłów jest niewystarczająca oraz jeżeli to możliwe należy dodać kolejny układ JTAG.
Testowanie układów peryferyjnych I/O
Testowanie wyjściowych układów peryferyjnych oraz złączy możliwe jest kiedy połączone są z układem JTAG. Poszerzenie testowalności układów zewnętrznych najlepiej wykonać za pomocą zewnętrznej płytki XJIO. Jeżeli testowanie zewnętrznych układów nie jest możliwe tym sposobem można zastosować pętle zwrotną.
Testowanie wielu płyt jednocześnie
Jeżeli projekt składa się z kilku płytek to należy rozważyć przeprowadzenie testów całego złożonego układu. Wówczas należy pamiętać aby poprowadzić sygnały zasilania oraz JTAG przez wszystkie testowane płytki.
Układy analogowe
Technika JTAG Boundary Scan najlepiej sprawdza się testując układy cyfrowe, natomiast w przypadku układów analogowych należy znacznie dokładniej zaprojektować procedurę testowania. Można do układów JTAG doprowadzić sygnały wejściowe lub wyjściowe i odpowiednio przetworzyć. Jednym z dobrych rozwiązań jest dołączenie przetworników ADC oraz DAC. Dodatkowe przetworniki umożliwiają komunikację z układami analogowymi za pomocą interfejsów cyfrowych.
Ostrożnie z układami peryferyjnymi podłączonymi do układów programowalnych
Przykładowo, jeżeli do układu programowalnego podłączony jest inny układ na szynie IIC, wówczas trudne a czasami niemożliwe jest wykonać testy tego układu za pomocą XJTAG. Należy wówczas wyprowadzenia szyny IIC z tego układu wyprowadzić na zewnątrz płytki. Wówczas wykonanie testów będzie możliwe.
Wykorzystać w pełni inteligentne układy na płytce oraz zaawansowane właściwości XJTAG
Jeżeli na płytce znajdują się układy, których nie można przetestować należy umiejętnie wykorzystać możliwości XJTAG jakie daje tworzenie procedur testowych z wykorzystaniem języka wysokiego poziomu XJEase Language. Jeżeli wykonanie testu bezpośrednio jest nie możliwe, można wykorzystać inteligentne układy. Na przykład: mały program może być załadowany do pamięci Flash na płytce lub do układu CPLD, który będzie aktywował układ FPGA, CPLD lub mikrokontroler, a następnie wykona testy niedostępnych układów non-JTAG.
Wykorzystanie nieulotnej pamięci do przechowywania konfiguracji
Można użyć nieulotnej pamięci znajdującej się na płytce aby przechować dane potrzebne do przeprowadzenia operacji testowania np.: opcje testowania, numery seryjne, numery MAC itp.
Glossary
ADC | Analog to Digital Converter |
ASIC | Application Specific Integrated Circuit |
BSDL | Boundary Scan Description Language |
CPLD | Complex Programmable Logic Device |
DAC | Digital to Analog Converter |
DFT | Design for Test(ability) |
EEPROM | Electrically Erasable and Programmable Read Only Memory |
FPGA | Field Programmable Gate Array |
IEEE | Institute of Electrical and Electronics Engineers |
1149.1 | IEEE Standard 1149.x: 1149.1: Test Access Port and boundary scan architecture 1149.6: AC coupled and differential signals (see www.ieee.org) |
IIC | Inter-Integrated Circuit (I2C) |
I/O | Input / Output |
JTAG | Joint Test Action Group |
NTRST | Test Reset (Active low TAP Signal) |
PCB | Printed Circuit Board |
STAPL | Standard Test And Programming Language |
SVF | Serial Vector Format |
TAP | Test Access Port (the 4- or 5-wire interface to a boundary scan device) |
TCK | Test Clock (TAP Signal) |
TDI | Test Data Input (TAP signal) |
TDO | Test Data Output (TAP Signal) |
TMS | Test Mode Select (TAP Signal) |
XJTAG | A suite of tools aiding the development and test of electronic systems |