EMBEDDED TECHNOLOGY NEWS
Nieperiodyczny biuletyn nowości technicznych dla partnerów handlowych QTTC
Wstęp do testu płytki systemem XJTAG Boundary Scan
ver. 2.0 (19.06.2008 )
26
QUANTUM Korporacja Transferu Technologii Sp. z o. o., ul. Wystawowa 1, 51-618 Wrocław http://www.quantum.com.pl/ http://www.embedded.com.pl/ http://www.qnx.com.pl/
Spis treści
Opis płytki 3
Podłączenie płytki 3
2.1 Konfiguracja projektu XJAnalyser 3
2.2 XJAnalyser 6
3. Konfiguracja procedury testowej za pomocą XJDeveloper 7
3.1 Założenie projektu 7
3.2 Identyfikacja linii zasilających 8
3.3 Identyfikacja łańcucha JTAG 8
3.4 Klasyfikacja układów bez implementacji JTAG (non JTAG devices) 10
3.4.1 Dodawanie połączeń jako elementy pasywne (zworki, rezystory) 10
3.4.2 Dodawanie elementów do listy elementów ignorowanych 11
3.4.3 Tworzenie plików testowych 12
3.4.4 Konfiguracja elementów 13
4. Procedury testowe 16
4.1 Test połączeń 17
4.2 Test diod LED 19
4.3 Test pamięci Static RAM 20
4.3.1 Prosty test typu zapis/odczyt 20
4.3.2 Zaawansowany test linii adresowych, danych i sterujących. 22
5. XJRunner 23
5.1 Przygotowanie pliku źródłowego 23
5.2 Wykonanie testów za pomocą XJRunner 24
Podsumowanie 26
1. Wstęp
Przedmiotem testu za pomocą systemu XJTAG Boundary Scan będzie zintegrowana płytka drukowana XJTAG Demo Board v2.0. Przed rozpoczęciem procedur testowych dobrą metodą na sprawdzenie poprawnego połączenia sieci JTAG Bounday Scan jest wykorzystanie programu XJAnalyser. Jest to jedno z narzędzi systemu XJTAG. Następnie rozpoczniemy pracę nad tworzeniem projektu za pomocą XJDeveloper, który poprowadzi nas krok po kroku przez pełną konfigurację procedury testowej. Po zakończonej konfiguracji przeprowadzone zostaną testy obejmujące następujące operacje: test połączeń, symulacje błędów w połączeniu, test pamięci SRAM[1] oraz test diod LED.
Głównym rdzeniem płytki są dwa programowalne układy CPLD: Xilinx XC9536XL (IC2) oraz Altera EPM3032A (IC3). Układy te maja wbudowany interfejs JTAG wraz zaimplementowanym łańcuchem Boundary Scan. Układy te tworzą sieć w ten sposób, że wyjście TDO układu Xilinx podłączone jest do wejścia TDI układu Altera. Pomiędzy tymi sygnałami dodatkowo znajduję się zworka JP8, której usunięcie symuluję zerwanie sieci JTAG Boundary Scan. Natomiast pomiędzy zewnętrznym złączem JTAG a układami CPLD znajduję się zworka JP1, która posłuży nam do symulowania niemożliwości wykrycia łańcucha JTAG Boundary Scan.
Jednym z elementów, który będzie testowany to BS62LV256 Static RAM. Linie adresowe i danych podłączone są do układu Xilinx. Linie adresowe A7-A10 poprowadzone są przez rezystory oraz zworkę JP3, natomiast linie danych D0-D3 przez zworkę JP2. Usunięcie zworki JP3 oraz JP2 będzie symulowało przerwanie połączenia. Pozostałe elementy to pamięć EEPROM Microchip 24LC32A podłączona do układu Altera przez szynę I2C oraz przetwornik analogowo-cyfrowy ADS7830, również podłączony do układu Altera przez szynę I2C. Schemat blokowy płytki znajduję się na rysunku poniżej.
Przed podłączeniem płytki należy zainstalować oprogramowanie znajdujące się na płycie CD. Po zainstalowaniu podłączamy XJLink do złącza JTAG znajdującego się na płytce XJDemo przez płaski 20 żyłowy przewód. Następnie należy podłączyć XJLink do komputera PC przez kabel USB.
2. Uruchomienie płytki za pomocą XJAnalyser
Nowy projekt
Po uruchomieniu XJAnalyser, tworzymy nowy projekt wpisując jego nazwę lub otwieramy już istniejący. W naszym przypadku tworzymy nowy projekt o nazwie Project1, następnie zatwierdzamy klikając Next
Konfiguracja zasilania, złącza JTAG oraz częstotliwości taktowania sygnału TCK
W następnej kolejności należy wybrać opcję zasilania płytki, odpowiednią konfigurację pinów JTAG oraz określić częstotliwość taktowania sygnału TCK.
System XJTAG umożliwia zasilanie płytki przez złącze USB jak i wyłączenie tego zasilania w przypadku gdy płytka zasilana jest z zewnętrznego źródła. Płytka XJDemo zasilana jest z wykorzystaniem kabla USB. W konfiguracji tej wybieramy opcje zasilania USB powered.
Następny krok to wybór konfiguracji pinów interfejsu JTAG. Płyta XJDemo ma zaimplementowaną standardową konfigurację, tak więc pozostawiamy opcję XJTAG. Ostatnim krokiem w tej części jest określenie częstotliwości pracy sygnału TCK. Częstotliwość ta zależy od możliwości układu do którego podłączony jest XJTAG oraz od możliwości samego systemu XJTAG. Częstotliwość ta nie powinna przekraczać częstotliwości maksymalnej jaką podają producenci. W naszym przypadku wybór opcji Default zdefiniowane jest jako częstotliwość 25MHz. Po zakończonej konfiguracji zatwierdzamy klikając na Next.
Importowanie plików BSDL
Trzecim i ostatnim krokiem przed rozpoczęciem pracy z XJAnalyser jest importowanie odpowiednich plików BSDL.
W momencie zatwierdzenia poprzedniej konfiguracji system XJAnalyser skanuję płytkę w celu identyfikacji numerów ID układów z implementowanym łańcuchem JTAG Boundary Scan. W ten sposób wykrywa układy podłączone do sieci JTAG Boundary Scan. Następnie należy zaimportować pliki BSDL, które opisują strukturę łańcucha Boundary Scan tych układów.
Pierwszą możliwą opcją jest wybór już istniejącej biblioteki plików BSDL. W przypadku płytki XJDemo biblioteka ta znajduję się w domyślnym katalogu XJTAG2.0/BSDL i nosi nazwę „Library.xjb”. Pozostałe opcję dotyczą przypadku utworzenia nowej biblioteki. Jeżeli opcję Don't show unique matches pozostawimy pustą, wówczas przejdziemy do opcji umieszczania nowych plików BSDL do biblioteki.
Klikamy Next i przechodzimy do następnej opcji z możliwością edytowania biblioteki plików BSDL. W oknie dialogowym wyświetlają się numery ID oraz odpowiednio przyporządkowane pliki BSDL. W przypadku zmiany plików BSDL należy wybrać opcję View/Edit Library. Tą opcję wykorzystuję się w momencie tworzenia projektu do nowej płytki, dla której nie została jeszcze utworzona biblioteka z plikami BSDL. Tworzenie nowej biblioteki nie będzie tematem tej prezentacji.
To wszystkie wymagane kroki konfiguracyjne. Teraz aby rozpocząć prace z XJAnalyser wystarczy kliknąć na Next.
Ono dialogowe
Jeżeli konfiguracja została poprawnie przeprowadzona i pliki BSDL zgadzają się z układami to powinno wyświetlić się główny panel programu XJAnalyser. Wyświetlone zostały układy tworzące sieć JTAG Boundary Scan: Xilinx oraz Altera. Graficzne przedstawienie tych układów odzwierciedla dokładnie typ obudowy. W przypadku Xilinx jest to typ BGA, natomiast w przypadku Altera jest to obudowa standardowa. Potwierdza się tu jedna z najważniejszych zalet systemu XJTAG, mówiąca o braku zależności typu obudowy układów na ich sposób testowania.
W następnej kolejności przechodzimy do trybu analizy stanów pinów układów. W tym celu wybieramy z menu Scan, a następnie Start JTAG Scan lub klikamy na skrót ►.
Aplikacja XJAnalyser oprócz analizowania stanów pinów umożliwia również ich zmianę. Można to zrobić na kilka sposobów jeden z nich to podwójne kliknięcie lewym przyciskiem myszy na wybrany pin, wówczas stan zmienia się na przeciwny lub kliknąć prawym przyciskiem myszy na wybrany pin i po rozwinięciu menu wybrać jedną w z możliwych opcji.
Przydatnym narzędziem jest wyszukanie pinów. W tym celu z menu wybieramy View a następnie Goto. W oknie, które się pojawiło wybieramy układ a następnie szukany pin. Klikamy na Goto, szukany pin zacznie migać.
Przykład:
Ponownie wybierzmy opcję wyszukiwania pinów Goto, wybierzmy układ Xilinx, pin E2:PB01_15, klikamy na Goto. Gdy pin zostanie odnaleziony kliknijmy na niego prawym przyciskiem myszy i wybierzmy opcje Set toggle slow. Jedna z diod na płytce powinna migać na czerwono. Aby powrócić do poprzedniego stanu klikamy prawym przyciskiem myszy i wybieramy opcję Disable.
XJAnalyser posiada jeszcze wiele dodatkowych, bardziej zaawansowanych opcji, które znacznie ułatwiają pracę projektantom oraz testerom. W prezentacji tej nie będą one szerzej omawiane. Uruchomienie XJAnalyser miało na celu sprawdzenia poprawności działania sieci JTAG Boundary Scan. Wstępne testy zakończone zostały pomyślnie. Kolejny etap to konfiguracja projektu, który będzie stanowił trzon procedury testowej. W tym celu wykorzystamy aplikację XJDeveloper.
Program XJDeveloper w prosty i przejrzysty sposób poprowadzi nas przez pełną konfigurację skryptu testującego (procedury testowej).
W pierwszej kolejności uruchamiamy aplikację XJDeveloper. Zaraz po uruchomieniu pojawi się główny panel oraz okno dialogowe, w którym należy wpisać nazwę testowanej płytki, ewentualnie opis oraz zlokalizować netlistę. Nazwa może być dowolna, ale dla naszego projektu nazwiemy ją tutorial. Netlista jest to plik tekstowy wygenerowany przez program do projektowania płytek. Zawiera ona informację o schemacie połączeń. System XJTAG przyjmuje kilka formatów netlisty, jedną z nich jest format RINF. Netlistę importuję się klikając na Browse. Po tych czynnościach klikamy OK oraz w głównym oknie dialogowym na save aby zapisać cały projekt.
Identyfikacja linii zasilającej i uziemiającej przekazuje ważną informacją dla systemu i określi jego sposób postępowania względem tych linii:
l nie będzie zmieniał ich stanów podczas przeprowadzania testów
l automatycznie wykryje poprawność połączenia do zasilania sprawdzając ich stan
l może zidentyfikować rezystory podciągające
Na płytce XJDemo linie zasilające mają nazwy 3.3V dla zasilania i GND dla uziemienia. Nazwy te są zawarte i pobierane z netlisty.
Wykonujemy następujące kroki:
l klikamy na ikonę Power/Ground Nets w głównym panelu XJDeveloper
l klikamy na Suggested Ground Nets i przeciągamy linię GND w obszar Ground Nets
l takie same czynności powtarzamy z linią 3.3V przeciągając ją do Power Nets
l zapisujemy klikając na save w głównym panelu
Tylko niektóre układy elektroniczne w zintegrowanych płytkach drukowanych są kompatybilne z interfejsem JTAG, dlatego też następny krok będzie dotyczył identyfikacji układów z wbudowanych interfejsem JTAG. W tej części, również importujemy pliki BSDL. Pliki te można pobrać ze stron producenta. Dla naszych układów pliki te są już dostępne w katalogu BSDL/Demo.
Aby być pewnym poprawnie zidentyfikowanego łańcucha z netlistą należy określić sygnały TDI do którego XJLink wprowadza dane do sieci JTAG Boundary Scan oraz sygnał TDO, którym wyprowadza dane. Na płytce drukowanej XJDemo złącze JTAG wyprowadzone jest przez konektor CN1. Posługując się schematem płytki możemy zidentyfikować, które piny tego konektora są odpowiedzialne za sygnały TDI i TDO.
Identyfikacja pinów TDI i TDO
l klikamy na ikonę JTAG Chain w głównym panelu XJDeveloper
l klikamy na Set TDI następnie pojawi się okno Select Device and Pin
l rozwijamy opcję Suggested Connectors i wybieramy CN1
l poniżej wyświetli się lista dostępnych pinów, wybieramy pin 5 jako sygnał TDI
l klikamy OK
l czynności te powtarzamy dla sygnału TDO wybierając Set TDO i dla CN1 wybieramy pin 13
l zapisujemy klikając na save
Po wykonaniu tych czynności system wyświetlił nam w oknie Select Next Pin nazwę pinu IC2.B3 który został napotkany na linii TDI – TDO. Należy określić do jakiego elementu jest podłączony i jaką spełnia ten element funkcję.
l przeciągamy pin IC2.B3 na obszar okna JTAG Devices lub klikamy na niego podwójnie lewym przyciskiem myszy
l w oknie Edit JTAG Chain określamy jaki to typ układu wybierając Assign IC2 as JTAG device
l lokalizujemy plik BSDL klikając na Browse
l wybieramy plik xc9536xl_cs48.bsd z katalogu BSDL/Demo
Po zatwierdzeniu system sprawdza zgodność wybranego pinu z pinem zawartym w pliku BSDL. W oknie dialogowym Select Next Pin pojawił się kolejny, napotkany na drodze TDI – TDO, element JP8.1. Jak popatrzymy na schemat układu to widzimy, że JP8 jest zworką pomiędzy pinem TDO układu Xilinx a pinem TDI układu Altera. System nie wie dokładnie co to za typ elementu, należy więc go określić.
W tym przypadku stworzymy oddzielny plik, który będzie określał jego funkcję w systemie.
Należy kolejno:
l kliknąć podwójnie na element JP8.1
...
darcki