Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki i Informatyki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl.

Podobne prezentacje


Prezentacja na temat: "POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki i Informatyki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl."— Zapis prezentacji:

1 POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki i Informatyki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl Koncepcja refaktoryzacji kodu w języku VHDL VIII Krajowa Konferencja Naukowa RUC'2005 REPROGRAMOWALNE UKŁADY CYFROWE

2 2 Wprowadzenie Koncepcja refaktoryzacji Przykład prostego przekształcenia Model dokumentu (drzewo AST) Złożona refaktoryzacja kodu Platforma ECLIPSE i projekt VDT (Vhdl Development Toolkit) Kierunki rozwoju projektu Podsumowanie

3 3 Przebieg procesu projektowego czas funkcjonalność granica spełnienia zadanej funkcjonalność Obszary czasu przeznaczane na modyfikację kodu bez rozszerzania jego funkcjonalności Automatyzacja niektórych czynności może wpłynąć na skrócenie czasu modyfikacji kodu

4 4 Koncepcja refaktoryzacji Termin refaktoryzacja definiuje się jako mechanizm zmiany struktury kodu bez zmiany jego zachowania (funkcjonalności) ułatwienie pielęgnacji kodu projektu (modyfikacje) sprawdzanie integralności zawartych danych i ich zgodności z semantyką języka na poziomie edycji kodu mechanizmy automatycznego generowania dodatkowego kodu

5 5 Koncepcja refaktoryzacji Projekt VHDL (przed refaktoryzacją) Projekt VHDL (po refaktoryzacji) Widok Użytkownika Edytor PARSER (drzewo AST) Biblioteka do refaktoryzacji Polecenie refaktoryzacji Aktualizacja widoku Mechanizmy: analiza kodu źródłowego (parser) do budowy modelu (drzewa AST) edytor wraz z widokami do komunikacji z użytkownikiem biblioteka do kontroli procesu refaktoryzacji Model View Controller

6 6 Refaktoryzacja i język VHDL Języki obiektowe (Java, C++) operują na podstawowych elementach jak: zmienne, funkcje i klasy. Języki obiektowe (Java, C++) złożone mechanizmy: dziedziczenia, poliformizmu,... VHDL dużo większa liczba elementarnych typów: zmienne, sygnały, porty, entity, architektury,... (złożoność mechanizmów modyfikacji nazw) VHDL przekształcenia uwzględniające współbieżność (procesy), operacje na pakietach oraz konfiguracjach kodu (do ustalenia i realizacji).

7 7 Przykład prostego przekształcenia entity entityOldName is port(in1 : in bit; out1 : out bit); end entityOldName ; architecture architectureName1 of entityOldName is begin -- code end architectureName1; architecture architectureName2 of entityOldName is begin -- code end architectureName2; entity entityTestName is port(in1 : in bit; out1 : out bit); end entityTestName; architecture architectureTestName of entityTestName is component entityOldName port(in1 : in bit; out1 : out bit); end component ; begin comp1: entityOldName port map (in1,out1); -- rest of port map component end architectureTestName; entityNewName ARCHITECTURE PORT MAP... COMPONENT ARCHITECTURE... ENTITY Przykładowy kod VHDL

8 8 Przykład prostego przekształcenia Proces zmiany nazwy entity wymusza realizację kilku elementarnych operacji: wskazanie elementu określającego starą nazwę entity (entityOldName) i podania nowej nazwy (entityNewName); sprawdzenie, czy nowa nazwa nie koliduje z już istniejącymi nazwami; wyszukanie bloku danego entity (zmiana nazwy); wyszukanie architektur dla danego entity (zmiana nazwy); wyszukanie w blokach architektur komponentów danego entity (zmiana nazwy); wyszukanie wszystkich mapowań komponentów danego entity (zmiana nazwy). entityNewName ARCHITECTURE PORT MAP... COMPONENT ARCHITECTURE... ENTITY

