35 / 37 · Konzept
Kompilierung, lint und Synthese: Aussagekraft der Diagnosen
Fixieren Sie Quellen, Top und Sprachmodus und unterscheiden Sie Syntax, Breiten, Latches und Funktion.
Lektionen sind frei lesbar. Schreibe dich ein, um deinen Fortschritt zu speichern.
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:
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvpNotieren 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
| Diagnose | Frage |
|---|---|
| Fehlendes Modul | Stimmen Datei und Name? |
| Kürzung | Welche Bits, Überträge oder Vorzeichen gehen verloren? |
| Inferierter Latch | Welcher kombinatorische Pfad weist nichts zu? |
| Mehrere Treiber | Wer besitzt die Variable? |
| Ungenutztes Signal | Absicht oder fehlende Verbindung? |
| Kombinatorische Schleife | Fü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:
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.svDies 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:
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.