Koncepcja refaktoryzacji kodu w języku VHDL

Slides:



Advertisements
Podobne prezentacje
Graficzny klient SVN graficzny klient SVN integrujący się z powłoką systemu dostępny tylko dla systemu Windows - do pobrania z
Advertisements

Przekształcanie dokumentów XML - XSL
JĘZYK VHDL Geneza: komputerowa symulacja układu cyfrowego, Departament Obrony USA opis skomplikowanego systemu w postaci schematu jest nieczytelny, szybkie.
Zarządzanie konfiguracją oprogramowania
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Programowanie obiektowe
Wprowadzenie do C++ Zajęcia 2.
Renoir Przegląd produktu VHDL & Verilog Import projektów
VHDL VHDL – akronim: VHSIC (Very High Speed Integrated Circuit) Hardware Description Language Inicjatywa Departamentu Obrony z 1980 Cel: osiągnąć znaczny.
Instrukcje strukturalne
XSL – część 2.
XML w zarządzaniu formularzami ubezpieczeniowymi ZUS
ASP.NET 2.0 AJAX Extensions 1.0
Technologie XML Mgr inż. Michał Jaros Technologie XML wykład 3.
UML Unified Modeling Language
Dokumentowanie wymagań w języku XML
Eclipse jako IDE III a.
Standardy tworzenia dokumentów [Michał Kuciapski ]
Najczęściej popełniane błędy w VHDL’u
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Wykład 8 Wojciech Pieprzyca
Enteprise Java Beans Emil Wcisło.
Wzorce projektowe w J2EE
Projekt i implementacja aplikacji do zasilania bazy danych testowymi danymi Jacek Lis Promotor: prof. dr hab. inż. Włodzimierz KASPRZAK.
POZNAŃ SUPERCOMPUTING AND NETWORKING CENTER WP 2.1 Zdalny dostęp do bibliotek naukowych Udział w projekcie: 6,51% Osoby kontaktowe: PCSS: Maciej Brzeźniak.
Koncepcja realizacji testów jednostkowych w języku VHDL
Systemy Rozproszone TECHNOLOGIA JAVA 2 ENTERPRISE EDITION PRZEMYSŁAW SOŁTAN
Aplikacje Internetowe
Architektura Systemu MunSOL
Rozwój aplikacji. To zestaw narzędzi do budowania i optymalizacji złożonych aplikacji opartych na przeglądarce. To zestaw narzędzi do budowania i optymalizacji.
Instytut Tele- i Radiotechniczny WARSZAWA
KONSTRUKCJA KOMPILATORÓW WYKŁAD WYKŁAD Robert Plebaniak Robert Plebaniak.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Platforma Eclipse.
Technologie tworzenia aplikacji internetowych Wykład 3
Generatory dokumentacji kodu źródłowego
EasyMOD kontrola modyfikacji i rozszerzeń systemu SAP

Inż. Łukasz Antoniak Promotor: dr inż. Piotr Gawrysiak Politechnika Warszawska, Wydział Elektroniki i Technik Informacyjnych, 2010.
Refaktoryzacja Robert Pająk.
Programowanie obiektowe – zastosowanie języka Java SE
Zaprojektowanie i wykonanie prototypowego systemu obiegu dokumentów (workflow) dla Dziekanatu Wydziału z wykorzystaniem narzędzi open-source i cloud computing.
Systemy zarządzania treścią Wykład 5
Michał Gmerek, Krzysztof Słodowicz
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
Temat 1: Ogólne cechy języka PHP
Technologie programowania systemów internetowych
Podstawy języka skryptów
Forum Pracodawców AEiI 2015 Wydział Automatyki, Elektroniki i Informatyki Gliwice, 11 marca 2015r.
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Platforma .Net.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Moduł e-Kontroli Grzegorz Dziurla.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Temat: Porównanie technologii php,c# oraz javascript na przykładzie webaplikacji typu społecznościowy agregator treści Autor: Wojciech Ślawski.
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
Eclipse jako środowisko IDE do programowania w Javie Java IDE Bartosz.Michalik
Analiza, projekt i częściowa implementacja systemu wspomagania pracy Referatu Reprografii Promotor: mgr inż. Dariusz OlczykWykonała: Katarzyna Ściwiarska.
Przykłady zewnętrznych bibliotek do PHP Laboratorium z Baz Danych Łukasz Zubkowicz.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy kombinacyjne.
Kompilator eBook w technologii Java Dyplomant: Maciej Bagrowski Promotor: dr inż. Walery Susłow Politechnika Koszalińska Wydział Elektroniki i Informatyki.
Wzorzec MVC na przykładzie CakePHP
Podstawy tworzenia skryptów
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL
Programowanie obiektowe – zastosowanie języka Java SE
NEMERLE Michał Maliszewski.
Programowanie w Javie 1 Dr Robert Kowalczyk
Zapis prezentacji:

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

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

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

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

Koncepcja refaktoryzacji Projekt VHDL (przed refaktoryzacją) PARSER (drzewo AST) Biblioteka do refaktoryzacji Projekt VHDL (po refaktoryzacji) Aktualizacja widoku Polecenie refaktoryzacji Widok Użytkownika Edytor Model View Controller 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

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).

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 end architectureName2; entity entityTestName is end entityTestName; architecture architectureTestName of entityTestName is component entityOldName end component ; comp1: entityOldName port map (in1,out1); -- rest of port map component end architectureTestName; Przykładowy kod VHDL entityNewName ARCHITECTURE PORT MAP ... COMPONENT ENTITY

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 ENTITY

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

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

Katalog wzorców VHDL?! Przykłady do ewentualnej implementacji: 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

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

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

VDT - architektura Platforma ECLIPSE  modułowa budowa (Plug-ins): ECLIPSE PLATFORM VDT PROJECT 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

VDT - edytor kodu

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