9 9 Model dokumentu drzewo AST ENTITY (name: entityOldName ) PORT (name:in1,type:in,type2:bit) PORT (name:out1,type:out,type2:bit) ARCHITECTURE (name:architectureName1,entity: entityOldName ) ARCHITECTURE (name:architectureName2,entity: entityOldName ) ENTITY (name:entityTestName) PORT (name:in1,type:in,type2:bit) PORT (name:out1,type:out,type2:bit) ARCHITECTURE (name:architectureTestName,entity:entityTestName) COMPONENT (name: entityOldName ) PORT (name:in1,type:in,type2:bit) PORT (name:out1,type:out,type2:bit) INSTANCE (name:comp1, type: entityOldName ) MAP (from:in1, to:in1) MAP (from:out1, to:out1) M M I P P C A P P E A A P P E AST entityNewName (Abstract Syntax Tree) Przy wyszukiwaniu wystarczy analizować tylko określone węzły drzewa

10 10 Złożona refaktoryzacja kodu BIBLIOTEKI Projekt VHDL STANDARD IEEE PLIK1.vhd PLIK2.vhd PLIK3.vhd MODEL AST EDYTOR Złożoność przekształceń: elementarne metody przeszukiwania drzewa elementarne przekształcenia (rename, move, delete, insert) złożone przekształcenia realizowane na bazie sekwencji prostych przekształceń (transakcje i praca na kopii roboczej) mała duża

11 11 Podstawowym celem jest selekcja i wybór takich rozwiązań, które zostaną zaimplementowane w aplikacji do refaktoryzacji kody VHDL Opis wzorca powinien zawierać (motywację, mechanizm oraz przykłady) Przykłady do ewentualnej implementacji: Zamiana instrukcji if na case i na odwrót; Wyszukiwanie nieużywanych fragmentów kodu (np. zbędnych sygnałów) Podział komponentu (ekstrakcja części kodu do nowego komponentu) Wstawianie/ modyfikacja portów w blokach entity (automatyczna aktualizacja bloków component i port map) Generacja/aktualizacja testbenchy Wstrzykiwanie kodu asercji i ich automatyczne usuwanie Katalog wzorców VHDL?!

12 12 Platforma ECLIPSE ECLIPSE – darmowe narzędzie projektowe IDE Bogactwo projektów i wtyczek (plug-ins) Darmowe rozwiązanie nawet do zastosowań komercyjnych. Rewelacyjne mechanizmy refaktoryzacji dostępne dla języków obiektowych: Java i C++ Integracja różnego typu technologii w jednym narzędziu: J2EE, XML, PHP, Perl, Python,... VERILOG VHDL brak??! Potężne wsparcie przemysłu $$$ - projekt jest rozwijany przez etatowych programistów

13 13 Kto lubi ECLIPSE? Embedded Development Kit (EDK) Nios II Embedded Processors

14 14 VDT - architektura MODEL AST CORE OUTLINEEDITOR UI PARSERSCANNER ECLIPSE PLATFORM VDT PROJECT PDE WORKBENCH Platforma ECLIPSE modułowa budowa (Plug-ins): wtyczki JDT, CDT, PyDEV do refaktoryzacji kodu określonych języków (java, C++, python) VDT – wtyczka do refaktoryzacji kodu VHDL (pakiety CORE oraz UI) licencja CPL -

15 15 VDT - edytor kodu

16 16 VDT - rozwój biblioteki Integracja z biblioteką LTK (Eclipse Language Toolkit) wspierającą mechanizmy refaktoryzacji Opracowanie zestawu testów (przykłady do katalogu wzorców) Generacja dokumentacji (HTML) na podstawie modelu (na wzór JavaDoc) Integracja narzędzia z zewnętrznym symulatorem VHDL (FreeVHDL?!) Wydanie stabilnej wersji projektu – aktualnie jest to wersja eksperymentalna


Pobierz ppt "POLITECHNIKA KOSZALIŃSKA Wydział Elektroniki i Informatyki ELEKTRONIKI WYDZIAŁ POLITECHNIKA KOSZALIŃSKA Przemysław Sołtan ie.tu.koszalin.pl."

Podobne prezentacje


Reklamy Google