<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SystemC</id>
	<title>SystemC - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=SystemC"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SystemC&amp;action=history"/>
	<updated>2026-05-21T19:09:17Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=SystemC&amp;diff=487704&amp;oldid=prev</id>
		<title>imported&gt;Siegbert v2: + GND</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=SystemC&amp;diff=487704&amp;oldid=prev"/>
		<updated>2026-04-01T05:18:12Z</updated>

		<summary type="html">&lt;p&gt;+ GND&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SystemC&amp;#039;&amp;#039;&amp;#039; ist eine [[Modellierungssprache|Modellierungs-]] und [[Simulationssprache]] insbesondere für die Entwicklung von komplexen elektronischen Systemen, die sowohl Hardware- als auch Softwarekomponenten umfassen.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu reinen [[Hardwarebeschreibungssprache]]n, wie [[Very High Speed Integrated Circuit Hardware Description Language|VHDL]] und [[Verilog|Verilog-HDL]], handelt es sich bei SystemC um keine eigene Programmiersprache, sondern um eine [[C++]]-Klassenbibliothek. Sie ist in dem aktuellen [[IEEE]]-Standard 1666-2011 definiert. Außerdem steht eine [[Open Source|quelloffene]] Implementierung des Standards, unter der [[Apache-Lizenz|Apache 2.0 Lizenz]] zur Verfügung&amp;lt;ref&amp;gt;{{Internetquelle |url=https://accellera.org/downloads/standards/systemc |titel=SystemC |abruf=2019-02-08}}&amp;lt;/ref&amp;gt;. Als Klassenbibliothek erweitert SystemC C++ um Sprachelemente, die der Hardware-Modellierung dienen. Gleichzeitig verfügt die Bibliothek über einen Simulatorkern, sodass sich mit SystemC beschriebene Modelle ausführen und testen lassen&amp;lt;ref&amp;gt;{{Literatur |Autor=G. Martin |Hrsg= |Titel=SystemC: from language to applications, from tools to methodologies |Sammelwerk=16th Symposium on Integrated Circuits and Systems Design, 2003. SBCCI 2003. Proceedings. |Band= |Nummer= |Auflage= |Verlag= |Ort= |Datum=2003-09 |ISBN= |Seiten=3– |Online=https://ieeexplore.ieee.org/document/1232796/ |Abruf=2019-02-08 |DOI=10.1109/SBCCI.2003.1232796}}&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
SystemC wird vorrangig zur Modellierung auf höheren Abstraktionsebenen, z.&amp;amp;nbsp;B. für [[Transaction Level Modeling|Transaction Level Modeling (TLM)]] eingesetzt. Damit eignet sich SystemC insbesondere für [[Electronic System Level Design]]s, wo die frühzeitige Bereitstellung eines Virtuellen Prototypen zur Evaluation von Entwurfsalternativen von hoher Bedeutung ist. Klassische [[Register Transfer Level|RTL]]-Entwürfe wären hier zu komplex und unflexibel.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil von SystemC ist nicht nur die schnelle Entwicklung von Prototypen, sondern auch die auf höheren Abstraktionsebenen deutlich verbesserte Simulationsleistung. In SystemC entworfene Modelle auf Transanktionsebene, können eine um ein rund tausendfaches schnellere Simulationsleistung aufweisen als [[Register Transfer Level|RTL]]-Modelle&amp;lt;ref&amp;gt;{{Literatur |Autor=Frank Kesel |Hrsg= |Titel=Modellierung von digitalen Systemen mit SystemC, Von der RTL- zur Transaction-Level-Modellierung |Auflage= |Verlag=De Gruyter |Ort=Berlin, Boston |Datum=2012 |ISBN=978-3-486-70581-2 |Seiten=17 |Online=https://www.degruyter.com/viewbooktoc/product/217001 |Abruf=2019-02-08 |DOI=10.1524/9783486718959}}&amp;lt;/ref&amp;gt;. Somit können auch komplexere Programme mitsimuliert werden und Entwurfsalternativen bezüglich der Partitionierung von Hard- und Software-Komponenten abgewägt werden. Aber auch die Modellierung von synthetisierbaren Schaltungen auf [[Registertransferebene]] sind mit SystemC als Substitut für VHDL oder Verilog möglich.&lt;br /&gt;
&lt;br /&gt;
Da es sich bei SystemC um keine eigenständige Sprache, sondern eine reine ([[Klassenbibliothek|Klassen-]])[[Programmbibliothek|Bibliothek]] für C++ handelt, müssen alle typischen Sprachelemente herkömmlicher Hardwarebeschreibungssprachen auf einfache C++-Sprachkonstrukte abgebildet werden. Dies bringt SystemC den Nachteil eines syntaktischen Overheads ein, den herkömmliche Hardwarebeschreibungssprachen nicht haben. Die Bereitstellung einer Vielzahl von [[Präprozessor]]-[[Makroprozessor|Makros]] hilft dabei, diesen Effekt etwas einzudämmen. Dafür ist der Entwickler deutlich freier im Ausdruck, was jedoch in der Regel mit der [[Synthese (Elektrotechnik)|Synthetisierbarkeit]] des Hardware-Modells im Konflikt steht.&lt;br /&gt;
&lt;br /&gt;
SystemC eignet sich, wie z.&amp;amp;nbsp;B. auch die Modellierungssprache [[E (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.&lt;br /&gt;
&lt;br /&gt;
Viele Universitäten arbeiten an effizienten Programmen zur [[Synthese (Elektrotechnik)|Schaltungssynthese]] aus SystemC-Modellen heraus. Einige Unternehmen bieten Lösungen an, die aus bestimmten SystemC-Codes [[Netzliste]]n für [[Anwendungsspezifische integrierte Schaltung|ASICs]] oder [[FPGA]]s generieren können. Im Jahr 2005 wurde die Version 2.1 der SystemC-Referenzbeschreibung von der internationalen Ingenieursvereinigung [[IEEE]] als Standard IEEE 1666-2005 ratifiziert, welcher 2012 durch 1666-2011 abgelöst wurde. Dieser Standard stellt das aktuelle LRM (Language Reference Manual) dar und ist bei der IEEE kostenlos als Download verfügbar (siehe Weblinks).&lt;br /&gt;
Im Jahr 2007 wurde die Open-Source-Referenzimplentierung der OSCI (Open SystemC Initiative) auf Version 2.2 aktualisiert um vollständig mit dem IEEE 1666 LRM konform zu sein.&lt;br /&gt;
&lt;br /&gt;
Im Jahr 2016 wurde die Analog Mixed-Signal Erweiterung SystemC AMS als Standard ratifiziert (IEEE 1666.1-2016). Eine Open-Source-Referenzimplentierung ist kostenlos als Download verfügbar (siehe Weblinks).&lt;br /&gt;
&lt;br /&gt;
== Syntax ==&lt;br /&gt;
Da SystemC eine Klassenbibliothek für C++ ist, werden hier nur die für SystemC typischen Konstrukte angegeben.&lt;br /&gt;
&lt;br /&gt;
=== Module ===&lt;br /&gt;
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.&lt;br /&gt;
Die Syntax lautet&lt;br /&gt;
&lt;br /&gt;
 SC_MODULE (Modulname) {&lt;br /&gt;
 // Modulinhalt&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
Eine Instanz des Moduls wird durch den Konstruktor&lt;br /&gt;
&lt;br /&gt;
 SC_CTOR (Modulname) {. . . }&lt;br /&gt;
&lt;br /&gt;
realisiert.&lt;br /&gt;
&lt;br /&gt;
=== Signale und Ports ===&lt;br /&gt;
Ports bilden die Schnittstelle des Moduls nach außen. Es gibt drei Arten von Ports und als vierten Typ Signale:&lt;br /&gt;
&lt;br /&gt;
 sc_in&amp;lt;Porttyp&amp;gt; PortInName; // Eingang&lt;br /&gt;
 sc_out&amp;lt;Porttyp&amp;gt; PortOutName; // Ausgang&lt;br /&gt;
 sc_inout&amp;lt;Porttyp&amp;gt; PortInOutName; // Bidirektional&lt;br /&gt;
 sc_signal&amp;lt;Signaltyp&amp;gt; SigName; // Signal&lt;br /&gt;
&lt;br /&gt;
=== Prozesse ===&lt;br /&gt;
Die Funktionalität der Module wird durch Prozesse gebildet.&lt;br /&gt;
Es gibt drei Arten von Prozessen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Methoden-Prozesse&amp;#039;&amp;#039; 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&lt;br /&gt;
&lt;br /&gt;
 SC_METHOD (Funktionsname);&lt;br /&gt;
&lt;br /&gt;
wird eine bestimmte Funktion installiert, die zuvor im Modul deklariert werden muss.&lt;br /&gt;
Die Sensitivitätsliste wird durch&lt;br /&gt;
&lt;br /&gt;
 sensitive &amp;lt;&amp;lt; Signal1 &amp;lt;&amp;lt; Signal2 . . .&lt;br /&gt;
&lt;br /&gt;
erzeugt.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Methoden-Prozessen werden &amp;#039;&amp;#039;Thread-Prozesse&amp;#039;&amp;#039; nur einmal gestartet und&lt;br /&gt;
durchlaufen immer wieder die gleiche Schleife, in der wait()-Kommandos zur vorübergehenden&lt;br /&gt;
Unterbrechung dienen.&lt;br /&gt;
&lt;br /&gt;
 SC_THREAD (Funktionsname);&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Clocked-Thread-Prozesse&amp;#039;&amp;#039; 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&lt;br /&gt;
&lt;br /&gt;
 SC_CTHREAD (Funktionsname, Taktflanke);&lt;br /&gt;
&lt;br /&gt;
spezifiziert, welche Flanke des Taktsignals den Prozess triggert.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Ein [[Addierer]] in SystemC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;systemc.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SC_MODULE(adder) {        // Moduldeklaration (eine Art Klasse)&lt;br /&gt;
  sc_in&amp;lt;int&amp;gt; a, b;        // Zwei Eingangs-Ports (a und b)&lt;br /&gt;
  sc_out&amp;lt;int&amp;gt; sum;        // Ein Ausgangs-Port&lt;br /&gt;
&lt;br /&gt;
  SC_CTOR(adder) {&lt;br /&gt;
    SC_THREAD(doit);&lt;br /&gt;
    sensitive &amp;lt;&amp;lt;a &amp;lt;&amp;lt;b;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  void doit() {&lt;br /&gt;
    while(true) {&lt;br /&gt;
      sum.write(a.read() + b.read());&lt;br /&gt;
      wait();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Just Another Hardware Definition Language]]&lt;br /&gt;
* [[Advanced Boolean Equation Language|ABEL]]&lt;br /&gt;
* [[SystemVerilog]]&lt;br /&gt;
* [[SpecC]]&lt;br /&gt;
* [[Electronic Design Automation]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Frank Kesel, &amp;#039;&amp;#039;Modellierung von digitalen Systemen mit SystemC. Von der RTL- zur Transaction-Level-Modellierung&amp;#039;&amp;#039;. 2012. ISBN 978-3-486-70581-2&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.systemc.org/ Website der Entwicklungsgruppe von SystemC] (englisch)&lt;br /&gt;
* [https://ieeexplore.ieee.org/document/1617814 SystemC-Standard IEEE 1666-2005] (englisch)&lt;br /&gt;
* [https://ieeexplore.ieee.org/document/6134619 SystemC-Standard IEEE 1666-2011] (englisch)&lt;br /&gt;
* [https://ieeexplore.ieee.org/document/7448795 SystemC AMS-Standard IEEE 1666.1-2016] (englisch)&lt;br /&gt;
* [https://www.coseda-tech.com/systemc-ams-proof-of-concept SystemC AMS Proof-of-Concept Download] (englisch)&lt;br /&gt;
* {{Webarchiv |url=http://systemc-ams.eas.iis.fraunhofer.de/ |wayback=20120207022440 |text=Fraunhofer IIS/EAS SystemC-AMS Homepage}} (englisch)&lt;br /&gt;
* {{Webarchiv |url=http://www-ti.informatik.uni-tuebingen.de/~systemc/ |wayback=20160803101540 |text=European SystemC Users Group}} (englisch)&lt;br /&gt;
* [https://sclive.wordpress.com/ SCLive, eine Linux-LiveCD mit kompletter SystemC-Simulationsumgebung] (englisch)&lt;br /&gt;
* [https://www.doulos.com/knowhow/systemc/ Doulos Guide to SystemC] (englisch)&lt;br /&gt;
* {{Webarchiv |url=http://publik.tuwien.ac.at/files/pub-et_3966.pdf |wayback=20090306175933 |text=Einsatz von SystemC im Hardware-/Software-Codesign |format=PDF; 532&amp;amp;nbsp;kB}} Diplomarbeit&lt;br /&gt;
* [https://www.veripool.org/ Veripool SystemC utilities and Verilog to SystemC compiler] (englisch)&lt;br /&gt;
* {{Webarchiv |url=http://www.ti.cs.uni-frankfurt.de/ams/diplomarbeiten2006.html |wayback=20070731161409 |text=2 Diplomarbeiten zum Thema Simulatorkopplung unter Nutzung von SystemC}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste programmierbare Logik}}&lt;br /&gt;
&lt;br /&gt;
{{Normdaten |TYP=s |GND=4737678-8}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierbare Logik]]&lt;br /&gt;
[[Kategorie:C++]]&lt;br /&gt;
[[Kategorie:Hardwarebeschreibungssprache]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Siegbert v2</name></author>
	</entry>
</feed>