Hardware-Beschreibungssprache

In der Elektronik, einer Hardware-Beschreibungssprache oder HDL ist jede Sprache von einer Klasse von Computersprachen, Spezifizierungssprachen oder dem Modellieren von Sprachen für die formelle Beschreibung und das Design von elektronischen Stromkreisen, und meistens, Digitallogik. Es kann die Operation des Stromkreises, sein Design und Organisation und Tests beschreiben, um seine Operation mittels der Simulation nachzuprüfen.

HDLs sind Standardtext-basierte Ausdrücke der räumlichen und zeitlichen Struktur und Verhalten von elektronischen Systemen. Wie gleichzeitige Programmiersprachen schließen HDL Syntax und Semantik ausführliche Notationen ein, um Parallelität auszudrücken. Jedoch, im Gegensatz zu den meisten Softwareprogrammiersprachen, schließen HDLs auch einen ausführlichen Begriff der Zeit ein, die ein primäres Attribut der Hardware ist. Sprachen, deren nur Eigenschaft Stromkreis-Konnektivität zwischen einer Hierarchie von Blöcken ausdrücken soll, werden als netlist auf dem elektrischen computergestützten Design (CAD) verwendete Sprachen richtig klassifiziert.

HDLs werden verwendet, um rechtskräftige Spezifizierungen für die Hardware zu schreiben. Ein Programm, das entworfen ist, um die zu Grunde liegende Semantik der Sprachbehauptungen durchzuführen und den Fortschritt der Zeit vorzutäuschen, versorgt den Hardware-Entwerfer mit der Fähigkeit, ein Stück der Hardware zu modellieren, bevor es physisch geschaffen wird. Es ist dieser executability, der HDLs das Trugbild gibt, Programmiersprachen zu sein, wenn sie als Spezifizierungssprachen oder das Modellieren von Sprachen genauer klassifiziert werden. Simulatoren, die dazu fähig sind, getrenntes Ereignis zu unterstützen (das digitale) und dauernd-malige (analoge) Modellieren, besteht und für jeden ins Visier genommener HDLs, sind verfügbar.

Es ist sicher möglich, Hardware-Semantik mit traditionellen Programmiersprachen wie C ++ zu vertreten, obwohl man fungiert, müssen solche Programme mit umfassenden und unhandlichen Klassenbibliotheken vermehrt werden. In erster Linie, jedoch, schließen Softwareprogrammiersprachen keine Fähigkeit ein, um Zeit ausführlich auszudrücken, und das ist, warum sie als Hardware-Beschreibungssprachen nicht fungieren können. Vor der neuen Einführung von SystemVerilog C ++ war die Integration mit einem Logiksimulator eine der wenigen Weisen, OOP in der Hardware-Überprüfung zu verwenden. SystemVerilog ist der erste größere HDL, um Gegenstand-Orientierung und Müll-Sammlung anzubieten.

Mit der richtigen Teilmenge von eigentlich irgendwelchem (Hardware-Beschreibung oder Softwareprogrammierung) Sprache hat ein Programm einen Synthesizer genannt (oder Synthese-Werkzeug) kann Hardware-Logikoperationen aus den Sprachbehauptungen ableiten und einen gleichwertigen netlist von allgemeinen Hardware-Primitiven erzeugen, um das angegebene Verhalten durchzuführen. Synthesizer ignorieren allgemein den Ausdruck irgendwelcher Timing-Konstruktionen im Text. Digitallogiksynthesizer verwenden zum Beispiel allgemein Uhr-Ränder als der Weg zur Zeit der Stromkreis, irgendwelche Timing-Konstruktionen ignorierend. Die Fähigkeit, eine synthesizable Teilmenge der Sprache zu haben, macht keine Hardware-Beschreibungssprache selbst.

Geschichte

