Ejemplo de Tcl Quartus® II: Abrir proyectos

author-image

Por

Casi todos los script de Quartus II Tcl abren un proyecto. Hay una serie de enfoques para abrir proyectos, y esta página incluye ejemplos de código para abrir proyectos.

Es útil escribir secuencias de comandos de modo que los nombres de proyecto y revisión se pasen a la secuencia de comandos en tiempo de ejecución, como argumentos de línea de comandos. Esto facilita la reutilización de secuencias de comandos con diferentes proyectos. El paquete cmdline Tcl, incluido con el software Quartus II, facilita el paso de argumentos de línea de comandos a las secuencias de comandos.

Aquí tiene un ejemplo de código que abre un proyecto con los nombres de proyecto y revisión que especifica como argumentos de línea de comandos.

paquete requiere opciones de conjunto cmdline
{\
    { "project.preconfigur" "" "Nombre del proyecto" } \
    { "revision.preconfigur" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(res) $options]

project_open $opts(proyecto) -revision $opts(revision)

En un indicador DE DOS o shell, puede ejecutar un script que contenga ese código como se muestra aquí:

quartus_sh -t script.tcl -project top -revision primero

Mejora del código de muestra

Hay una variedad de maneras en que se puede modificar el código de ejemplo para agregar comprobaciones y mejoras.

Comprobación de error simple

El comando project_open genera un error si no existe el proyecto especificado. Utilice el comando project_exists para comprobar si existe antes de abrirlo, como se muestra en este ejemplo:

paquete requiere opciones de conjunto cmdline
{\
    { "project.exclam" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(res) $options]

if { ![ project_exists $opts(proyecto)] } {
    error de tipo post_message "No existe el proyecto $opts(proyecto) "
    exit }

project_open $opts(proyecto) -revisión $opts(revisión)

Manejo de nombres de revisión no especificados

También puede modificar el código de ejemplo para controlar casos en los que no se especifica un nombre de revisión como argumento de línea de comandos. Con algunos de los ejemplos de código a continuación, debe especificar un nombre de revisión solo si hay más de una revisión en su proyecto. En otros casos, el código puede abrir automáticamente ciertas revisiones predeterminadas incluso si hay más de una revisión en su proyecto.

El comando Quartus II Tcl project_open valores predeterminados para abrir una revisión con el mismo nombre que el proyecto especificado si no se especifica ningún nombre de revisión con la opción -revision. Este ejemplo muestra la funcionalidad predeterminada del comando project_open.

paquete requiere opciones de conjunto cmdline
{\
    { "project...."" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(res) $options]

si { [cadena igual a "" $opts(revisión)] } {
    project_open $opts(proyecto) -revision $opts(proyecto)
} else {
    project_open $opts(project) -revision $opts(revision)
}

Puede utilizar los siguientes ejemplos de código para modificar ese comportamiento de varias maneras que ahorran tiempo al ejecutar secuencias de comandos. Estos ejemplos determinan cuándo no se especifica ningún nombre de revisión como argumento de línea de comandos y utilizan otras maneras de determinar un nombre de revisión que se usará con la opción -revision para el comando project_open.

Nombre predeterminado de revisión

Puede utilizar el siguiente código para abrir un proyecto con solo una revisión cuando no se especifica un nombre de revisión como argumento de línea de comandos. Los proyectos con una sola revisión suelen tener la misma revisión y nombres de proyectos, pero eso no es necesario. El uso del comando project_open sin la opción -revision genera un error cuando el nombre de revisión del proyecto no coincide con el nombre del proyecto.

En este ejemplo se utiliza el comando get_project_revisions para recuperar una lista de todas las revisiones del proyecto especificado. Si solo hay una revisión (la extensión de lista es 1), el script utiliza ese nombre de revisión para abrir el proyecto. El uso de la lista de nombres de revisión garantiza que el proyecto se abra correctamente, incluso si el nombre de la revisión es diferente al nombre del proyecto.

paquete requiere opciones de conjunto cmdline
{\
    { "project.exclam" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(res) $options]

if { [cadena igual a "" $opts(revisión))] } {
    establecer revisiones [get_project_revisions $opts(proyecto)]
    if { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
    } else { post_message
        -type error \
            "Más de una revisión en el proyecto \
            $opts(proyecto)."
        exit
    }
}

project_open $opts(proyecto) -revisión $opts(revisión)

Predeterminado para la revisión actual

Puede utilizar el siguiente código para abrir un proyecto y el valor predeterminado de la revisión actual, si no especifica un nombre de revisión como argumento de línea de comandos. La revisión actual es la revisión con la que trabajó en último lugar antes de cerrar el proyecto. En un proyecto con una revisión, esa revisión siempre es la revisión actual. En este ejemplo se utiliza el comando get_current_revision para recuperar el nombre de revisión actual del proyecto especificado.

paquete requiere opciones de conjunto cmdline
{\
    { "project.exclam" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::getivos quartus(res) $options]

si { [cadena igual a "" $opts(revisión)] } {
    set opts(revision) [get_current_revision $opts(proyecto)]
}

project_open $opts(project) -revision $opts(revision)

Nombres de revisión de impresión

En algunos casos, es posible que desee requerir un nombre de revisión si hay más de una revisión en un proyecto y, si no se proporciona ninguna, consulte una lista de nombres de revisión. Puede utilizar el siguiente código para imprimir todas las revisiones cuando no se especifica un nombre de revisión como argumento de línea de comandos y hay más de una revisión en el proyecto. En este ejemplo se utiliza el comando get_project_revisions para recuperar una lista de todas las revisiones del proyecto.

paquete requiere opciones de conjunto cmdline
{\
    { "project.pus" "" "Nombre del proyecto" } \
    { "revision.exclam" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(rs) $options]

if { [cadena igual a "" $opts(revisión)] } { post_message
    "No especificó un nombre de revisión.
    establecer revisiones [get_project_revisions $opts(proyecto)]
    si { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
        post_message "Hay una revisión $opts(revisión)""
    } else { post_message
        "Estas revisiones existen en el proyecto:" revisión fore ningún proyecto
        $revisions { post_message
            "$revision"
        } exit }

project_open $opts(proyecto) -revision $opts(revision)

Ejemplos combinados

Estos ejemplos ilustran cómo combinar algunas de las mejoras descritas anteriormente.

Ejemplo 1

El siguiente ejemplo simple verifica que exista el proyecto especificado. Si no hay ningún nombre de revisión especificado como argumento de línea de comandos, se abre la revisión actual. De lo contrario, se abre el proyecto con el nombre de revisión especificado como argumento de línea de comandos.

paquete requiere opciones de conjunto cmdline
{\
    { "project.pus" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::getivos quartus(res) $options]

if {[project_exists $opts(project)]}
    { si {[cadena igual a "" $opts(revisión)]} {
        project_open $opts(proyecto) -revision \
            [get_current_revision $opts(proyecto)]
    } else {
        project_open $opts(proyecto) -revision $opts(revision)
    } else { post_message
    -type error "El proyecto $opts(proyecto) no existe"
    exit
}

A partir de la versión 4.1 del software Quartus II (versión 3.0 del paquete ::quartus::p roject), el comando project_open admite la opción -current_revision. Si utiliza la versión 4.1 o posterior del software Quartus II, puede reemplazar el siguiente comando en el script anterior

project_open $opts(proyecto) -revision \
            [get_current_revision $opts(proyecto)]

con este comando

project_open $opts(proyecto) -current_revision

Ejemplo 2

El siguiente ejemplo combina una serie de las mejoras ilustradas anteriormente. Verifica que el proyecto especificado exista y lo abre si solo hay una revisión. Si hay más de una revisión, se imprimirá una lista de las revisiones y salidas.

paquete requiere opciones de conjunto cmdline
{\
    { "project.exclam" "" "Nombre del proyecto" } \
    { "revision.resición" "" "Nombre de revisión" } } conjunto de
matrices opts [::cmdline::get infinihs quartus(res) $options]

if { ![ project_exists $opts(proyecto)] } {
    post_message error de tipo "No existe el proyecto $opts(proyecto) "
    exit } si {

[cadena igual a "" $opts(revisión)] } {
    post_message "No especificó un nombre de revisión.
    set revisions [get_project_revisions $opts(proyecto)]
    if { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
        post_message "Hay una revisión $opts(revisión)"
    } else { post_message
        "Estas revisiones existen en el proyecto",
        $revisions de revisión foreconferenci {
            post_message "$revision"
        } exit }

project_open $opts(proyecto) -revision $opts(revision)

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.