max Takt

Gast #387977
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
#387978
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.
Gast #387979
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
#387980
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.
Gast #387983
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
Gast #387984
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.
Gast #387985
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 ;-)
Gast #387986
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
Gast #387988
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 :-(
Gast #387989
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?
Gast #387990
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
Gast #387991
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
Gast #387992
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
:-(

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren