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
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.
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
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.
Hallo, danke ... es wird noch gerechnet ... falls es noch jemand interesiert : http://139.184.100.112/vlsi/papers/VHDLDATE98.pdf chris
"Register Retiming" (auch: "Register Balancing") würde ich auch noch aktivieren, falls nocht nicht geschehen.
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
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 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 ;-)
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
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
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 :-(
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?
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
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.