SystemC

SystemC

SystemC ist eine Modellierungs- und Simulationssprache insbesondere für die Entwicklung von komplexen elektronischen Systemen, die sowohl Hardware- als auch Softwarekomponenten enthalten.

Im Gegensatz zu reinen Hardwarebeschreibungssprachen (wie VHDL und Verilog-HDL) wird SystemC vorrangig zur Modellierung auf noch höheren Abstraktionsebenen eingesetzt, womit Simulationen um den Faktor 100 bis 1000 schneller werden können und selbst längere Programme, die auf der beschriebenen Hardware ablaufen, mitsimuliert werden können. Aber auch die Modellierung von synthetisierbaren Schaltungen auf dem sogenannten Register Transfer Level sind mit SystemC als Substitut für VHDL oder Verilog möglich. Weitere treibende Vorteile von SystemC sind daneben einerseits die freie Verfügbarkeit als Open Source und andererseits die Verwandtschaft zu der verbreiteten Programmiersprache C++.

SystemC ist keine eigenständige Sprache, sondern eine (Klassen-)Bibliothek für C++. Sie erweitert die Sprache mittels Makros und Funktionen um die notwendigen Mittel, um zusätzlich typische Eigenschaften von Hardware modellieren zu können wie Synchronisation, Parallelität und Interprozesskommunikation. Dieses bringt SystemC den Nachteil eines syntaktischen Overheads ein, den Hardwarebeschreibungssprachen nicht haben. Dafür ist der Entwickler deutlich freier im Ausdruck.

SystemC eignet sich, wie z.B. auch die Modellierungssprache E, für die Modellierung von Protokollen und Peripherie, um anhand dieser die Fehlerfreiheit einer digitalen Schaltung zu überprüfen. SystemC ist jedoch nicht nur eine Modellierungssprache, sondern gleichzeitig ihr eigener Simulationskern. Dieser ist in der SystemC-Bibliothek enthalten (Bsp.: in jeder Referenzimplementierung der OSCI), sodass durch kompilieren eines System-Quellcodes ein ausführbarer Simulator mit dem Verhalten des Quellcodes entsteht. Jedoch wird SystemC auch von kommerziellen Simulationstools wie Modelsim unterstützt.

Viele Universitäten arbeiten an effizienten Programmen zur Schaltungssynthese aus SystemC-Modellen heraus. Einige Unternehmen bieten Lösungen an, die aus bestimmten SystemC-Codes Netzlisten für ASICs oder FPGAs generieren können. 2005 wurde die Version 2.1 der SystemC-Referenzbeschreibung von der internationalen Ingenieursvereinigung IEEE als Standard ratifiziert (IEEE 1666-2005). Dieser Standard stellt das aktuelle LRM (Language Reference Manual) dar und ist bei der IEEE kostenlos als Download verfügbar (siehe Weblinks). Im Jahr 2007 wurde die OpenSource-Referenzimplentierung der OSCI (Open SystemC Initiative) auf Version 2.2 aktualisiert um vollständig mit dem IEEE 1666 LRM konform zu sein.

Inhaltsverzeichnis

Syntax

Da SystemC eine Klassenbibliothek für C++ ist werden hier nur die für SystemC typischen Konstrukte angegeben.

Module

Module dienen dazu, um komplexere Systeme in überschaubare Teile zu gliedern. Sie bilden Bausteine, sind nach außen über Ports zugänglich und können wiederum Module enthalten. Die Syntax lautet

SC_MODULE (Modulname) {
// Modulinhalt
};

Eine Instanz des Moduls wird durch den Konstruktor

SC_CTOR (Modulname) {. . . }

realisiert.

Signale und Ports

Ports bilden die Schnittstelle des Moduls nach außen. Es gibt drei Arten von Ports und als vierten Typ Signale:

sc_in<Porttyp> PortInName; // Eingang
sc_out<Porttyp> PortOutName; // Ausgang
sc_inout<Porttyp> PortInOutName; // Bidirektional
sc_signal<Signaltyp> SigName; // Signal

