01signal.com

Quartus, convergence temporelle : obtenir un rapport concis des chemins temporels multi-corner

Introduction

Lorsqu'un design FPGA n'atteint pas la convergence temporelle (timing closure), c'est-à-dire ne satisfait pas ses contraintes temporelles (timing constraints), la démarche naturelle consiste à examiner attentivement les chemins critiques (critical paths). Cet examen se fait sur la base d'un rapport d'analyse temporelle qui indique les délais introduits par les différents éléments logiques le long de chaque chemin (path).

Si vous n'êtes pas un utilisateur intensif des FPGA d'Intel, savoir comment obtenir ce rapport peut ne pas sembler évident. Pire encore, il est possible de consulter, sans le savoir, le mauvais rapport.

La première chose à clarifier est le concept d'analyse temporelle multi-corner. La pratique courante consiste à vérifier la validité des performances temporelles d'un FPGA en s'assurant que les contraintes temporelles sont satisfaites dans quatre cas : températures minimale et maximale, combinées à un modèle de délais « lent » (slow) ou « rapide » (fast). L'analyse est donc menée pour quatre combinaisons, que l'on appelle les quatre coins de fonctionnement (four corners).

Il est donc important d'examiner les rapports d'analyse temporelle des quatre coins lorsqu'on étudie les chemins critiques. Ce point est souvent négligé. TimeQuest, par exemple, ne génère généralement un rapport d'analyse temporelle que pour un seul coin.

Cet article explique donc comment obtenir un rapport qui soit réellement exploitable. Les exemples se rapportent à Quartus Prime 17.1 Lite.

Deux autres articles méritent d'être mentionnés : l'un examine la relation entre les contraintes d'entrée/sortie et le rapport d'analyse temporelle, tandis qu'un autre fait quelques essais avec les scripts Tcl dans TimeQuest.

Important : cette page explique comment obtenir le rapport d'analyse temporelle pour la vérification du temps de préparation (setup). Il existe par ailleurs des rapports pour le temps de maintien (hold), la récupération (recovery) et le retrait (removal). Ces rapports peuvent également révéler un non-respect des contraintes temporelles.

Créer un rapport multi-corner : méthode rapide avec des scripts

Commencez par copier le script Tcl suivant dans un fichier, par exemple timing.tcl :

create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -panel_name "Critical paths"
}

Notez que le rapport d'analyse temporelle est limité à la seule vérification du temps de préparation (setup).

Ne vous laissez pas tromper par l'option « multi_corner » : chaque appel à report_timing ne couvre qu'un seul coin. Il n'est d'ailleurs pas évident que cette option ait le moindre effet.

C'est pourquoi le script boucle sur les quatre options (avec foreach_in_collection) et génère un rapport séparé pour chaque coin.

Passons à l'action :

Quatre rapports séparés apparaîtront également dans la même entrée, un pour chaque coin. Dans les versions antérieures de Quartus, seuls ces derniers sont affichés (c'est-à-dire pas de Multi-Corner Summary).

Générer uniquement des rapports HTML / texte

Les outils peuvent générer de jolis rapports HTML, nettement plus agréables à lire que l'interface graphique de TimeQuest. Malheureusement, chacun de ces rapports ne couvre qu'un seul coin. Le script ci-dessous génère quatre rapports HTML distincts, un pour chaque coin (cela fait beaucoup de fichiers : scripts JQuery, CSS et autres. Tout le tralala, mais pas un rapport multi-corner).

Prenons par exemple le script suivant, à sauvegarder sous timing-html.tcl :

#project_open myproj
create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -file "timing_paths_$op.html" \
    -panel_name "Critical paths for $op"
}

Pour obtenir un simple rapport texte, modifiez l'argument de l'option -file de façon à ce que l'extension soit .rpt ou .txt au lieu de .html.

Remarquez la commande « project_open » qui est mise en commentaire en haut du script. Si on la décommente et qu'on remplace « myproj » par le nom réel du projet, une simple ligne de commande shell permet de générer les rapports HTML, par exemple :

$ /path/to/quartus/bin/quartus_sta -t timing-html.tcl

Je n'ai toutefois pas trouvé de moyen de générer ainsi un rapport multi-corner.

Pour que ces rapports soient générés à chaque implémentation (ce qui est recommandé), ajoutez une ligne comme celle-ci au fichier QSF :

set_global_assignment -name TIMEQUEST_REPORT_SCRIPT relative/path/to/timing-html.tcl

Lorsque le script Tcl est inclus de cette façon dans un fichier QSF, le script ne doit pas utiliser project_open.

En passant uniquement par l'interface graphique

On peut également obtenir un rapport multi-corner en cliquant simplement :

Cette page a été traduite de l’anglais par une machine. En cas de doute, veuillez vous reporter au texte original
Copyright © 2021-2026. All rights reserved. (dcc38493)