Wspomaganie modelowania projektów opartych o - kik
Transkrypt
Wspomaganie modelowania projektów opartych o - kik
Przemysław Sołtan, Oleg Maslennikow Wydział Elektroniki Politechnika Koszalińska, Koszalin Wspomaganie modelowania projektów opartych o reprogramowalne układy FPGA pracujące w trybie prądowym STRESZCZENIE W niniejszej pracy omówiono stan obecny oraz rozwój autorskich projektów wspomagających modelowanie w oparciu o zastosowanie bramek cyfrowych pracujących w trybie prądowym. Podczas kilkuletnich prac badawczych nad koncepcją bramek prądowych opracowano zestaw bibliotek opisujących w języku VHDL: logikę wielowartościową technologii prądowej, bramki prądowe oraz zestaw podstawowych jak i złożonych bloków funkcjonalnych będących elementami składowymi reprogramowalnych układów FPGA. Coraz większa złożoność projektów wymusiła stosowanie dodatkowych narzędzi do ich automatyzacji i weryfikacji. W tym celu opracowano autorski program GEDEON oraz biblioteką testów jednostkowych vhdlUnit. WSTĘP Bramki cyfrowe pracujące w trybie prądowym charakteryzują się stałym poziomem zużywanego prądu w różnych trybach pracy. Ma to wpływ na zmniejszenie zakłóceń, co jest istotne dla mieszanych układów analogowo-cyfrowych. Tryb prądowy pracy układu cyfrowego oznacza, że poziom logiczny „0” odpowiada prądowi o wartości zero, a poziom logiczny „1” odpowiada pewnej ustalonej wartości prądu wpływającego na wejście bramki lub wypływającego z jej wyjścia. W odróżnieniu od funkcjonowania klasycznych bramek napięciowych, bramki prądowe mogą posiadać na wyjściu trzeci stan logiczny – „-1” w przypadku którego prąd z wyjścia bramki nie wypływa, ale do tego wyjścia wpływa. Z tego względu wynika, że fizyczne i logiczne zasady funkcjonowania bramek są inne od bramek napięciowych. W związku z tym algebra bramek prądowych nie jest algebrą binarną [1]. Rozwój prac nad koncepcją bramki prądowej wymusił zastosowanie oprogramowania wspomagającego projektowanie na poziomie logicznym. Coraz bardziej złożone układy cyfrowe wymagały formalnej metody projektowania jak i efektywnego języka opisu takich układów[2]. Modelowanie na poziomie elektronicznym (SPICE) Modelowanie na poziomie logicznym (VHDL) wielowartościowa logika prądowa – tablica rezolucji biblioteka bramek prądowych (inwerter, anty-inwerter, podwójny inwerter, anty-podwójny-inwerter) biblioteka bloków funkcyjnych (przerzutniki, rejestry, sumatory, multipleksery) w biblioteka bloków funkcyjnych układu FPGA (LUT, IOB, CLB) ISE (XILINX) synteza, mapowanie, rozmieszczenie i łączenie komórek FPGA format XDL Model reprogramowalnego układu GedeonFPGA GEDEON VHDL Å XDL + CFG biblioteka testów jednostkowych vhdlUnit Oprogramowanie wspomagające automatyzację Rys1. Struktura blokowa projektów wspomagających projektowanie układów prądowych. Jako bazą do tworzenia wszelkiego rodzaju projektów wybrano język VHDL (ang. Very high level Hardware Description Language). W oparciu o jego specyfikację zaprojektowano tablicę rezolucji odpowiadającej logice prądowej, którą przedstawiono poniżej. U E C B A 0 1 2 3 4 5 U U E C B A 0 1 2 3 4 5 E E E E E E E E E E E E C C E E E E C B A 0 1 2 B B E E E C B A 0 1 2 3 A A E E C B A 0 1 2 3 4 0 0 E C B A 0 1 2 3 4 5 1 1 E B A 0 1 2 3 4 5 E 2 2 E A 0 1 2 3 4 5 E E 3 3 E 0 1 2 3 4 5 E E E 4 4 E 1 2 3 4 5 E E E E 5 5 E 2 3 4 5 E E E E E Poszczególne wartości poziomów logicznych odpowiadają następującym stanom: 5Æ 4Æ 3Æ 2Æ 1Æ EÆ UÆ 5 0Æ 0 4 AÆ -1 3 BÆ -2 2 CÆ -3 1 DÆ -4 błąd stan niezainicjowany Tab. 1. Tablica rezolucji logiki prądowej Definiowanie określonego poziomu następuje na wyjściu elementu prądowego wówczas, gdy do niego dołączone jest następne wyjście innego elementu. Spotkanie się dwóch sygnałów skutkuje ustaleniem sygnału wyjściowego który można określić poprzez odczytanie wartości z przecięcia wybranego wiersza i kolumny tablicy rezolucji. Na tej podstawie zaprojektowano nowy typ danych (nstd_logic) na którym oparto modele czterech typów bramek prądowych (inwerter, anty-inwerter, podwójny inwerter, anty-podwójny-inwerter). Budowę bramek i zasady algebry prądowej opisano szczegółowo w publikacji [2]. MODELOWANIE UKŁADÓW PRĄDOWYCH Wraz z rozwojem biblioteki bramek prądowych opracowano ich graficzną reprezentację umożliwiającą wizualne budowanie schematów przy pomocy środowiska ActiveHdl firmy Aldec. Rys. 2. Środowisko projektowe (Active-HDL firmy Aldec – www.aldec.com) z biblioteką nstd_logic_2000 wspomagającą projektowanie w technologii bramek prądowych. Zaprojektowana biblioteka (nstd_logic_2000) jest elementem bazowym wszystkich innych projektów opartych o bramki prądowe. Na jej podstawie opracowano zestaw podstawowych elementów takich jak: przerzutniki, rejestry, sumatory, multipleksery. SPARTANII xc2s15 -6 cs144 IOB CLB podstawowe bramki prądowe Rys. 3. Główne bloki funkcyjne prądowego układu FPGA Dalszy etap prac doprowadził do zamodelowania bardziej złożonych bloków: generatora funkcji LUT (ang. Look-up-Table), rekonfigurowalnego programowo bloku logicznego CLB i bloku wejścia-wyjścia IOB [3]. Wymienione elementy są blokami składowymi reprogramowalnych układów FPGA opartych o architekturę SPARTAN2 firmy Xilinx [4] przedstawionej na rys. 3. Coraz większa złożoność projektów wymusiła stosowanie dodatkowych mechanizmów ich automatyzacji. Przy założeniu, że zaprojektowany model prądowego układów FPGA jest zewnętrznie logicznie wzorowany na rzeczywistym układzie napięciowym, to do konfiguracji modelu prądowego można wykorzystać narzędzia syntezy i implementacji dla standardowych układów FPGA. W tym celu wykorzystano dedykowane oprogramowanie ISE firmy Xilinx. AUTOMATYZACJA TWORZENIA PROJEKTÓW PRĄDOWYCH UKŁADÓW FPGA Układy FPGA charakteryzują się matrycową budową składającą się z jednakowych reprogramowalnych elementów CLB. We wczesnych pracach projektowych dokonywano ręcznej konfiguracji pojedynczych bloków CLB. Przy większej ich liczbie, co ma miejsce przy dużych układach FPGA, taki sposób jest nieefektywny. Aby to uprościć wykorzystano własne narzędzie GEDEON umożliwiające tworzenie danych konfiguracyjnych dla badanego modelu FPGA zbudowanego z bramek prądowych na podstawie konfiguracji z oprogramowania ISE [5]. ANTLR XDL Analiza leksykalna i semantyczna plików XDL XERCES XML Analiza pliku XML Analiza pliku XML GedeonCfg (XML) EMF (Eclipse Modeling Framework) GEDEON CORE VELOCITY META-MODEL opisu projektu implementowanego w FPGA V T L VHDL META-MODEL konfiguracji opisującej budowę układu FPGA Rys. 4. Struktura blokowa podprojektu GEDEON do translacji konfiguracji układów FPGA. Realizując projekt napięciowy i dokonując jego standardowej syntezy i implementacji na architekturę wybranego układu FPGA (narzędziem ISE) można wyeksportować dane konfiguracyjne tak przygotowanego projektu w postaci tekstowego formatu XDL. Dokonując jego analizy i przygotowując na jego podstawie model prądowy można sprawdzić jego zgodność funkcjonalną z zachowaniem początkowego modelu z projektu napięciowego [6]. Projekt GEDEON dokonuje analizy dokumentu XDL i na jego podstawie otrzymuje strukturę obiektów reprezentujących konfigurację układu FPGA. Analiza pliku XDL wymusiła zaprojektowanie analizatora leksykalnego i semantycznego. Do tego celu wykorzystano darmowy projekt ANTLR ( http://antlt.org ) służący do wspomagania budowy: analizatorów, interpreterów, kompilatorów projektowanych w języku C++ lub JAVA. W następnym etapie dane poddaje się translacji z uwzględnieniem dodatkowych ustawień konfiguracyjnych zapisanych w pliku GedeonCfg.xml. Plik zawiera odwzorowanie konfiguracji standardowego układu FPGA na autorską wersję modelu prądowego i jest wczytywany i analizowany przy pomocy biblioteki XERCES – darmowego parsera języka XML. Ostatecznym wynikiem przekształcenia jest wygenerowany dokument VHDL opisu modelu prądowego układu FPGA korzystającego z modeli komponentów wewnętrznych zaprojektowanych we wcześniejszym procesie projektowym. Do generacji dokumentów VHDL z poziomu języka JAVA wykorzystano bibliotekę VELOCITY dostępną jako darmowy podprojekt udostępniany przez organizację Apache Software Foundation ( http://jakarta.apache.org ). Velocity jest system szablonów służących do generacji dokumentów, którego główną ideą jest separacja warstwy kodu danych od ich prezentacji. Odseparowanie tych dwóch elementów umożliwia VTL (Velocity Template Language). Fragment przykładowego dokumentu przedstawiono poniżej. ##Fragment skryptu velocity generujący dokument VHDL … Fragment drzewa obiektów entity $fpgaDesign.getName() is projektu port ( #set ( $portSize = $fpgaDesign.getPortList().size() ) fpgaDesign #foreach( $port in $fpgaDesign.getPortList() ) #if( $portSize > $velocityCount ) $port.getName() : $port.getType() nstd_logic; #else $port.getName() : $port.getType() nstd_logic #end #end ); end $fpgaDesign.getName(); portList port name device name type architecture $fpgaDesign.getDevice() of $fpgaDesign.getName() is … end $fpgaDesign.getDevice(); Na podstawie zaprojektowanego modelu danych możliwe jest wydobywanie zawartości drzewa obiektów poprzez dostęp do nich za pośrednictwem znaku „$” oraz identyfikatora „.” podobnie jak to ma miejsce w programowaniu obiektowym. Reszta tekstu zawartego w szablonie staje się częścią dokumentu wyjściowego, który jest generowany zgodnie z wyrażeniami umieszczonymi w wierszach zaczynającymi się znakiem „#”. TESTOWANIE I WERYFIKACJA Testowanie jest jednym z najważniejszych mechanizmów podnoszących jakości tworzonego projektu. Ma to szczególne znaczenie dla realizacji sprzętowych w postaci układu scalonego, któregoh poprawianie jest bardzo kosztowne . W celu jak najlepszego przetestowania schematów układów prądowych zaprojektowano autorską biblioteką testów jednostkowych vhdlUnit. Podstawowym celem tworzenia testów jest programowa symulacja i weryfikacja projektu wraz z raportowaniem wyników na podstawie zaprojektowanych metod asercji – wymuszeń zachowania określonego warunku pracy symulowanego systemu. Tworzenie złożonych modeli rekonfigurowalnych układów FPGA wymagało realizacji wielu samodzielnych testów w różnych trybach pracy. Zastosowanie biblioteki vhdlUnit umożliwiło kompleksowe sprawdzanie grupy wszystkich testów dzięki zastosowaniu specjalnych procesów testowych pracujących w wielowartościowej logice prądowej. Projekt vhdlUnit został szczegółowo opisany w publikacjach [7 i 8] i jest dostępny pod adresem http://kik.ie.tu.koszalin.pl/vhdlunit . ROZWÓJ PROJEKTÓW Wcześniejsze prace nad projektem GEDEON realizowane były z wykorzystaniem języka C++. Po pojawieniu się darmowego projektu ECLIPSE opracowanego w języku JAVA, zdecydowano się na zmianę środowiska programistycznego [9]. Projekt ECLIIPSE został udostępniany jako Open Source przez firmę IBM. Wtyczkowa budowa platformy umożliwia tworzenie własnych projektów rozszerzających funkcjonowanie platformy. Pierwszym krokiem integracji projektowanych rozwiązań było zastosowanie EMF (ang. Eclipse Modeling Framework). Jest to nowe rozwiązanie programistyczne wspierające tworzenie metamodeli na podstawie ich opisu w języku XMI (podzbioru języka XML). Standard XMI jest szeroko akceptowalnym opisem umożliwiającym wymianę danych opisywanego meta-modelu pomiędzy różnymi narzędziami modelowania UML oraz generatorami kodu: JAVA i C++. Tego typu opis uniezależnia projekt od konkretnej realizacji programowej zawierając jego koncepcję w postaci diagramów UML na podstawie której wygenerowano kod klas projektu GEDEON. Cały proces można powtórzyć po dodaniu nowych elementów modelu, co ułatwia dalszy rozwój projektu o rozszerzanie o nową funkcjonalność. ECLIPSE IDE GEDEON CORE PDE GEDEON UI Rys. 5. Integracja platformy Eclipse z projektem Gedeon. Zastosowanie platformy ECLIPSE umożliwia projektowanie interfejsu użytkownika własnego projektu integrującego się z platformą. W tym celu zainicjowano projekt Gedeon.UI interfejsu użytkownika, dzięki któremu podstawowy kod Gedeon.Core zajmujący się przetwarzaniem danych jest niezależny od części wizualnej. Projekt GEDEON jest jednym ze składników projektu realizacji modeli układów reprogramowalnych pracujących w trybie prądowym dla logiki wielowartościowej. Aktualne badania prowadzone są w kierunku uzyskania modeli układów reprogramowalnych pracujących w arytmetyce resztowej oraz możliwości programowania rekonfigurowalnych (wielokontekstowych) układów prądowych. Związane jest to z rozwojem bibliotek oraz opisanego oprogramowania o nową funkcjonalność. W pracy pominięto opis narzędzi wspomagających proces realizacji fizycznych struktur zaprojektowanych układów prądowych zrealizowanych w technologii CMOS, które były wykonane i testowanie podczas prowadzenia badań. Punktem wyjścia do ich realizacji jest otrzymanie pliku EDIF zawierających net-listę projektowanego układu prądowego. Proces ten jest przeprowadzany wprost ze środowiska Active-HDL. wielowartościowa logika prądowa – tablica rezolucji biblioteka bramek prądowych (inwerter, anty-inwerter, podwójny inwerter, antypodwójny-inwerter) biblioteka bloków funkcyjnych (przerzutniki, rejestry, sumatory, multipleksery) biblioteka układu FPGA (CLB, SLICE, IOB) program GEDEON (java+Eclipse+EMF+Velocity+Antlr+Xerces), pakiet ISE (Xilinx, Synopsys) pakiet Active-HDL (Aldec) weryfikacja - biblioteka testów jednostkowych vhdlUnit nstd_logic.vhd nstd_logic_2000 nstd_core_2003 nstd_gedeon_2003 GedeonFPGA (java,xml, xdl) synteza,implementacja, (format xdl) symulacje (vhdl) vhdlUnit_2004 Tab. 2. Lista podprojektów i narzędzi wspomagających projektowanie w technologii prądowej. WNIOSKI W niniejszej pracy zaprezentowano zestaw podprojektów wspomagających procedurę tworzenia i weryfikacji projektów implementowanych w reprogramowalnym układzie FPGA pracującym w logice prądowej. Pominięto omówienie koncepcji technologii prądowej, którą szczegółowo omówiono w publikacji [1], ale skupiono się na komputerowych narzędziach wspomagających projektowanie i powadzenie badań naukowych. W pracy umieszczono sporo odwołań do różnych darmowych mechanizmów programistycznych wykorzystywanych podczas prac projektowych. Jest to celowa operacja, która ma zachęcić do korzystania w badaniach naukowych z darmowych i wydajnych rozwiązań. Podstawowym przykładem jest perspektywiczna platforma ECLIPSE, która umożliwia integrację różnych rozwiązań w jednym wspólnym środowisku. BIBLIOGRAFIA [1] M. Białko, O. Maslennikow, N. Maslennikow, P. Pawłowski “Układy cyfrowe zbudowane w oparciu o bramki prądowe: stan obecny, perspektywy rozwoju i zastosowania”. Prace III Konferencji Krajowej Elektroniki, KKE’2004, Kołobrzeg, 2004, pp.83-93. [2] D. Gretkowski, R. Berezowski, N. Maslennikow. “Opis i modelowanie cyfrowych układów prądowych z wykorzystaniem języka VHDL”. Prace II Konferencji Krajowej „Reprogramowalne układy cyfrowe”, RUC’1999, Szczecin, 1999, pp.165-172. [3] 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. [4] The Programmable Logic Data Book. Xilinx, Inc., 2000 – http://www.xilinx.com [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, P. Soltan “Automated Implementation of Digital Circuits in Current-Mode FPGA Chips”. Proc. 7 Int.Conf. Expepience of Designing and Application of CAD Systems in Microelecronics, CADSM’2003, Lwow, 2003, pp.223-225. [7] P. Sołtan “Koncepcja realizacji testów jednostkowych w języku VHDL”. Prace VII Konferencji Krajowej „Reprogramowalne układy cyfrowe”, RUC’2004, Szczecin, 2004, pp.117-124. [8] P. Sołtan “Weryfikacja logiczna projektów VHDL realizowanych w reprogramowalnych układach FPGA pracujących w trybie prądowym”. Prace III Konferencji Krajowej Elektroniki, KKE’2004, Kołobrzeg, 2004. [9] Eclipse Platform - www.eclipse.org Praca wykonana w ramach grantu KBN 3T11B 05926