SystemC - SystemC
SystemC je sada C ++ třídy a makra, která poskytují řízené událostmi simulační rozhraní (viz také diskrétní simulace událostí ). Tato zařízení umožňují designérovi simulovat souběžné procesy, každý popsán pomocí prostého C ++ syntax. Procesy SystemC mohou komunikovat v simulované prostředí v reálném čase, využívající signály všech typy dat nabízené C ++, některé další, které nabízí knihovna SystemC, stejně jako uživatelem definované. V určitých ohledech SystemC záměrně napodobuje jazyky popisu hardwaru VHDL a Verilog, ale je výstižněji popsán jako a jazyk pro modelování na systémové úrovni.
SystemC se používá na úrovni systému modelování, architektonický průzkum, modelování výkonu, vývoj softwaru, funkční ověření, a syntéza na vysoké úrovni. SystemC je často spojován s úroveň elektronického systému (ESL) design, as modelování na úrovni transakcí (TLM).
Specifikace jazyka
SystemC je definován a podporován iniciativou Open SystemC Initiative (OSCI - nyní Accellera ) a byl schválen asociací IEEE Standards Association jako IEEE 1666-2011[1] - SystemC Language Reference Manual (LRM). LRM poskytuje definitivní prohlášení o sémantice SystemC. OSCI také poskytuje open-source simulátor proof-of-concept (někdy nesprávně označovaný jako referenční simulátor), který lze stáhnout z webových stránek OSCI.[2] Ačkoli bylo záměrem OSCI, aby komerční prodejci a akademická obec mohli vytvořit originální software kompatibilní s IEEE 1666, v praxi byla většina implementací SystemC alespoň částečně založena na simulátoru OSCI proof-of-concept.
SystemC má sémantické podobnosti VHDL a Verilog, ale lze říci, že mají syntaktickou režii ve srovnání s těmito, pokud jsou použity jako jazyk popisu hardwaru. Na druhou stranu nabízí větší rozsah výrazu, podobně jako objektově orientované dělení návrhů a třídy šablon. Ačkoli je SystemC striktně knihovnou tříd C ++, někdy se na něj pohlíží jako na jazyk sám o sobě. Zdrojový kód lze zkompilovat s knihovnou SystemC (která obsahuje simulační jádro) a poskytnout spustitelný soubor. Výkon implementace open source OSCI je obvykle méně optimální než komerční simulátory VHDL / Verilog, pokud se používá pro úroveň přenosu registru simulace.
SystemC verze 1 součástí společné jazyk popisu hardwaru funkce jako strukturální hierarchie a konektivita, přesnost hodinového cyklu, trojúhelníkové cykly, čtyřhodnotová logika (0, 1, X, Z) a funkce rozlišení sběrnice. Od verze 2 se zaměření SystemC přesunulo na komunikační abstrakci, modelování na úrovni transakcí a modelování virtuální platformy. SystemC verze 2 přidal abstraktní porty, dynamické procesy a časovaná upozornění na události.
Jazykové funkce
Moduly
SystemC má představu o kontejnerové třídě zvané modul. Toto je hierarchická entita, která může obsahovat další moduly nebo procesy.
Moduly jsou základními stavebními kameny návrhové hierarchie SystemC. Model SystemC se obvykle skládá z několika modulů, které komunikují přes porty. Moduly lze považovat za stavební kámen SystemC.
Přístavy
Porty umožňují komunikaci zevnitř modulu ven (obvykle do jiných modulů) prostřednictvím kanálů.
Signály
SystemC podporuje vyřešené a nevyřešené signály. Vyřešené signály mohou mít více než jeden ovladač (sběrnici), zatímco nevyřešené signály mohou mít pouze jeden ovladač.
Vývoz
Moduly mají porty, kterými se připojují k dalším modulům. SystemC podporuje jednosměrné a obousměrné porty.
Export zahrnuje kanály a umožňuje komunikaci zevnitř modulu ven (obvykle do jiných modulů).
Procesy
K popisu funkčnosti se používají procesy. Procesy jsou obsaženy uvnitř modulů. SystemC poskytuje tři různé procesní abstrakce[který? ] které mají používat návrháři hardwaru a softwaru. Procesy jsou hlavními výpočetními prvky. Jsou souběžné.
Kanály
Kanály jsou komunikační prvky systému SystemC. Mohou to být jednoduché vodiče nebo složité komunikační mechanismy FIFO nebo sběrnicové kanály.
Základní kanály:
- signál: ekvivalent drátu
- nárazník
- FIFO
- mutex
- semafor
Rozhraní
Porty používají rozhraní ke komunikaci s kanály.
Události
Události umožňují synchronizaci mezi procesy a musí být definovány během inicializace.
Typy dat
SystemC zavádí několik datových typů, které podporují modelování hardwaru.
Rozšířené standardní typy:
- sc_int <n> n-bit celé číslo se znaménkem
- sc_uint <n> n-bit celé číslo bez znaménka
- sc_bigint <n> n-bit celé číslo se znaménkem pro n > 64
- sc_biguint <n> n-bit celé číslo bez znaménka pro n > 64
Typy logiky:
- sc_bit dvouhodnotový jediný bit
- sc_logic 4hodnotový jediný bit
- sc_bv <n> vektor délky n sc_bit
- sc_lv <n> vektor délky n sc_logic
Typy pevných bodů:
- sc_fixed <> templated signed fixed point
- sc_ufixed <> templátovaný nepodepsaný pevný bod
- sc_fix unemplated podepsaný pevný bod
- sc_ufix unemplated unsigned fixed point
Dějiny
- 1999-09-27 Otevřená iniciativa Open SystemC
- Vydáno 01.03.2000 SystemC V0.91
- Vydáno 2000-03-28 SystemC V1.0
- Byla vydána specifikace 2001-02-01 SystemC V2.0 a zdrojový kód V1.2 Beta
- 2003-06-03 Vydáno SystemC 2.0.1 LRM (referenční příručka k jazyku)
- 2006-06-06 SystemC 2.1 LRM a TLM 1.0 na úrovni transakcí vydán standard modelování
- 12. 12. 2005 IEEE schvaluje standard IEEE 1666–2005 pro SystemC
- 2007-04-13 Vydáno SystemC v2.2
- 2008-06-09 Vydána knihovna TLM-2.0.0
- 27. 7. 2009 Vydáno TLM-2.0 LRM, doprovázeno knihovnou TLM-2.0.1
- 2010-03-08 SystemC AMS vydána rozšíření 1.0 LRM
- 10. 11. 2011 IEEE schvaluje standard IEEE 1666–2011 pro SystemC[3]
- 2016-04-06 IEEE schvaluje standard IEEE 1666.1–2016 pro SystemC AMS
SystemC sleduje svůj původ v práci na scénickém programovacím jazyce popsaném v dokumentu DAC 1997.[4]
PAŽE Ltd., CoWare, Synopsys a CynApps se spojily, aby vyvinuly SystemC (CynApps se později stal Systémy Forte Design ) zahájit první verzi konceptu v roce 1999.[5][6] V té době byl hlavním konkurentem SpecC další open source balíček založený na jazyce C vyvinutý společností UC Irvine personál a některé japonské společnosti.
V červnu 2000 vznikla skupina norem známá jako Otevřete iniciativu SystemC byla vytvořena, aby poskytla průmyslově neutrální organizaci pro hostování aktivit SystemC a umožnila demokratickým zastoupením ve vývoji SystemC největší konkurenty Synopsys, Cadence a Mentor Graphics.
Příklad kódu
Příklad kódu zmije:
#zahrnout "systemc.h"SC_MODULE(zmije) // deklarace modulu (třídy){ sc_in<int> A, b; // porty sc_out<int> součet; prázdnota do_add() // proces { součet.psát si(A.číst() + b.číst()); // nebo jen součet = a + b } SC_CTOR(zmije) // konstruktor { SC_METHOD(do_add); // zaregistrujte do_add do jádra citlivý << A << b; // seznam citlivosti do_add }};
Odhad výkonu / energie v SystemC
Odhad výkonu / energie lze v SystemC provést pomocí simulací.Powersim[7] je knihovna tříd SystemC zaměřená na výpočet výkonu a spotřeby energie hardwaru popsaného na úrovni systému. Za tímto účelem jsou operátoři C ++ monitorováni a pro každý datový typ SystemC lze použít různé energetické modely. Simulace s Powersim nevyžadují žádnou změnu ve zdrojovém kódu aplikace.
Viz také
Poznámky
- ^ „Procházet standardy“. standards.ieee.org.
- ^ www.systemc.org, web Open SystemC Initiative Archivováno 2008-10-06 na Wayback Machine
- ^ IEEE schvaluje revidovaný standard „Language SystemC“ IEEE 1666 ™ pro elektronický design na úrovni systému a přidává podporu pro modelování na úrovni transakcí - http://www.businesswire.com/news/home/20111109006054/en/IEEE-Approves-Revised-IEEE-1666%E2%84%A2-%E2%80%9CSystemC-Language%E2%80%9D
- ^ "ScenicDAC1997". CiteSeerX 10.1.1.56.6483. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Synopsys a Co-Ware Inc., kteří odvedli velkou část práce za SystemC - http://www.electronicsweekly.com/Articles/1999/12/07/13906/stm-synopsys-in-3-year-rampd-deal.htm
- ^ "PAŽE je potěšen Synopsys, CoWare a další společnosti se spojily na SystemC, protože pokud je využíváno průmyslem, zjednodušuje to náš svět, “řekl Tudor Brown, technologický ředitel společnosti PAŽE Ltd “v Babelu jazyků soutěžících o roli v SoC - http://www.eetimes.com/ip99/ip99story1.html
- ^ http://sourceforge.net/projects/powersim/
Reference
- 1666-2005 - IEEE Standard System C Language Reference Manual. 2006. doi:10.1109 / IEEESTD.2006.99475. ISBN 0-7381-4871-7.
- 1666-2011 - IEEE Standard for Standard SystemC Language Reference Manual. 2012. doi:10.1109 / IEEESTD.2012.6134619. ISBN 978-0-7381-6801-2.
- T. Grötker, S. Liao, G. Martin, S. Swan, Návrh systému s SystemC. Springer, 2002. ISBN 1-4020-7072-1
- System Live Linux Linux CD s výukovým programem C ++ / SystemC
- J. Bhasker, Základní nátěr SystemC, Druhé vydání, Star Galaxy Publishing, 2004. ISBN 0-9650391-2-9
- D. C. Black, J. Donovan, SystemC: od základů, 2. vyd., Springer 2009. ISBN 0-387-69957-0
- George Frazier, SystemC: Hardwarově orientované konstrukce v C ++
- Frank Ghenassia (redaktor), Transaction-Level Modeling with SystemC: TLM Concepts and Applications for Embedded Systems, Springer 2006. ISBN 0-387-26232-6
- Stan Y. Liao, Steven W. K. Tjiang, Rajesh K. Gupta: Efektivní implementace reaktivity pro modelování hardwaru v prostředí scénického designu. DAC 1997: 70-75
externí odkazy
- Oficiální webové stránky
- Výukový program SystemC
- ESCUG - Evropská skupina uživatelů SystemC
- NASCUG - Severoamerická skupina uživatelů SystemC
- LASCUG - Latinskoamerická skupina uživatelů SystemC
- ISCUG - Indická skupina uživatelů SystemC
- Hřiště EDA - Zdarma C ++ / SystemC IDE založené na webovém prohlížeči