Ein Plädoyer für die Verwendung von VHDL-2008

Seite: 2/2

Anbieter zum Thema

Verifikationsunterstützung in VHDL-2008

Listing 5: Veränderung des Signals CI innerhalb der in der Testbench instanziierten Komponente N_BIT_ADD durch force und relea-se Befehle. Unterbrechung der Simulation durch einen stop Befehl.
Listing 5: Veränderung des Signals CI innerhalb der in der Testbench instanziierten Komponente N_BIT_ADD durch force und relea-se Befehle. Unterbrechung der Simulation durch einen stop Befehl.
(Bild: Jürgen Reichhardt)

Der 2008-Standard erweitert die Möglichkeiten einer plattformunabhängigen Entwurfsverifikation durch Einführung neuer Schlüsselworte. So kann z.B. die Ausführung einer Testbench durch VHDL-Anweisungen unterbrochen (stop) bzw. beendet (finish) werden: Mit dem in Listing 5 vorgestellten VHDL-Code wird z.B. in ModelSim 10.4 die folgende Statusmeldung ausgegeben:

Break in Process STIMULI at … line …

Auch ist es möglich mit den neuen VHDL-Anweisungen force bzw. release den Wert von Signalen oder Variablen für Testzwecke zu überschreiben bzw. diese Simulations- treiber wieder freizugeben. Besonders vorteilhaft ist dies in Zusammenhang mit einer alias-Deklaration. So zeigt z.B. das Listing 5 die Testbench N_BIT_ADD_TB in der die Komponenteninstanz DUT verwendet wird. Das interne Signal CI dieser Komponente wird mit dem Alias-Namen INTERRUPT versehen wobei der vollständige Signalpfad in << … >> Klammern anzugeben ist. Innerhalb der Testbench wird der interne Signaltreiber durch den force-Befehl mit dem Wert 1 überschrieben und durch den release-Befehl nach 100 ns wieder freigegeben. Damit wird erreicht, dass die Komponente in diesem Zeitraum mit einem extern aufgezwungenen Signal simuliert.

Weitere Vereinfachungen gegenüber früheren Standards

Weitere Vereinfachungen, die VHDL-2008 gegenüber VHDL-2002 mit sich bringt, sind beispielsweise:

  • Blockkommentare: Ähnlich wie in der Programmiersprache C ist es im nun erlaubt, Blockkommentare zu verwenden. Die bisherige Restriktion, dass Kommentare auf eine einzige Codezeile beschränkt sind, entfällt mit der Einführung der Kommentarbegrenzungssymbole /* und */.
  • Bistring Konstanten: Bisher war eine Signalwertzuweisung von Hexadezimalzahlen mit dem Bezeichner X vor der Zahl nur dann möglich, wenn diese ein Vielfaches von 4 Bit umfassen. Im Standard VHDL-2008 entfällt diese Restriktion und es ist außerdem möglich, Zahlen vorzeichenlos, vorzeichenbehaftet oder dezimal zuzuweisen. Wenn die Zahlen die angegebene Bitbreite überschreiten, werden die höherwertigen Bits abgeschnitten. Wenn hingegen die Zahlen kleiner sind, als Bitstellen zur Verfügung stehen, werden je nach Datentyp führende Bitstellen mit Nullen bzw. vorzeichengerecht ergänzt.
  • Signalausdrücke in port map Instanziierungen: Allgemein gilt, dass VHDL-2008 weniger global statische Ausdrücke benötigt als zuvor. Derartige Ausdrücke müssen erst beim Linken der einzelnen Komponenten des VHDL-Modells (Elaboration) einen festen Wert besitzen. So kann z.B. in einer port map Anweisung ein Boole’scher Ausdruck oder eine Datentypkonversion an die Komponenteninstanz übergeben werden.
  • Bitweise Boole’sche Verknüpfungen: Die Boole’schen Operatoren and, or, xor, nand, nor und xnor können in VHDL-2008 auch unär, also mit einem einzelnen Signalvektor als Operand verwendet werden. Mit dieser Verwendung des Operators wird die bitweise Verknüpfung aller Bitelemente des Signalvektors gebildet.
  • Verknüpfung skalarer Signale mit Signal-Arrays: Bisher war es erforderlich, dass die Bitbreiten aller Operanden eines Boole’schen Operators gleich sein mussten. Diese Restriktion gibt es in VHDL-2008 nicht mehr. So kann z.B. die UND-Verknüpfung aller Bits eines Signalvektors mit einem Freigabesignal EN in einer einzelnen Zuweisung realisiert werden. Signalarrays und skalare Signale dürfen also in Boole’schen Ausdrücken gemischt verwendet werden.
  • Vereinfachte Bedingungsausdrücke: In vielen Bedingungsausdrücken war es erforderlich, einen expliziten Vergleich mit einer Signalwertkonstanten durchzuführen. Wie das Beispiel in Listing 3 zeigt ist dies in VHDL-2008 nicht mehr erforderlich.
  • Bedingte Komponenteninstanziierung: Schon im bisherigen VHDL-Standard VHDL-2002 war es erlaubt, eine automatisierte Komponenteninstanziierung mit der generate-Anweisung nur bei Erfüllung einer bestimmten Bedingung durchzuführen. Neu ist im VHDL-2008 Standard nun, dass es auch erlaubt ist, der if-Abfrage einen else-Zweig hinzuzufügen. Ebenfalls ist es erlaubt, die automatisierte Komponenteninstanziierung abhängig von dem Wert einer case-Abfrage durchzuführen.

