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)".