Exemplo de Quartus® II Tcl: Execução automática de script

author-image

Por

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):

  1. Análise e síntese (quartus_map)
  2. Fitter (quartus_fit)
  3. Montador (quartus_asm)
  4. 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.

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.