- Hardware Description Language
-
Eine Hardwarebeschreibungssprache (engl. Hardware Description Language, HDL) ist eine formale Sprache mit der Operationen von integrierten Schaltungen und ihr Design beschrieben sowie in Simulationen getestet werden können.
Hardwarebeschreibungssprachen drücken ein zeitliches Verhalten und/oder eine (räumliche) Schaltkreisstruktur in normalem Text aus. Im Gegensatz zu Software-Programmiersprachen beinhalten Syntax und Semantik der HDLs in ihrer Notation Möglichkeiten, zeitliche Abläufe und Gleichzeitigkeiten auszudrücken, wie es von Hardware verlangt wird. Sprachen, deren einziges Merkmal es ist, Verbindungen von Schaltkreisen in Form von Netzlisten wiederzugeben, werden als Netlist-Sprachen bezeichnet.
Inhaltsverzeichnis
Abgrenzung
Regelmäßig (und fälschlicherweise) wird der Begriff Programmieren synonym für das Schreiben einer Hardwarebeschreibung benutzt. Dies resultiert daraus, dass HDLs eine ausführbare Spezifikation einer bestimmten Hardware darstellen. Ein Simulationsprogramm, das die grundlegende Semantik der Sprache und den Verlauf der Zeit bereitstellt, bietet dem Hardwaredesigner die Möglichkeit, ein Stück Hardware zu modellieren, bevor es physisch hergestellt wird. Diese Möglichkeit der Ausführung lässt es so aussehen, als würde diese Sprache dazu benutzt, etwas zu programmieren. Es gibt HDLs und Simulatoren für das Modellieren in Digital- und Analogtechnik.
Es ist möglich, Hardware semantisch in einer verbreiteten Sprache wie C++, in Verbindung mit umfangreichen Klassenbibliotheken, zu beschreiben. Diesen Ansatz verfolgt SystemC, welches aber derzeit nur in Ausnahmefällen synthesefähig ist und primär im akademischen Bereich eingesetzt wird. Normales C++ enthält hingegen außerdem keine Möglichkeiten, um einen Zeitverlauf zu beschreiben, und ist deshalb wenig geeignet.
Anwendung
Ein Grund für den Einsatz einer allgemeinen HDL ist die Möglichkeit der automatischen Erzeugung von Netzlisten für integrierte Schaltungen durch ein Synthesetool. Auch lassen sich so Schaltungen leicht auf in programmierbare Bausteinen wie Field Programmable Gate Arrays (FPGAs) in einem anwendungsspezifischen integrierten Schaltungen (ASICs) realisieren.
Für die Synthese der Schaltung, das Erzeugen einer Netzliste, ist typischerweise nur ein Teil der Sprache, bezogen auf Syntax und Semantik, geeignet. Im Bereich digitaler Schaltung kommt bevorzugt die Logiksynthese zur Anwendung. Die restlichen Teile der Sprache eignen sich zum einfacheren Modellieren einer Testumgebung zur Verifikation der Funktionsfähigkeit in Simulationsprogrammen. Beispiele von Sprachkonstrukten welche ausschließlich in der Simulationsumgebung verfügbar sind und sich nicht synthetisieren lassen, ist die Ein- und Ausgabe von Dateien (File-IO). Der konkrete Umfang welche Teile der Sprache noch synthesefähig sind, hängt von den eingesetzten Synthesewerkzeugen ab. So waren in der Anfangszeit der Logiksynthese digitale Multiplikationen nicht direkt synthetisierbar. Die im Jahr 2008 verfügbaren Werkzeuge beherrschen im Regelfall die direkte Synthese der Multiplikationsoperation in Hardware.
Folgende Abstraktionsebenen werden verwendet:
- Verhaltensmodell (behavioral, im Regelfall nicht synthesefähig)
- Register-Transfer-Level (RTL-Modell, synthesefähig)
- Gatelevel-Modell (Netzliste)
Bekannte Beispiele
Verilog und VHDL sind die weltweit am häufigsten gebrauchten Sprachen und haben sich als Quasistandards etabliert. Eine weitere, ältere Hardwarebeschreibungssprache welche vor allem im Bereich kleinerer digitaler Schaltung Anwendung gefunden hat, ist die Advanced Boolean Equation Language (ABEL).
Siehe auch
Literatur
- Reiner Hartenstein: Fundamentals of Structured Hardware Design. A Design Language Approach at Register Transfer Language. North Holland Publ. Co./Elsevier Scientific, Amsterdam/New York 1977, ISBN 0-444-85007-4.
- Jean P. Mermet (Hrsg.): Fundamentals and Standards in Hardware Description Languages. Kluwer Academic Publishers, Dordrecht 1993, ISBN 0-7923-2513-3.
Weblinks
Wikimedia Foundation.