Systemy wbudowane. Architektura środowiska SystemC. Wykład 8: SystemC zasady modelowania systemów wbudowanych

Podobne dokumenty
Systemy wbudowane. Wykład 6: Modelowanie systemów wbudowanych w SystemC, cz.i struktura specyfikacji. Standard IEEE Open source

Wykład 5: Specyfikacja na poziomie systemowym

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język ludzki kod maszynowy

Programowanie Proceduralne

Zaawansowane programowanie w C++ (PCP)

Signals + Threads: Qt vs. Boost

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Programowanie w językach

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Szablony funkcji i szablony klas

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Projektowanie klas c.d. Projektowanie klas przykład

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

obiekty funkcyjne - funktory

Języki programowania - podstawy

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

KOLEJKA (QUEUE) (lista fifo first in, first out)

Wstęp do programowania 1

Systemy wbudowane. Poziomy abstrakcji projektowania systemów HW/SW. Wykład 9: SystemC modelowanie na różnych poziomach abstrakcji

PARADYGMATY PROGRAMOWANIA Wykład 2

Wprowadzenie do szablonów szablony funkcji

Kurs programowania. Wykład 9. Wojciech Macyna

Wstęp do Programowania 2

Programowanie Obiektowew języku C++ Zadania L4

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów klas

Programowanie w języku C++

Wstęp do Programowania 2

C++11. C++ 11 wybrane elementy. C++11: referencje do rvalue C++ 11: C++11: referencje do rvalue. C++11: referencje do rvalue. Referencje do rvalue

Co nie powinno być umieszczane w plikach nagłówkowych:

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Etap 2 - Budowa interfejsu. typedef struct ELEMENT* stos; struct ELEMENT { dane Dane; stos Nastepny; }; struct kolejka { stos Poczatek, Koniec; };

Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych

Pobieranie argumentów wiersza polecenia

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Operacje wejścia/wyjścia (odsłona druga) - pliki

Wykład 1

Programowanie obiektowe

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Algorytmy i Struktury Danych. Anna Paszyńska

10.1 Szablony Szablony funkcji Szablony klas Szablony jako wstęp do biblioteki STL... 10

PROGRAMOWANIE w C prolog

Wykład :37 PP2_W9

Programowanie Obiektowew języku C++ Zadania L4

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

Wstęp do programowania 1

Laboratorium Podstawy Przetwarzania Rozproszonego SPRAWOZDANIE z zadania SERWIS KOMPUTEROWY

Algorytmy, iteratory, kolekcje niestandardowe

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Pliki wykład 2. Dorota Pylak

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

C++11. C++ 11 wybrane elementy. C++11: referencje do rvalue C++ 11: C++11: referencje do rvalue. C++11: referencje do rvalue. Referencje do rvalue

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Operatory na rzecz typu TString

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Identyfikacje typu na etapie. wykonania (RTTI)

Język C++ wykład VIII

Zofia Kruczkiewicz, ETE8305_2 1

Wzorce funkcji (szablony)

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wstęp do programowania, część II

Struktury - wprowadzenie

ECLIPSE wnioski z dwóch pierwszych laboratoriów

Kontrola przebiegu programu

STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. deque (double-ended queue) list

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

E S - uniwersum struktury stosu

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

int tab_a [ 2 ] [ 3 ];

Materiały. Języki programowania II (Java+AVR-GCC) Literatura

Słowa kluczowe i nazwy

Aplikacja po polsku. Bogdan Kreczmer. ZPCiR ICT PWr pokój 307 budynek C3.

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska

STL: implementowanie algorytmów C++: STL. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów

Techniki Programowania

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Szablony klas, zastosowanie szablonów w programach

Wstęp do Informatyki

Wstęp do Programowania 2

TEMAT : KLASY POLIMORFIZM

Jzyk C++ cz 2. Jarosław Gramacki Instytut Informatyki i Elektroniki

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

ROZDZIAŁ 2. Operatory

Sieciowa komunikacja procesów - XDR i RPC

Wartości domyślne, szablony funkcji i klas

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Transkrypt:

Systemy wbudowane Wykład 8: SystemC zasady modelowania systemów wbudowanych Architektura środowiska SystemC 11/19/2011 S.Deniziak:Systemy wbudowane 2 1

