Exemplo de Quartus® II Tcl: abertura de projetos

Quase todos os scripts Quartus II Tcl abrem um projeto. Há uma série de abordagens para abertura de projetos, e esta página inclui amostras de código para abertura de projetos.

É útil escrever scripts para que os nomes do projeto e da revisão sejam passados para o script em tempo de uso, como argumentos de linha de comando. Isso facilita a reutilização de scripts com diferentes projetos. O pacote cmdline Tcl, incluído no software Quartus II, facilita a passagem de argumentos de linha de comando para scripts.

Aqui está um exemplo de código que abre um projeto com os nomes de projeto e revisão especificados como argumentos de linha de comando.

o pacote requer opções de conjunto cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "nome da revisão" } } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] project_open $opts(projeto) -revisão $opts(revisão)

Em um DOS ou prompt de shell, você pode executar um script que contém esse código, conforme mostrado aqui:

quartus_sh -t script.tcl - revisão superior do projeto primeiro

Melhorando o código de amostra

Há uma variedade de maneiras pelas quais o código de exemplo pode ser modificado para adicionar verificações e melhorias.

Verificação de erros simples

O project_open gera um erro se o projeto especificado não existir. Use o project_exists para verificar se ele existe antes de abri-lo, conforme mostrado neste exemplo:

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ {"revision.arg" "" "Nome da revisão" } } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] se { ![ project_exists $opts(project)] } { erro do tipo post_message "Project $opts(project) não existe" exit } project_open $opts(project) -revision $opts(revisão)

Manipulação de nomes de revisão não especificados

Você também pode modificar o código de exemplo para lidar com casos quando um nome de revisão não é especificado como um argumento de linha de comando. Com alguns dos exemplos de código abaixo, você precisa especificar um nome de revisão apenas se houver mais de uma revisão em seu projeto. Com outros, o código pode abrir automaticamente certas revisões padrão, mesmo que haja mais de uma revisão em seu projeto.

O comando Quartus II Tcl project_open padrão de abrir uma revisão com o mesmo nome do projeto especificado, se nenhum nome de revisão for especificado com a opção -revisão. Este exemplo ilustra a funcionalidade padrão do comando project_open.

pacote exige opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "" "Nome da revisão" } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] se { {string igual a "" $opts(revisão)] } { project_open $opts(project) -revision $opts(project) } else { project_open $opts(project) -revision $opts(revision) }

Você pode usar os seguintes exemplos de código para modificar esse comportamento de várias maneiras que economizam tempo ao executar scripts. Esses exemplos determinam quando nenhum nome de revisão é especificado como argumento de linha de comando e usam outras maneiras de determinar um nome de revisão a ser usado com a opção -revisão para o comando project_open.

Padrão para um nome de revisão

Você pode usar o código a seguir para abrir um projeto com apenas uma revisão quando um nome de revisão não for especificado como um argumento de linha de comando. Projetos com uma única revisão geralmente têm os mesmos nomes de revisão e projeto, mas isso não é necessário. Usar o project_open sem uma opção de revisão gera um erro quando o nome de revisão do projeto não corresponde ao nome do projeto.

Este exemplo usa o comando get_project_revisions para recuperar uma lista de todas as revisões do projeto especificado. Se houver apenas uma revisão (o comprimento da lista é 1), o script usa esse nome de revisão para abrir o projeto. O uso da lista de nomes de revisão garante que o projeto será aberto corretamente, mesmo que o nome da revisão seja diferente do nome do projeto.

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "nome da revisão" } } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] se { [string igual a "" $opts(revision)] } { definir revisões [get_project_revisions $opts(project)] se { 1 == [llength $revisions] } { definir opts(revision) [lindex $revisions 0] } outra { erro de tipo post_message \ "Mais de uma revisão no projeto \ $opts(project)." sair } } project_open $opts(projeto) -revisão $opts(revisão)

Padrão para a revisão atual

Você pode usar o código a seguir para abrir um projeto e padrão para a revisão atual, se você não especificar um nome de revisão como um argumento de linha de comando. A revisão atual é a revisão com a qual você trabalhou por último antes de fechar o projeto. Em um projeto com uma revisão, essa revisão é sempre a revisão atual. Este exemplo usa o comando get_current_revision para recuperar o nome de revisão atual do projeto especificado.

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "" "Nome da revisão" } } conjunto de matrizes opta [:cmdline::getoptions quartus (args) $options] se { [string igual a "" $opts(revisão)] } {set opts(revision) [get_current_revision $opts(project)] } project_open $opts(project) -revision $opts(revisão)

Nomes de revisão de impressão

Em alguns casos, você pode querer exigir um nome de revisão se houver mais de uma revisão em um projeto e, se nenhuma for fornecida, consulte uma lista de nomes de revisão. Você pode usar o código a seguir para imprimir todas as revisões quando um nome de revisão não for especificado como um argumento de linha de comando e houver mais de uma revisão no projeto. Este exemplo usa o comando get_project_revisions para recuperar uma lista de todas as revisões do projeto.

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "" "Nome da revisão" } } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] se { [string igual a "" $opts(revisão)] } { post_message "Você não especificou um nome de revisão. definir revisões [get_project_revisions $opts(project)] se { 1 == [llength $revisions] } { definir opts(revision) [lindex $revisions 0] post_message "Há uma revisão $opts(revisão)" } post_message "Essas revisões existem no projeto:" revisão $revisions { post_message "$revision" } exit } } project_open $opts(projeto) -revisão $opts(revisão)

Exemplos combinados

Esses exemplos ilustram como combinar algumas das melhorias descritas acima.

Exemplo 1

O exemplo simples a seguir verifica se o projeto especificado existe. Se não houver um nome de revisão especificado como argumento de linha de comando, ele abrirá a revisão atual. Caso contrário, ele abre o projeto com o nome de revisão especificado como um argumento de linha de comando.

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ { "revision.arg" "" "nome da revisão" } } conjunto de matriz optas [:cmdline::getoptions quartus(args) $options] se {[project_exists $opts (project)]} {if {[string equal "" $opts(revision)]} { project_open $opts(project) -revision \ [get_current_revision $opts(project)] } else { project_open $opts(project) -revision $opts(revision) } } outra { post_message -type erro "Project $opts(project) não existe" exit }

Começando com a versão 4.1 do software Quartus II (versão 3.0 do pacote ::quartus::p roject), o comando project_open suporta a opção -current_revision. Se você usar a versão 4.1 ou mais recente do software Quartus II, você poderá substituir o seguinte comando no script acima

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

com este comando

project_open $opts(projeto) -current_revision

Exemplo 2

O exemplo a seguir combina uma série de melhorias ilustradas acima. Ele verifica a existência do projeto especificado e o abre se houver apenas uma revisão. Se houver mais de uma revisão, ela imprime uma lista das revisões e saídas.

o pacote requer opções de conjunto de cmdline {\ { "project.arg" "" "Nome do projeto" } \ {"revision.arg" "" "Nome da revisão" } } conjunto de matriz optes [:cmdline::getoptions quartus(args) $options] se { ![ project_exists $opts(project)] } { erro do tipo post_message "Project $opts(project) não existe" exit } se { [string igual a "" $opts(revisão)] } { post_message "Você não especificou um nome de revisão. definir revisões [get_project_revisions $opts(project)] se { 1 == [llength $revisions] } {set opts(revision) [lindex $revisions 0] post_message "Há uma revisão $opts (revisão)" } post_message post_message "Essas revisões existem no projeto:" revisão $revisions { post_message "$revision" } exit } } project_open $opts(projeto) -revisão $opts(revisão)

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.