konto usunięte

Temat: Nowe wydanie standardu SystemC

Pojawiła się najnowsza wersja standardu SystemC (IEEE 1666-2011)
Reference Manual jest dostępny pod tym adresem:
http://standards.ieee.org/getieee/1666/download/1666-2...
Najważniejsza nowość w tym wydaniu to włączenie standardu TLM 2.0 do specyfikacji SystemC.
Wydana została też wstępna wersja referencyjnej implementacji (wersja 2.3.0 Public Review). Niedługo można się spodziewać finalnego wydania.
Naprawione błędy i nowe lub zmienione funkcjonalności (wg IEEE 1666-2011) można znaleźć w release notes. Jakkolwiek TLM został włączony do standardu, wydanie Public Review biblioteki nie zawiera TLM więc trzeba korzystać z dotychczasowego wydania. Nowa wersja zapewnia też wsparcie dla większej liczby platform.Paweł Duc edytował(a) ten post dnia 15.01.12 o godzinie 19:16
Jerzy G.

Jerzy G. Konstruktor, Secom

Temat: Nowe wydanie standardu SystemC

Cześć,
Moje doświadczenie ogranicza się do VHDL'a i czytania ze zrozumieniem Verilog'a.
Pytania, czy SystemC daje się już używać w praktyce?
Rozumiem, że bardziej służy on do symulacji niż do implementacji.
Czy jest wygodny?
Polecasz jakieś narzędzia?
Pozdrawiam,

Jerzy

konto usunięte

Temat: Nowe wydanie standardu SystemC