Die ersten Hardware-Beschreibungssprachen waren ISP (Befehlssatz-Verarbeiter), entwickelt an der Universität von Carnegie Mellon und KARL, der an der Universität von Kaiserslautern, beide 1977 entwickelt ist. ISP war jedoch mehr wie eine Softwareprogrammiersprache, die verwendet ist, um Beziehungen zwischen den Eingängen und den Produktionen des Designs zu beschreiben. Deshalb konnte es verwendet werden, um das Design vorzutäuschen, aber es nicht zu synthetisieren. KARL hat Designrechnungsspracheigenschaften eingeschlossen, die VLSI Span floorplanning unterstützen, und hat Hardware-Design strukturiert, das auch die Basis der interaktiven grafischen Schwester-Sprache von KARL ABL, durchgeführt am Anfang der 1980er Jahre als der ABLED grafische VLSI Designredakteur, durch das Fernmeldeforschungszentrum CSELT an Torino, Italien war. Mitte der 80er Jahre wurde ein VLSI Designfachwerk um KARL und ABL von einem internationalen Konsortium durchgeführt, das von der Kommission der Europäischen Union (Kapitel in) gefördert ist. 1983 hat Data-I/O ABEL eingeführt. Es wurde ins Visier genommen, um programmierbare logische Geräte zu beschreiben, und war an Designzustandsmaschinen grundsätzlich gewöhnt.

Der erste moderne HDL, Verilog, wurde durch die Tor-Designautomation 1985 eingeführt. Rhythmus-Designsysteme haben später die Rechte auf Verilog-XL, der HDL-Simulator erworben, der die allgemeine Norm (Simulatoren von Verilog) für das nächste Jahrzehnt werden würde. 1987 hat eine Bitte vom amerikanischen Verteidigungsministerium zur Entwicklung von VHDL geführt (VHSIC Hardware-Beschreibungssprache, wo VHSIC Sehr Hohe Geschwindigkeit Einheitlicher Stromkreis ist). VHDL hat auf der Programmiersprache von Ada basiert. Am Anfang wurden Verilog und VHDL verwendet, um Stromkreis-Designs zu dokumentieren und vorzutäuschen, die bereits gewonnen und in einer anderen Form (wie schematische Dateien) beschrieben sind. HDL Simulation hat Ingenieuren ermöglicht, an einem höheren Niveau der Abstraktion zu arbeiten, als Simulation am schematischen Niveau, und so vergrößerter Designkapazität von Hunderten von Transistoren zu Tausenden.

Die Einführung der Logiksynthese für HDLs hat HDLs vom Hintergrund in den Vordergrund des Digitaldesigns gestoßen. Synthese-Werkzeuge haben HDL Quelldateien (geschrieben in einem gezwungenen Format genannt RTL) in einen manufacturable gate/transistor-level netlist Beschreibung kompiliert. Das Schreiben synthesizable RTL Dateien hat Praxis und Disziplin seitens des Entwerfers verlangt; im Vergleich zu einem traditionellen schematischen Lay-Out waren synthetisierte RTL netlists fast immer im Gebiet und langsamer in der Leistung größer. Ein Stromkreis-Design von einem Fachingenieur, mit arbeitsintensivem schematic-capture/hand-layout, würde fast immer seine logisch synthetisierte Entsprechung überbieten, aber der Produktivitätsvorteil, der durch die Synthese bald gehalten ist, hat schematische Digitalfestnahme zu genau jenen Gebieten versetzt, die für die RTL Synthese problematisch waren: äußerst schnelllaufend, niedrige Macht oder asynchrones Schaltsystem. Kurz gesagt, Logiksynthese hat HDL Technologie in eine Hauptrolle für das Digitaldesign angetrieben.

Innerhalb von ein paar Jahren sind sowohl VHDL als auch Verilog als der dominierende HDLs in der Elektronikindustrie erschienen, während älterer und weniger fähiger HDLs allmählich vom Gebrauch verschwunden ist. Jedoch teilen VHDL und Verilog viele derselben Beschränkungen: Keiner HDL ist für die analog/mixed-signal Stromkreis-Simulation passend. Keiner besitzt Sprachkonstruktionen, um rekursiv erzeugte Logikstrukturen zu beschreiben. Spezialisierte HDLs (wie Zusammenfluss) wurden mit der ausführlichen Absicht eingeführt, spezifische Verilog/VHDL Beschränkungen zu befestigen, obwohl niemand jemals beabsichtigt war, um VHDL/Verilog zu ersetzen.

Im Laufe der Jahre ist viel Anstrengung in der Besserung von HDLs investiert worden. Die letzte Wiederholung von Verilog, formell bekannt als IEEE 1800-2005 SystemVerilog, führt viele neue Eigenschaften (Klassen, zufällige Variablen und Eigenschaften/Behauptungen) ein, um das wachsende Bedürfnis nach besser testbench randomization, Designhierarchie und Wiedergebrauch zu richten. Eine zukünftige Revision von VHDL ist auch in der Entwicklung und wird erwartet, die Verbesserungen von SystemVerilog zu vergleichen.

Design mit HDL

Infolge der Leistungsfähigkeitsgewinne begriffen, HDL verwendend, kreist eine Mehrheit des modernen Digitalstromkreis-Designs darum. Die meisten Designs beginnen als eine Reihe von Voraussetzungen oder ein architektonisches Diagramm auf höchster Ebene. Kontrolle und Entscheidungsstrukturen sind häufig prototyped in Flussschema-Anwendungen, oder eingegangen in einem Zustandsdiagramm-Redakteur. Der Prozess, die HDL Beschreibung zu schreiben, ist von der Natur des Stromkreises und der Vorliebe des Entwerfers hoch abhängig, um Stil zu codieren. Der HDL ist bloß die 'Festnahme-Sprache,', häufig mit einer algorithmischen Beschreibung auf höchster Ebene wie ein C ++ mathematisches Modell beginnend. Entwerfer verwenden häufig scripting Sprachen (wie Perl), um wiederholende Stromkreis-Strukturen auf der HDL Sprache automatisch zu erzeugen. Spezielle Textaufbereiter bieten Eigenschaften für die automatische Einrückung, von der Syntax abhängige Färbung und makrogestützte Vergrößerung der Behauptung der Entität/Architektur/Signals an.

Der HDL-Code erlebt dann eine Coderezension oder Rechnungsprüfung. In der Vorbereitung der Synthese ist die HDL Beschreibung einer Reihe von automatisierten Kontrolleuren unterworfen. Die Kontrolleure melden Abweichungen aus standardisierten Coderichtlinien, identifizieren potenzielle zweideutige Codekonstruktionen, bevor sie Missdeutung verursachen können, und für allgemeine logische Codierfehler, wie baumelnde Häfen oder shorted Produktionen überprüfen. Dieser Prozess Hilfe in der Auflösung von Fehlern vor dem Code wird synthetisiert.

Im Industriesprachgebrauch endet HDL Design allgemein in der Synthese-Bühne. Sobald das Synthese-Werkzeug die HDL Beschreibung in ein Tor netlist kartografisch dargestellt hat, wird durch diesen netlist zur Zurückende-Bühne ausgegeben. Abhängig von der physischen Technologie (FPGA, ASIC Tor-Reihe, ASIC Standardzelle), kann HDLs oder kann keine bedeutende Rolle im Zurückende-Fluss spielen. Im Allgemeinen, als der Designfluss zu einer physisch realisierbaren Form fortschreitet, wird die Designdatenbank progressiv mehr geladet mit der technologiespezifischen Information, die in einer allgemeinen HDL Beschreibung nicht versorgt werden kann. Schließlich wird ein einheitlicher Stromkreis verfertigt oder für den Gebrauch programmiert.

Das Simulieren und das Beseitigen bei HDL Code

