Exemple de Quartus® II Tcl : exécution automatique du script

author-image

Par

À partir de la version 4.0 du logiciel Quartus® II, vous pouvez configurer les scripts pour les exécuter automatiquement à différents points pendant la compilation. Vous pouvez utiliser cette fonctionnalité pour exécuter automatiquement des scripts qui réalisent des rapports personnalisés, effectuent des affectations spécifiques et exécutent de nombreuses autres tâches.

Trois affectations globales contrôlent l’exécution automatique des scripts. Ils sont répertoriés ici, ainsi que lorsqu’ils provoquent l’exécution d’un script.

•	PRE_FLOW_SCRIPT_FILE - before a flow starts
•	POST_MODULE_SCRIPT_FILE - after a module finishes
•	POST_FLOW_SCRIPT_FILE - after a flow finishes

Les affectations de POST_FLOW_SCRIPT_FILE et POST_MODULE_SCRIPT_FILE sont prises en charge à partir de la version 4.0, et l’affectation PRE_FLOW_SCRIPT_FILE est prise en charge à partir de la version 4.1.

Un module est un Quartus® II exécutable qui effectue une étape dans un flux. Par exemple, deux modules sont l’analyse et la synthèse (quartus_map) et l’analyse du timing (quartus_tan).

Un flux est une série de modules que le logiciel Quartus® II exécute avec des options prédéfinies. Par exemple, la compilation d’une conception est un flux qui se compose généralement des étapes suivantes (effectuées par le module indiqué) :

  1. Analyse et synthèse (quartus_map)
  2. Fitter (quartus_fit)
  3. Assembleur (quartus_asm)
  4. Analyseur de synchronisation (quartus_tan)

Les autres flux sont décrits dans l’aide pour la commande execute_flow Tcl. De plus, la plupart des commandes du menu Démarrer (menu de traitement) du Quartus® l’interface graphique II correspondent aux flux.

Affectation

Pour effectuer une affectation pour exécuter automatiquement un script, faites une affectation avec le formulaire suivant :

set_global_assignment -name <assignment name> <executable>:<script name>

Le nom de la cession est l’un des éléments suivants :

•	PRE_FLOW_SCRIPT_FILE
•	POST_MODULE_SCRIPT_FILE
•	POST_FLOW_SCRIPT_FILE

Le exécutable est le nom d’un Quartus® ligne de commande II exécutable qui comprend une amorçable Tcl.

•	quartus_cdb
•	quartus_sh
•	quartus_sim
•	quartus_stp
•	quartus_tan

Le nom du script est le nom de votre script Tcl.

Exécution du script

Le logiciel Quartus® II exécute les scripts comme indiqué ici :

<executable> -t <script name> <flow or module name> <project name> <revision name>

Le premier argument avancé dans la variable quartus (args) est le nom du flux ou du module exécuté, en fonction de la cession que vous utilisez. Le deuxième argument est le nom du projet, et le troisième argument est le nom de la révision.

Lorsque vous utilisez l’affectation POST_MODULE_SCRIPT_FILE, le script spécifié est automatiquement exécuté après chaque exécutable dans un flux. Vous pouvez utiliser une comparaison de chaîne avec le nom du module (le premier argument transmis au script) pour isoler le traitement du script à certains modules.

Exemple d’exécution

Cet exemple illustre comment l’exécution automatique du script fonctionne dans un flux complet, en supposant que vous avez un projet appelé en haut avec une révision actuelle appelée rev_1, et vous avez les affectations suivantes dans le fichier de paramètres Quartus® II (QSF) pour votre projet :

set_global_assignment -name PRE_FLOW_SCRIPT_FILE quartus_sh:first.tcl
set_global_assignment -name POST_MODULE_SCRIPT_FILE quartus_sh:next.tcl
set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:last.tcl

Lorsque vous compilez votre projet, la PRE_FLOW_SCRIPT_FILE cession entraîne l’exécution de la commande suivante avant le début de la compilation :

quartus_sh -t first.tcl compile top rev_1

Ensuite, le logiciel Quartus® II commence la compilation avec l’analyse et la synthèse, réalisée par le quartus_map exécutable. Une fois l’analyse et la synthèse terminées, l’affectation de la POST_MODULE_SCRIPT_FILE entraîne l’exécution de la commande suivante :

quartus_sh -t next.tcl quartus_map top rev_1

Ensuite, le logiciel Quartus® II continue la compilation avec le fitter, effectué par le quartus_fit exécutable. Une fois le fitter terminé, l’affectation de la POST_MODULE_SCRIPT_FILE entraîne l’exécution de la commande suivante :

quartus_sh -t next.tcl quartus_fit top rev_1

Les commandes correspondantes sont exécutées après les autres étapes de la compilation. Enfin, une fois la compilation terminée, l’affectation de la POST_FLOW_SCRIPT_FILE entraîne l’exécution de la commande suivante :

quartus_sh -t last.tcl compile top rev_1

Contrôler le traitement

La POST_MODULE_SCRIPT_FILE cession entraîne l’exécution d’un script après chaque module. Comme il s’agit du même script exécuté après chaque module, vous devrez peut-être inclure certaines déclarations conditionnels qui limitent le traitement de votre script à certains modules.

Par exemple, si vous souhaitez exécuter un script uniquement après l’analyse de synchronisation, vous devez inclure un test conditionnel comme celui-ci dans l’exemple suivant. Il vérifie le nom du flux ou du module transmis comme premier argument au script et exécute le code lorsque le module est quartus_tan.

set module [lindex $quartus(args) 0]

if [string match "quartus_tan" $module] {

    # Include commands here that are run
    # after timing analysis
    post_message "Running after timing analysis"
}

Afficher des messages

En raison de la façon dont le logiciel Quartus II exécute automatiquement les scripts, vous devez utiliser la commande post_message pour afficher les messages, au lieu de la commande puts (Mets). Cette exigence s’applique uniquement aux scripts exécutés dans les trois affectations répertoriées en haut de cette page.

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.