Esempio di Quartus® II Tcl: apertura di progetti

author-image

di

Quasi ogni script Quartus II Tcl apre un progetto. Esistono diversi approcci per l'apertura di progetti e questa pagina include esempi di codice per l'apertura dei progetti.

È utile scrivere script in modo che i nomi dei progetti e delle revisioni vengano passati allo script in fase di esecuzione, come argomenti della riga di comando. Ciò semplifica il riutilizzo degli script con diversi progetti. Il pacchetto cmdline Tcl, incluso con il software Quartus II, semplifica il passaggio degli argomenti della riga di comando agli script.

Ecco un esempio di codice che apre un progetto con i nomi di progetto e revisione specificati come argomenti della riga di comando.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

project_open $opts(project) -revision $opts(revision)

A un prompt dos o shell, è possibile eseguire uno script che contiene quel codice, come mostrato qui:

quartus_sh -t script.tcl -project top -revision first

Miglioramento del codice di esempio

Esistono diversi modi in cui il codice di esempio può essere modificato per aggiungere controlli e miglioramenti.

Controllo semplice degli errori

Il comando project_open genera un errore se il progetto specificato non esiste. Utilizzare il comando project_exists per verificare se esiste prima di aprirlo, come mostrato in questo esempio:

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

se { ![ project_exists $opts(project)] } {
    errore di tipo post_message "Project $opts(project) non esiste"
    exit }

project_open $opts(project) -revision $opts(revision)

Gestione dei nomi di revisione non specificati

È inoltre possibile modificare il codice di esempio per gestire i casi in cui un nome di revisione non è specificato come argomento della riga di comando. Con alcuni degli esempi di codice riportati di seguito, è necessario specificare un nome di revisione solo se nel progetto è presente più di una revisione. Con altri, il codice può aprire automaticamente alcune revisioni predefinite anche se nel progetto è presente più di una revisione.

Il comando Quartus II Tcl project_open per impostazione predefinita aprire una revisione con lo stesso nome del progetto specificato se non viene specificato alcun nome di revisione con l'opzione -revision. Questo esempio illustra la funzionalità predefinita del comando project_open.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

if { [string equal "" $opts(revision)] } {
    project_open $opts(project) -revision $opts(project)
} else {
    project_open $opts(project) -revision $opts(revision)
}

È possibile utilizzare i seguenti esempi di codice per modificare tale comportamento in vari modi che consentono di risparmiare tempo durante l'esecuzione degli script. Questi esempi determinano quando nessun nome di revisione viene specificato come argomento della riga di comando e utilizzano altri modi per determinare un nome di revisione da utilizzare con l'opzione -revision per il comando project_open.

Predefinito per un nome di revisione

È possibile utilizzare il seguente codice per aprire un progetto con una sola revisione quando un nome di revisione non è specificato come argomento della riga di comando. I progetti con una singola revisione di solito hanno gli stessi nomi di revisione e di progetto, ma ciò non è necessario. L'utilizzo del comando project_open senza opzione -revision genera un errore quando il nome di revisione del progetto non corrisponde al nome del progetto.

Questo esempio utilizza il comando get_project_revisions per recuperare un elenco di tutte le revisioni nel progetto specificato. Se è presente solo una revisione (la lunghezza dell'elenco è 1), lo script utilizza il nome della revisione per aprire il progetto. L'utilizzo dell'elenco dei nomi di revisione garantisce che il progetto si aprirà correttamente, anche se il nome della revisione è diverso dal nome del progetto.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

se { [string equal "" $opts(revisione)] } {
    set revisions [get_project_revisions $opts(project)]
    se { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
    } else { errore di tipo post_message \
            "Più di una revisione nel progetto \
            $opts(project)."
        uscita
    }
}

project_open $opts(progetto) - revisione $opts(revisione)

Impostazione predefinita per la revisione corrente

È possibile utilizzare il seguente codice per aprire un progetto e impostare l'impostazione predefinita sulla revisione corrente, se non si specifica un nome di revisione come argomento della riga di comando. La revisione corrente è la revisione con cui si è lavorato per ultimo prima di chiudere il progetto. In un progetto con una revisione, tale revisione è sempre la revisione corrente. Questo esempio utilizza il comando get_current_revision per recuperare il nome di revisione corrente per il progetto specificato.

package require cmdline
set options {\
    { "project.arg" "" "Project name" } \
    { "revision.arg" "" "Revision name" }
} } array set
opts [::cmdline::getoptions quartus() args) $options]

