Forum: FPGA, VHDL & Co. Intel / Altera Migration


von Andreas R. (df8oe)


Lesenswert?

Quartus hat eine Option bei der man in der Typauswahl FPGAs angezeigt 
bekommt auf die man ein bestehendes Projekt migrieren kann. Man kann 
dann mehrere FPGAs auswählen und das kompilierte Binary soll dann auf 
allen ausgewählten FPGAs laufen. Ich habe ein Projekt für einen Cyclone 
10 LP das auf dem 010, 016 und 025 laufen soll. Auf dem 010 läuft das 
Binary, auf den beiden anderen nicht. Es gibt keinen Fehler beim Bau 
oder bei der Übertragung des Binaries - aber bei der Ausführung. Ich 
habe beachtet dass die 016 und 025 an einigen Pins wo beim 010 IOs 
liegen GND bzw. Versorgungsspannung erhalten müssen. Gibt es da sonst 
noch irgendwas zu beachten? Oder sollte es tatsächlich ein 
Kontaktproblem (Gehäuseform UBGA256... / Lötfehler) sein?

Hat schon mal jemand erfolgreich mit dieser Vertikalmigration 
gearbeitet?

Einen schönen 4. Advent allen Lesern!

von Blechbieger (Gast)


Lesenswert?

Andreas R. schrieb:
> Man kann
> dann mehrere FPGAs auswählen und das kompilierte Binary soll dann auf
> allen ausgewählten FPGAs laufen.

Das hast du falsch verstanden. Die Funktion bewirkt das nur Pins 
verwendet werden die in allen ausgewählten FPGA zur Verfügung stehen. Du 
musst aber trotzdem für jeden einzelnen FPGA eine eigenes Bitfile 
erzeugen.

Die Idee ist für den Prototyp den größten FPGA in gewähltem Package zu 
verwenden und für die Serie den kleinsten in den das Design passt was 
zum Zeitpunkt des Hardwareentwurfs in der Regel noch nicht abschätzbar 
ist.

von Andreas R. (df8oe)


Lesenswert?

Das erklärt so einiges. Dann werde ich mal ein paar neue Bitfiles 
erzeugen :) Danke für die Hilfe!

von Andreas R. (df8oe)


Lesenswert?

OK. Habe ein neues Bitfile erzeugt - trotzdem tut es der 016er nicht. Es 
sind mehrere Kriterien die unabhängig voneinander nicht laufen. So 
arbeitet eine PLL offenbar nicht (aus dem entsprechenden Ausgangspin 
kommt NICHTS raus), ein davon unabhängiges I2C (Slave) Handshaking 
funktioniert nicht, und ein I2C (Master) das einfach ein paar Bytes an 
einen Chip senden soll bleibt mucksmäuschenstill. Ich mache so eine 
Migration zum ersten Mal - deswegen habe ich NULL Erfahrung damit.

Ich bekomme beim Kompilieren diverse Warnings - die sind aber beim 010er 
und 016er identisch. Ich könnte sie durch entsprechende Einträge im 
.sdc-File auch unterdrücken - es ist nichts kritisches bzw. 
funktionsbeeinträchtigendes.

Gibt es zu der Problematik "Vertikalmigration" irgendwo ein HowTo / 
Tutorial / Hinweise im Web?

von Gustl B. (-gb-)


Lesenswert?

Wenn du die Vermutung hast, dass da tatsächlich ein Defekt ist, dann 
baue ein Minimaldesign das alle IOs toggelt. Einen Zähler und jedes Bit 
auf einen IO oder so.

Sonst kann ich nur was zu Xilinx sagen:
Wenn ein Design auf einem anderen FPGA laufen soll, dann muss die 
Pinzuordnung passen, die benötigten Ressourcen müssen im FPGA vorhanden 
sein und das Timing muss geschafft werden.
Wenn ich hier also vom kleinen Artix zum großen Artix migriere nehme ich 
ein anderes .xdc File für die Pinzuordnung und dann lasse ich die 
Synthese und alles neu durchlaufen bis zum Bitstream. Funktioniert 
prächtig.

von Andreas R. (df8oe)


Lesenswert?

Hallo Gustl,
das wird vermutlich der Weg sein den ich gehen muss. Ich habe alle Pins, 
die beim "größten" (dem 025er) eben keine I/Os mehr sind sondern GNDs 
oder VCCs bereits im Layout so berücksichtigt. Beim 010er habe ich 
dadurch ca. 10 I/Os weniger - aber da mangelt es in dem Projekt sowieso 
nicht. Auf jeden Fall sollte die PCB daher von Seiten der 
Spannungsversorgung zu allen kompatibel sein. Die leichten Unterschiede 
/ Inkompatibilitäten bei den I/Os habe ich mir durch Quartus anzeigen 
lassen (Migrationshilfe...) und die I/Os entsprechend so gewählt dass 
auch das vom 010er über den 016er bis hin zum 025er klappen sollte. Ich 
habe das Projekt nicht komplett selbst entwickelt, ich habe es geforkt. 
Der Original FPGA Code war für den 010er geschrieben. Meine Änderungen 
in eingen I/O-Zuweisungen (notwendig wegen der Inkompatibilitäten) 
laufen auf dem 010er auch völlig problemlos. Nur der nächst größere 
zickt rum - und das auf zwei verschiedenen Boards in gleicher Weise. 
Lötfehler sind zwar nach wie vor nicht ausgeschlossen, aber dieses 
identische Verhalten legt für mich einen Denkfehler in der Codeanpassung 
näher als einen Lötfehler.

von Gustl B. (-gb-)


Lesenswert?

Andreas R. schrieb:
> Nur der nächst größere
> zickt rum - und das auf zwei verschiedenen Boards in gleicher Weise.

Und da wären die Warnungen interessant.

von Andreas R. (df8oe)


Lesenswert?

Die Warnungen sind angeblich fehlende Clockzuweisungen bei DSP 
Prozessen, Glitches bei einer PLL und "stucked Pins".

Die stucked Pins stimmen - das sind Pins die ich zum Debuggen nehme und 
die aktuell auf GND definiert sind. Die fehlenden Clockzuweisungen 
können nicht stimmen - denn die DSP-Prozesse funktionieren einwandfrei. 
Die Glitches sind entweder nicht störend oder ebenfalls nicht da - im 
010er läuft alles einwandfrei. Und die Warnings sind bei beiden FPGAs 
identisch. Ich glaube daher nicht dass das Problem dort zu suchen ist.

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.