Projetos de arquivamento ® Quartus® II Tcl automaticamente

author-image

Por

Quando você faz muitas compilações e varia diferentes configurações durante cada compilação, pode ser difícil lembrar quais foram suas configurações e resultados, desde a compilação até a compilação. Ao arquivar um projeto, você pode preservar uma cópia completa dele, incluindo os arquivos gerados durante uma compilação. Você pode arquivar um projeto com um único comando em um prompt de comando do sistema, mas criar um script Tcl e adicionar uma configuração para executá-lo automaticamente facilita o processo.

Para fazer o script ser executado automaticamente no final de cada compilação, use o seguinte script e adicione uma nova atribuição ao seu projeto. O nome da atribuição é POST_FLOW_SCRIPT_FILE. Para obter mais informações sobre esta atribuição, consulte os exemplos de execução automática de script. Supondo que o script seja nomeado autoqar.tcl, adicione a seguinte atribuição ao seu Arquivo de configurações Quartus II (.qsf):

set_global_assignment -name POST_FLOW_SCRIPT_FILE quartus_sh:autoqar.tcl

O script cria um nome de arquivo com base na data e hora atuais. Para obter informações sobre como alterar a data e a hora da representação, consulte a página De formatação de data e 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"
    }
}

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês prevalecerá e será a determinante. Exibir a versão em inglês desta página.