Aller au contenu

Synthèse et fermeture temporelle

Penser matériel

Avant le RTL, identifiez :

  • les registres ;
  • les opérations combinatoires entre registres ;
  • les largeurs ;
  • la fréquence ;
  • latence et débit ;
  • les interfaces externes.

Une longue expression peut devenir un long chemin combinatoire. Une seule ligne de code n'implique pas un circuit rapide.

Inférence des ressources

Vivado peut inférer :

  • bascules et LUT ;
  • chaînes de retenue ;
  • RAM distribuée ou bloc ;
  • DSP pour multiplication/accumulation ;
  • LUT en registres à décalage ;
  • broches internes de reset et validation.

L'inférence dépend du style, des largeurs, du reset et du composant. Confirmez toujours le résultat dans les rapports.

Pipeline

sans pipeline : registre → grand calcul → registre

avec pipeline : registre → partie A → registre → partie B → registre

Effets :

  • fréquence maximale plus élevée ;
  • latence supplémentaire ;
  • davantage de registres et de signaux de contrôle à aligner ;
  • débit pouvant rester à un résultat par cycle.

Mettez à jour la latence du scoreboard lorsque le pipeline change.

Fanout

Un reset, une validation ou une commande pilotant beaucoup de destinations peut subir un grand délai de routage.

Solutions possibles :

  • réplication de registres ;
  • validations locales ;
  • pipeline ;
  • optimisation physique Vivado ;
  • réduction des resets globaux inutiles.

Mesurez avant de dupliquer manuellement.

Lire un chemin temporel

Déterminez :

  1. Horloge et registre de lancement.
  2. Registre et horloge de capture.
  3. Niveaux de logique.
  4. Délai de routage.
  5. Skew et incertitude.
  6. Temps requis, arrivée et slack.

Puis classez :

  • trop de logique : restructurer ou pipeliner ;
  • trop de routage : réduire fanout ou améliorer placement ;
  • mauvaise relation d'horloge : corriger contraintes/CDC ;
  • exigence irréaliste : revoir consciemment la spécification.

Setup et hold

Un échec setup s'améliore souvent en réduisant le délai maximal ou en autorisant légitimement plusieurs cycles.

Un échec hold concerne le délai minimal. N'ajoutez pas arbitrairement des chaînes de retard en RTL : vérifiez d'abord horloges et exceptions, puis laissez l'outil de placement-routage corriger le délai physique.

Latence, débit et fréquence

  • Latence : temps entre acceptation d'une entrée et sortie correspondante.
  • Débit : nombre de transactions acceptées/terminées par unité de temps.
  • Fréquence : nombre de fronts d'horloge par seconde.

Un pipeline de cinq étages peut avoir cinq cycles de latence tout en acceptant une entrée à chaque cycle.

Utilisation

Examinez LUT, bascules, BRAM, DSP, E/S et ressources d'horloge. Des comptes inattendus révèlent souvent :

  • une structure déroulée involontairement ;
  • de la LUT RAM au lieu de BRAM à cause du style de reset/lecture ;
  • un DSP non inféré à cause des types ou largeurs.

Avertissements

Classez chaque avertissement : attendu et documenté, sans danger compris, vrai défaut, ou inconnu à examiner.

Prioritaires :

  • latches ;
  • pilotes multiples ;
  • troncatures ;
  • ports non connectés ou non pilotés ;
  • logique supprimée ;
  • boucles combinatoires ;
  • horloge utilisée comme donnée ou inversement.

Méthode de fermeture

  1. Vérifier toutes les horloges et contraintes I/O.
  2. Rechercher les chemins non contraints.
  3. Classer les traversées entre horloges.
  4. Identifier les pires groupes.
  5. Corriger d'abord l'architecture.
  6. Relancer l'implémentation.
  7. Comparer les rapports.
  8. Maintenir la régression fonctionnelle pendant l'optimisation.

Le timing est fermé lorsque tous les chemins prévus respectent leurs contraintes dans le circuit implémenté. Une simulation à 10 ns, une synthèse réussie ou un bitstream généré ne suffisent pas.