Was war die Motivation, Verhaltensbeschreibungen zu einem so großen Teil von Verilog zu machen?

Ich verwende Verilog nicht für etwas Ernsthaftes, aber ich verwende es in meinem Unterricht, und ich fange an zu glauben, dass mir etwas an der Attraktivität der verhaltensbezogenen Hardwarebeschreibung fehlt.

Wenn ich Verilog schreibe, habe ich das Gefühl, dass die Verhaltensbeschreibung das einfache Problem löst, nämlich eine strukturelle Beschreibung der Hardware zu erstellen; und ich bin mir nicht sicher, ob es es viel einfacher macht. Aber ich verbringe viel Zeit damit, meine ifs und cases zu überprüfen und erneut zu überprüfen, um sicherzustellen, dass sie wirklich kombinatorisch sind, wenn ich es möchte.

Vielleicht entwerfe ich einfach nicht die richtige Art von Hardware, um alwaysBlöcke bequem zu machen?

Antworten (2)

Sie müssen sich daran erinnern, dass, obwohl die Hardwaresynthese wichtig ist, der wahre Grund für die Existenz von Verilog (und VHDL für diese Angelegenheit) die Simulation ist.

Diese Sprachen sollen es Benutzern ermöglichen, ihre Hardware zu modellieren und zu verstehen, oft bevor sie überhaupt erstellt wird. Sie ermöglichen es, ganze Systeme zu analysieren und ihre Designs bis zur Perfektion zu optimieren. Dann kann das Hardwaremodell in etwas Synthesierbares umgewandelt werden. Mit dem Entwurfsmodell, dem Synthesemodell und den entsprechenden Tests kann der Benutzer sicher sein, dass die vorgeschlagene Hardwaredefinition sein Design vollständig implementiert.

All die verrückten (und nicht so verrückten) Funktionen von Verilog, die Sie noch nicht verwenden, sollen das Schreiben von Hardwaremodellen (relativ) einfach machen.

Probleme wie die Synthese unbeabsichtigter Latches plagten Verilog. Glücklicherweise behebt SystemVerilog, der Nachfolger von Verilog, diese Probleme:

  • In SystemVerilog, dem Nachfolger von Verilog, wird anstelle der allgemeinen Blöcke always_fffür die sequentielle Logiksynthese, always_latchfür die verriegelte Logiksynthese und für die kombinatorische Logiksynthese verwendet.always_combalways

  • always_combDiese Blöcke prüfen und melden automatisch, ob sich während der Kompilierung die falsche Logik im Block befindet, dh ob aufgrund fehlender Wenn- oder Fall-Bedingungen eine verriegelte Logik anstelle einer kombinatorischen Logik im Block ist .

  • SystemVerilog hat auch verschiedene Arten von if- und case-Anweisungen wie priorityund unique, die bei der Synthese von kombinatorischer Logik wie Prioritäts- und Nicht-Prioritäts-Decodern helfen.