Guten Morgen! Ich stehe vor dem Problem, dass mein Design nicht auf das mir zur Verfügung stehende FPGA passt. Deshalb stellt sich für mich die Frage, wie ich mein Design optimieren kann. Ich weiß, dass ich z.B. mit Xilinx ISE bei der Synthese automatisch auf Fläche optimieren lassen kann, jedoch reicht der Platz auf dem FPGA leider immer noch nicht aus. Gibt es spezielle Tricks für die Design-Implementierung, um Fläche zu sparen? Beispielsweise effizient gestaltete Zähler o.ä.? Oder gibt es "Richtlinien" welche Operationen zu vermeiden sind? Gruß Tim
Besorg Dir mal folgendes Tool: http://www.conekt.net/fpgaoptim.html (oder xdlanalyze -> http://www.da.isy.liu.se/~ehliar/stuff/) Damit siehst Du, wo Logikfläche verbraten wird und wo es sich lohnt zu optimieren. Damit die Tools arbeiten mußt Du evtl. erstmal für einen größeren FPGA synthetisieren. Duke
Hallo, was geht dir denn aus, Logik, Register, RAM, DSP-Cores? Durch Veränderung deines Codes kannst du gezielt noch vorhandenen Resourcen ausnutzen und andere dafür einsparen. Z.B kann mann große Register oder Registerbänke in BlockRAM verschieben. Vergleichsoperationen werden mitnichten immer in Form einer Subtraktion und mit anschließender Auswertung des MSBs synthetisiert. Was du machen kannst hängt stark vom verwendeten FPGA ab. Tom
@ Duke: Danke für die Tipps! Werde mir die Tools besorgen und testen. @ Thomas: Ich verwende einen Xilinx Spartan-3 (XC3S1000). Mir gehen die Slices und die Flipflops aus... BRAMs habe ich noch frei, mal sehn, ob ich da was "auslagern" kann.
@Tim: Verwendest Du viel distributed RAM oder FIFOs? Sowas passt u.U. gut in die BRAMs. Duke
Auch Statemachines lassen sich in BRAMs packen... Sieh dir mal dein Resetkonzept an: http://www.xilinx.com/support/documentation/white_papers/wp272.pdf Das Fazit daraus: >>> Reset Costs More Than You Think! <<< Dazu auch der Beitrag "Xilinx und die Resets"
ein anderes synthesetool, z.B. Synplify Pro, kann auch helfen deutlich effizienter zu synthetisieren. da kann man unter umständen 20-30% fläche einsparen. xilinx ise is da nich unbedingt das nonplus ultra.
All das lohnt sich aber nur, wenn man das Produkt in Massen verkaufen will, und es auf die 3€ ankommt, die man einspart, wenn man einen kleineren FPGA benutzen kann. Ansonsten einfach den nächst größeren nehmen. Solche knappen Sachen sind immer etwas heikel, kleinste Änderungen können nach sich ziehen, dass das ganze Design nicht mehr richtig läuft. Wir hatten das hier zur Genüge mit randvollen Xilinx CPLDs. Wenn man 511 von 512 Makrozellen benutzt hat, dauert das Fitting bei jedem Durchlauf schon mal einige Stunden und nachher passt das Timing nicht mehr. Dann lieber einen größeren Chip für mehr Reserven.
Es hat ein wenig gedauert, da ich Urlaub hatte, aber mittlerweile habe ich das Platzproblem beseitigen können. > Sieh dir mal dein Resetkonzept an: > http://www.xilinx.com/support/documentation/white_papers/wp272.pdf > Das Fazit daraus: > >>> Reset Costs More Than You Think! <<< > > Dazu auch der Beitrag "Xilinx und die Resets" Danke an Lothar, genau das war's! Der von mir eingefügte Reset eines sehr großen Buffers hat enorm viel Platz beansprucht.
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.