VHDL-2008 in Simulations- und Synthesewerkzeugen

Bild 3: Mit Hilfe des Online-Tools EDA Playground der Firma Doulos können diverse EDA Werkzeuge für Testzwecke evaluiert werden. Neben diversen Hardwareauszeichnungs- und Hochsprachen beherrscht das Webseitenbasierte Werkzeug auch diverse Tools und Simulatoren.
Bild 3: Mit Hilfe des Online-Tools EDA Playground der Firma Doulos können diverse EDA Werkzeuge für Testzwecke evaluiert werden. Neben diversen Hardwareauszeichnungs- und Hochsprachen beherrscht das Webseitenbasierte Werkzeug auch diverse Tools und Simulatoren.
(Bild: Doulos)

Eine einfache Möglichkeit, die Syntax der neuen Sprachkonstrukte auszuprobieren, ohne auf dem eigenen Rechner besondere Werkzeuge installieren zu müssen, bietet edaplayground.com von der Firma Doulos. Dort können verschiedene EDA Werkzeuge für Testzwecke evaluiert werden. U.a. kann auch der Aldec Simulator Riviera Pro mit der Option VHDL-2008 ausgewählt werden, der diesen Standard vollständig unterstützt.

Die ohne Anspruch auf Vollständigkeit erstellte Tabelle 1 zeigt, in welchem Umfang ein FPGA-Entwurf mit VHDL-2008 durch aktuelle Simulations- und Synthesewerkzeuge unterstützt wird. Da die meisten dieser Werkzeuge noch nicht für VHDL-2008 vorkonfiguriert sind, müssen an geeigneter Stelle Einstellungen vorgenommen werden, um diesen Standard auszuwählen. Weitergehende Information über die notwendigen Konfigurationen, bzw. darüber, welche der neuen Sprachkonstrukte ggf. noch nicht unterstützt werden, müssen der jeweiligen Dokumentation entnommen werden.

Zusammenfassend kann festgehalten werden, dass VHDL-2008 im Vergleich zu älteren VHDL-Standards folgende Vorteile bietet:

  • Eine Reduzierung des Codierungsaufwands und damit eine leichtere Lesbarkeit des VHDL-Codes durch die Einführung neuer Operatoren und die Aufgabe bisher gültiger Restriktionen.
  • Die garantierte Konsistenz der Simulations- und Synthesesemantik für kombinatorische Logik.
  • Neue, synthesefähige Datentypen für eine einfache Festkommaarithmetik, die insbesondere die Umsetzung von Algorithmen der digitalen Signalverarbeitung vereinfacht.
  • Eine größere Flexibilität bei einer plattformunabhängigen Verifikation durch VHDL-Testbenches.

Die Tatsache, dass die aktuellen EDA-Werkzeuge VHDL-2008 umfassend unterstützen, sollte also künftig keine Ausrede mehr dafür sein, auf die Vorteile dieses neuen Standards zu verzichten.

[1] Jürgen Reichardt: Digitaltechnik, Eine Einführung mit VHDL, 4. Auflage. De Gruyter, Oldenbourg Verlag, 2016

[2] Jim Lewis: VHDL-2008 The End of Verbosity,

URL: http://www.synthworks.com/papers/VHDL_2008_end_of_verbosity_2013

[3] IEEE: 1076-2008 – IEEE Standard VHDL Language Reference Manual,

URL: http://standards.ieee.org/findstds/standard/1076-2008.html

* * Prof. Dr. Jürgen Reichardt st Dozent für IT, Schwerpunkte Digitaler Systementwurf, HW-SW-Codesign und FPGA-basierter SoC-Entwurf, an der HAW Hamburg.

(ID:45610702)