Combinar datos de archivos SDO

author-image

Por

Este script crea un archivo SDO con parámetros de sincronización combinados a partir de dos archivos SDO generados por el software Quartus® II durante el análisis de sincronización máximo y mínimo.
El software Quartus II genera archivos SDO independientes que utilizan el valor de demora mínimo o máximo para los tres valores de demora en cada triplete. Los triples en los archivos SDO admiten valores de demora mínimos, típicos y máximos, como este: (min:fet: max). Un archivo SDO generado por el software Quartus II para el análisis máximo de la sincronización tiene tripletes de demora que incluyen solo valores de demora máximos, como este: (max:max:max). Un archivo SDO generado durante el análisis de sincronización mínimo contiene tripletes de demora que incluyen solo valores de demora mínimos, como este: (min:min:min).
Este script combina archivos SDO con valores mínimos y máximos para crear un archivo con tripletes que tienen los números mínimo y máximo, como este: (min:max:max). Tenga en cuenta que el valor de demora máximo también se duplica para el valor de demora típico. Altera no garantiza que el archivo generado por este script funcione para un análisis mixto mínimo/máximo.

Ejecute el script de esta forma: quartus_sh -t combine_sdo.tcl -min_sdo <min sdo file> -max_sdo <max sdo file> -new_sdo <new sdo>

paquete requiere la

variable cmdline::exclamarv0 $::quartus(vd.)

set options { \ {
                  "min_sdo.rej" "" "" "Nombre de archivo de SDO con temporización mínima" } \
                  { "max_sdo...."" "" "Nombre de archivo de SDO con temporización máxima" } \
                  { "new_sdo...."" "" "Nombre de archivo de SDO con la temporización máxima" } \ { "new_sdo...."" "" "Nombre de archivo de SDO"DO con la sincronización mínima/máxima" } \ } conjunto de
matrices opts [::cmdline::get receptivos::vd. $options "Opción negativa"]

establecer min [abrir $opts(min_sdo)]
establecer máximo [abrir $opts(max_sdo)]
establecer nuevo [abrir $opts(new_sdo) w]

# Realice un seguimiento del número de línea en el conjunto de archivos
line_num 1

mientras { 1 } { # Lea

    la línea siguiente de los archivos min y max sdo
    establecidos more_min [gets $min min_line]
    establecidos more_max [obtiene $max max_line ]

    # Finalizar cuando no haya más datos en los archivos si {
    $more_min < 0 || $more_max < 0 } {

        # es posible que un archivo podría tener más líneas
        que el otro. Consívense con eso aquí.
        if { $more_min >= 0 } {
            post_message advertencia de tipo -type \
                "Líneas $line_num que comienzan con la línea $line_num en $opts(min_sdo)"
        } si {
        $more_max >= 0 } {
            post_message -type warning \
                "Líneas despercibidas que comienzan con la línea $line_num en $opts(max_sdo)" } # Debido a que
        al menos uno de los archivos no tiene más

        datos,
        # el bucle se tiene que detener.
        break
    } si {

    [regexp {\d+:\d+:\d+\)} $min_line] } { # Si la línea tiene un triplete de

        retraso, se deben combinar los valores #
        new_line acumula el texto para

        imprimir.
        Se establece el número line_differences si hay diferencias en el
        número de líneas además de los triples de   retraso.
        configure new_line conjunto
        "" line_differences n.° 0

        Mientras haya tríts de demora en la línea...
        mientras { [regexp {\(\d+:\d+:\d+\)} $min_line] } {

            # Extraiga todo hasta el triple de retraso, el valor de demora # en
            sí, y todo después del triple retraso 
            #
            regexp {^(.*?\()(\d+):\d+:\d+(\).*$)} $min_line \ coincida con
                min_start min_value min_line
            regexp {^(.*?? \()\d+:\d+:(\d+)(\).*$)} $max_line \
                match max_start max_value max_line # Establezca un indicador si hay diferencias en la línea # además del
            triplete
            de demora if { ! [cadena igual a $min_start $max_start] } {
                establecer line_differences 1 } # Coloque el triplete de demora combinado en la nueva línea
            anexar new_line $min_start \
                $min_value: $max_value : $max_value
        } # Verifique el texto que quede en la línea

        para
        ver las diferencias . if { ! [cadena igual a $min_line $max_line] } {
            establecer line_differences 1 } si {

        $line_differences } {
            post_message -type warning \
                [join [list \
                           "Estas partes de la línea $line_num son diferentes." \
                           " $opts(min_sdo): $min_line" \
                           " $opts(max_sdo): $max_line"] \
                     "\n"]
        } Poner el resto de la

        línea, después del último triplete de retraso,
        # juntos en la nueva línea
        anexar new_line $min_line

    } else { # Si la línea no tiene un

        triplete de retraso en el,
        # las líneas de los archivos mínimo y máximo deben ser 
        # idénticos (excepto por ejemplo si hay un número de marca de fecha
        en el archivo). Realice una verificación rápida para asegurarse de que las líneas 
        #sean las mismas e imprima una advertencia si son diferentes.
        if { ! [cadena igual a $min_line $max_line] } {
            post_message -type warning \
                [join [list \
                           "Line $line_num is different." \
                           " El nuevo archivo contiene la primera línea a continuación." \
                           "  $opts(min_sdo): $min_line" \
                           "  $opts(max_sdo): $max_line"] \
                     "\n"]
        } establecer
        new_line $min_line
    } # Escriba la línea en el archivo combinado pone
    $new $new_line

    incr line_num
} Cantidad

de bucles hechos a través de los archivos. Cierre todo
$min cierre $max cierre $new post_message

"Listo para combinar archivos en $opts(new_sdo)".

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.