Kann ich eine Verilog-Datei erstellen, um sie sowohl zu simulieren als auch zu synthetisieren?

Kürzlich las ich ein Verilog-Studienbuch. Schließlich wurde mir klar, dass eine Verilog-Datei möglicherweise nicht synthetisiert werden kann, da einige Verilog-Anweisungen nur zu Simulationszwecken dienen. Aber ich bin zu faul, eine Datei zu erstellen, um ein Modul zu erstellen, und eine andere, um es zu simulieren. Kann ich beides in derselben Datei mischen, und wenn ja, wie?

Ich mag diese Frage, weil ich auch zu faul bin, zwei Dateien zu erstellen. Wie kommt es, dass die Entwickler der Sprache damit nicht gerechnet haben?
Oh je, ich werde traurig sein, diese Tatsache zu hören. Trotzdem, ist es ein guter Hobit, diese Akte auseinander zu nehmen? @dextorb
Ja, ich glaube, am besten ist es, sowohl Synthese- als auch Simulationsdateien für Ihre Module zu erstellen.
Meinen Sie damit, dass Sie Ihren Prüfstand nicht in einer separaten Datei ablegen möchten? Sie können immer zwei Module in einer Datei haben und verhindern, dass eines mit Pragmas für die Synthese berücksichtigt wird (oder es auskommentiert ...). Welches Werkzeug verwenden Sie? Viele können Prüfstandsskelette für Sie erstellen, die Ihnen viel Arbeit abnehmen.

Antworten (1)

Die meisten Synthesewerkzeuge unterstützen Pragmas. Im folgenden Code wird beispielsweise das And-Gate nicht für die Synthese berücksichtigt.

// synthesis translate_off
    and2 (a, b, c[4]);
// synthesis translate_on

Außerdem können auch vordefinierte Makros verwendet werden:

`ifdef synthesis
 parameter PARAM = 4;
`endif

Beides ist werkzeugspezifisch, Sie müssen also sehen, welche vordefinierten Makros Ihr Werkzeug unterstützt, oder Sie können selbst ein Makro definieren und dieses verwenden.

Wenn Sie etwas Robusteres und nicht so Tool-spezifisches möchten, können Sie eine bedingte Generate-Anweisung verwenden, die Simulation und Synthese gut aufteilt:

generate
if (SYNTHESIS == 1)
ff_for_synthesis_here
else
ff_for_simulation_here
end generate