Quartus® II Tcl ottieni il numero di revisione della sovversione

author-image

di

Questo script di esempio mostra come è possibile accedere a un numero di versione del software di controllo della versione per il progetto. È possibile scrivere il numero di versione in un file di progettazione compilato nella progettazione FPGA. Con logica di progettazione aggiuntiva, il numero di versione può essere riportato dal FPGA. Queste informazioni possono essere molto utili durante il debug, soprattutto se si passa da più file di programmazione. È possibile scoprire facilmente quale versione del design è in esecuzione sul FPGA, in base al numero di versione nel FPGA.

In questo esempio viene utilizzato il numero di revisione subversione per il progetto. Utilizza il comando svn info per ottenere informazioni sul file specificato. Il comando svn info stampa informazioni sugli elementi nella copia di lavoro e include una riga con il numero di revisione, nel seguente modulo:

Revisione: numero <revision>

In questo esempio vengono utilizzate due procedure per eseguire il comando svn info e analizzare l'output per ottenere il numero di revisione. La procedura get_subversion_revision avvia il comando svn info. Chiamare la procedura con il nome del file da utilizzare con il comando svn info. La procedura viene restituita con un errore se non è stato possibile eseguire il comando. In caso contrario, la procedura non restituisce nulla, ma imposta alcune variabili globali. Se il comando svn info è scaduto, il valore della variabile globale eseguita è -1. Se è stato trovato il numero di revisione, il valore della variabile globale eseguita è 1 e il numero di revisione è nella variabile globale revision_number. È possibile visualizzare il numero di revisione in un messaggio, come in questo esempio, o scriverlo in un file di progettazione.

La procedura get_version_info è una procedura di supporto che analizza l'output del comando una riga alla volta. Include un'espressione regolare che corrisponde alla riga del numero di revisione ed estrae il numero di revisione.

proc get_subversion_revision { file_name } {

    global done # Il numero massimo di secondi di attesa per il completamento del comando

    svn info # timeout_seconds
    30

    # Il comando svn info con nome file che viene eseguito è
    impostato cmd "svn info ${file_name}"

    # Tentativo di ottenere le informazioni sulla versione.
    # Se il comando non può essere eseguito, restituire un errore.
    N. In caso contrario, impostare un evento di file per elaborare l'output del comando.
    if { [catch {open "|$cmd"} input] } {
        return -code error $input
    } else {

        fileevent $input leggibile [elenco get_revision_info $input ]

        # Impostare un timeout in modo che il processo non possa bloccarsi se il
        repository # è in errore.
        set timeout [after [ expr { $timeout_seconds * 1000 } ] \
            [list set done -1] ]

        # Non continuare fino a quando non viene trovato il numero di revisione,
        # o il timeout dell'operazione. Annullare comunque il timeout.
        vwait fatto
        dopo l'annullamento $timeout
    } } proc get_revision_info {

inp } { globale fatto revision_number  se {

    [eof $inp] } {
        catch {close $inp}
        impostato su 1
    } elseif { $done } { ottiene $inp
        riga } else { ottiene $inp riga # Utilizzare
        un'espressione regolare per abbinare la riga con il
        numero di revisione # .
        if { [regexp {^Revision:\s+(\d+)\s*$} $line corrispondono revision_number] } {
            set done 1
        } } } set done

0 set revision_number
"" # Il nome del

file è in genere il file di progetto .
  
  


qpf
impostato file_name [lindex $quartus(args) 0]

se { [catch { get_subversion_revision $file_name } msg] } {
    post_message -type critical_warning "Impossibile eseguire il comando per ottenere il
        numero di revisione. $msg" }
else {

    if { -1 == $done } {
        post_message -type critical_warning "Timeout getting revision number."
    } elseif { [string equal "" $revision_number] } { $revision critical_warning di tipo
        -post_message \
            "Impossibile trovare il numero di revisione nell'output di svn info $file_name."
    } else { post_message
        "La revisione per $file_name è $revision_number"
    }
}

È possibile eseguire lo script al prompt dei comandi di sistema con il seguente comando (supponendo che lo script si trova in un file denominato svn_revision.tcl):

quartus_sh -t svn_revision.tcl myproject.qpf

Lo script produce un messaggio come questo per mostrare la revisione:

Informazioni: la revisione per myproject.qpf è 417

È possibile visualizzare un messaggio con il numero di revisione nella variabile globale revision_number, come in questo esempio, o scriverlo in un file di progettazione.

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.