รวมข้อมูลไฟล์ SDO

author-image

โดย

สคริปต์นี้สร้างไฟล์ SDO ที่มีพารามิเตอร์การกําหนดเวลารวมจากไฟล์ SDO สองไฟล์ที่สร้างขึ้นโดยซอฟต์แวร์ Quartus® II ในระหว่างการวิเคราะห์เวลาสูงสุดและต่ําสุด
ซอฟต์แวร์ Quartus II สร้างไฟล์ SDO แยกต่างหากที่ใช้ค่าหน่วงต่ําสุดหรือสูงสุดสําหรับค่าหน่วงเวลาสามค่าในแต่ละทริปเล็ต Triplets ในไฟล์ SDO รองรับค่าต่ําสุด ทั่วไป และค่าหน่วงสูงสุดดังนี้: (min:typ:max) ไฟล์ SDO ที่สร้างขึ้นโดยซอฟต์แวร์ Quartus II เพื่อการวิเคราะห์เวลาสูงสุดจะมี triplets ล่าช้าซึ่งมีค่าหน่วงเวลาสูงสุดเท่านั้น เช่นนี้( max:max:max:max:max) ไฟล์ SDO ที่เกิดขึ้นระหว่างการวิเคราะห์เวลาขั้นต่ําจะมี Triplet ที่หน่วงเวลาซึ่งมีค่าหน่วงเวลาขั้นต่ําเท่านั้น เช่นนี้ (นาที:นาที:นาที)
สคริปต์นี้รวมไฟล์ SDO เข้ากับค่าต่ําสุดและค่าสูงสุดเพื่อสร้างหนึ่งไฟล์พร้อมด้วยสามเท่าที่มีทั้งตัวเลขต่ําสุดและสูงสุด เช่นนี้ (min:max:max)) โปรดทราบว่าค่าหน่วงสูงสุดซ้ํากันสําหรับค่าความล่าช้าทั่วไปด้วย ไฟล์ที่สร้างขึ้นโดยสคริปต์นี้ไม่รับประกันโดยAlteraทํางานสําหรับการวิเคราะห์ขั้นต่ํา/สูงสุดผสม

เรียกใช้สคริปต์ดังนี้: quartus_sh -t combine_sdo.tcl -min_sdo <min ไฟล์ sdo> -max_sdo <max ไฟล์ sdo > -new_sdo <ไฟล์ sdonew>

แพคเกจจําเป็นต้องมีตัวแปร cmdline

::argv0 $::quartus(args)