Prozesse

Die Funktionalität der Module wird durch Prozesse gebildet. Es gibt drei Arten von Prozessen.

Methode-Prozesse werden aufgerufen, wenn sich ein Signal aus der Sensitivitätsliste ändert und übergeben nach ihrer Ausführung die Kontrolle wieder an den Simulator zurück. Durch

SC_METHOD (Funktionsname); 

wird eine bestimmte Funktion, die zuvor im Modul deklariert werden muss, installiert. Die Sensitivitätsliste wird durch

sensitive << Signal1 << Signal2 . . .

erzeugt.

Im Gegensatz zu Methode-Prozessen werden Thread-Prozesse nur einmal gestartet und durchlaufen immer wieder die gleiche Schleife, in der wait()-Kommandos zur vorübergehenden Unterbrechung dienen.

SC_THREAD (Funktionsname);

Clocked-Thread-Prozesse sind synchrone Thread-Prozesse, deren Aktionen erst zur nächsten Taktflanke sichtbar werden. Im Unterschied zu den Thread-Prozessen erfolgt keine Angabe der Sensitivitätsliste sondern das zweite Argument im Aufruf

SC_CTHREAD (Funktionsname, Taktflanke);

spezifiziert, welche Flanke des Taktsignals den Prozess triggert.

Beispiel

Ein Addierer in SystemC:

#include "systemc.h"

SC_MODULE(adder) // Moduldeklaration (eine Art Klasse)
{
  sc_in<int> a, b;        // Zwei Eingangs-Ports (a und b)
  sc_out<int> sum;        // Ein Ausgangs-Port

  SC_CTOR(adder)
  {
     SC_THREAD(doit);
     sensitive <<a <<b;
  }
     void doit()
     {
       while(true)
       {
         sum.write(a.read() + b.read());
         wait();
       }
     }
};

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • SystemC — is often thought of as a hardware description language like VHDL and Verilog, but is more aptly described as a system description language , since it exhibits its real power during transaction level modeling and behavioral modeling. SystemC is a… …   Wikipedia

  • SystemC — Тип библиотека (программирование) Разработчик Open SystemC Initiative Написана на С++ Операционная система Кроссплатформенный Последняя версия 2.3 Сайт …   Википедия

  • SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel …   Wikipedia Español

  • SystemC — es frecuentemente descrito como un lenguaje de descripción de hardware como son VHDL y Verilog, pero es más adecuado describirlo como un lenguaje de descripción de sistemas, puesto que es realmente útil cuando se usa para modelar sistemas a nivel …   Enciclopedia Universal

  • SystemC — Introduction SystemC est souvent présenté comme un langage de description de matériel, au même titre que VHDL ou verilog. En fait, SystemC est un langage de description de plus haut niveau, puisqu il permet une modélisation de systèmes au niveau… …   Wikipédia en Français

  • Hardware description language — In electronics, a hardware description language or HDL is any language from a class of computer languages and/or programming languages for formal description of electronic circuits. It can describe the circuit s operation, its design and… …   Wikipedia

  • Transaction-level modeling — (TLM) is a high level approach to modeling digital systems where details of communication among modules are separated from the details of the implementation of functional units or of the communication architecture. Communication mechanisms such… …   Wikipedia

  • NCSim — Incisive Developer(s) Cadence Design Systems Operating system Cross platform Type Simulator License proprietary …   Wikipedia

  • Juzzle — est une plateforme de développement open source de mise au point et d exploitation de simulateurs, utilisée depuis de nombreuses années dans les domaines de la simulation scientifique par la communauté industrielle française. Cet environnement se …   Wikipédia en Français

  • Verilog — Класс языка: Язык описания аппаратуры Появился в: 1983 1984 Автор(ы): Phil Moorby, Prabhu Goel Расширение файлов: .v Verilog, Verilog HDL (англ. Verilog Hardwar …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”