Jerzy G.:
Cześć,
Witam
Moje doświadczenie ogranicza się do VHDL'a i czytania ze zrozumieniem Verilog'a.
Opierając się na moim doświadczeniu chciałbym Ci zasugerować lepsze zgłębienie Veriloga. Wydaje mi się że z czasem VHDL ulegnie dużej marginalizacji właśnie na rzecz Veriloga lub syntezowalnego SystemC/C++. To już się dzieje i wydaje mi się że będzie się pogłębiać. Tym bardziej w kontekście SystemC. Verilog jest po prostu o wiele wygodniejszy w użyciu i integracji z modelami w SystemC/C++, chociaż wiąże się to z pewnymi pułapkami na które trzeba uważać.
Pytania, czy SystemC daje się już używać w praktyce?
Rozumiem, że bardziej służy on do symulacji niż do implementacji.
Powiedziałbym że już od bardzo dawna się daje używać w praktyce. Poprzednia wersja z 2005 (standard)/2006 (implementacja 2.2), w połączeniu z TLM 2.0 to bardzo potężne narzędzie.
Z tym że jak zawsze jest jakieś "ale". W tym przypadku chodzi o zastosowanie.
Jeżeli chodzi o modele syntezowalne to narzędzia są ciągle rozwijane i nie sądzę żeby był wygodniejszy od VHDL/Verilog, aczkolwiek nie mam żadnego doświadczenia z syntezą wysokopoziomową, nie wiem jaka jest użyteczność narzędzi typu Catapult C od Mentora. Z opisu na stronie internetowej wydaje się, że wciąż jest to najpierw synteza do poziomu RTL i następnie synteza takiego opisu przy użyciu Leonardo czy Precision.
Modelowania w SystemC na poziomie RTL nawet nie biorę pod uwagę. Da się, tylko po co? Ogromny narzut kodu w stosunku do klasycznych języków HDL, problematyczna synteza...
Jeśli chodzi o weryfikację, czyli pisanie testbencha. Tutaj sprawa nie jest jednoznaczna. Symulacja modelu mieszanego (DUV w VHDL/Verilog, TB w SystemC) może być dość kłopotliwa w uruchomieniu, zwłaszcza szukanie potencjalnych problemów. Jednak jak się już model uruchomi (mam doświadczenie z Questą od Mentora i NCSim/IUS od Cadence'a) to można dać się ponieść wykorzystując wszelkie dobrodziejstwa C++ ze STL włącznie. Wydaje się tu obowiązywać prosta zależność: im bardziej skomplikowane algorytmy w TB które preferują implementację w C/C++ tym bardziej uzasadnione jest stosowanie SystemC. W prostszych środowiskach zdecydowanie lepiej używać do testbencha tego samego języka co do implementacji. Nie mogę nie wspomnieć o SystemVerilogu, który w rozważanym zakresie już jest standardem i raczej SystemC go nigdy nie zastąpi. Jednakże zagadnienie SystemC czy SystemVerilog to już całkiem inna para kaloszy i temat na o wiele dłuższy elaborat. Wspomnę tylko, że mam obecnie na tapecie projekt w którym implementacja jest w Verilogu, testbench w SystemC a gdzieś po drodze jest jeszcze SystemVerilog (głównie SVA) i z takim zestawem można całkiem przyjemnie pracować.
Po trzecie - modelowanie systemów na poziomie TLM lub ESL (komunikacja pomiędzy elementami systemu, wydajność, współpraca z oprogramowaniem). Tutaj zdecydowanie SystemC, zwłaszcza przy bardziej złożonych algorytmach. Wydaje się że to jest przyszłość. Modelowanie w RTLu systemów które mają złożoność sięgającą dziesiątek czy setek milionów bramek przeliczeniowych jest bardzo nieefektywne i jak już narzędzia do syntezy wysokopoziomowej będą zapewniały odpowiednie wsparcie to w tym kierunku widzę rozwój projektowania scalaków.
Czy jest wygodny?
J/w - zależy od zastosowania: o RTL zapomnij, testbench w niektórych przypadkach bardzo wygodny (przy zastosowaniu odpowiednich narzędzi), w innych niekoniecznie, ESL/TLM - zdecydowanie tak.
Polecasz jakieś narzędzia?
Tutaj właściwie zbyt wielkich możliwości wyboru nie ma. Jeśli trzeba symulować model mieszany to trzeba stosować narzędzia komercyjne w wersjach zaawansowanych. Mogę polecić mentorowską Questę. Bardzo wygodne narzędzie, w dodatku w wersji linuksowej z każda wersją coraz ściślej integrowana z narzędziami 0in do weryfikacji formalnej i CDC. Zawiera własne, dostosowane do debugu wersje SystemC, SCV i TLM - dla przykładu, każde pole klasy dziedziczącej po sc_module, włącznie ze zmiennymi natywnych typów C++ jest widoczne w strukturze i może być obserwowane na przebiegach.
Do symulacji modeli wysokopoziomowych w samym SystemC wystarczy referencyjna, darmowa implementacja kernela od Accellery (przedtem OSCI). Należy pamiętać, że SystemC to tak naprawdę nie jest język, ale biblioteka szablonów,klas i typów C++ zorientowana na modelowanie układów współbieżnych. Uzupełniona o implementację symulatora cycle-based napisanego również w C++ stanowi rozwiązanie umożliwiające symulację kompletnego modelu.

Z ciekawostek.
Istnieje bardzo ciekawe otwarte (i darmowe) narzędzie o nazwie Verilator. Program tłumaczy opis Verilogowy (tylko konstrukcje na poziomie RTL i też z pewnymi ograniczeniami) na SystemC, C++ lub Perla. Dzięki temu można stworzyć model środowiska całkowicie w SystemC, choć DUT jest implementowany w Verilogu, i do symulacji wykorzystać symulator referencyjny od Accellery.

Pozdrawiam,
Paweł
Jerzy G.

Jerzy G. Konstruktor, Secom

Temat: Nowe wydanie standardu SystemC

Paweł Duc:
Jerzy G.:
Cześć,
Witam
Moje doświadczenie ogranicza się do VHDL'a i czytania ze zrozumieniem Verilog'a.
Opierając się na moim doświadczeniu chciałbym Ci zasugerować lepsze zgłębienie Veriloga. Wydaje mi się że z czasem VHDL ulegnie dużej marginalizacji właśnie na rzecz Veriloga lub syntezowalnego SystemC/C++. To już się dzieje i wydaje mi się że będzie się pogłębiać. Tym bardziej w kontekście SystemC. Verilog jest po prostu o wiele wygodniejszy w użyciu i integracji z modelami w SystemC/C++, chociaż wiąże się to z pewnymi pułapkami na które trzeba uważać.

Dziękuję za obszerną odpowiedź.

Pewnie jest tak jak mówisz, pewnie znajdę czas na poznanie Verilog'a dopiero jak zostanę zmuszony przez okoliczności :)

Na razie VHDL jest dla mnie wystarczający, nie jest doskonały - to prawda.
"Parametryzowalność", funkcje konwersji, czy inne szczegóły pozostawiają wiele do życzenia.
Nigdy nie miałem potrzeby symulować systemu złożonego z wielu modułów jednocześnie np. uP, Matlab, VHDL, Verilog.

Podejrzewam, że "świętym gralem" byłoby stworzenie języka, który pozwalałby kodować zarówno hardware, jak i software. Może kiedyś to nastąpi. Moim zdaniem długi czas jeszcze będzie zapotrzebowanie na język ściśle hardware'owy, czy będzie to ewoluujący VHDL czy Verilog - nie wiem.
Na razie denerwujące jest to, że środowiska, które pozwalają na mieszanie, różnych modułów (języków) są bardzo drogie.

Mnie denerwuje, jeśli muszę napisać coś w octave (zapisać wynik do pliku, wczytać w vhdl...itd. i z powrotem), żeby móc symulować odpowiedź jakiegoś modułu hardware'owego.

Pozdrawiam,

Jerzy

Następna dyskusja:

Sprzedam mieszkanie - Biela...




Wyślij zaproszenie do