Numéro de révision de Quartus® II Tcl Get Subversion

author-image

Par

Cet exemple de script montre comment vous pouvez accéder au numéro de version du logiciel de contrôle de version de votre projet. Vous pouvez écrire le numéro de version dans un fichier de conception compilé dans votre FPGA conception. Avec une logique de conception supplémentaire, le numéro de version peut être signalé par le FPGA. Ces informations peuvent être très utiles lors du débogage, surtout si vous passez entre plusieurs fichiers de programmation. Vous pouvez facilement savoir quelle version de la conception fonctionne sur le FPGA, en fonction du numéro de version dans le FPGA.

Cet exemple utilise le numéro de révision Subversion pour votre projet. Elle utilise la commande svn info pour obtenir des informations sur le fichier spécifié. La commande svn info s’étend sur les articles de votre copie de travail et inclut une ligne indiquant le numéro de révision, sous la forme suivante :

Révision : numéro de <revision>

Cet exemple utilise deux procédures pour exécuter la commande svn info et parse la sortie pour obtenir le numéro de révision. La procédure get_subversion_revision démarre la commande svn info. Appelez la procédure utilisant le nom du fichier à utiliser avec la commande svn info. La procédure revient avec une erreur si la commande ne pouvait pas être exécutée. Sinon, la procédure ne renvoie rien, mais définit certaines variables globales. Si la commande svn info est expirée, la valeur de la variable globale effectuée est -1. Si le numéro de révision a été trouvé, la valeur de la variable globale effectuée est de 1 et le numéro de révision se trouve dans la variable revision_number globale. Vous pouvez afficher le numéro de révision dans un message, comme dans cet exemple, ou l’écrire dans un fichier de conception.

La procédure get_version_info est une procédure d’aide qui examine la sortie de commande une ligne à la fois. Il comprend une expression régulière qui correspond à la ligne de nombre de révision et extrait le numéro de révision.

proc get_subversion_revision { file_name } {

    global done

    # Le nombre maximum de secondes à attendre que la commande svn info
    # remplisse timeout_seconds
    30 # La commande svn info avec nom de

    fichier qui est exécuté
    cmd « svn info ${file_name} »

    # Tentative d’obtenir les informations
    de version. # Si la commande ne peut pas être exécutée, retournez une erreur.
    # Sinon, configurez un événement de fichier pour traiter la sortie de commande.
    si {[capture {open « |$cmd"} input] }
        {erreur de retour de code $input
    }

        {fileevent $input lisible [liste get_revision_info $input ] # Configurez un délai de mise à l’arrêt afin que le processus ne

        puisse pas être suspendu si le
        référentiel #est désactivé.
        définir le délai d’expiration [après [expr { $timeout_secondes * 1000 } ] \
            [list set done -1] ] # Ne continuez pas tant que le numéro de

        révision n’est pas trouvé,
        # ou les temps d’exploitation désactivés. Annuler le délai d’expiration de toute façon.
        s’appuyant sur
        l’annulation $timeout } }

proc get_revision_info { inp  } { global done revision_number if

    {[eof $inp] } {
        catch {close $inp}
        set done 1 }
    elseif { $done } { gets
        $inp line } else {
        obtient $inp ligne # Utiliser une
        expression régulière pour correspondre à la ligne avec le numéro de révision
        #.
        si {[regexp {^Revision:\s+(\d+)\s*$} $line match revision_number] }
            {set done 1
        } } set done

0 set revision_number « »
# Le nom du fichier est généralement votre fichier de projet
  
  


.qpf
set file_name [cplex $quartus(args) 0]

si {[catch {get_subversion_revision $file_name} msg] } {
    post_message -type critical_warning « Impossible d’exécuter la commande pour obtenir\
        numéro de révision. $msg »
} d’autre

    { si {-1 == $done } { post_message
        -type critical_warning « Timeout getting revision number ».
    } elseif {[chaîne égale « » $revision_number] } { post_message $revision critical_warning de type $file \ « Impossible de trouver le
        numéro de révision en sortie de
            svn info $file_name ».
    } d’autre {
        post_message « Révision pour $file_name is $revision_number »
    }
}

Vous pouvez exécuter le script à l’invite de commande du système avec la commande suivante (en supposant que le script se trouve dans un fichier nommé svn_revision.tcl):

quartus_sh -t svn_revision.tcl myproject.qpf

Le script produit un message comme celui-ci pour afficher la révision :

Infos : révision pour myproject.qpf est 417

Vous pouvez afficher un message avec le numéro de révision dans la variable globale revision_number, comme dans cet exemple, ou l’écrire dans un fichier de conception.

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.