Hat mein FPGA keine Routing-Ressourcen mehr?

9

Ich habe ein Serial-ATA-Controller-Design, das auf fast allen Geräten der Xilinx 7-Serie funktioniert, mit Ausnahme des Artix-7-Geräts, das mir Kopfschmerzen bereitet ...

Das reine Design (SATA 6,0 Gbit / s, 150 MHz Designtakt) kann auf meinem Artix-7 200T implementiert werden. Wenn ich ILA-Kerne hinzufüge (früher als ChipScope bekannt), wird das Timing nicht eingehalten.

Was habe ich getan, um die Situation zu lockern: - 2 Pipeline-Stufen in jedem ILA-Kern hinzugefügt - 1 Pipeline-Stufe zwischen dem GTP-Transceiver und der Logik hinzugefügt - Retiming, Remap und Wide Placement als alternative Implementierungsstrategie verwendet

Diese Bilder zeigen den normalen Entwurfsablauf. Die ILA-Kerne sind weit vom SATAController (SATAC) und der 8-Bit-CPU ( SoFPGA ) entfernt, aber der Controller hat immer noch fehlerhafte Pfade (dies ist die einzige Region mit fehlerhaften Pfaden).

Geben Sie hier die Bildbeschreibung ein

Es scheint, dass der Artix-7 in einigen Bereichen keine Routing-Ressourcen mehr hat. Wie kann ich einen Bericht erhalten, der auf einen solchen Verdacht hinweist?

Ich habe auch versucht, Retiming-, Remap- und breitere Platzierungsstrategien anzuwenden. Das Ergebnis ist folgendes:

Geben Sie hier die Bildbeschreibung ein

Der Timing-Fehler ist fast der gleiche ...

PS Das Design verwendet nur 178 von> 300 BlockRAMs. Ich habe Xilinx ISE verwendet, um fast jedes BlockRAM in anderen Designs zu verwenden, aber ich bin nie auf ein solches Verhalten gestoßen.

Bearbeiten:

Hier ist eine Heatmap aller negativen Durchhangwerte pro Slice (rot gefärbt) Geben Sie hier die Bildbeschreibung ein

Paebbels
quelle
3
In Altera Quartus gibt es sogenannte LogicLock-Regionen, mit denen Sie eine Partition oder einen Teil der Logik auf eine bestimmte Region beschränken können. Ich gehe davon aus, dass es für Xilinx etwas Ähnliches geben wird (obwohl ich nicht sicher bin, wie es heißen würde). Wenn Sie dies tun können, sollten Sie die ILA auf eine Region außerhalb Ihrer Logik beschränken (um zu verhindern, dass wichtige Elemente verschoben werden), und zusätzliche Pipelining-Funktionen (ohne Einschränkungen für die Region) hinzufügen, um das Timing zu erleichtern.
Tom Carpenter
2
Es kann auch ein Fall von falschen Pfaden zwischen der Taktdomäne der ILA und anderen Taktdomänen sein, die falsche Pfade verursachen, was zu einem zusätzlichen Aufwand des Monteurs führt (was dazu führt, dass echte Pfade mit geringerer Priorität behandelt werden und somit das Timing fehlschlägt)
Tom Carpenter
2
Ich hatte ähnliche Probleme mit SignalTap (wieder Altera-Äquivalent zu ILA), wobei fehlerhafte Pfade verursacht wurden, weil sensible Pfade durch die Tap-Logik auseinandergedrückt wurden, um näher an den abgegriffenen Signalen zu sein. Es geschah meistens dort, wo es eine hohe BRAM-Dichte gab, weil die SignalTap-BRAMs andere BRAMs weiter auseinander drängten. Sobald SignalTap auf eine Region beschränkt war, die weniger kritisch gefüllt war, verschwanden die Probleme.
Tom Carpenter
@ TomCarpenter Die Platzierungsbeschränkungen heißen PBlock :). Soweit ich das beurteilen kann, gibt es in der SoFPGA- oder SATAC-Region keine ILA-Zellen, sie sind auf jedem der 151 Trace-Signale durch 3 FF-Stufen getrennt. Das untersuchte Design läuft im gleichen Taktbereich wie das ILA (150 MHz). Alle Pfade sind eingeschränkt (keine uneingeschränkten, keine fehlerhaften Inter-Clock-Pfade). Die genannten fehlerhaften Pfade befinden sich alle in derselben Taktdomäne, entweder im SATAC oder in der ILA selbst. Ich habe einen Routing-Überlastungsbericht gefunden, in dem ca. 54% Auslastung (hor. Und vert.) Angegeben sind. Bitte sehen Sie mein neg. Slack Heat Map zu meiner Frage hinzugefügt.
Paebbels
1
Ich habe 2 Probleme gefunden: Zuerst ist der Artix-7 15 bis 50% langsamer als ein Kintex-7. Wenn ich die Standardgeschwindigkeitsstufe von -2 auf -3 ändere, ist alles in Ordnung (es gibt einen Sicherheitsabstand von 200 ps im Vergleich zu 670 ps negativem Durchhang. Die Geschwindigkeitsstufe -3 verbessert also einen Pfad von 6.600 ns um fast 0,970 ns! Es scheint, als ob das reine Anhängen von Trace-Signalen einen höheren Fan-Out verursacht, was zu Zeitproblemen führt. Außerdem durchlaufen die Trace-Routen die 100-MHz-Taktdomäne für die 8-Bit-CPU, was wiederum dazu führt (einer von 5 Läufen). Probleme in dieser
Uhrdomäne

Antworten:

1

Sie können einen detaillierten Bericht erhalten, indem Sie eine Designanalyse in Xilinx Vivado durchführen. Führen Sie den folgenden Befehl in der tcl-Konsole aus: "report_design_analysis". Er gibt Ihnen den Zeitplan, die Komplexität und den Überlastungsbericht des implementierten Entwurfs. Sie können diesen Bericht auch über Extras-> Bericht-> Berichtsdesignanalyse ausführen.

In diesem Bericht können Sie sehen, welche Bereiche aufgrund der Platzierung eine Überlastung verursachen. Welche Slices werden vollständig genutzt oder wie hoch ist die Miete für solche Slices und / oder Routen?

Ich hoffe das hat geholfen.

Grüße, KWQ

KashifWajid
quelle
Vielen Dank für diesen (mir unbekannten) Bericht. Wie unterscheidet es sich von meinem letzten Bild (der Timing Heat Map)?
Paebbels