Forum: FPGA, VHDL & Co. max Takt


von chris (Gast)


Lesenswert?

Hallo,
ich habe ein VHDL Code der mit  142 MHz läuft,
allerdings soll mit einem Takt von 160 MHz gearbeitet werden.
Jetzt ist es meine Aufgabe den Code schneller zu machen.
Kennt jemand gute Internet-Seiten, Bücher hat selbst Erfahrung damit
wie man so was macht ?
( wie schreibt man StateMachines damit max Taktfrequnz erreicht wird ?
usw. )

Ein bischen über pipelining habe ich schon gefunden ...

  Danke für Tipps und Hinweise
  Chris

von Klaus F. (kfalser)


Lesenswert?

Sind die erreichten 142 MHz die geschätzte Frequenz nach der Synthese
oder die erreichte nach dem Place & Route?
Die maximale Taktfrequenz hängt nicht nur vom VHDL Code ab.
Du kannst
- einen schnelleren Baustein nehmen
- den Tools mehr Informationen geben über die Taktfrequenz, welche
erreicht werden soll und diese länger rechnen lassen.

Ansonsten solltest Du zuerst den langsamsten Teil deiner Schaltung
identifizieren, welche das Design bremst. Diesen Teil mußt Du
verbessern.

von chris (Gast)


Lesenswert?

hi,
danke erstmal ...
also 142 MHz sind nach Synthese.
Implement Desing habe ich durchlaufen lassen kann aber die erreichte
Frequenz net finden ?

Schnellerer Bsutein ist nicht möglich, kostenfrage.

gibt es irgendwo ein Tutorial, oder steht das in der Hilfe wo ich den
Tools mehr Infos geben kann ?

 Danke
    Chris

von Klaus F. (kfalser)


Lesenswert?

Am wichtigsten ist ein PERIOD constraint, mit dem Du die gewünschte
Taktperiode vorgibst.
Am besten mit dem Constraint Editor eintragen. Nach dem Implementieren
kannst Du mit dem Timing Analyzer nachschauen, ob dein Constraint
erreicht worden ist. Dort findest Du auch die informationen über den
langsamsten Pfad.
Ein Tutorial fällt mir auf die Schnelle nicht ein.

von chris (Gast)


Lesenswert?

Hallo,
danke ... es wird noch gerechnet ...

falls es noch jemand interesiert :

http://139.184.100.112/vlsi/papers/VHDLDATE98.pdf

 chris

von Xenu (Gast)


Lesenswert?

"Register Retiming" (auch: "Register Balancing") würde ich auch noch
aktivieren, falls nocht nicht geschehen.

von FPGAküchle (Gast)


Lesenswert?

Hm design schneller machen ist ein weites Feld. Versuch erst mal alles
aus den Tools rauszukitzeln. Die sagen Dir auch wo es klemmt. Dort
kannst du dann gezielt Pfade verkürzen (register einbauen).
Und das Design ist zu entrümpeln. Einige Tipps (für Xilinx )wären:

-alles auf synchronen Reset umstellen
-reset weglassen wo nicht nötig (Datenpfad ein und ausgangsbuffer)
-keine internen tristates benutzen (aber manchmal sind die schneller)
-den richtigen chip verwenden (höherer speedgrad, manchmal hilft ein
größere chip (mehr Platz zum routen)
-der Placer ist doof, es hilft einige Primitive per Hand zu platzieren
 (DCM,MULT18)
-multiplexer aus carrychain statt LUT's aufbauen.


bei den tools hilft nur Ausprobieren der Optionen. Manchmal ist ein
Optimieren auf speed langsamer als Optimieren auf Area, auch die
Hundert anderen Schalter haben mitunter überraschende Wirkung. Xilinx
ist das bewusst, sie bieten ein Script an (Xplorer?), das dutzende
Implementierung mit verschiedenen Optionen automatisch macht und dich
das passende auswählen lässt.

Die speedangaben von der synthese sind IMHO unbrauchbar, erst
placeundroute kann gesicherte Angaben machen. Place and route rechnet
aber mit worst case. Du kannst das Design höher takten, wenn du den
optimalen temperaturbereich garantierst (Kühlung).

Meine persönliche "Lose Blätter" Sammlung an Xilinx tips findet sich
unter:
http://wikihost.org/wikis/fpgakueche/

ist aber aus Zeitgründen noch recht mager. Von Xilinx sind alle Artikel
zu "Timing closure" empfehlenswert, z.B.

http://www.xilinx.com/xlnx/xweb/xil_tx_display.jsp?sTechX_ID=rw_tim_closure&iLanguageID=1&iCountryID=1

von FPGAküchle (Gast)


Lesenswert?

statemachienes schneller machen ...
Oft hilft OneHot encoding zu verwenden, da die decoder logic einfacher
wird (nur ein FF muss ausgewertet werden). Auch muss man eine FSM nicht
aus FF und Ein und Ausgangslogig aufbauen. Man kann auch einen RAM-Block
nehmen. Die stateübergange werden als Addressberechnung realisiert, die
Ausgangslogig findet sich als Inhalt
der Speicherzellen wieder. (wie z.B in der Diplomarbeit:
http://www.lrr.in.tum.de/~acher/da/dadoc.html)


Counter sollten nicht innerhalb einer FSM beschrieben werden sondern
als Komponenten die von den FSM gesteuert werden. Die FSM selber kann
auch ein counter sein, oder teile davon. counter können auch als
shiftregister realisiert werden, das ist fix.

FSM können oft auch aufgeteilt werden in mehrere kleinere die sich
gegenseitig ansteueren.

von T.M. (Gast)


Lesenswert?

Von Xilinx gibts auch ein ganz nettes Tool, um Timingprobleme besser zu
erkennen und zu beheben. Nennt sich PlanAhead, doe Version 8.1 ist grad
nei draussen. Ich hab jetzt paar Tage mit der Evaluationversion
gearbeitet. Das ist im Prinzip ein verbesserter Floorplanner, wo du dir
die kritischen Pfade "interaktiv" auf dem Chip anzeigen lassen kannst,
und durch geschicktes Platzieren in sogenannten PBlocks die Pfade
verkürzen kannst.
Integriert ist auch das sogenannte ExploreAhead, damit kann man wie
FPGAKüchle schon erwähnte dutzende Implemetationsruns machen mit
verschiedenen Einstellungen. Wenn dann einer von den Runs dein geford.
Timinmg erreicht, ok, sonst muss man halt wie oben beschrieben die
kritischen Pfade lokalisieren und verbessern.
Bei Xilinx gibts unter demosondemand 3 Einführungen zu dem Tool, kannst
du dir ja mal anschauen. Aber ganz billig ist das Programm in der
Vollversion dann doch nicht ;-)

von FPGAküchle (Gast)


Lesenswert?

Hm routing per Hand im Floorplanner würde ich als letztes machen, als
finetuning. bei Timingverletzungen erst mal den timing analyzer
anwerfen. der sagt dir genau wos klemmt und hat auch ein paar tips auf
Lager. von dort kannst du per "Crossprobe" auch in den FPGAeditor
oder Floorplanner wechseln.

Am besten die spielst eine weile mit den tools rum und wenn sich immer
noch timing verletzungen finden, poste mal das Timing eines Pfades. Da
kann sicherlich jemand weiterhelfen

von chris (Gast)


Lesenswert?

hallo,
dank erstmal ..

hab mal PlanAhead installiert, ich blick das aber nicht ganz mit der
Lizenz ?
ein paar Tage testen würde erst mal reichen.
wie aktiviere ich es als testversion ?

Chris

von T.M. (Gast)


Lesenswert?

Mhm ich schätze mal du musst das wie den Modelsim irgendwie ne Lizenz
anfordern. Das hat bei uns im Institut der Admin gemacht ;-)

