Das Kefk Network Wiki befindet sich im Testbetrieb.
SystemC
Aus Kefk.
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 Hardwarebeschreibungsprachen (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 sog. 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. Einige Simulationstools wie Modelsim unterstützen SystemC.
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.
Beispiel
Ein Addierer in SystemC
#include "systemc.h"
SC_MODULE(adder) // Moduldeklaration (eine Art Klasse)
{
sc_in<int> a, b; // Ein Eingang, Port genannt
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
- ASIC (Application Specific Integrated Circuit)
- CPLD (Complex Programmable Logic Device)
- FPGA (Field Programmable Gate Array)
- Just Another Hardware Definition Language
- VHDL (Very high speed integrated circuit hardware description language)
- ABEL
- Verilog
- SystemVerilog
Weblinks
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort SystemC, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
