Hallo Leute, ich habe ein Projekt das sowohl auf einem Xilinx als auch auf einem Altera(Intel^^) FPGA umgesetzt werden soll. Je nach Projekt gibt es verschiedene Codeschnipsel, die benötigt werden und sich je nach Projekt etwas unterscheiden. Gibt es in VHLD sowas wie Preprocessor Direktiven? Oder als Alternative: Lassen sich Codesegmente mit entsprechenden if-verzweigungen so schreiben, dass sie "keinen richtigen" Verdrahtungsweg haben und das Synthesetool das dann wegoptimiert? Danke für die Hilfe
ja, du kannst ein generic definieren und dann per gen_true:if generic_parameter genereate end generate gen_false:if not generic_parameter generate end generate aus 2 Codeteilen auswählen
Die Kunst ist es, zu wissen, welcher Synthesizer gerade läuft. Mir selbst ist leider nichts bekannt geworden, dass es entsprechend vordefinierte Generics gab. Ich habe deswegen dem Synthesizer/Kompiler jeweils ein selbst definiertes generic in den jeweiligen Aufruf mitgegeben. Einige Beispiele s.u. Leonardo Spectrum: elaborate ${DESIGN} -generics ${GENERICS}; Encounter: elaborate -parameter ${GENERICS} ${DESIGN}; Modelsim: vlog .... +define+MODELSIM=1; (Hier gabs glaube ich auch noch ne andere Möglichkeit, die Dokumentation hilft weiter.) Problem: Damit wird (insbesondere wenn du zw. Quartus und ISE unterscheidest) der Code extrem von der IDE abhängig. Ganz schlechter Programmierstiel, jeder Softwerker würde die Nase rümpfen. Also nur als Notlösung einsetzen! Idee: Du baust zwei Beschreibungen, die ausschließlich die FPGA-spezifischen Komponenten für den jweiligen FPGA kapseln. Beide mit gleichem Namen. Bei der Synthese musst du im Synthesescript nur die entsprechende Datei wählen. Sollte kein Problem sein, da die Synthesescripte sowieso sehr unterschiedlich sind.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.