mikrocontroller.net

Forum: FPGA, VHDL & Co. max Takt


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke ... es wird noch gerechnet ...

falls es noch jemand interesiert :

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

 chris

Autor: Xenu (Gast)
Datum:

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

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-(

Autor: T.M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGAküchle (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.