2.7 Diskrete, ereignisbasierte Sprachen
107
jede Form der Kommunikation verwenden. Üblicherweise wird der Nachrichtenaustausch benutzt. Das Kommunikationsmodell in SpecC hat das Kommunikationsmodell in SystemC 2.0 beeinflusst.
SpecC basiert auf C++-Syntax. Diese Wahl wurde aus dem folgenden Grund getroffen: Es gibt den Trend, mehr und mehr Funktionalität in Software zu realisieren
und dafür die Sprache C zu benutzen. Beispielsweise implementieren eingebettete Systeme Standards wie MPEG 1/2/4 oder Dekoder für Mobilfunkstandards wie
GSM, UMTS oder LTE. Diese Standards sind häufig in Form von „Referenzimplementierungen” verfügbar, die aus C-Programmen bestehen, die nicht auf Effizienz
optimiert sind, sondern die v.a. die notwendige Funktionalität bereit stellen. Der
Nachteil von Entwurfsmethodiken, die auf speziellen HDLs (wie VHDL oder Verilog, siehe unten) basieren, ist, dass die Standards in der jeweiligen HDL neu
geschrieben werden müssen. Außerdem verlangt die gemeinsame Simulation von
Hardware und Software das Verbinden von Hardware- und Softwaresimulatoren.
Üblicherweise führt dies zu einem Verlust an Simulationseffizienz und inkonsistenten Benutzerschnittstellen. Auch müssten die Designer mehrere Sprachen lernen.
Daher gab es das Bemühen, Hardwarestrukturen in Softwaresprachen zu modellieren. Dazu mussten einige fundamentale Probleme gelöst werden:
• Die in der Hardware übliche Nebenläufigkeit (engl. concurrency) muss in Software modelliert werden.
• Es gibt die Notwendigkeit, die Zeit darzustellen.
• Mehrwertige Logik, wie oben beschrieben, sollte benutzt werden können.
• Das deterministische Verhalten fast aller sinnvollen Hardwareschaltungen sollte
sichergestellt sein.
Für die SpecC-Sprache wie auch für andere HDLs wurden diese Probleme gelöst.
2.7.5 SystemC
TLM-Modellierung und die Trennung zwischen Kommunikation und Berechnung
sind auch in der Sprache SystemC ™ verfügbar. SystemC basiert wie SpecC auf C
und C++. Zur abstrakten Modellierung der Kommunikation bietet SystemC Kanäle,
Ports und Schnittstellen, ähnlich wie SpecC. Damit wird die TLM-Modellierung
erleichtert.
SystemC ™ [521, 244] ist eine C++-Klassenbibliothek. Bei Verwendung von SystemC können Spezifikationen in C oder in C++ geschrieben werden, wobei an den
entsprechenden Stellen Referenzen auf die Klassenbibliothek eingesetzt werden.
SystemC beinhaltet die gleichzeitige Ausführung mehrerer Prozesse. Die Ausführung von Prozessen wird über Sensitivitätslisten und Aufrufe von wait -Instruktionen
gesteuert. Sensitivitätslisten können dynamisch sein, d.h. die Liste der Signale, auf
deren Änderungen reagiert wird, kann sich während der Ausführung verändern.
SystemC hat auch ein Modell für die Zeit. SystemC 1.0 verwendet Gleitkommazahlen, um die Zeit darzustellen. In SystemC 2.0 wird eine ganzzahlige Darstellung
107
jede Form der Kommunikation verwenden. Üblicherweise wird der Nachrichtenaustausch benutzt. Das Kommunikationsmodell in SpecC hat das Kommunikationsmodell in SystemC 2.0 beeinflusst.
SpecC basiert auf C++-Syntax. Diese Wahl wurde aus dem folgenden Grund getroffen: Es gibt den Trend, mehr und mehr Funktionalität in Software zu realisieren
und dafür die Sprache C zu benutzen. Beispielsweise implementieren eingebettete Systeme Standards wie MPEG 1/2/4 oder Dekoder für Mobilfunkstandards wie
GSM, UMTS oder LTE. Diese Standards sind häufig in Form von „Referenzimplementierungen” verfügbar, die aus C-Programmen bestehen, die nicht auf Effizienz
optimiert sind, sondern die v.a. die notwendige Funktionalität bereit stellen. Der
Nachteil von Entwurfsmethodiken, die auf speziellen HDLs (wie VHDL oder Verilog, siehe unten) basieren, ist, dass die Standards in der jeweiligen HDL neu
geschrieben werden müssen. Außerdem verlangt die gemeinsame Simulation von
Hardware und Software das Verbinden von Hardware- und Softwaresimulatoren.
Üblicherweise führt dies zu einem Verlust an Simulationseffizienz und inkonsistenten Benutzerschnittstellen. Auch müssten die Designer mehrere Sprachen lernen.
Daher gab es das Bemühen, Hardwarestrukturen in Softwaresprachen zu modellieren. Dazu mussten einige fundamentale Probleme gelöst werden:
• Die in der Hardware übliche Nebenläufigkeit (engl. concurrency) muss in Software modelliert werden.
• Es gibt die Notwendigkeit, die Zeit darzustellen.
• Mehrwertige Logik, wie oben beschrieben, sollte benutzt werden können.
• Das deterministische Verhalten fast aller sinnvollen Hardwareschaltungen sollte
sichergestellt sein.
Für die SpecC-Sprache wie auch für andere HDLs wurden diese Probleme gelöst.
2.7.5 SystemC
TLM-Modellierung und die Trennung zwischen Kommunikation und Berechnung
sind auch in der Sprache SystemC ™ verfügbar. SystemC basiert wie SpecC auf C
und C++. Zur abstrakten Modellierung der Kommunikation bietet SystemC Kanäle,
Ports und Schnittstellen, ähnlich wie SpecC. Damit wird die TLM-Modellierung
erleichtert.
SystemC ™ [521, 244] ist eine C++-Klassenbibliothek. Bei Verwendung von SystemC können Spezifikationen in C oder in C++ geschrieben werden, wobei an den
entsprechenden Stellen Referenzen auf die Klassenbibliothek eingesetzt werden.
SystemC beinhaltet die gleichzeitige Ausführung mehrerer Prozesse. Die Ausführung von Prozessen wird über Sensitivitätslisten und Aufrufe von wait -Instruktionen
gesteuert. Sensitivitätslisten können dynamisch sein, d.h. die Liste der Signale, auf
deren Änderungen reagiert wird, kann sich während der Ausführung verändern.
SystemC hat auch ein Modell für die Zeit. SystemC 1.0 verwendet Gleitkommazahlen, um die Zeit darzustellen. In SystemC 2.0 wird eine ganzzahlige Darstellung