Notwendig für das HDL Design ist die Fähigkeit, HDL Programme vorzutäuschen. Simulation erlaubt eine HDL Beschreibung eines Designs (hat ein Modell genannt), Designüberprüfung, ein wichtiger Meilenstein zu passieren, der die beabsichtigte Funktion des Designs (Spezifizierung) gegen die Codedurchführung in der HDL Beschreibung gültig macht. Es erlaubt auch architektonische Erforschung. Der Ingenieur kann mit Designwahlen experimentieren, indem er vielfache Schwankungen eines Grunddesigns dann schreibt, ihr Verhalten in der Simulation vergleichend. So ist Simulation für das erfolgreiche HDL Design kritisch.

Um ein HDL Modell vorzutäuschen, schreibt ein Ingenieur eine Simulierungsumgebung auf höchster Ebene (hat einen testbench genannt). Am Minimum enthält ein testbench einen instantiation des Modells (hat das Gerät unter dem Test oder DUT genannt), Behauptungen der Nadel/Signals für die Eingabe/Ausgabe des Modells und eine Uhr-Wellenform. Der Testbench-Code ist gesteuertes Ereignis: Der Ingenieur schreibt HDL Behauptungen, um das (testbench-erzeugte) Rücksetzen-Signal, zu Musterschnittstelle-Transaktionen (wie ein Lesen/Schreiben des Gastgeber-Busses) durchzuführen, und die Produktion des DUT zu kontrollieren. Ein HDL Simulator — das Programm, das den testbench durchführt — erhält die Simulator-Uhr aufrecht, die die Master-Verweisung für alle Ereignisse in der testbench Simulation ist. Ereignisse kommen nur in den Momenten vor, die durch den testbench HDL (wie ein Rücksetzen-Knebelknopf diktiert sind, der in den testbench codiert ist), oder in der Reaktion (durch das Modell) zum Stimulus und den Auslösen-Ereignissen. Moderne HDL Simulatoren haben grafische Benutzerschnittstellen voll gezeigt, die mit einem Gefolge von Fehlersuchprogramm-Werkzeugen abgeschlossen sind. Diese erlauben dem Benutzer, anzuhalten und die Simulation jederzeit, Einsatz-Simulator-Unterbrechungspunkte (unabhängig des HDL-Codes) wiederanzufangen, und jedes Element in der HDL Musterhierarchie zu kontrollieren oder zu modifizieren. Moderne Simulatoren können auch die HDL Umgebung mit benutzerkompilierten Bibliotheken durch eine definierte PLI/VHPI-Schnittstelle verbinden. Verbindung ist (Win32/Linux/SPARC) anlagenabhängig, weil der HDL Simulator und die Benutzerbibliotheken kompiliert und außerhalb der HDL Umgebung verbunden werden.

Designüberprüfung ist häufig der zeitraubendste Teil des Designprozesses, wegen des Trennens zwischen einer funktionellen Spezifizierung eines Geräts, der Interpretation des Entwerfers der Spezifizierung und der Ungenauigkeit der HDL Sprache. Die Mehrheit des anfänglichen Zyklus des Tests/Fehlersuchprogrammes wird in der HDL Simulator-Umgebung geführt, weil die frühe Bühne des Designs häufigen und größeren Stromkreis-Änderungen unterworfen ist. Eine HDL Beschreibung kann auch prototyped und geprüft in der Hardware sein — programmierbare Logikgeräte werden häufig für diesen Zweck verwendet. Hardware prototyping ist verhältnismäßig teurer als HDL Simulation, aber bietet eine wirkliche Ansicht vom Design an. Prototyping ist die beste Weise, das Verbinden gegen andere Hardware-Geräte und Hardware-Prototypen zu überprüfen. Sogar diejenigen, die auf langsamem FPGAs laufen, bieten viel kürzere Simulierungszeiten an als reine HDL Simulation.

