Forum: Platinen CPLD/FPGA Plazierung/Routing


von Mike (Gast)


Lesenswert?

Mal eine Frage an die Profis:

Ich habe eine Schaltung mit einem CPLD mit vielen Pins. Ich kann die 
Pin-Belegung des CPLD (da ich die Grenzen des CPLD nicht voll ausnutze) 
recht gut beeinflussen.

Und:

In EAGLE ist der CPLD, um den es geht (Beispiel: XC9572), als PLCC 84 
vorhanden.

Nun, nach einem Platzieren der Bausteine auf der Platine würde sich erst 
die günstigste Zuordnung "Echt-Pin" zu "Funktions-Pin" ergeben, die ich 
beim CPLD constraints design noch gar nicht kenne.

Ich höre, es gibt Autorouter (nicht Eagle :-) ) welche CPLDs oder FPGAs 
"mitrouten" können.

Aber wie geht ihr da vor?

CPLD plazieren, von Hand ein wenig "rumrouten" und dann die Pins des 
CPLD "nach gutdünken möglichst günstig" belegen? CPLD neu fitten und 
dann im Schematik korrigieren, dann wieder Board und erneut routen? Und 
das ein Paar mal?

Bis auf triviale Fälle (alle Eingänge kommen von links, alle Ausgänge 
gehen nach rechts weg) ist das so einfach nicht - und die "optimalen 
Verteilungen" des Fitters möchte ich auch nicht unbedingt einfach so 
hinnehmen, falls sich da viele Leiterbahnen kreuzen würden ausserhalb 
des Chips.

Für Tipps bin ich dankbar.

von Falk B. (falk)


Lesenswert?

@ Mike (Gast)

>CPLD plazieren, von Hand ein wenig "rumrouten" und dann die Pins des
>CPLD "nach gutdünken möglichst günstig" belegen? CPLD neu fitten und
>dann im Schematik korrigieren, dann wieder Board und erneut routen? Und
>das ein Paar mal?

Es gibt zwei Probleme.

a) Routing der Platine
b) Routing des CPLDs intern.

Da muss man aufpassen, dass man sich nciht ins Knie schiesst. Auch so 
ein CPLD hat das bisweilen enge Grenzen.

>Für Tipps bin ich dankbar.

Ich würde die Pins erstmal so verteilen, dass die Luftlinien 
kreuzungsarm aussehen. Dann den CPLD mit diesen Pinzuordnungen fitten. 
Wenns passt -> OK.

MfG
Falk

von Uwe (Gast)


Lesenswert?

Hallo Mike,
Du hast, auch beim Eagle, ja die Möglichkeit, über die Bibliothek Deines 
Bausteins den I/O-Pins die gleiche Priorität zu geben. Dann hast Du die 
Möglichkeit, im Schematic ein Pin-Swapping durchzuführen, das die 
Luftlinien in der Board-Ansicht im Sinne der Kreuzungsfreiheit (resp. 
-armut) optimiert.
Und die eigentliche Zuweisung erfolgt dann ja zwischen Deinen 
Signalnamen und den physikalischen Pins durch die FPGA-Programmierung.
Gruß Uwe

von Bernd G. (Gast)


Lesenswert?

@ Mike

1. Bei FPGA überlege ich bereits beim Zeichnen des Stromlaufes, wie die 
großen d.h vielbeinigen Teile zueinander plaziert werden müssen 
(Handskizze). Das Geschieht anhand der dicken Busse und der Lage von 
Stteckverbindern an den Lp-Kanten.

2. Unter Berücksichtigung der Bankeigenschaften wird der FPGA auf der 
Skizze in die richtige Lage gedreht.

3. Dann werden mit dem FPGA-Constraints-Editor die Beine in die richtige 
Reihenfolge gebracht und die Implementierung laufen gelassen.

4. Wenn keine Warnungen bezüglich Laufzeiten usw. ausgegeben werden, 
kann man es so lassen, wenn nicht, müssen die Beine evtl. noch mal 
umsortiert werden.

5. Stromlauf mit der als funktionsfähig erkannten Beinzuordnung 
zeichnen.

6. Placen

7. Routen (meist doch interaktiv)

8. Wenn es nicht aufgeht, diese Prozedur möglicherweise mehrmals 
durchlaufen.

Das war der Tip vom Profi. Auch die Benutzung von PADS (TM) verringert 
das Problem nicht wesentlich, außer man kauft die Kopplung zwischen PADS 
und z.B ISE, mit der man Pins im Layout verschieben kann und die ISE 
merkt es und richtet sich danach. Der Preis dafür liegt aber jenseits 
von Gut und Böse.

von Mike (Gast)


Lesenswert?

Danke an Euch!

