108
2 Spezifikation und Modellierung
bevorzugt. SystemC 2.0 unterstützt auch physikalische Einheiten wie Pikosekunden,
Nanosekunden, Mikrosekunden usw.
Die Datentypen von SystemC beinhalten alle üblichen Hardware-Typen: vierwertige Logik (0, 1, X und Z) sowie Bitvektoren unterschiedlicher Länge
werden unterstützt. Die Beschreibung von Anwendungen aus der digitalen Signalverarbeitung wird durch die Verfügbarkeit von Typen für Festkommazahlen vereinfacht.
Deterministisches Verhalten (siehe Seite 66) wird im Allgemeinen nicht garantiert, sondern nur durch Verwendung eines bestimmten Modellierungsstils erreicht.
Mit Hilfe eines Kommandozeilenschalters kann der Simulator angewiesen werden,
Prozesse in unterschiedlichen Reihenfolgen auszuführen. So kann der Benutzer überprüfen, ob die Simulationsergebnisse von der Reihenfolge der Prozessausführungen
abhängen. Für Modelle mit realistischer Komplexität kann man allerdings nicht
nachweisen, ob sie deterministisch sind – man kann nur zeigen, dass ein Modell
nichtdeterministisch ist.
Montoreano beschreibt die TLM-Modellierung mit SystemC [402]. Er unterscheidet zwischen nur zwei Typen von TLM-Modellen:
• Schwach zeitbehaftete Modelle: sie werden wie folgt beschrieben [402]: „Diese
Modelle besitzen eine geringe Abhängigkeit zwischen Daten und Zeitinformation,
und sie können die gewünschten Daten und Zeitinformation bereitstellen, wenn
Transaktionen gestartet werden. Die Erzeugung einer Antwort (z.B. auf eine
Leseanforderung) setzt nicht voraus, dass die (Simulations-)zeit fortschreitet.
Der Wettbewerb um Ressourcen und deren Verteilung werden in diesen Modellen
üblicherweise nicht erfasst. Aufgrund der geringen Abhängigkeit und minimalen
Umschalten des Kontextes können diese Modelle die schnellsten sein und sie sind
besonders bei der Softwareentwicklung auf einer virtuellen Plattform nützlich.”
• Modelle mit approximierten Zeiten: sie werden wie folgt beschrieben [402]:
„Bei diesen Modellen kann die Bereitstellung einer Antwort von dem Feuern
interner oder externer Ereignisse und/oder auch der fortschreitenden Zeit abhängen. Wettbewerb um Ressourcen und deren Zuordnung können mit diesem Stil
leicht modelliert werden. Diese Modelle benötigen mehrere Kontextwechsel in
der Simulation, um die verschiedenen Transaktionen vor ihrer Ausführung zu
synchronisieren oder zu ordnen, was zu einem Verlust an Simulationsgeschwindigkeit führt.”
Für den praktischen Entwurf ist es wichtig, aus den Modellen heraus mit Syntheseverfahren eine Implementierung in Hard- oder Software erzeugen zu können.
Die Synthese von Hardware aus SystemC-Modellen ist verfügbar [216, 217]. Es
gibt auch kommerzielle Werkzeuge zur Synthese aus SystemC heraus. Eine synthetisierbare Untermenge der Sprache ist definiert worden [8]. Für kommerzielle
Werkzeuge wird erwartet, dass sie mindestens aus der synthetisierbaren Untermenge eine Implementierung erzeugen können. In einem Buch werden Methodik und
Anwendungen SystemC-basierten Entwurfs vorgestellt [408]. Gegenwärtig (im Jahr
2020) ist SystemC 2.3.1 die jüngste Version von SystemC [7].
2 Spezifikation und Modellierung
bevorzugt. SystemC 2.0 unterstützt auch physikalische Einheiten wie Pikosekunden,
Nanosekunden, Mikrosekunden usw.
Die Datentypen von SystemC beinhalten alle üblichen Hardware-Typen: vierwertige Logik (0, 1, X und Z) sowie Bitvektoren unterschiedlicher Länge
werden unterstützt. Die Beschreibung von Anwendungen aus der digitalen Signalverarbeitung wird durch die Verfügbarkeit von Typen für Festkommazahlen vereinfacht.
Deterministisches Verhalten (siehe Seite 66) wird im Allgemeinen nicht garantiert, sondern nur durch Verwendung eines bestimmten Modellierungsstils erreicht.
Mit Hilfe eines Kommandozeilenschalters kann der Simulator angewiesen werden,
Prozesse in unterschiedlichen Reihenfolgen auszuführen. So kann der Benutzer überprüfen, ob die Simulationsergebnisse von der Reihenfolge der Prozessausführungen
abhängen. Für Modelle mit realistischer Komplexität kann man allerdings nicht
nachweisen, ob sie deterministisch sind – man kann nur zeigen, dass ein Modell
nichtdeterministisch ist.
Montoreano beschreibt die TLM-Modellierung mit SystemC [402]. Er unterscheidet zwischen nur zwei Typen von TLM-Modellen:
• Schwach zeitbehaftete Modelle: sie werden wie folgt beschrieben [402]: „Diese
Modelle besitzen eine geringe Abhängigkeit zwischen Daten und Zeitinformation,
und sie können die gewünschten Daten und Zeitinformation bereitstellen, wenn
Transaktionen gestartet werden. Die Erzeugung einer Antwort (z.B. auf eine
Leseanforderung) setzt nicht voraus, dass die (Simulations-)zeit fortschreitet.
Der Wettbewerb um Ressourcen und deren Verteilung werden in diesen Modellen
üblicherweise nicht erfasst. Aufgrund der geringen Abhängigkeit und minimalen
Umschalten des Kontextes können diese Modelle die schnellsten sein und sie sind
besonders bei der Softwareentwicklung auf einer virtuellen Plattform nützlich.”
• Modelle mit approximierten Zeiten: sie werden wie folgt beschrieben [402]:
„Bei diesen Modellen kann die Bereitstellung einer Antwort von dem Feuern
interner oder externer Ereignisse und/oder auch der fortschreitenden Zeit abhängen. Wettbewerb um Ressourcen und deren Zuordnung können mit diesem Stil
leicht modelliert werden. Diese Modelle benötigen mehrere Kontextwechsel in
der Simulation, um die verschiedenen Transaktionen vor ihrer Ausführung zu
synchronisieren oder zu ordnen, was zu einem Verlust an Simulationsgeschwindigkeit führt.”
Für den praktischen Entwurf ist es wichtig, aus den Modellen heraus mit Syntheseverfahren eine Implementierung in Hard- oder Software erzeugen zu können.
Die Synthese von Hardware aus SystemC-Modellen ist verfügbar [216, 217]. Es
gibt auch kommerzielle Werkzeuge zur Synthese aus SystemC heraus. Eine synthetisierbare Untermenge der Sprache ist definiert worden [8]. Für kommerzielle
Werkzeuge wird erwartet, dass sie mindestens aus der synthetisierbaren Untermenge eine Implementierung erzeugen können. In einem Buch werden Methodik und
Anwendungen SystemC-basierten Entwurfs vorgestellt [408]. Gegenwärtig (im Jahr
2020) ist SystemC 2.3.1 die jüngste Version von SystemC [7].
