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.
@ 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
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
@ 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.
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
@ 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
Ja. Der Altium Designer kann die optimalen Pins zuweisen, da man das CPLD/FPGA Design im selben Tool macht.
@ 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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.