Tworzenie modelu w SystemC 11/19/2011 S.Deniziak:Systemy wbudowane 3 Algorytm symulacji 1. Tsim=0. Inicjalizacja wszystkich procesów (z wyjątkiem procesów z wykluczoną inicjalizacją). 2. Tsim=czas wystąpienia najbliższego zdarzenia. 3. Realizacja wszystkich zdarzeń zachodzących dla Tsim. 4. Wykonanie procesów na wejściach których zaszło zdarzenie w chwili Tsim: Procesy SC_METHOD: wykonywane do końca, Procesy SC_THREAD wykonywane do najbliższej instrykcji wait(), Wygenerowane zdarzenia są wstawiane do kolejki zdarzeń, zdarzenia wygenerowane dla chwili Tsim są wstawiane do kolejki z czasem Tsim+ 5. Jeśli Tsim=max czas symulacji to STOP w przeciwnym przypadku GOTO 2. 11/19/2011 S.Deniziak:Systemy wbudowane 4 2

Stosowanie własnych typów Przykład: typedef struct pt long info; int seq; int retry; packet_type; M1: sc_in<packet_type> tpackin; M2 sc_out<packet_type> tpackout; sc_signal<packet_type> chan; 11/19/2011 S.Deniziak:Systemy wbudowane 5 Śledzenie niestandardowych danych Plik xxx.h: extern void sc_trace(sc_trace_file *tf, const packet_type& v, const sc_string& NAME); Plik xxx.cpp: void sc_trace(sc_trace_file *tf, const packet_type& v, const sc_string& NAME) sc_trace(tf,v.info, NAME + ".info"); sc_trace(tf,v.seq, NAME + ".seq"); sc_trace(tf,v.retry, NAME + ".retry"); 11/19/2011 S.Deniziak:Systemy wbudowane 6 3

Operowanie na niestandardowych danych odczyt /zapis Operator = const T& operator= ( const T& ); Przykład: struct packet_type long info; int seq; int retry; inline void operator = (const packet_type& s) info = s.info; seq = s.seq; retry = s.retry; ; 11/19/2011 S.Deniziak:Systemy wbudowane 7 Operowanie na niestandardowych danych porównywanie Operator == bool T::operator== ( const T& ); Przykład: struct packet_type long info; int seq; int retry; inline bool operator == (const packet_type& rhs) const return (rhs.info == info && rhs.seq == seq && rhs.retry == retry); ; 11/19/2011 S.Deniziak:Systemy wbudowane 8 4

Operowanie na niestandardowych danych funkcje diagnostyczne Operator << std::ostream& operator<< ( std::ostream&, const T& ); Metody: print(), dump() Przykład: inline ostream& operator << ( ostream& os, const pkt& a ) os << a.info; return os; 11/19/2011 S.Deniziak:Systemy wbudowane 9 Przykład 3: wykrywanie zmian sygnałów #include "systemc.h" SC_MODULE(toggle) sc_in<bool> clk; sc_out<bool> output; bool state; void toggle_it() output = state =!state; SC_CTOR(toggle) state = true; SC_METHOD(toggle_it); sensitive << clk.pos(); ; template <class T> SC_MODULE(hs_checker) sc_in<t> data; sc_in<bool> data_valid; void check_it() if (data_valid.read() &&!data_valid.event()) cerr << name() << ": glitch at t=" << sc_simulation_time() << endl; SC_CTOR(hs_checker) SC_METHOD(check_it); sensitive << data; ; int sc_main(int argc, char** argv) sc_signal<bool> data("data"); sc_signal<bool> data_valid("data_valid"); sc_clock data_clock("data_clock", 10); sc_clock data_valid_clock("data_val_clk", 100); toggle toggle_data("toggle_data"); toggle toggle_data_valid("toggle_data_valid"); toggle_data.clk(data_clock); toggle_data.output(data); toggle_data_valid.clk(data_valid_clock); toggle_data_valid.output(data_valid); hs_checker<bool> checker("checker"); checker.data(data); checker.data_valid(data_valid); sc_start(1000); return 0; 11/19/2011 S.Deniziak:Systemy wbudowane 10 5

