Hallo zusammen, ich bin, was Timing Constraints anbelangt, noch ziemlicher Anfänger. Kämpfe mich zwar derzeit durch die ganzen Constraints Guides, konnte aber bisher keinen Lösungsansatz für mein Problem finden. Folgendes Problem: Ich nutze ein gekauftes FPGA-Board mit einem Xilinx Virtex 5 Fpga. Auf diesem Board befindet sich noch unter anderem QDR-RAMs, SDR-Rams und eine PMC-Schnittstelle. Für die PMC- und die RAM-Schnittstellen liegen mir "funktionierende" Components des Herstellers vor, die ich in mein Design eingebunden hab. Das ganze ließ sich auch bisher immer fehlerfrei übersetzen. Scheinbar ist mein Design mitlerweile so groß geworden das neuerdings Timing Constraints fehler (Setup Time) auftreten. Mein Problem ist jetzt, daß diese Fehler ausgerechnet in den Hersteller Components auftreten und nicht in meinem Teil des Designs. Da diese Components recht komplex sind würde ich ungern in das Design der Component eingreifen. Keine Ahnung, was ich damit dann anrichten würde. Gibt es eine Möglichkeit den Xilinx Tools beizubringen, daß die Hersteller-Components quasi als Block so platziert und geroutet werden, daß in diesen Components keine Timing Constraints Verletzungen auftreten? Mit Timing Constraints Fehlern in meinem eigenem Design würde ich schon klar kommen. Hat Irgendwer von Euch eine Idee wie ich das Problem lösen kann, bzw. unter welchem Stichwort ich weitere Informationen dazu finden könnte? Grüße, Christian
Prinzipiell ist das ziemlich leicht : weise im fpga editor ein Feld zu wo der Block platziert werden soll. (sinnvollerweise nahe den genutzten Pins) Das dies dein Problem nicht unbedingt lößt muss dir aber klar sein, denn auch wenn diese Blöcke lokal die Geschwindigkeit halten, so kommunizierst du doch sicherlich mit diesen. Das kann je nachdem bei langen Wegen auf dem Chip zu Problemen führen. Helfen kann hier : - Taktrate verringern - zusätzliche FFs zwischen die 2 Module einbauen (verkürzt den Routing-Pfad pro Takt enorm) - aggressivere Einstellungen für den Routingaufwand (Achtung : kann die PAR Dauer stark erhöhen) Erstes Mittel bleibt aber sich den langsamsten Pfad genau anzusehen. Häufig entdeckt man sofort etwas wo man ansetzen kann. z.b. ein Mux dazischen.
Hallo iulius, danke für den Hinweis. Das ich das Problem so im Endeffekt nur verschiebe ist mir klar, aber eigentlich will ich ja genau das. Ich möchte die das Problem von der Hersteller Komponente in den von mir designten Bereich verschieben. Den Teil kenn ich und da hab ich auch keine Probleme z.B. zusätzliche FFs zwischen Module einzufügen. Dann werde ich mich jetzt wohl mal in den FPGA editor einarbeiten müssen. Danke nochmal. Jetzt weis ich wenigstens wo ich ansetzen muss. Xilinx dokumentiert ja echt überdurchschnittlich viel. Grüße, Christian
Hallo Christian, für deine Probleme gab es in der Vergangenheit ein nettes aber teures Tool: PlanAhead. In ISE 11 ab Logic Edition gibt es nun eine preiswerte weil enthaltene Lösung: PlanAhead ;) Planahead gibt Dir unter anderem die von iulius beschriebene Möglichkeit Areas zu definieren in denen einzelne Komponenten zum liegen kommen. Darüber hinaus analysiert PlanAhead die Ausgaben der Synthese und kann Dir die kritischen Pfade innerhalb des FPGAs aufzeigen. Weitere Funktionen ist das durchprobieren verschiedener Syntheseeinstellungen ( z.B. die Map und Place&Route Affords). We auch schon von iulius beschrieben ist es sicherlich sinnvoll, wenn möglich über Pipelining nachzudenken. Gruß Andreas
Hallo Andreas, danke für die Hilfe. Planahead macht auf jeden Fall einen deutlich besseren Eindruck als der FPGA Editor. Dann werde ich mich da jetzt mal einarbeiten. Das ist ja recht gut Dokumentiert. Pipelining ist sicher eine super Lösung bei Setup Time verletzungen zwischen den einzelnen Komponenten oder in meinen eigenen Komponenten, ich hab aber eben die Sorge, daß ich mir die Funktionalität einer komplexen Komponente, die ich nicht wirklich kenne, da ich sie nicht selber geschrieben hab, dadurch zerschieße, daß ich Latenzen an eventuell zeitkritischen Stellen einfüge. Gruß, Christian
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.