Forum: FPGA, VHDL & Co. ISE/Quartus VHDL Preprozessor Direktiven


von prep (Gast)


Lesenswert?

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

von user (Gast)


Lesenswert?

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

von ElKo (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.