Unterschied zwischen HVL und HDL

Die Hardwarebeschreibungssprache beschreibt unsere Schaltung, aber was macht die Hardwareverifizierungssprache? Wie wird das Design überprüft?

Es gibt verschiedene Verifizierungssprachen, darunter vera, e, SystemVerilog und SystemC. Grundsätzlich verwenden sie objektorientierte Programmierung (neben anderen weniger wichtigen Dingen), um Testbenches auf einem hohen Abstraktionsniveau zu schreiben, wodurch der Verifikationsprozess robuster und schneller wird.

Antworten (2)

Hardwareverifizierungssprachen wie vera, e und später SystemVerilog und SystemC wurden entwickelt, um den Verifizierungsprozess effizienter zu gestalten. Die Geschichte besagt, dass sich nach dem Mooreschen Gesetz die Designgröße und damit die Komplexität alle 18 Monate fast verdoppelt. In den frühen Tagen des Designs, als sogar Mikroprozessoren tatsächlich als Schaltpläne gezeichnet wurden, wurde vor der eigentlichen Herstellung des Siliziums keine Überprüfung wie heute durchgeführt. Natürlich verwenden wir jetzt Computer, um unser Design zu verifizieren, aber wie haben sie den ersten Computer verifiziert? Lol

Damals, als ein vollständiges Design in Blöcke aufgeteilt wurde, nutzten verschiedene Personen ihr eigenes Gehirn, um das Design zu entwerfen, zu überprüfen und auch zu vereinfachen. Wenn Sie jemandem gesagt hätten, dass es eines Tages ein Tool geben wird, in das Sie einfach Text eingeben und das die Schaltung automatisch synthetisiert und vereinfacht, würden sie Sie auslachen. Ich habe das in einem echten Buch gelesen. Die Dinge änderten sich jedoch, als die Designs komplexer wurden und die Designgeschwindigkeit zunahm. Jede Aufgabe zu automatisieren bedeutet, menschliche Eingriffe zu eliminieren und somit das Potenzial für durch Menschen verursachte Fehler zu eliminieren. Komplexer bedeutet, dass menschliche Fehler wahrscheinlicher sind. Zu diesem Zeitpunkt war es ineffizient, das gesamte Design von Hand zu erstellen. Die Leute wechselten von der Handzeichnung (ja, der tatsächlichen physischen Zeichnung) zu Schaltplänen auf einem Computer, um das Design zu erstellen. Später kam die HDL, die eine viel effizientere Möglichkeit bot, digitale Schaltungen zu entwerfen und Designs auszutauschen. Mit der Zeit wurden auch die Synthesewerkzeuge ziemlich robust, sodass die Notwendigkeit, Schaltpläne zu erstellen, nicht mehr erforderlich war. Jetzt können wir kleine Blöcke wie Volladdierer und Multiplexer selbst verifizieren. Aber was ist mit einem komplexen Design? An diesem Punkt verwenden die Leute HDLs zur Überprüfung. In diesem Fall erstellen wir eine „Testbench“, die einen vorgegebenen Stimulus auf ein Modell unseres Designs anwendet und die generierte Ausgabe mit der erwarteten Ausgabe des Designers vergleicht. Dies ist möglich, da die digitalen Schaltungen der booleschen Logik folgen und ihre Ausgabe vorhergesagt werden kann. Es ist möglich, ein Computerprogramm zu schreiben, das dies tut, und genau das passiert in der Simulation. Im Laufe der Zeit wurden auch die Synthesewerkzeuge ziemlich robust, sodass die Notwendigkeit, Schaltpläne zu erstellen, nicht mehr erforderlich war. Jetzt können wir kleine Blöcke wie Volladdierer und Multiplexer selbst verifizieren. Aber was ist mit einem komplexen Design? An diesem Punkt verwenden die Leute HDLs zur Überprüfung. In diesem Fall erstellen wir eine „Testbench“, die einen vorgegebenen Stimulus auf ein Modell unseres Designs anwendet und die generierte Ausgabe mit der erwarteten Ausgabe des Designers vergleicht. Dies ist möglich, da die digitalen Schaltungen der booleschen Logik folgen und ihre Ausgabe vorhergesagt werden kann. Es ist möglich, ein Computerprogramm zu schreiben, das dies tut, und genau das passiert in der Simulation. Im Laufe der Zeit wurden auch die Synthesewerkzeuge ziemlich robust, sodass die Notwendigkeit, Schaltpläne zu erstellen, nicht mehr erforderlich war. Jetzt können wir kleine Blöcke wie Volladdierer und Multiplexer selbst verifizieren. Aber was ist mit einem komplexen Design? An diesem Punkt verwenden die Leute HDLs zur Überprüfung. In diesem Fall erstellen wir eine „Testbench“, die einen vorgegebenen Stimulus auf ein Modell unseres Designs anwendet und die generierte Ausgabe mit der erwarteten Ausgabe des Designers vergleicht. Dies ist möglich, da die digitalen Schaltungen der booleschen Logik folgen und ihre Ausgabe vorhergesagt werden kann. Es ist möglich, ein Computerprogramm zu schreiben, das dies tut, und genau das passiert in der Simulation. Was ist mit einem komplexen Design? An diesem Punkt verwenden die Leute HDLs zur Überprüfung. In diesem Fall erstellen wir eine „Testbench“, die einen vorgegebenen Stimulus auf ein Modell unseres Designs anwendet und die generierte Ausgabe mit der erwarteten Ausgabe des Designers vergleicht. Dies ist möglich, da die digitalen Schaltungen der booleschen Logik folgen und ihre Ausgabe vorhergesagt werden kann. Es ist möglich, ein Computerprogramm zu schreiben, das dies tut, und genau das passiert in der Simulation. Was ist mit einem komplexen Design? An diesem Punkt verwenden die Leute HDLs zur Überprüfung. In diesem Fall erstellen wir eine „Testbench“, die einen vorgegebenen Stimulus auf ein Modell unseres Designs anwendet und die generierte Ausgabe mit der erwarteten Ausgabe des Designers vergleicht. Dies ist möglich, da die digitalen Schaltungen der booleschen Logik folgen und ihre Ausgabe vorhergesagt werden kann. Es ist möglich, ein Computerprogramm zu schreiben, das dies tut, und genau das passiert in der Simulation.

