ISE/Quartus VHDL Preprozessor Direktiven

Gast #4210784
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
Gast #4212816
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren