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).
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:
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)