1 / 16

Koncepcja refaktoryzacji kodu w języku VHDL

Koncepcja refaktoryzacji kodu w języku VHDL. V I II Krajowa Konferencja Naukowa. RUC'200 5 REPROGRAMOWALNE UKŁADY CYFROWE. Przemysław Sołtan e-mail: kerk @ ie.tu.koszalin.pl. Wprowadzenie. Koncepcja refaktoryzacji Przykład prostego przekształcenia Model dokumentu (drzewo AST)

prisca
Télécharger la présentation

Koncepcja refaktoryzacji kodu w języku VHDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Koncepcja refaktoryzacji kodu w języku VHDL VIII Krajowa Konferencja Naukowa RUC'2005REPROGRAMOWALNE UKŁADY CYFROWE Przemysław Sołtan e-mail: kerk@ie.tu.koszalin.pl

  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. Przebieg procesu projektowego granica spełnienia zadanej funkcjonalność Automatyzacja niektórych czynności może wpłynąć na skrócenie czasu modyfikacji kodu funkcjonalność czas Obszary czasu przeznaczane na modyfikację kodu bez rozszerzania jego funkcjonalności

  4. Koncepcja refaktoryzacji • Termin refaktoryzacjadefiniuje 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. Koncepcja refaktoryzacji Mechanizmy: • analiza kodu źródłowego (parser) do budowy modelu (drzewa AST) • edytor wraz z widokami do komunikacji z użytkownikiem • biblioteka do kontroliprocesu refaktoryzacji Projekt VHDL (przed refaktoryzacją) PARSER (drzewo AST) Biblioteka do refaktoryzacji Projekt VHDL (po refaktoryzacji) Aktualizacja widoku Polecenie refaktoryzacji Model View Controller Widok Użytkownika Edytor

  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. entityNewName ENTITY ARCHITECTURE ... ARCHITECTURE COMPONENT PORT MAP ... 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 ofentityTestName 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; Przykładowy kod VHDL

  8. entityNewName ENTITY ARCHITECTURE ... ARCHITECTURE COMPONENT PORT MAP ... 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).

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

  10. Złożona refaktoryzacja kodu EDYTOR Projekt VHDL PLIK1.vhd MODEL AST BIBLIOTEKI PLIK2.vhd STANDARD PLIK3.vhd IEEE mała 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) duża

  11. Katalog wzorców VHDL?! 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

  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  http://veditor.sourceforge.net/ • VHDL  brak??! • Potężne wsparcie przemysłu $$$ - projekt jest rozwijany przez etatowych programistów

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

  14. VDT - architektura VDT PROJECT ECLIPSE PLATFORM CORE SCANNER PARSER AST MODEL WORKBENCH PDE UI EDITOR OUTLINE 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 - http://www.eclipse.org/legal/cpl-v10.html

  15. VDT - edytor kodu

  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 http://kik.ie.tu.koszalin.pl/mvl/vdt

More Related