Começando com a versão 4.0 do software Quartus® II, você pode configurar scripts para executar automaticamente em vários pontos durante a compilação. Você pode usar esse recurso para executar automaticamente scripts que executam relatórios personalizados, fazem tarefas específicas e executam muitas outras tarefas.
Há três atribuições globais que controlam a execução automática de scripts. Eles estão listados aqui, juntamente com quando fazem com que um script seja executado.
• PRE_FLOW_SCRIPT_FILE - before a flow starts
• POST_MODULE_SCRIPT_FILE - after a module finishes
• POST_FLOW_SCRIPT_FILE - after a flow finishes
As atribuições POST_FLOW_SCRIPT_FILE e POST_MODULE_SCRIPT_FILE são suportadas a partir da versão 4.0 e a atribuição PRE_FLOW_SCRIPT_FILE é suportada a partir da versão 4.1.
Um módulo é um executável Quartus® II que executa uma etapa em um fluxo. Por exemplo, dois módulos são análise e síntese (quartus_map) e análise de temporização (quartus_tan).
Um fluxo é uma série de módulos que o software Quartus® II executa com opções predefinidos. Por exemplo, compilar um projeto é um fluxo que normalmente consiste nas seguintes etapas (executadas pelo módulo indicado):
- Análise e síntese (quartus_map)
- Fitter (quartus_fit)
- Montador (quartus_asm)
- Analisador de sincronização (quartus_tan)
Outros fluxos são descritos na ajuda para o comando execute_flow Tcl. Além disso, a maioria dos comandos no menu Iniciar (processamento) no Quartus® II GUI corresponde a fluxos.
Fazendo a atribuição
Para fazer uma atribuição para executar automaticamente um script, faça uma atribuição com o seguinte formulário:
set_global_assignment -name <assignment name> <executable>:<script name>
O nome da atribuição é um dos seguintes:
• PRE_FLOW_SCRIPT_FILE
• POST_MODULE_SCRIPT_FILE
• POST_FLOW_SCRIPT_FILE
O executável é o nome de um executável de linha de comando Quartus® II que inclui um interpretador Tcl.
• quartus_cdb
• quartus_sh
• quartus_sim
• quartus_stp
• quartus_tan
O nome do script é o nome do seu script Tcl.
Execução de script
O software Quartus® II executa os scripts conforme mostrado aqui:
<executable> -t <script name> <flow or module name> <project name> <revision name>
O primeiro argumento aprovado na variável quartus (args) é o nome do fluxo ou do módulo que está sendo executado, dependendo da atribuição que você usa. O segundo argumento é o nome do projeto, e o terceiro argumento é o nome da revisão.
Quando você usa a POST_MODULE_SCRIPT_FILE de POST_MODULE_SCRIPT_FILE, o script especificado é executado automaticamente após cada executável em um fluxo. Você pode usar uma comparação de strings com o nome do módulo (o primeiro argumento passado para o script) para isolar o processamento de scripts para determinados módulos.
Exemplo de execução
Este exemplo ilustra como a execução automática de scripts funciona em um fluxo completo, assumindo que você tenha um projeto chamado top com uma revisão atual chamada rev_1, e você tenha as seguintes atribuições no Quartus® II Settings File (QSF) para seu projeto:
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
Quando você compila seu projeto, a PRE_FLOW_SCRIPT_FILE faz com que o seguinte comando seja executado antes que a compilação comece:
quartus_sh -t first.tcl compile top rev_1
Em seguida, o software Quartus® II começa a compilação com análise e síntese, realizada pelo quartus_map executável. Após o fim da análise e síntese, a POST_MODULE_SCRIPT_FILE de POST_MODULE_SCRIPT_FILE faz com que o seguinte comando seja executado:
quartus_sh -t next.tcl quartus_map top rev_1
Em seguida, o software Quartus® II continua compilação com o fitter, realizado pelo quartus_fit executável. Após o ajuste terminar, a POST_MODULE_SCRIPT_FILE de POST_MODULE_SCRIPT_FILE faz com que o comando a seguir seja executado:
quartus_sh -t next.tcl quartus_fit top rev_1
Os comandos correspondentes são executados após as outras etapas da compilação. Finalmente, após o fim da compilação, a POST_FLOW_SCRIPT_FILE de POST_FLOW_SCRIPT_FILE faz com que o seguinte comando seja executado:
quartus_sh -t last.tcl compile top rev_1
Controle do processamento
A POST_MODULE_SCRIPT_FILE faz com que um script seja executado após cada módulo. Por ser o mesmo script executado após cada módulo, você pode precisar incluir algumas declarações condicionais que restringem o processamento em seu script a determinados módulos.
Por exemplo, se você tiver um script que você deseja executar apenas após a análise de temporizado ser executada, inclua um teste condicional como o do exemplo a seguir. Ele verifica o nome do fluxo ou do módulo passado como o primeiro argumento para o script e executa o código quando o 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"
}
Exibindo mensagens
Devido à maneira como o software Quartus II executa automaticamente os scripts, você precisa usar o comando post_message para exibir mensagens, em vez do comando puts. Este requisito se aplica apenas a scripts que são executados por três atribuições listadas na parte superior desta página.