Designüberprüfung mit HDLs

Historisch war Designüberprüfung eine mühsame, wiederholende Schleife des Schreibens und Laufens von Simulierungstestfällen gegen das Design unter dem Test. Da Span-Designs größer und komplizierter gewachsen sind, ist die Aufgabe der Designüberprüfung zum Punkt gewachsen, wo es jetzt die Liste einer Designmannschaft beherrscht. Nach Weisen suchend, Designproduktivität zu verbessern, hat die EDA Industrie die Eigentumsspezifizierungssprache entwickelt.

In formellen Überprüfungsbegriffen ist ein Eigentum eine sachliche Behauptung über das erwartete oder angenommene Verhalten eines anderen Gegenstands. Ideal, für eine gegebene HDL Beschreibung, können ein Eigentum oder Eigenschaften wahre oder falsche verwendende formelle mathematische Methoden bewiesen werden. In praktischen Begriffen können viele Eigenschaften nicht bewiesen werden, weil sie einen unbegrenzten Lösungsraum besetzen. Jedoch, wenn zur Verfügung gestellt, eine Reihe von Betriebsannahmen oder Einschränkungen, kann ein Eigentumskontrolleur beweisen (oder widerlegen) mehr Eigenschaften, über den eingeengten Lösungsraum.

Die Behauptungen modellieren Stromkreis-Tätigkeit, aber Festnahme nicht und dokumentieren die Absicht des "Entwerfers" im HDL-Code. In einer Simulierungsumgebung bewertet der Simulator alle angegebenen Behauptungen, die Position und Strenge irgendwelcher Übertretungen meldend. In einer Synthese-Umgebung funktioniert das Synthese-Werkzeug gewöhnlich mit der Politik der stockenden Synthese nach jeder Übertretung. Behauptungsbasierte Überprüfung ist noch in seinem Säuglingsalter, aber wird erwartet, ein integraler Bestandteil des HDL Designs toolset zu werden.

HDL und Programmiersprachen

Ein HDL ist einer Softwareprogrammiersprache, aber mit Hauptunterschieden analog. Viele Programmiersprachen sind (Einzeln-Gewinde-) mit der beschränkten syntaktischen und semantischen Unterstützung von Natur aus verfahrensrechtlich, um Parallelität zu behandeln. HDLs ähneln andererseits gleichzeitigen Programmiersprachen in ihrer Fähigkeit, vielfache parallele Prozesse (wie flipflops, Vipern, usw.) zu modellieren das führt automatisch unabhängig von einander durch. Jede Änderung zum Eingang des Prozesses löst automatisch eine Aktualisierung im Prozess-Stapel des Simulators aus. Beide Programmiersprachen und HDLs werden durch einen Bearbeiter bearbeitet (gewöhnlich hat einen Synthesizer im HDL Fall genannt), aber mit verschiedenen Absichten. Für HDLs bezieht sich 'Bearbeiter' auf die Synthese, einen Prozess, den HDL-Code umzugestalten, der in ein physisch realisierbares Tor netlist Schlagseite hat. Die netlist Produktion kann einige von vielen Formen annehmen: eine "Simulation" netlist mit der Information der Tor-Verzögerung, ein "handoff" netlist für den Postsynthese-Platz und Weg oder ein EDIF allgemeines Industriestandardformat (für die nachfolgende Konvertierung zu einer JEDEC-Format-Datei).

