Ejemplo de Tcl quartus® II: ejecución automática de script

author-image

Por

A partir de la versión 4.0 del software Quartus® II, puede configurar secuencias de comandos para que se ejecuten automáticamente en varios puntos durante la compilación. Puede utilizar esta capacidad para ejecutar automáticamente secuencias de comandos que realizan informes personalizados, realizan asignaciones específicas y realizan muchas otras tareas.

Hay tres asignaciones globales que controlan la ejecución automática de secuencias de comandos. Aparecen aquí, junto con cuando causan la ejecución de 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

Las asignaciones POST_FLOW_SCRIPT_FILE y POST_MODULE_SCRIPT_FILE son compatibles a partir de la versión 4.0 y la asignación de PRE_FLOW_SCRIPT_FILE se admite a partir de la versión 4.1.

Un módulo es un archivo ejecutable Quartus® II que realiza un paso en un flujo. Por ejemplo, dos módulos son análisis y síntesis (quartus_map) y análisis de sincronización (quartus_tan).

Un flujo es una serie de módulos que el software Quartus® II ejecuta con opciones predefinidas. Por ejemplo, la compilación de un diseño es un flujo que por lo general consiste en los siguientes pasos (realizados por el módulo indicado):

  1. Análisis y síntesis (quartus_map)
  2. Ajustador (quartus_fit)
  3. Ensamblador (quartus_asm)
  4. Analizador de sincronización (quartus_tan)

Otros flujos se describen en la ayuda para el comando execute_flow Tcl. Además, la mayoría de los comandos de Inicio (menú Procesamiento) en la GUI Quartus® II corresponden a flujos.

Realización de la asignación

Para hacer una asignación para ejecutar automáticamente un script, realice una asignación con el siguiente formulario:

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

El nombre de la asignación es uno de los siguientes:

•	PRE_FLOW_SCRIPT_FILE
•	POST_MODULE_SCRIPT_FILE
•	POST_FLOW_SCRIPT_FILE

El archivo ejecutable es el nombre de un archivo de línea de comandos Quartus® II que incluye un intérprete de Tcl.

•	quartus_cdb
•	quartus_sh
•	quartus_sim
•	quartus_stp
•	quartus_tan

El nombre del script es el nombre de la secuencia de comandos Tcl.

Ejecución de script

El software Quartus® II ejecuta las secuencias de comandos como se muestra aquí:

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

El primer argumento que se pasa en la variable quartus(preconfiguración) es el nombre del flujo o módulo que se está ejecutando, dependiendo de la asignación que utilice. El segundo argumento es el nombre del proyecto y el tercer argumento es el nombre de la revisión.

Cuando se utiliza la asignación de POST_MODULE_SCRIPT_FILE, el script especificado se ejecuta automáticamente después de cada archivo ejecutable en un flujo. Puede utilizar una comparación de cadena con el nombre de módulo (el primer argumento que se pasó al script) para aislar el procesamiento de script en ciertos módulos.

Ejemplo de ejecución

Este ejemplo muestra cómo funciona la ejecución automática del script en un flujo completo, suponiendo que tiene un proyecto llamado top con una revisión actual llamada rev_1 y tiene las siguientes asignaciones en el Archivo de configuración (QSF) Quartus® II para su proyecto:

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

Cuando compila el proyecto, el PRE_FLOW_SCRIPT_FILE asignación hace que se ejecute el siguiente comando antes de que comience la compilación:

quartus_sh -t first.tcl compile top rev_1

A continuación, el software Quartus® II comienza la compilación con el análisis y la síntesis, realizados por el quartus_map ejecutable. Después de que finalice el análisis y la síntesis, el POST_MODULE_SCRIPT_FILE asignación ocasiona que se ejecute el siguiente comando:

quartus_sh -t next.tcl quartus_map top rev_1

A continuación, el software Quartus® II continúa la compilación con el ajustador, realizado por el quartus_fit ejecutable. Después de que finalice el ajustador, el POST_MODULE_SCRIPT_FILE asignación ocasiona que se ejecute el siguiente comando:

quartus_sh -t next.tcl quartus_fit top rev_1

Los comandos correspondientes se ejecutan después de las otras etapas de la compilación. Por último, después de que finalice la compilación, la asignación POST_FLOW_SCRIPT_FILE hará que se ejecute el siguiente comando:

quartus_sh -t last.tcl compile top rev_1

Control del procesamiento

La asignación POST_MODULE_SCRIPT_FILE hace que se ejecute un script después de cada módulo. Dado que es el mismo script que se ejecuta después de cada módulo, es posible que tenga que incluir algunas declaraciones condicionales que restrinjan el procesamiento en el script a ciertos módulos.

Por ejemplo, si tiene un script que desea ejecutar solo después de que se realice el análisis de tiempo, debe incluir una prueba condicional como la que se muestra en el siguiente ejemplo. Comprueba el nombre de flujo o módulo que se pasa como el primer argumento al script y ejecuta el código cuando el módulo 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"
}

Visualización de mensajes

Debido a la forma en que el software Quartus II ejecuta automáticamente las secuencias de comandos, debe utilizar el comando post_message para mostrar mensajes, en lugar del comando puts. Este requisito solo se aplica a las secuencias de comandos que se ejecutan en las tres asignaciones indicadas en la parte superior de esta página.

El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.