ตัวเลือกชุด {
                  { { { "min_sdo.arg" "" "ชื่อไฟล์ของ SDO ที่มีเวลา min" } \
                  { "max_sdo.arg" "" "ชื่อไฟล์ของ SDO ที่มีเวลาสูงสุด" } \
                  { "new_sdo.arg" "" "" ชื่อไฟล์ของ SDO ที่มีเวลาขั้นต่ํา/สูงสุด" } \
              }
ชุดอาร์เรย์เลือก [::cmdline::getoptions ::argv0 $options "ตัวเลือกไม่ถูกต้อง"]

ตั้งค่าขั้นต่ํา [open $opts(min_sdo)]
ตั้งค่าสูงสุด [open $opts(max_sdo)]
ตั้งค่าใหม่ [open $opts(new_sdo) w]

# คอยติดตามหมายเลขบรรทัดใน
ชุดไฟล์line_num 1 ในขณะที่ {

1 }

    { # อ่านบรรทัดถัดไปจากไฟล์ sdo ขั้นต่ําและสูงสุด
    ตั้งค่าmore_min [gets $min min_line]
    ตั้งค่าmore_max [รับ $max max_line # Finish

    เมื่อไม่มีข้อมูลในไฟล์มากนักหาก {
    $more_min < 0 || $more_max < 0 } {

        เป็นไปได้ว่าไฟล์หนึ่งอาจมีบรรทัด
        มากกว่าไฟล์อื่น เตือนเกี่ยวกับเรื่องนี้ที่นี่
        หาก { $more_min >= 0 } {
            post_message -type warning \
                "ข้ามบรรทัดที่เริ่มต้นด้วยบรรทัด $line_num in $opts(min_sdo)"
        } }
        ถ้า { $more_max >= 0 } {
            post_message -type warning \
                "ข้ามบรรทัดที่เริ่มต้นด้วยบรรทัด $line_num in $opts(max_sdo)"
        } #

        เนื่องจากอย่างน้อยหนึ่งไฟล์ไม่มีข้อมูลมากนัก
        จึงต้องหยุด
        ลูป break
    } หาก {

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

        # หากบรรทัดมี Triplet ล่าช้าอยู่
        จะต้องรวมค่า #

        new_lineสะสมข้อความที่จะพิมพ์ออกมา
        # line_differences ถูกตั้งค่าหากมีความแตกต่าง
        ในรายการ # นอกเหนือจาก   Triplet ความ
        ล่าช้า ตั้งค่าnew_line ""
        line_differences 0

        # ในขณะที่มี Triplets ล่าช้าอยู่ในสาย...
        ในขณะที่ { [regexp {\(\d+:\d+:\d+\)} $min_line] } {

            # แตกทุกอย่างไปยัง Triplet ล่าช้า,
            #delay value ตัวเอง, และทุกอย่างหลังจาก 
            # 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 #
            
            ตั้งค่าสถานะหากมีความแตกต่างกันในรายการ
            # นอกเหนือจาก Triplet
            หน่วงเวลา ถ้า { ! [string equal $min_start $max_start] } {
                ตั้งค่า line_differences 1 } # ใส่

            triplet การหน่วงเวลารวมเข้าด้วยกันในภาคผนวกบรรทัดใหม่
            new_line $min_start \
                $min_value : $max_value : $max_value
        } #

        ตรวจสอบข้อความใดก็ตามที่อยู่ในบรรทัดค้างไว้สําหรับ
        ความแตกต่าง
        # ถ้า { ! [string equal $min_line $max_line] } {
            ตั้งค่า line_differences 1 } หาก {

        $line_differences } {
            post_message -type warning \
                [join \list \
                           "ส่วนเหล่านี้ของบรรทัด $line_num มีความแตกต่างกัน" \
                           " $opts(min_sdo): $min_line" \ "
                           $opts(max_sdo): $max_line"] \
                     "\n"}
        } หลังจาก

        Triplet ล่าช้าครั้งสุดท้าย แล้ว
        # ทํางานร่วมกันในภาค
        ผนวกnew_line $min_line

    } อื่นๆ {

        # หากบรรทัดไม่มี Triplet ล่าช้าในเครื่อง
        # บรรทัดจากไฟล์นาทีและสูงสุดควรเหมือนกัน 
        (ยกเว้นเช่น หากมีเครื่องหมายวันที่ใน
        ไฟล์) ทําการตรวจสอบอย่างรวดเร็วเพื่อให้แน่ใจว่าเส้น 
        # เหมือนกันและพิมพ์คําเตือนหากมีความแตกต่างกัน
        ถ้า { ! [string equal $min_line $max_line] } {
            post_message -type warning \
                [join [list \
                           "Line $line_num มีความแตกต่างกัน" \
                           " ไฟล์ใหม่มีบรรทัดแรกด้านล่าง" \
                           "  $opts(min_sdo): $min_line" \
                           " $opts $opts  max_sdo(max_sdo): $max_line"] \
                     "\n"]
        } ตั้งค่า
        new_line $min_line
    } #

    เขียนบรรทัดลงในไฟล์รวม
    ทําให้ $new $new_line

    incr line_num } #

เสร็จสิ้นการวนรอบไฟล์ ปิดทุกสิ่ง
$min
ปิด$max
ปิด

$new post_message "เสร็จสิ้นการรวมไฟล์เข้าไว้ใน$opts(new_sdo)"

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้