Andererseits wandelt ein Softwarebearbeiter den Quellcode um, der in einen mit dem Mikroprozessor spezifischen Gegenstand-Code für die Ausführung auf dem Zielmikroprozessor Schlagseite hat. Da HDLs und Programmiersprachen Konzepte und Eigenschaften von einander leihen, wird die Grenze zwischen ihnen weniger verschieden. Jedoch sind reine HDLs für die allgemeine Zweck-Softwareanwendungsentwicklung unpassend, gerade als Mehrzweckprogrammiersprachen unerwünscht sind, um Hardware zu modellieren. Und doch, da elektronische Systeme immer komplizierter wachsen, und wiederkonfigurierbare Systeme zunehmend Hauptströmung werden, dort baut Wunsch in der Industrie für eine einzelne Sprache an, die einige Aufgaben sowohl des Hardware-Designs als auch der Softwareprogrammierung durchführen kann. SystemC ist ein Beispiel von solchem — eingebettete Systemhardware kann als ausführlich nichtberichtete architektonische Blöcke (blackboxes mit modellierten Signaleingängen und Produktionsfahrern) modelliert werden. Die Zielanwendung wird in C/C ++ geschrieben, und heimisch für das System der Gastgeber-Entwicklung kompiliert (im Vergleich mit dem Zielen der eingebetteten Zentraleinheit, die Gastgeber-Simulation der eingebetteten Zentraleinheit verlangt). Dem hohen Niveau der Abstraktion von Modellen von SystemC wird der frühen Architektur-Erforschung gut angepasst, weil architektonische Modifizierungen mit wenig Sorge für Signalpegel-Durchführungsprobleme leicht bewertet werden können. Jedoch bedeutet das einfädelnde Modell, das in SystemC und seinem Vertrauen auf dem geteilten Gedächtnis verwendet ist, dass es parallele Ausführung oder Modelle der niedrigeren Ebene gut nicht behandelt.

In einem Versuch, die Kompliziertheit des Entwerfens in HDLs zu reduzieren, die im Vergleich zur Entsprechung von Zusammenbau-Sprachen gewesen sind, gibt es Bewegungen, um das Abstraktionsniveau des Designs zu erheben. Gesellschaften wie Rhythmus, Synopsys und Agility Design Solutions fördern SystemC als eine Weise, hohe Sprachen mit Parallelitätsmodellen zu verbinden, um schnellere Designzyklen für FPGAs zu erlauben, als möglicher verwendender traditioneller HDLs ist. Annäherungen, die auf dem Standard C oder C ++ (mit Bibliotheken oder anderen Erweiterungen gestützt sind, die Parallele-Programmierung erlauben), werden im Katapult C Werkzeuge von der Mentor-Grafik, der Impuls C Werkzeuge von Impulse Accelerated Technologies, und das freie und die offene Quelle ROCCC 2.0 Werkzeuge vom Designgefolge von CoreFire von Jacquard Computing Inc. Annapolis Micro Systems, Inc. und Nationalen Instrumenten gefunden LabVIEW, die FPGA einem grafischen dataflow zur Verfügung stellen, nähern sich dem Designzugang auf höchster Ebene. Sprachen wie SystemVerilog, SystemVHDL und Handel-C bemühen sich, dieselbe Absicht zu vollbringen, aber werden das Bilden vorhandener Hardware-Ingenieure gezielt, die gegen das Bilden von für vorhandene Softwareingenieure zugänglicherem FPGAs produktiver sind. Es gibt mehr Information über C zu HDL und Fluss zu HDL in ihren jeweiligen Artikeln.

Sprachen

Entsprechungsstromkreis-Design

Digitalstromkreis-Design

Die zwei am meisten weit verwendeten und gut unterstützten HDL in der Industrie verwendeten Varianten sind Verilog und VHDL.

Gedrucktes Leiterplatte-Design

Mehrere Projekte bestehen, um gedruckte Leiterplatte-Konnektivität mit der Sprache gestützt, textlich, Zugang-Methoden zu definieren.

Siehe auch

  • Spezifizierungssprache
  • Das Modellieren der Sprache
  • Hardware-Überprüfungssprache
  • SystemC
  • SystemVerilog
  • Eigentumsspezifizierungssprache
  • OpenVera
  • Bluespec

Außenverbindungen


Dermatologie / Akne vulgaris
Impressum & Datenschutz