SystemC
| SystemC | |
|---|---|
| Art der | Bibliothek (Programmierung) |
| Entwickler | Open-System-C-Initiative |
| Geschrieben in | C++ |
| Operationssystem | Plattformübergreifend |
| letzte Version | 2.3 |
| Lizenz | Apache-Lizenz 2.0 [1] |
| Webseite | systemc.org |
SystemC ist eine Modelldesign- und Verifizierungssprache auf Systemebene, die als Open-Source- C++- Bibliothek implementiert ist. [2] Die Bibliothek enthält eine Ereignismodellierungs-Engine, mit der Sie ein ausführbares Gerätemodell erhalten können. Die Sprache wird zum Erstellen von Transaktions- und Verhaltensmodellen sowie für die Synthese auf hoher Ebene verwendet.
Die Sprache SystemC verwendet eine Reihe von Konzepten, die denen der Hardwarebeschreibungssprachen VHDL und Verilog ähneln : Schnittstellen, Prozesse, Signale, Ereignisse, Modulhierarchie. Der SystemC-Standard erlegt der Verwendung der C++-Sprache bei der Beschreibung von Systemmodellen keine Beschränkungen auf.
Es wurde ein Standardentwurf für die SystemC- Synthese entwickelt , dessen Zweck es ist, eine Teilmenge der C++- und SystemC-Sprachen zu definieren, die für die Verhaltens- und RTL-Synthese geeignet sind. [3]
Normen
- IEEE-Std. 1666-2005 Referenzhandbuch für die Sprache des IEEE-Standardsystems C [4]
Beispiel
Beispielbeschreibung des Addierermodells :
#include "systemc.h" // einschließlich der Header-Datei der SystemC-Bibliothek
SC_MODULE ( Addierer ) // Modul (Klasse) Deklaration {
sc_in < int > a , b ; // Ports sc_out < int > sum ;
void do_add () // verarbeiten {
Summe = a + b ;
}
SC_CTOR ( Addierer ) // Konstruktor {
SC_METHOD ( do_add ); // Registrierung des do_add-Prozesses in der Modellierungs-Engine sensitive << a << b ; // Sensitivitätsliste verarbeiten do_add }
};
Eigenschaften der Sprache
Module (Modul)
Module sind die Grundbausteine in SystemC. Ein Modell in SystemC besteht normalerweise aus mehreren Modulen, die über Ports kommunizieren.
Signale
Signale in SystemC sind das Äquivalent zum Senden über eine Leitung.
Häfen
Über Ports kommuniziert das Modul mit der Außenwelt (normalerweise mit anderen Modulen).
Prozesse
Prozesse sind die wichtigsten Rechenelemente. Prozesse laufen parallel .
Kanäle
Elemente kommunizieren über Kanäle in SystemC. Kanäle können einfache Drähte oder komplexe Verbindungsmechanismen wie FIFO- Warteschlangen oder Busse sein .
Basiskanäle:
- Signal
- Puffer
- fifo
- mutex
- Semaphor
Schnittstellen
Ports verwenden Schnittstellen, um über Kanäle zu kommunizieren.
Veranstaltungen
Muss während der Initialisierung deklariert werden. Zulassen, dass Prozesse synchronisiert werden.
Datentypen
SystemC enthält mehrere Datentypen, die die Hardwaremodellierung unterstützen.
Standardtypen erweitern:
- sc_int<> 64-Bit-Ganzzahl mit Vorzeichen
- sc_uint<> 64-Bit-Ganzzahl ohne Vorzeichen
- sc_bigint<> vorzeichenbehaftete Ganzzahl beliebiger Bitzahl
- sc_biguint<> vorzeichenlose ganze Zahl beliebiger Bitanzahl
Boolesche Typen:
- sc_bit 2-stelliges Bit
- sc_logic 4-stelliges Bit
- sc_bv<> Vektor (eindimensionales Array) von sc_bit
- sc_lv<> sc_logic-Vektor
Festpunkttypen:
- sc_fixed<> Schablone vorzeichenbehafteter Festpunkt
- sc_ufixed<> vorzeichenloser Fixpunkt mit Vorlage
- sc_fix Vorzeichenloser Fixpunkt ohne Vorlage
- sc_ufix untemplated vorzeichenloser Fixpunkt
Liste der Anwendungen, die SystemC unterstützen
- Aldec Active-HDL , Riviera [5] , Co-Simulation.
- Cadence Design Systems C-to-Silicon Compiler [6] , Synthese.
- Synopsys System Studio [7] , Modellierung, Analyse, Verifikation.
- Mentor Graphics Catapult C Synthese [8] , Synthese.
- Forte Design Systems Cynthesizer [9] , Synthese.
- Calypto SLEC System [10] , Codeanalyse.
- Jeda Validation Tools Suite [11] , Codeanalyse.
- SystemCrafter SystemCrafter SC [12] , Synthese.
Notizen
- ↑ https://github.com/accellera-official/systemc/blob/master/LICENSE
- ↑ Über SystemC (eng.) (Downlink) . - eine kurze Beschreibung der Sprache SystemC. Zugriffsdatum: 13. August 2009. Archiviert vom Original am 28. Oktober 2007.
- ↑ OSCI Drafts Under Public Review (Englisch) (Link nicht verfügbar) . - eine Liste von OSCI-Standardentwürfen. Abgerufen am 13. August 2009. Archiviert vom Original am 21. März 2012.
- ↑ IEEE-SA GetIEEE 1666 Nutzungsbedingungen (Downlink) . Abgerufen am 16. November 2008. Archiviert vom Original am 18. Mai 2008.
- ↑ Aldec – Technologien – SystemC Archiviert am 22. März 2009.
- ↑ Cadence C-to-Silicon-Compiler . Abgerufen am 28. November 2008. Archiviert vom Original am 19. September 2011.
- ↑ SystemStudio . Abgerufen am 2. Juni 2011. Archiviert vom Original am 4. Juni 2011.
- ↑ Catapult C Synthesis – Correct-by-Construction, hochwertiges RTL, 10-100x schneller – Mentor Graphics . Abgerufen am 28. November 2008. Archiviert vom Original am 6. Dezember 2008.
- ↑ Cynthesizer schließt die Lücke zwischen ESL und Silizium (Link nicht verfügbar) . Abgerufen am 28. November 2008. Archiviert vom Original am 12. Mai 2008.
- ↑ Kalypto | SLEC-System . Abgerufen am 28. November 2008. Archiviert vom Original am 21. Dezember 2008.
- ↑ JEDA-Produkte | Automatisierung der ESL-Modellvalidierung . Abgerufen am 28. November 2008. Archiviert vom Original am 4. Mai 2006.
- ↑ SystemCrafter-Produkte . Abgerufen am 28. November 2008. Archiviert vom Original am 1. Dezember 2008.
Literatur
- Alechin V.A. SystemC. Modellierung elektronischer Systeme. - M .: Hotline - Telekom , 2018. - 320 p. - 500 Exemplare. - ISBN 978-5-9912-0722-5 .