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?
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
dext0rb
LaiJiong
dext0rb
Matthäus Mellott