Quartus® II Tcl archiva automáticamente los proyectos

author-image

Por

Cuando realiza muchas compilaciones y varía la configuración durante cada compilación, puede ser difícil recordar cuáles fueron la configuración y los resultados de la compilación para compilar. Al archivar un proyecto, puede conservar una copia completa del mismo, incluidos los archivos generados durante una compilación. Puede archivar un proyecto con un solo comando en un indicador de comandos del sistema, pero la creación de un script de Tcl y la adición de una configuración para ejecutarlo automáticamente facilitan el proceso.

Para que el script se ejecute automáticamente al final de cada compilación, utilice el siguiente script y agregue una nueva asignación al proyecto. El nombre de la asignación es POST_FLOW_SCRIPT_FILE. Para obtener más información sobre esta asignación, consulte los ejemplos de ejecución automática de script. Suponiendo que el script se nombre autoqar.tcl, añada la siguiente asignación al archivo de configuración de Quartus II (.qsf):

set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:autoqar.tcl

El script crea un nombre de archivo según la fecha y la hora actuales. Para obtener información acerca de cómo cambiar la representación de fecha y hora, consulte la página Formato de fecha y hora.

# Use these options to control what files get archived.
# -include_outputs: Includes Quartus II output files, including the
#     db directory and programming files
# -include_libraries: Includes system libraries referenced in your
#     project

set options "-include_outputs"
#set options "-include_libraries"
#set options "-include_outputs -include_libraries"

# Subdirectory to put the automatically created qars into
set qar_directory autoqar

# Generates a name for the qar based on the name of the revision
# and the current time.
proc generateQarName { project revision } {

    # time_format_string controls how the qar is named.
    # These values give the value month_dd_yyyy-hh.mm.ss.
    # For example, Jan_28_2004-13.00.05

    set time_format_string "%b_%d_%Y-%H_%M_%S"
    set time_value [clock format [clock seconds] \
      -format $time_format_string]

    # The name of the qar is based on the revision name and the time
    return $revision-$time_value
}

global quartus

set module_or_flow [lindex $quartus(args) 0]
set project [lindex $quartus(args) 1]
set revision [lindex $quartus(args) 2]

# If a qar is made, set this to 1 and attempt to move it later on
set ran_qar 0

# Add any modules or flows to the list in the switch statement
# As is, it'll make a qar after each compile, compile and simulate,
# and incremental fit.
switch -exact -- $module_or_flow {

    compile -
    compile_and_simulate -
    incremental_fitting {

    if { [catch {
        project_open -revision $revision $project
        set qar_name [generateQarName $project $revision]
        project_archive $options $qar_name
        project_close
    } res ] } {
        post_message -type warning $res
    } else {
        set ran_qar 1
    }
    }

}

# If a qar was made, try to move it to the right directory
if { $ran_qar } {

    if { [catch {

    file mkdir $qar_directory
    file copy $qar_name.qar $qar_directory
    file copy $qar_name.qarlog $qar_directory
    file delete $qar_name.qar
    file delete $qar_name.qarlog

    } res ] } {
    post_message -type warning $res
    } else {
         set qname [file join $qar_directory $qar_name]
    post_message "Successfully archived your project in $qname.qar"
    }
}

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.