Nun, man wird übermütig und füllt den CPLD bis auf den Rand, und schon 
streikt der Fitter bei Sonderwünschen.

Ok, ich bin beim vielleicht 10. Durchgang mit "kleinen" Schrittweisen 
Änderungen. Es ist nicht immer so einfach Nachzuvollziehen unter welchen 
Umständen der Fitter (bei XILINX) streikt.

Und dann muss man entscheiden.

Verstehe jetzt wieso man da Wochen verbringen kann.

Die Hinweise waren wertvoll. Folgendes habe ich rausdestilliert:

1. Man lasse im CPLD genug Raum für den Kompromiss zwischen "Balance" 
(beim XC95288 offensichtlich in Kombination mit "Low/High Power" eine 
Möglichkeit, ihn abrauchen zu lassen...) und Density zu haben. Dann kann 
man einige Pins gut "verschieben".

2. Zu viele Änderungen auf einmal und man ist evtl. so weit verloren, 
daß man "reset" machen kann und fängt fast neu an.

3. Die Platine muss nicht so aussehen wie wenn jemand Linien mit einem 
Kamm durch Butter gezogen hätte. Nice, aber wenn's der Router hinbekommt 
und die Sache vom Timing etc. kein Problem macht, dann nehme ich es hin.

4. Manuell nacharbeiten ist ein Muss. Wobei ich inzwischen gerne dem 
Autorouter "Hinweise" lege, ein wenig "Rip-Up" mache und ihn nochmal 
starte. Hinweise sind: Geringfügig verschobene Bauteile, Barrieren aus 
tRestrict oder bRestrict und evtl. Änderungen in den Router-Parametern: 
OrthStep und DiagStep wirken recht schön wenn man sie behutsam über ALLE 
Steps (auch die Optimizer) konsequent durch ändert. Es bringt nichts, 
beim Routen so zu bewerten und dann beim Optimizen ganz anders.


Ein sehr Fader Geschmack bleibt übrig. Der Autorouter macht bei solchen 
Pin-Dichten teilweise einen solchen Blödsinn, daß ich ihn am 
liebsten....

Was mich auch stört, ist daß die Back-Annotation nicht schlau genug ist, 
mich im Board Leitungen tauschen zu lassen und diese dann im Schematik 
zu korrigieren. Es geht immer nur von Schematik-Änderung zu Board. Oder 
habe ich da was nicht begriffen oder falsch gemacht?

Grüße,
Mike

von Falk B. (falk)


Lesenswert?

@  Mike (Gast)

>3. Die Platine muss nicht so aussehen wie wenn jemand Linien mit einem
>Kamm durch Butter gezogen hätte.

. . . willst du ein Muster auf der Butter, geh mitm Kamm rüber
. . . Schwamm drüber, das ist der Schwamm drüber Blues . . .

;-)

>Ein sehr Fader Geschmack bleibt übrig. Der Autorouter macht bei solchen
>Pin-Dichten teilweise einen solchen Blödsinn, daß ich ihn am
>liebsten....

Dan tu das einfach. Machen die Profis auch. Auch der beste Autorouter 
ist nicht halb so schlau wie ein guter Designer. Ganz zu schweigen von 
einem sehr guten Designer.

>Was mich auch stört, ist daß die Back-Annotation nicht schlau genug ist,
>mich im Board Leitungen tauschen zu lassen und diese dann im Schematik
>zu korrigieren. Es geht immer nur von Schematik-Änderung zu Board. Oder

Ja und? Reicht doch. Im Layout die Leitungen mit dem Auge anclicken, die 
werden "gehighlightet" (gibts da kein schönes deutsches Wort?) und unten 
der Name angezeigt. Dann einfach in den Schaltplan gehen und die Pins 
tauschen.

Mfg
Falk

von 6637 (Gast)


Lesenswert?

Ja. Der Altium Designer kann die optimalen Pins zuweisen, da man das 
CPLD/FPGA Design im selben Tool macht.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

@ Uwe (Gast)

Ich habe auch einen Footprint, in dem jeder CPLD Pin als swapbares 
Einzelgatter definiert ist. Leider kann man aber in Eagle nicht danach 
suchen, wo das Gatter mit der Pinnummer X ist. Das macht dann die Suche 
recht schwer.

Zum Problem "Fitten des CPLD" bei vorher festgelegten Pinning. Muss man 
nicht auf Zeit optimieren, hat der Fitter mehr Freiheiten und kommt 
meist zu einem Ergebniss.

von Falk B. (falk)


Lesenswert?

@  Uwe Bonnes (Firma TU Darmstadt) (uwebonnes)

>Ich habe auch einen Footprint, in dem jeder CPLD Pin als swapbares
>Einzelgatter definiert ist.

Als Gatter? Ob das so sinnvoll ist?

MfG
Falk

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.