Nun zu der Frage, warum brauchen wir HVLs? Dies hängt mit der Softwaredomäne zusammen. Als die Software immer komplexer wurde, wechselten die Leute von Assembler zu prozeduralen Sprachen wie unter anderem BASIC und C. Das Schreiben und Pflegen riesiger Programme war jedoch immer noch schwierig. Zu diesem Zeitpunkt entwickelten die Menschen das objektorientierte Programmierparadigma. OOP ist sicherlich eine revolutionäre Entwicklung, die es Computerprogrammen ermöglicht hat, ein Problem der realen Welt auf beispiellosem Niveau zu abstrahieren. Es macht das Schreiben eines Programms effizienter und auch die Wartung und Erweiterung.

Simulation ist im Wesentlichen eine rein softwarebasierte Aktivität. Wenn wir HDL verwenden, um eine Testbench zu schreiben, müssen wir genau jedes einzelne Signalwackeln schreiben, das stattfinden muss und zu dem Zeitpunkt, zu dem es stattfinden muss. Wenn wir jedoch die Abstraktionsebene anheben, um zu sagen, dass jeweils ein ganzes Wort (z. B. ein Byte zum Datenbus) geschrieben wird, wird das Schreiben von Testbench viel schneller und weniger mühsam. Wir können das Abstraktionsniveau noch weiter erhöhen, zB können wir beim Ethernet-Design ein ganzes Paket auf einmal schreiben und ein ganzes Paket auf einmal prüfen, anstatt einzelne Bits.

Mit HVLs wenden sie die OOP-Technik im Bereich der Hardware-Verifikation an. Sie tun dies, indem sie es ermöglichen, ein Design auf einer höheren Abstraktionsebene zu verifizieren. Gleichzeitig enthalten sie Features, die speziell für die Verifikation geeignet sind, anstatt synthetisierbaren Code zu schreiben.

zB SystemVerilog bietet 2 wichtige Funktionen. Dies sind gleichzeitige Assertionen und Constrained-Random-Tests. Wie eine Assertion prüft, ob ein Ausdruck zu einem bestimmten Zeitpunkt wahr ist, prüft eine gleichzeitige Assertion, ob eine Sequenz, in der das Signal umschaltet, korrekt ist. Anstatt jeden einzelnen Stimulus schreiben zu müssen, der auf ein zu verifizierendes Design angewendet werden muss, wendet Constrained-Random-Testing alle möglichen Stimuli an, die zu den vom Verifikationsingenieur gegebenen Einschränkungen passen, und zwar über die Zeit hinaus. Das spart viel Zeit beim Schreiben von Stimuli.

HVLs neigen dazu, eine Art Hybrid zwischen HDL und Skriptsprachen zu sein. Während HDLs zu einer Schaltung synthetisiert werden sollen, soll HVL als Software ausgeführt werden, die entweder tatsächliche Hardware oder simulierte Hardware (von HDL) stimuliert, um die korrekte Funktionalität der Hardware zu überprüfen.

Einige HDLs haben eine Art HVL eingebaut. Beispielsweise verfügt VHDL über eine Reihe von Sprachkonstrukten, die nicht zur Verwendung bei der Synthese von Hardware gedacht sind, aber in einer Testbench verwendet werden können, um anderen Code in der Simulation zu stimulieren oder zu analysieren.

"Während HDLs dazu gedacht sind, in eine Schaltung synthetisiert zu werden" Um fair zu sein, wurden die HDLs, die wir haben, ursprünglich für die Verwendung zur Simulation entwickelt, und die Art und Weise, wie wir sie für die Synthese verwenden, ist ein großer Fehler.
Ich werde dem nicht widersprechen.