se { [string equal "" $opts(revision)] } {
    set opts(revision) [get_current_revision $opts(project)]
}

project_open $opts(project) -revision $opts(revision)

Stampa dei nomi delle revisioni

In alcuni casi, potrebbe essere necessario richiedere un nome di revisione se è presente più di una revisione in un progetto e, se non viene fornito, consultare un elenco di nomi di revisione. È possibile utilizzare il seguente codice per stampare tutte le revisioni quando un nome di revisione non è specificato come argomento della riga di comando e nel progetto è presente più di una revisione. Questo esempio utilizza il comando get_project_revisions per recuperare un elenco di tutte le revisioni del progetto.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

se { [stringa uguale "" $opts(revisione)] } {
    post_message "Non è stato specificato un nome di revisione.
    set revisions [get_project_revisions $opts(project)]
    if { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
        post_message "C'è una revisione $opts(revisione) )"
    } else { post_message
        "Queste revisioni esistono nel progetto:"
        foreach revision $revisions {
            post_message "$revision"
        } exit } }

project_open $opts(project) -revision $opts(revision)

Esempi combinati

Questi esempi illustrano come combinare alcuni dei miglioramenti descritti sopra.

Esempio 1

Il seguente semplice esempio verifica l'esistenza del progetto specificato. Se non è specificato alcun nome di revisione come argomento della riga di comando, apre la revisione corrente. In caso contrario, apre il progetto con il nome di revisione specificato come argomento della riga di comando.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

se {[project_exists $opts (project)]} {
    se {[string equal "" $opts(revision)]} {
        project_open $opts(project) -revision \
            [get_current_revision $opts(project)]
    } else {
        project_open $opts(project) -revision $opts(revision)
    } } else { post_message
    -type errore "Project $opts(project) non esiste"
    exit
}

A partire dalla versione 4.1 del software Quartus II (versione 3.0 del pacchetto ::quartus::p roject), il comando project_open supporta l'opzione -current_revision. Se si utilizza la versione 4.1 o successiva del software Quartus II, è possibile sostituire il seguente comando nello script sopra riportato

project_open $opts(progetto) -revisione \
            [get_current_revision $opts(progetto)]

con questo comando

project_open $opts (progetto) - current_revision

Esempio 2

L'esempio seguente combina una serie di miglioramenti illustrati sopra. Verifica l'esistenza del progetto specificato e lo apre se è presente solo una revisione. Se è presente più di una revisione, stampa un elenco delle revisioni e delle uscite.

il pacchetto richiede opzioni di set cmdline
{\
    { "project.arg" "" "Nome progetto" } \
    { "revision.arg" "" "Nome revisione" }
} } set di array
opta [::cmdline::getoptions quartus(args) $options]

se { ![ project_exists $opts(project)] } {
    errore di tipo post_message "Project $opts(project) non esiste"
    exit } se {

[string equal "" $opts(revision)] } {
    post_message "Non è stato specificato un nome di revisione.
    set revisions [get_project_revisions $opts(project)]
    if { 1 == [llength $revisions] } {
        set opts(revision) [lindex $revisions 0]
        post_message "C'è una revisione $opts(revisione) )"
    } else { post_message
        "Queste revisioni esistono nel progetto:"
        foreach revision $revisions {
            post_message "$revision"
        } exit } }

project_open $opts(project) -revision $opts(revision)

Il contenuto di questa pagina è il risultato della combinazione tra la traduzione umana e quella automatica del contenuto originale in lingua inglese. Questo contenuto è fornito soltanto a titolo di informazione generale e non ha pretese di completezza o accuratezza. In presenza di contraddizioni tra la versione in lingua inglese di questa pagina e la sua traduzione, fa fede la versione inglese. Visualizza la versione in lingua inglese di questa pagina.