Quartus® II Tcl obtener el número de revisión de subversión

author-image

Por

Este script de ejemplo muestra cómo puede acceder a un número de versión de software de control de versión para el proyecto. Puede escribir el número de versión en un archivo de diseño que se haya compilado en su diseño de FPGA. Con lógica de diseño adicional, el FPGA puede informar el número de versión. Esta información puede ser muy útil durante la depuración, especialmente si se cambia entre varios archivos de programación. Puede averiguar fácilmente qué versión del diseño se está ejecutando en el FPGA, según el número de versión de la FPGA.

Este ejemplo utiliza el número de revisión de Subversion para su proyecto. Utiliza el comando svn info para obtener información sobre el archivo especificado. El comando svn info imprimirá información sobre los elementos de su copia de trabajo e incluye una línea con el número de revisión, en el siguiente formulario:

Revisión: número de <revision>

En este ejemplo se utilizan dos procedimientos para ejecutar el comando svn info y el resultado se obtiene el número de revisión. El procedimiento get_subversion_revision inicia el comando svn info. Llame al procedimiento con el nombre de archivo que se usará con el comando svn info. El procedimiento devuelve con un error si no se pudo ejecutar el comando. De lo contrario, el procedimiento no devuelve nada, pero establece ciertas variables globales. Si se agota el tiempo de espera del comando svn info, el valor de la variable global realizada es -1. Si se encontró el número de revisión, el valor de la variable global realizada es 1 y el número de revisión se encuentra en la variable revision_number global. Puede mostrar el número de revisión en un mensaje, como en este ejemplo, o escribirlo en un archivo de diseño.

El procedimiento get_version_info es un procedimiento de procedimiento de acceso a la tensión que procesa el comando generando una línea a la vez. Incluye una expresión regular que coincide con la línea del número de revisión y extrae el número de revisión.

proc get_subversion_revision { file_name } {

    global done

    # Cantidad máxima de segundos para esperar el comando svn info
    # para completar el comando set timeout_seconds
    30

    # El comando svn info con filename que se ejecuta
    set cmd "svn info ${file_name}"

    # Intento de obtener la información
    de la versión. # Si no se puede ejecutar el comando, devuelva un error.
    # De lo contrario, configure un evento de archivo para procesar el resultado del comando.
    if { [catch {open "|$cmd"} input] } { error de código de
        devolución $input } else {

        filehub $input legible [list get_revision_info $input ] # Configure un tiempo de espera para que el proceso

        no se pueda bloquear si el repositorio # está
        inactivo.
        establezca el tiempo de espera [después de [ expr { $timeout_seconds * 1000 } ] \
            [list set done -1] ] # No continúe hasta que se encuentre el número de

        revisión,
        el número o los tiempos de espera de la operación. Cancelar el tiempo de espera de todos modos.
        vwait se realiza después de
        cancelar $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 { obtiene $inp línea # Utilice una expresión regular para
    coincidir con la línea con el número de revisión #
        .
        if { [regexp {^Revision:\s+(\d+)\s*$} $line coincidencia revision_number] } {
            conjunto realizado 1
        } } conjunto hecho

0 conjunto revision_number "" # El nombre del archivo suele ser el
archivo del

proyecto
  
  


.qpf
set file_name [lindex $quartus(tos) 0]

if { [catch { get_subversion_revision $file_name } exclamación] } {
    post_message -type critical_warning "No se pudo ejecutar el comando para obtener\
        número de revisión. $msg"
} else { if {

    -1 == $done } {
        post_message -type critical_warning "Timeout getting revision number."
    } elseif { [string equal "" $revision_number] } {
        post_message -type critical_warning \ "No se pudo encontrar el número de revisión en la salida de
            svn info $file_name."
    } else { post_message
        "Revisión de $file_name is $revision_number"
    }
}

Podría ejecutar el script en un indicador de comandos del sistema con el siguiente comando (suponiendo que el script se encuentre en un archivo denominado svn_revision.tcl):

quartus_sh -t svn_revision.tcl myproject.qpf

El script genera un mensaje como este para mostrar la revisión:

Información: La revisión de myproject.qpf es 417

Puede mostrar un mensaje con el número de revisión en la variable global revision_number, como en este ejemplo, o escribirlo en un archivo de diseño.

El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.