Forum: FPGA, VHDL & Co. Fläche des Designs optimieren


von Tim (Gast)


Lesenswert?

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

von Duke Scarring (Gast)


Lesenswert?

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

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

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

von Tim (Gast)


Lesenswert?

@ 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.

von Duke Scarring (Gast)


Lesenswert?

@Tim:

Verwendest Du viel distributed RAM oder FIFOs? Sowas passt u.U. gut in 
die BRAMs.

Duke

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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"

von Nephilim (Gast)


Lesenswert?

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.

von Christian R. (supachris)


Lesenswert?

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.

von Tim (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.