Mon FPGA n'a plus de ressources de routage?

9

J'ai une conception de contrôleur Serial-ATA fonctionnant sur presque tous les types d'appareils Xilinx de la série 7, à l'exception de l'appareil Artix-7, ce qui me donne des maux de tête ...

La conception pure (SATA 6.0 Gb / s, horloge de conception 150 MHz) peut être implémentée sur mon Artix-7 200T. Si j'ajoute des cœurs ILA (anciennement ChipScope), le timing n'est pas respecté.

Qu'est-ce que j'ai fait pour détendre la situation: - ajouté 2 étages de pipeline dans chaque cœur ILA - ajouté 1 étage de pipeline entre l'émetteur-récepteur GTP et la logique - utilisé la resynchronisation, le remappage et le placement étendu comme stratégie de mise en œuvre alternative

Ces images montrent le flux de conception normal. Les cœurs ILA sont loin du SATAController (SATAC) et du processeur 8 bits ( SoFPGA ), mais le contrôleur a toujours des chemins défaillants (c'est la seule région avec des chemins défaillants).

entrez la description de l'image ici

Il semble que l'Artix-7 ne dispose pas de ressources de routage dans certaines régions. Comment puis-je obtenir un rapport indiquant un tel soupçon?

J'ai également essayé de recalculer, de remapper et de stratégies de placement plus larges. Le résultat est le suivant:

entrez la description de l'image ici

L'échec du timing est presque le même ...

PS La conception utilise seulement 178 des> 300 BlockRAMs. J'ai utilisé Xilinx ISE pour utiliser presque tous les BlockRAM dans d'autres conceptions, mais je n'ai jamais rencontré un tel comportement.

Éditer:

Voici une carte thermique de toutes les valeurs de mou négatives par tranche (colorées en rouge) entrez la description de l'image ici

Paebbels
la source
3
Dans Altera Quartus, il existe quelque chose appelé régions LogicLock qui vous permet de contraindre une partition ou un bloc de logique à une région spécifique. Je suppose qu'il y aura quelque chose de similaire pour Xilinx (bien que je ne sois pas sûr de son nom). Si vous pouvez le faire, vous devez contraindre l'ILA à une région éloignée de votre logique (pour l'empêcher de déplacer des éléments importants) et ajouter un pipelining supplémentaire (non contraint à la région) pour aider au timing.
Tom Carpenter
2
Il peut également s'agir de faux chemins entre le domaine d'horloge de l'ILA et tout autre domaine d'horloge provoquant de faux chemins qui entraînent un effort supplémentaire de la part de l'installateur (entraînant un traitement des chemins réels avec moins de priorité et donc un échec du timing)
Tom Carpenter
2
J'ai eu des problèmes similaires avec SignalTap (encore une fois l'équivalent Altera d'ILA), avec des chemins défaillants causés parce que les chemins sensibles étaient écartés par la logique de la prise de courant voulant être plus proche des signaux captés. Cela se produisait principalement là où il y avait une forte densité de BRAM parce que les BRAM SignalTap forçaient d'autres BRAM plus éloignés. Une fois que SignalTap a été contraint à une région moins remplie de façon critique, les problèmes ont disparu.
Tom Carpenter
@TomCarpenter Les contraintes de placement sont appelées PBlock :). Pour autant que je sache, il n'y a pas de cellules ILA dans la région SoFPGA ou SATAC, elles sont séparées par 3 étages FF sur chacun des 151 signaux de trace. La conception sondée fonctionne dans le même domaine d'horloge que l'ILA (150 MHz). Tous les chemins sont contraints (pas de chemins inter-horloge non contraints, sans échec). Les chemins défaillants mentionnés sont tous dans le même domaine d'horloge, soit dans le SATAC, soit dans l'ILA lui-même. J'ai trouvé un rapport de congestion de routage, qui indique une utilisation d'environ 54% (hor. Et vert.). Veuillez voir mon neg. carte de chaleur lâche ajoutée à ma question.
Paebbels
1
J'ai trouvé 2 problèmes: au début, l'Artix-7 est 15 à 50% plus lent qu'un Kintex-7. Si je change le niveau de vitesse par défaut de -2 à -3, tout va bien (il y a une marge de sécurité de 200 ps contre 670 ps de mou. Ainsi, le grade de vitesse -3 améliore un chemin de 6,600 ns de près de 0,970 ns! Il semble que la simple liaison de signaux de trace provoque un fan out plus élevé, ce qui provoque des problèmes de synchronisation. En outre, les routes de trace passent par le domaine d'horloge de 100 MHz pour le processeur 8 bits, ce qui provoque à son tour (un sur 5 exécutions) des problèmes dans ce domaine d'horloge. Donc, les longues lignes / traversées de route provoquent des problèmes sur d'autres lignes
Paebbels

Réponses:

1

Vous pouvez obtenir un rapport détaillé en effectuant une analyse de conception dans Xilinx Vivado. Exécutez la commande suivante dans la console tcl: "report_design_analysis" Il vous donne le rapport de synchronisation, de complexité et d'encombrement de la conception implémentée. Vous pouvez également exécuter ce rapport en allant dans Outils-> Rapport-> Report Design_analysis.

Dans ce rapport, vous pouvez voir quelles zones sont à l'origine de la congestion due au placement. Quelles tranches sont entièrement utilisées ou quel est le loyer de ces tranches et / ou itinéraires.

J'espère que cela vous a été utile.

Cordialement, KWQ

KashifWajid
la source
Merci pour ce rapport (pour moi inconnu). En quoi diffère-t-elle de ma dernière image (la carte thermique de synchronisation)?
Paebbels