Przemysław Sołtan Wydział Elektroniki Politechnika Koszalińska ul. Śniadeckich 2, 75-453 Koszalin e-mail: kerk@ie.tu.koszalin.pl Weryfikacja logiczna projektów VHDL realizowanych w reprogramowalnych układach FPGA pracujących w trybie prądowym Słowa kluczowe: układy reprogramowalne (FPGA), język opisu sprzętu (VHDL), bramki prądowe, testowanie, weryfikacja. STRESZCZENIE W pracy zaprezentowano sposób weryfikacji projektów cyfrowych implementowanych w układzie FPGA zbudowanym w oparciu o bramki prądowe nowe bramki logiczne cechujące się niskim poziomem szumu cyfrowego. Prądowy układ FPGA został zaprojektowany jako prototyp funkcjonalny znanego układu FPGA Spartan II firmy Xilinx. Zaprezentowano modelu układu oraz przedstawiono metody jego weryfikacji ze wzorcem opisywanym za pomocą odpowiednio zaprojekowanych procesów testowych. Koncepcję realizacji testów oparto o własną bibliotekę vhdlunit. Jej zastosowanie umożliwiło automatyzację testów oraz rozbudowę standardowych mechanizmów języka VHDL takich jak: asercja i raportowanie. 1. WPROWADZENIE Jednym z najważniejszych problemów projektowania jest testowanie i weryfikacja tworzonych systemów. Podczas prac badawczych autorzy opracowali kilka modeli układów FPGA zbudowanych w oparciu o bramki prądowe [1]. Złożoność projektów wymusiła znalezienie określonych rozwiązań automatyzujących ich pracę. Jako prototyp układu wybrany został układ SPARTAN II firmy Xilinx [2]. Z tego względu opracowane układy charakteryzują się jednakowymi wyprowadzeniami (wejścia/wyjścia) oraz trybami pracy. Zasadniczą różnicą jest ich wewnętrzna budowa zrealizowana w oparciu o logikę wielowartościową. Podczas projektowania podstawowym czynnikiem sprawdzania wiarygodności tworzonego modelu prądowego było porównywanie wyników z analogicznym modelem realizowanym w standardowej technologii napięciowej, co przedstawiono na rys. 1. Rys. 1. Schemat blokowy procesu implementacji i weryfikacji projektów w prądowych układach FPGA
Aby uprościć proces porównywania zdecydowano się na realizacje własnej biblioteki vhdlunit umożliwiającej automatyzację testów porównawczych. W tym celu opracowano metodologię tworzenia specjalnych testów bazujących na tworzeniu procesów testowych. Podstawowym celem tworzenia testów jest programowa symulacja i weryfikacja projektu wraz z raportowaniem wyników na podstawie zaprojektowanych metod asercji. Termin asercja określa wymuszenie zachowania określonego warunku pracy symulowanego systemu (np. przyjmowanie przez dany sygnał określonego stanu wartości). 2. MODEL PRĄDOWY TESTOWANEGO UKŁADU FPGA Podczas prac nad reprogramowalnym układem FPGA realizowanym w technologii bramek prądowych stworzono kilka modeli układów. Wstępne prace dotyczyły opracowania trybów pracy poszczególnych bloków i ich implementację w fizycznych strukturach półprzewodnikowych. Zaproponowany model jest najbardziej rozbudowaną wersją z dotychczas zaprojektowanych układów. Funkcjonalne działanie układu jest zgodne z napięciowym układem FPGA Sparan II firmy Xilinx i dzięki temu do tworzenia plików konfiguracyjnych użyto pakietu ISE [3]. Producent oprogramowania udostępnił specjalny format danych XDL umożliwiający eksportowanie struktury układu FPGA. W oparciu o ten mechanizm zaprojektowano specjalny program GEDEON umożliwiający konwersję konfiguracji danego projektu do projektu prądowego opartego o własną bibliotekę nstd_logic [5]. Rys. 2. Struktura bloku SLICE W skład prądowego układu FPGA wchodzą różnego rodzaju bloki funkcyjne. Najważniejszymi z nich są układy IOB do konfiguracji wyprowadzeń układu FPGA, oraz bloki funkcyjne SLICE. Szczegółowa budowa poszczególnych bloków została opisana we wcześniejszych publikacjach [5] i [6]. W projekcie zastosowano zmodyfikowane wersje bloków opisanych w podanych publikacjach. Na wejściach układu SLICE (wyprowadzenia BY,CE,SR,BX) zastosowano specjalne bloki multiplekserów przedstawione na rys. 2. Multipleksery sterowane przy pomocy wejść konfiguracyjnych umożliwiają wybór jednego z czterech stanów sygnałów
podawanych na ich wejścia (przenoszenie sygnału, jego negacja, ustawienie wartości 1 lub 0). Podobnie postąpiono z układem IOB (wyprowadzenia T, TCE, O, OCE, ICE, SR) przedstwionym na rys. 5. Poważniejsze zmiany wprowadzono dla układu LUT będącego elementem składowym bloków SLICE. Zastosowano konfigurację bloku LUT pracującego w trybie równoległego zapisu. Wcześniejsze modele umożliwiały jedynie zapis sekwencyjny przy pomocy specjalnego trybu pracy. Wydłużało to proces konfiguracji i dodatkowo komplikowało jego realizację. Konfiguracja z zapisem równoległym polega na podaniu na nowe 16-bitowe wejście CFG_LUT wartości 16 bitów, która będzie inicjowała wewnętrzne przerzutniki. Rys. 3. Fragment struktury bloku LUT Tryb zapisu występuje przy stanie niskim wejścia CFG (odcięcie kolejki FIFO od zewnętrznych wejść), a bezpośredni zapis do przerzutników dokonywany jest zboczem narastającym CFG_WRITE. Tryb równoległej konfiguracji (zapis wartości CFG_LUT do przerzutników) oraz tryb pracy (na wyprowadzeniu D pojawia się stan przerzutnika wskazywanego przez wejścia sterujące A1,A2,A3,A4) zostały przedstawione na przebiegu z rys. 4. Tryb zapisu sekwencyjnego jest w dalszym ciągu wykorzystywany jako jeden ze standardowych trybów pracy kolejki FIFO realizowanej przy pomocy bloków LUT. Tryby pracy układu LUT zostały szczegółowo opisane w publikacji [6]. Rys. 4. Przebieg testowy trybu kunfiguracji i pracy bloku LUT Na rys. 6 przedstawiono wewnętrzną budowę bloku przerzutnika. Zaprojektowany układ może pracować jako konfigurowalny przerzytnik ustawiany i zerowany synchronicznie
lub asynchroniczny oraz sterowany poziomem lub zboczem sygnału taktującego [7]. 3. KONCEPCJA REALIZACJI TESTÓW Jako podstawową jednostkę testową zaproponowano wykorzystanie odpowiednio zaprojektowanych procesów języka VHDL umieszczanych wewnątrz standardowego testu (TestBench). Kod testu zawiera również zestaw procesów stymulujących testowany model układu FPGA (Stymulus). Opisana koncepcja została przedstawiona na rys. 7. Rys. 7. Środowisko testowe prądowego układu FPGA Przedstawiony proces testowy (TestCase) realizuje porównanie wyników uzyskanych podczas symulacji skonfigurowanego modelu układu FPGA ze wzorcem zaimplementowanym w formie funkcji. Powyższa metoda uniezależnia proces porównywania od wartości sygnałów stymulujących badany układ. Proces weryfikacji oparto również o modele układów zawartych w bibliotece UniSim (UNIfied SIMulation - functional components library for xilinx designers). Jest to biblioteka zawierająca funkcjonalny opis trybów pracy układów FPGA firmy Xilinx [3]. Dla zamodelowanego układu FPGA zaprojektowano zestaw testów (testy konfiguracji bloków LUT, układów kombinacyjnych, multiplekserów, sumatorów, komparatorów i rejestrów). Zaprojektowana biblioteka vhdlunit umożliwia stosowanie weryfikacji opartej o wzorzec w postaci porównywania dwóch modeli: prądowego i napięciowego. W tym celu zostały zaprojektowane funkcje konwersji pomiedzy typami std_logic i std_logic_vector, a typami wielowartościowymi nstd_logic i nstd_logic_vector. Całość została zawarta w rozszerzeniu biblioteki vhdlunit (vhdlunit_ext_nstd_logic). Dzięki temu biblioteka vhdlunit nie ogranicza się tylko do technologii prądowej, ale może mieć zastosowanie także przy innych projektach (biblioteka posiada status otwartego oprogramowania - OpenSource).
Proces testowy jest najmniejszą jednostką testową składającą się z metody setup() inicjujacej test, grupy metod asercji assertxxx(), testujących stan testowanych sygnałów, oraz metody teardown() zakończenia testu. Przykładowy proces testowy pełnego sumatora (Full Adder) Powyżej przedstawiono przykładowy proces testowy pełnego sumatora z zastosowaniem metody asercji asserttime(...) określającej czas wywoływania metody assertequals(...). 4. RAPORTOWANIE WYNIKÓW TESTU Zastosowanie biblioteki vhdlunit umożliwia raportowanie przebiegu testów w dokumencie HTML. W postaci kolorowych wierszy następuje odwzorowanie wyników testów ułatwiające analizę i wyłapywanie błędnych sytuacji. Przykładowy raport przedstawiono na rys. 8. Rys. 8. Widok przykładowego raportu wygenerowanego przy użyciu biblioteki vhdlunit (pełny sumator FA). W wyniku realizacji testów wykonano weryfikację układu FPGA skonfigurowanego do pracy jako pełny sumator (full-adder). Wykonanie metody asercji assertequals(wartość oczekiwana, wartość otrzymana) powoduje generację określonego wiersza raportu zawierającego informację o wyniku porównania wartości oczekiwanej z wartością otrzymaną z symulacji dla
określonego momentu czasu wskazanego w kolumnie Time(s). W przykładzie wykonano 8 testów sprawdzających wszystkie stany sygnałów stymulujących układ badanego sumatora (sygnały a, b i ci). Na podstawie wzorca wygenerowano wartości oczekiwane, które następnie zostały porównywane ze stanami sygnałów pojawiającymi się na modelowanym układzie FPGA (sygnały cout i sout). Zgodność obu wartości potwierdzona została generacją komunikatu Success zawartego w kolumnie Status. Na zakończenie testu została wygenerowana statystyka obejmująca procentowy udział prawidłowo wykonanych testów i testów zakończonych niepowodzeniem. Zaprezentowany raport jest wynikiem prostego testu sumatora jednobitowego pokazującego jedynie wynik realizacji testów. W pracy nad projektem zrealizowano szereg bardziej złożonych testów np. sumatorów wielobitowych zajmujących wiele układów SLICE i IOB. 5. WNIOSKI W niniejszej pracy zaprezentowano procedurę weryfikacji projektów implementowanych w reprogramowalnym układzie FPGA pracującym w technologii prądowej. Zautomatyzowana procedura implementacji wykorzystuje dostępne narzedzia do syntezy i umożliwia testowanie układów prądowych. W pracy wykorzystano własne środowisko programowe umożliwiające analizę plików konfiguracyjnych udostępnionych przez narzędzia place & route i na ich podstawie generację projektu modelu prądowego. Podczas tworzenia projektu modelu układu FPGA wykazano szczególną użyteczność zaprojektowanej biblioteki vhdlunit, ponieważ złożona rekonfigurowalność układ FPGA wymagała realizacji wielu samodzelnych symulacji oraz ich weryfikowania. Dostosowanie modelu do pracy w jednym trybie pracy wymagała sprawdzenia, czy wcześniej zaprojektowana funkcjonalność innych trybów również działała prawidłowo. Proces weryfikacji ułatwił realizację tego zadania dzieki zastosowaniu specjalnych procesów testowych zawierających metody asercji pracujące w logice wielowartościowej. BIBLIOGRAFIA [1] A. Guziński, P. Pawłowski, D. Czwyrow, J. Kaniewski, O. Maslennikow, N. Maslennikowa, D. Rataj, Design of Digital Circuits with Current-mode Gates, Bulletin of the Polish Academy of Sciences, Technical Sciences, Electronics and Electrotechnics, Vol. 48, No. 1, 2000, pp. 74-91. [2] The Programmable Logic Data Book, Xilinx, Inc., 2000 [3] Dokumentacja do programu Foundation/ISE (Version 4.1). Xilinx, Inc., 2001. [4] D. Gretkowski, J. Kaniewski, N. Maslennikowa, P. Soltan, Current-mode digital Circuits Design and Modeling Proc. of the XXII Nat.Conf. on Circuit Theory and Elektronic Networks, Warszawa-Stare Jablonki, Poland, 1999, pp.161-167. [5] P. Sołtan, O. Maslennikow, R. Berezowski, M. Rajewska, Automatyzacja procesu implementacji układów cyfrowych w technologii prądowych układów FPGA Prace I Konferencji Krajowej Elektroniki, KKE 2002, Kołobrzeg, 2002, pp.843-848. [6] O. Maslennikow, R. Berezowski, P. Soltan, M. Rajewska. Designing Prototype of the Spartan II FPGA Slice with the Current-Mode Gates, Proc. of the IEEE Int.Conf. on Circuits and Systems for Communication, ICCSC 2002, ST.-Petersburg, pp. 182-185 [7] O. Maslennikow, R. Berezowski, P. Sołtan. Model komórki układu FPGA zbudowanego w oparciu o bramki prądowe. Prace V Konferencji Krajowej Reprogramowalne uklady cyfrowe, RUC 2002, Szczecin, 2002, pp.189-196. Praca wykonana w ramach grantu KBN 3T11B 05926