Kombinieren von SDO-Dateidaten

author-image

Von

Dieses Skript erstellt eine SDO-Datei mit kombinierten Timing-Parametern aus zwei SDO-Dateien, die von der Quartus® II Software während der maximalen und minimalen Timing-Analyse generiert werden.
Die Quartus II Software generiert separate SDO-Dateien, die den mindesten oder maximalen Verzögerungswert für die drei Verzögerungswerte in jedem Dreifachteil verwenden. Trip drilling in SDO-Dateien unterstützen minimale, typische und maximale Verzögerungswerte wie diese: (min:typ:max). Eine von der Quartus II Software für die maximale Timing-Analyse generierte SDO-Datei hat Delay Trip ascii, die nur maximale Verzögerungswerte wie folgt enthält: (max:max:max). Eine während der Minimal-Timing-Analyse generierte SDO-Datei enthält Verzögerungs-Tripel, die nur minimale Verzögerungswerte wie folgt enthalten: (min:min:min).
Dieses Skript kombiniert SDO-Dateien mit minimalen und maximalen Werten, um eine Datei mit tripfile zu erstellen, die sowohl die mindeste als auch die maximale Anzahl haben, wie folgt: (min:max:max). Beachten Sie, dass der maximale Verzögerungswert auch für den typischen Verzögerungswert dupliziert wird. Die von diesem Skript generierte Datei wird nicht von Altera garantiert, dass sie für eine gemischte Minimal-/Maximalanalyse funktioniert.

Führen Sie das Skript wie folgt aus: quartus_sh -t combine_sdo.tcl -min_sdo <min sdo-Datei> -max_sdo <max-SDO-Datei> -new_sdo <neue SDO-Datei>

Paket erfordert cmdline

Variable ::argv0 $::quartus(args)

Set-Optionen { \
                  { "min_sdo.arg" "" "Dateiname des SDO mit min Timing" } \
                  { "max_sdo.arg" "" "Dateiname des SDO mit max. Timing" } \
                  { "new_sdo.arg" "" "Dateiname von SDO with min/max timing" } \
              } array set
opts [::cmdline::getoptions ::argv0 $options "Bad option"]

set min [open $opts(min_sdo)]
set max [open $opts(max_sdo)]
set new [open $opts(new_sdo) w]

# Behalten Sie den Überblick über die Zeilennummer im
Dateisatz line_num

1, während { 1 } {

    # Die nächste Zeile aus den min- und max. SDO-Dateien gelesen wird, die
    more_min [gets $min min_line]
    festgelegt more_max [gets $max max_line #

    Finish, wenn keine Daten mehr in den Dateien vorhanden
    sind, wenn { $more_min < 0 || $more_max < 0 } {

        # Es ist möglich, dass eine Datei mehr Zeilen
        als die andere hat. Warnen Sie hier davor.
        wenn { $more_min >= 0 } {
            post_message -type warning \
                "Entsprungene Zeilen, die mit zeile $line_num in $opts(min_sdo)"
        }
        beginnen, wenn { $more_max > = 0 }
            {post_message -type warning \
                "Entsprungene Zeilen beginnen mit Zeile $line_num in $opts(max_sdo)"
        } # Da mindestens eine der Dateien keine Daten mehr

        hat,
        muss die Schleife angehalten werden.
        break
    } if {

    [regexp {\(\d+:\d+:\d+\)} $min_line] } {

        # Wenn die Zeile ein Verzögerungs-Triplet enthält, müssen die Werte
        # # kombiniert werden new_line sammelt den Text zum

        Ausdrucken an.
        #line_differences ist festgelegt, wenn neben der   Verzögerungs-Triplet Unterschiede in den #-Zeilen vorhanden sind.
        setzen Sie new_line ""
        line_differences 0

        # einstellen, während in der Zeile Verzögerungs-Triplete vorhanden sind ...
        while { [regexp {\(\d+:\d+:\d+\)} $min_line] } {

            # Extrahieren Sie alles bis zum Verzögerungs-Triplet, dem
            #Verzögerungswert selbst, und alles nach dem 
            #delay triplet
            regexp {^(.*?\()(\d+):\d+:\d+(\).*$)} $min_line \
                match min_start min_value min_line
            regexp {^(..*?\()\d+:\d+:(\d+)(\).*$)} $max_line \ match max_start max_value max_line # Setzen Sie eine Kennzeichnung, wenn neben
                dem
            Verzögerungs-Triplett
            Unterschiede in der Zeilennummer vorhanden sind wenn { ! [string equal $min_start $max_start] } {
                set line_differences 1 } # Setzen Sie
            das

            kombinierte Verzögerungs-Triplet in der neuen Zeile
            zusammen, um new_line $min_start \
                $min_value : $max_value: $max_value
        } # Überprüfen

        Sie, welcher Text in der Zeile auf
        #Unterschiede überlässt.
        wenn { ! [string equal $min_line $max_line] } {
            set line_differences 1 } if {

        $line_differences } {
            post_message -type warning \
                [join [list \
                           "Diese Teile der Zeile $line_num sind anders." \
                           " $opts(min_sdo): $min_line" \
                           " $opts(max_sdo): $max_line"] \
                     "\n"]
        } # Setzen Sie den Rest der

        Zeile, nach dem letzten Verzögerungs-Triplet:
        # zusammen in der neuen Zeile
        anhängen new_line $min_line

    } else { # Wenn die Zeile kein

        Verzögerungs-Triplet enthält,
        # die Zeilen aus den min- und max.Dateien sollten identisch sein 
        (außer z. B. wenn in der Datei eine Datumsstempelnummer vorhanden
        ist). Führen Sie eine Schnellüberprüfung durch, um sicherzustellen, dass die Zeilen 
        nr. gleich sind, und drucken Sie eine Warnung aus, falls sie anders sind.
        wenn { ! [string equal $min_line $max_line] } {
            post_message -type warning \
                [join [list \
                           "Line $line_num is different." \
                           " Die neue Datei enthält die erste Zeile unten." \
                           "  $opts(min_sdo): $min_line" \
                           "  $opts(max_sdo): $max_line"] \
                     "\n"]
        } set
        new_line $min_line
    } # Schreib die Zeile in die

    kombinierte
    Datei, wodurch $new $new_line

    incr line_num } # Done
durch die Dateien

läuft. Schließen Sie
alles, $min
schließen Sie $max schließen Sie $new post_message

"Dateien in $opts(new_sdo) kombinieren"

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.