2.7 Diskrete, ereignisbasierte Sprachen
121
beschrieben werden. Prozesse werden zur Modellierung der Nebenläufigkeit von
Hardwarekomponenten verwendet. Genau wie in VHDL gibt es Bitvektoren und
Zeiteinheiten. In einigen Bereichen ist Verilog allerdings weniger flexibel und konzentriert sich mehr auf bequem verwendbare Grundfunktionen. Standard-Verilog
erlaubt es beispielsweise nicht, Aufzählungstypen so flexibel zu definieren wie dies
im IEEE 1164-Standard der Fall ist. Die Unterstützung für vierwertige Logik ist
direkt in die Verilog-Sprache eingebaut und der Standard IEEE 1364 stellt auch
eine mehrwertige Logik mit acht verschiedenen Signalstärken zur Verfügung. Mehrwertige Logik ist in Verilog enger an die Sprache gebunden als in VHDL. Das
Logik-System von Verilog bietet auch mehr Funktionen für die Beschreibung von
Schaltungen auf der Transistor-Ebene. Trotzdem ist VHDL im Allgemeinen flexibler.
So kann man in VHDL etwa Hardware-Komponenten in Schleifen instantiieren, wodurch man strukturelle Beschreibungen wie z.B. einen n-Bit-Addierer spezifizieren
kann, ohne wirklich n Addierer und ihre Verbindungen explizit angeben zu müssen.
Die Anzahl der Benutzer von Verilog ist ähnlich hoch wie die von VHDL. Während VHDL in Europa beliebter ist, wird Verilog in den Vereinigten Staaten bevorzugt.
Die Versionen 3.0 und 3.1 von Verilog sind auch als SystemVerilog bekannt. Sie
enthalten zahlreiche Erweiterungen zu Verilog 2.0, u.a. [245, 517]:
• zusätzliche Sprachelemente, um Verhalten zu modellieren,
• C-Datentypen wie int und Methoden zur Typdefinition wie typedef und struct,
• Definition der Schnittstellen von Hardwarekomponenten als eigenständige Entities,
• standardisierte Methoden zum Aufruf von C/C++-Funktionen und, zu einem
gewissen Grad, zum Aufruf eingebauter Verilog-Funktionen aus C,
• deutlich verbesserte Unterstützung zur Beschreibung der Umgebung (der Testbench) für die entwickelte Hardware (die als Circuit Under Design (CUD) bezeichnet wird) und zur Verwendung der Testbench, um die CUD durch Simulation
zu verifizieren,
• Klassen (wie man sie von der objektorientierten Programmierung her kennt), die
in Testbenches verwendet werden können,
• dynamische Erzeugung von Prozessen,
• standardisierte Interprozesskommunikation und -synchronisation, auch mit Semaphoren,
• automatische Anforderung und Freigabe von Speicher,
• Sprachelemente, welche die Schnittstellen zu formalen Verifikationsmethoden
vereinheitlichen (siehe Seite 261).
Aufgrund der Schnittstellen zu C und C++ ist es auch möglich, Verilog mit
SystemC zu verbinden. Die Simulations- und formalen Verifikationsmöglichkeiten
machen die Sprache beliebt.
121
beschrieben werden. Prozesse werden zur Modellierung der Nebenläufigkeit von
Hardwarekomponenten verwendet. Genau wie in VHDL gibt es Bitvektoren und
Zeiteinheiten. In einigen Bereichen ist Verilog allerdings weniger flexibel und konzentriert sich mehr auf bequem verwendbare Grundfunktionen. Standard-Verilog
erlaubt es beispielsweise nicht, Aufzählungstypen so flexibel zu definieren wie dies
im IEEE 1164-Standard der Fall ist. Die Unterstützung für vierwertige Logik ist
direkt in die Verilog-Sprache eingebaut und der Standard IEEE 1364 stellt auch
eine mehrwertige Logik mit acht verschiedenen Signalstärken zur Verfügung. Mehrwertige Logik ist in Verilog enger an die Sprache gebunden als in VHDL. Das
Logik-System von Verilog bietet auch mehr Funktionen für die Beschreibung von
Schaltungen auf der Transistor-Ebene. Trotzdem ist VHDL im Allgemeinen flexibler.
So kann man in VHDL etwa Hardware-Komponenten in Schleifen instantiieren, wodurch man strukturelle Beschreibungen wie z.B. einen n-Bit-Addierer spezifizieren
kann, ohne wirklich n Addierer und ihre Verbindungen explizit angeben zu müssen.
Die Anzahl der Benutzer von Verilog ist ähnlich hoch wie die von VHDL. Während VHDL in Europa beliebter ist, wird Verilog in den Vereinigten Staaten bevorzugt.
Die Versionen 3.0 und 3.1 von Verilog sind auch als SystemVerilog bekannt. Sie
enthalten zahlreiche Erweiterungen zu Verilog 2.0, u.a. [245, 517]:
• zusätzliche Sprachelemente, um Verhalten zu modellieren,
• C-Datentypen wie int und Methoden zur Typdefinition wie typedef und struct,
• Definition der Schnittstellen von Hardwarekomponenten als eigenständige Entities,
• standardisierte Methoden zum Aufruf von C/C++-Funktionen und, zu einem
gewissen Grad, zum Aufruf eingebauter Verilog-Funktionen aus C,
• deutlich verbesserte Unterstützung zur Beschreibung der Umgebung (der Testbench) für die entwickelte Hardware (die als Circuit Under Design (CUD) bezeichnet wird) und zur Verwendung der Testbench, um die CUD durch Simulation
zu verifizieren,
• Klassen (wie man sie von der objektorientierten Programmierung her kennt), die
in Testbenches verwendet werden können,
• dynamische Erzeugung von Prozessen,
• standardisierte Interprozesskommunikation und -synchronisation, auch mit Semaphoren,
• automatische Anforderung und Freigabe von Speicher,
• Sprachelemente, welche die Schnittstellen zu formalen Verifikationsmethoden
vereinheitlichen (siehe Seite 261).
Aufgrund der Schnittstellen zu C und C++ ist es auch möglich, Verilog mit
SystemC zu verbinden. Die Simulations- und formalen Verifikationsmöglichkeiten
machen die Sprache beliebt.
