Altifigence Academy

35 / 37 · Konzept

Kompilierung, lint und Synthese: Aussagekraft der Diagnosen

Fixieren Sie Quellen, Top und Sprachmodus und unterscheiden Sie Syntax, Breiten, Latches und Funktion.

Die Werkzeugaufgabe festlegen

Ergebnisse hängen von Quellen, Top, Parametern, Sprache und Version ab. Kompilieren Sie DUT samt Abhängigkeiten und wählen Sie die Testbench als getrenntes Top. Synthetisieren Sie keinen Testbench-Taktgenerator und verwechseln Sie uninstanziierte Module nicht mit geprüften. Die Beispiele nutzen eine praktische synthetisierbare Teilmenge; Simulator und Produktengine können andere Teile unterstützen. .sv aktiviert nicht von selbst sämtliche Funktionen.

Kompilierung und Simulation unterscheiden

Kompilierung kann Syntax, fehlende Module und ungültige Verweise ablehnen, beweist aber weder Arithmetik noch Priorität. Simulation vergleicht ausgeführte Szenarien; PASS gilt für diese Vergleiche und Quelle. Für die Übung:

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

Notieren Sie beide Statuswerte. Eine alte sim.vvp nach fehlgeschlagener Kompilierung kann ein irreführendes PASS liefern. Erzeugen Sie für jede Konfiguration eine neue Datei und stoppen Sie bei Kompilierfehlern.

Ursachen untersuchen

DiagnoseFrage
Fehlendes ModulStimmen Datei und Name?
KürzungWelche Bits, Überträge oder Vorzeichen gehen verloren?
Inferierter LatchWelcher kombinatorische Pfad weist nichts zu?
Mehrere TreiberWer besitzt die Variable?
Ungenutztes SignalAbsicht oder fehlende Verbindung?
Kombinatorische SchleifeFührt der Pfad ohne Register zum Eingang zurück?

Unterdrücken Sie nicht pauschal Warnungen. Korrigieren Sie die Ursache oder dokumentieren Sie eine eng begrenzte, beabsichtigte und geprüfte Ausnahme. Kategorien unterscheiden sich je Version. Die offizielle Verilator-Warnungsreferenz erklärt WIDTH, LATCH. Falls installiert, ist zusätzlich möglich:

text
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.sv

Dies ist ein vorgeschlagener Weg, kein Ausführungsnachweis. Kennzeichnen Sie tatsächlich ausgeführte und nur vorgeschlagene Befehle getrennt.

Synthese ist eine weitere Grenze

Eine generische Yosys-Prüfung:

text
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'

Sie prüft Frontend und generische Struktur, nicht bestimmte FPGA-Ressourcen, Platzierung, Verdrahtung, Timingabschluss oder Fertigung. Technologiemapping und Randbedingungen sind zusätzliche Arbeit.

Übung: fehlerhafte Varianten getrennt halten

Erstellen Sie drei Wegwerfkopien: falscher Untermodulname, Neun-Bit-Summe in acht Bits, fehlende kombinatorische Zuweisung. Beobachten Sie Werkzeugdiagnosen und erforderliche Funktionstests. Eine Breitenkürzung kann beabsichtigt sein, ein Latch kann kompilieren: vergleichen Sie die Anforderung. Bewahren Sie einen relevanten Fehler samt restaurierter Quelle auf. Ungeklärte Diagnosen bleiben offen.

Deine Auswahl gilt für diesen Browser. Du kannst sie jederzeit in der Fußzeile ändern.