@Küchle:
Genau die Timing analyse kann man mit dem PlanAhead auch machen. Die
Pfade, die das Timing verfehlt haben, sind dann markiert, und man kann
sie dann optimieren oder verschiedene Runs von ISE mit handoptimierten
Einstellungen veranlassen. Ich sag mal, für sowas is das Tool optimal.

Wir wollten es bei uns für die partielle Reconf. verwenden, und da muss
ich leider sagen, dass da Xilinx zuviel verspricht. Das einzige, was da
eine Erleichterung zum bisherigen Flow darstellt, dass man die Module
"interaktiv" auf den Chip verteilen kann und dass man die BusMacros
ebenso platzieren kann. Den Rest muss man trotzdem per Hand machen.

Und das Programm braucht doch viel Arbeitsspeicher und nen relativ
schnellen Rechner. Meine Sun mit 2GB RAM war stellenweise überfordert.
Hat aber auch nur knapp 700MHz :-(

von T.M. (Gast)


Lesenswert?

Ich hab grad in meinem Postfach nachgesehen, ich hatte doch das Tool vor
paar Wochen auch mal installiert wegen der Doku. Also ich habe von
Xilinx eine Lizenz zugeschickt bekommen. Hast du auf der Webseite auch
alles ausgefüllt?

von chris (Gast)


Lesenswert?

hallo,
noch eine kurze frage.

ist es wahrscheinlich das wenn ich mit PlanAhead arbeite meine
maximaler Takt über dem der bei der Synthese erricht wird liegt ?
nur damit ich mal weis ob ich meine Zeit schon überhaupt mit PlanAhead
"verschwenden" soll, bevor bei der synthese der gewünschte takt nich
ereicht wird ?
  Danke
   Chris

von Sven Johannes (Gast)


Lesenswert?

Moin...

Die postsynth Analyse ist irgendwie nur ein Schätzdaumen. Meistens +/-
15% dessen was nach Place&Route zu erwarten ist. Wenn die Strukturen
beonders  gut oder schlecht zu routen sind können die Werte auch noch
ganz und gar abfliegen. Die Post P&R ist ziemlich genau, bei mittleren
Betriebsbedingungen. Was PlanAhead dann noch holen kann, weiß ich
nicht. Der normale Placer ist jedenfalls manchmal echt hohl.

--
 SJ

von FPGAküchle (Gast)


Lesenswert?

@T.M:
#Genau die Timing analyse kann man mit dem PlanAhead auch machen. Die
#Pfade, die das Timing verfehlt haben, sind dann markiert, und man
#kann
#sie dann optimieren oder verschiedene Runs von ISE mit
#handoptimierten
#Einstellungen veranlassen. Ich sag mal, für sowas is das Tool
#optimal.

Also eine Art integrierende Oberfläche für Timinganalyzer etc, die auf
Timingoptimierungen ausgerichtet ist. Klingt gut. Aus der beschreibung
habe ich gelesen das Planahead quasi ein Richtung Bedienbarkeit
aufgebohrter Floorplaner ist, und man die erzielbaren Verbesserungen
auch mit den alten Tools erreicht.

Ja die Xilinx Tool auswurf Rate ist manchmkal schneller als meine
Lernkurve. kennst'de ein Tool perfect gibt schon längst den nachfolger
:-(

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.