VHDL und X11-Grafikausgabe
Entwurfsmethodik - Systemsimulation
Einer der wesentlichen Vorteile der Hardwarebeschreibungssprache
VHDL ist die Möglichkeit, Verhaltens- und Strukturbeschreibungen
zu kombinieren.
Dadurch kann ein neues Design zunächst in einer reinen
Verhaltensbeschreibung spezifiziert und simuliert werden, bevor
sukzessive immer mehr Teile des Designs als Struktur entworfen und
in der Strukturbeschreibung zusammen mit den Verhaltensbeschreibungen
ausgetestet werden.
Viele der Entwurfsschritte können dabei bereits von
Syntheseprogrammen automatisch durchgeführt werden.
Die früher übliche Entwurfsmethode, für ein neues Design zuerst einen eigenen Simulator in einer Hochsprache (meistens in C oder C++) zu schreiben, um dann später die Struktur von Hand zu entwerfen und mit dem Logiksimulator des jeweiligen VLSI Entwurfssystems zu simulieren, ist daher überholt.
Visualisierung von Simulationsdaten
Für viele typische Entwurfsaufgaben ist allerdings eine graphische Aufbereitung der Verhaltenssimulation sinnvoll oder gar unumgänglich. Gerade im Bereich der Bildverarbeitung können viele Algorithmen bei graphischer Darstellung "mit einem Blick" überprüft werden, während eine alphanumerische Darstellung der Simulationsdaten wegen der großen Datenmengen kaum handhabbar ist.Mit dedizierten Simulatoren in Sprachen von C bis Smalltalk ist das kein Problem: Fast alle allgemein einsetzbaren Programmiersprachen verfügen über Grafikbibliotheken auf dem jeweiligen Hostrechner. Auf UNIX-Workstations zum Beispiel steht fast immer eine X-Windows Anbindung zur Verfügung.
Eine derartige Anbindung ist für VHDL bisher allerdings weder definiert noch vorgesehen. Daher bieten die meisten VHDL Simulatoren derzeit nur die übliche Waveform-Darstellung - die Darstellung ausgewählter Signale als Funktion der Simulationszeit - an. Dies bedeutet eine erhebliche Einschräkung der Nutzbarkeit von VHDL für komplexe Entwurfsaufgaben.
VHDL Grafikanbindung
Um die Vorteile von VHDL trotzdem durchgängig nutzen zu können kommen zwei Umwege in Frage:Zum einen kann die VHDL File-I/O Schnittstelle benutzt werden, um formatierte Ausgabedaten mit einem entsprechend angepaßten Programm zu lesen und dann graphisch darzustellen. Auf UNIX Systemen ist dies über den Mechanismus von "named pipes" sogar synchron möglich - allerdings mit erheblichem Verwaltungsaufwand und Performanznachteilen verbunden. Da die File-I/O Schnittstelle in VHDL standardisiert ist, sollte dieses Verfahren auf allen IEEE 1076 Simulatoren funktionieren.
Die zweite Möglichkeit ist die Nutzung der von fast allen Simulatoren angebotenen externen C-Schnittstellen. Dabei werden eigene VHDL Entities als C-Programm beschrieben und in den VHDL Simulator eingebunden. Die in C geschriebenen Module können dann natürlich ihrerseits C Funktionen - insbesondere also die Xlib und X-Widgets - aufrufen. Dadurch wird eine Grafikanbindung ohne Performanzverluste möglich. Gravierender Nachteil dieser Methode ist die Festlegung auf die Eigenheiten der C-Schnittstelle des verwendeten VHDL Simulators.
Grafikausgaben sind mit beiden Verfahren möglich. Problematisch ist aber die interaktive Eingabe - etwa die Auswertung von Maus- oder Tastaturevents. Eine VHDL Simulation arbeitet mit festen Zeitskalen in physikalisch relevanten Zeiteinheiten (typisch Piko- oder Femtosekunden). Dagegen erfolgen die interaktiven Benutzereingaben asynchron. Die Abfrage der Eingaben ist daher nur durch Polling möglich, was a-priori Annahmen über Häufigkeit der Eingaben und die akzeptablen Antwortzeiten erfordert.
X11 Anbindung an SYNOPSYS VSS
Als proof-of-concept der VHDL Grafikanbindung wurden zunächst einfache Module für die Anbindung von X11 Grafik an den SYNOPSYS VHDL Simulator realisiert. Das erste VHDL Modul "ocp" (open-close-plot) ermöglicht die Ausgabe von einfachen 2D-Liniengrafiken und implementiert eine einfache Abfrage von X11 Keyboard-events mittels Polling. Die Abfragefrequenz der Tasten muß dabei im VHDL Design fest eingestellt werden.Zwei weitere Programme realisieren Ausgabefenster für Graustufenbilder outputWindow beziehungsweise zeitliche Folgen von Datenwerten scopeWindow. Diese Module werden am Arbeitsbereich in mehreren Projekten und Diplomarbeiten genutzt.