Przykład 4: sprawdzanie relacji czasowych #include "systemc.h" SC_MODULE(min_max_checker) sc_in<bool> first, second; SC_HAS_PROCESS(min_max_checker); sc_time min_time_, max_time_; min_max_checker(sc_module_name name, const sc_time& min_time, const sc_time& max_time) : sc_module(name), min_time_(min_time), max_time_(max_time) SC_THREAD(check_it); void print_error(const char* message) cerr << name() << ": protocol violation at t=" << sc_simulation_time() << " (" << message << ")" << endl; void check_it() while (true) wait(first->posedge_event()); if (second.read()) print_error("second signal is already high"); continue; sc_time before = sc_time_stamp(); wait(max_time_, first->value_changed_event() second->value_changed_event()); if (first.event()) print_error("first signal went low too early"); continue; if (!second.event()) print_error("max delay overrun"); sc_time delta = sc_time_stamp() - before; if (delta < min_time_) print_error("min delay underrun"); ; 11/19/2011 S.Deniziak:Systemy wbudowane 11 SC_MODULE(bool_wave_gen) sc_out<bool> output; sc_time* w_; bool state_; void toggle_it() for (;;) for (int i=0;;i++) if (w_[i].value() == 0) break; wait(w_[i]); output = state_ =!state_; cout << name() << ": output=" << state_ << " at t=" << sc_time_stamp() << endl; SC_HAS_PROCESS(bool_wave_gen); bool_wave_gen(sc_module_name name, sc_time waveform[], bool start_value) : sc_module(name), w_(waveform), state_(start_value) SC_THREAD(toggle_it); ; int sc_main(int argc, char** argv) sc_signal<bool> first("first"); sc_signal<bool> second("second"); sc_time first_waveform[] = sc_time( 10, SC_NS ), // t=10 sc_time( 10, SC_NS ), sc_time( 10, SC_NS ), // t=30 sc_time( 10, SC_NS ), sc_time( 10, SC_NS ), // t=50 sc_time( 10, SC_NS ), sc_time( 10, SC_NS ), // t=70 sc_time( 10, SC_NS ), sc_time( 10, SC_NS ), // t=90 sc_time( 2, SC_NS ), // goes down too early sc_time( 18, SC_NS ), sc_time( 10, SC_NS ), sc_time( 0, SC_NS ) ; 11/19/2011 S.Deniziak:Systemy wbudowane 12 6

sc_time second_waveform[] = sc_time( 13, SC_NS ), // OK sc_time( 1, SC_NS ), sc_time( 17, SC_NS ), // too early (31ns) sc_time( 1, SC_NS ), sc_time( 24, SC_NS ), // too late (56ns) sc_time( 1, SC_NS ), sc_time( 1, SC_NS ), // already high (58ns) sc_time( 22, SC_NS ), // -> back to normal sc_time( 14, SC_NS ), // OK (94ns) sc_time( 6, SC_NS ), sc_time( 0, SC_NS ) ; bool_wave_gen first_wave("first_wave", first_waveform, false); bool_wave_gen second_wave("second_wave", second_waveform, false); min_max_checker the_checker("the_checker", sc_time(2, SC_NS), sc_time(5, SC_NS)); first_wave.output(first); second_wave.output(second); the_checker.first(first); the_checker.second(second); sc_start(500); return 0; 11/19/2011 S.Deniziak:Systemy wbudowane 13 Tworzenie specyfikacji w SystemC (1) 1. Algorytm zadania Max. zrównoleglenie: niezależne obliczenia w różnych zadaniach Zadania sekwencyjne: możliwość przetwarzania potokowego 11/19/2011 S.Deniziak:Systemy wbudowane 14 7

Tworzenie specyfikacji w SystemC (2) 2. Minimalizacja transmisji Reorganizacja obliczeń Wspólna pamięć T1 T2 T1 T2 Dane Dane Dane 11/19/2011 S.Deniziak:Systemy wbudowane 15 Tworzenie specyfikacji w SystemC (3) 3. Eliminacja konfliktów dostępu do wspólnych zasobów T1 T2 T1 T2 T3 Mem/Dev Mem/Dev 11/19/2011 S.Deniziak:Systemy wbudowane 16 8

Przykład: wbudowany serwer internetowy Init/ NextRequest Wspólne zasoby: - interfejs sieciowy - system plików Transmit Req=GET Process Request Req=POST HandleGet HandlePost Manage Connection 11/19/2011 S.Deniziak:Systemy wbudowane 17 Init/ NextRequest TCP/IP Transmit Req=GET Process Request Req=POST HandleGet HandlePost FileSys Manage Connection 11/19/2011 S.Deniziak:Systemy wbudowane 18 9

send_out rec_in rec_out ProcPost TCP/IP sock_out sock_in GetReq pp_to_mc pp_to_mc bind_out bind_in list_out ProcReq gr_to_pg list_in sel_out sel_in acc_out acc_in gr_to_pr mc_to_gr gr_to_mc gr_to_tr Transmit pr_to_mc tr_to_mc ManCon send_out send_in fread_in fread_out fclose send_out send_in ProcGet fopen_in fopen_out flen_in FileSys flen_out fclose pg_to_mc close_c 11/19/2011 S.Deniziak:Systemy wbudowane 19 Koniec 11/19/2011 S.Deniziak:Systemy wbudowane 20 10