Quartus® II Tcl รับหมายเลขการแก้ไขการเวอร์ชั่นย่อย

author-image

โดย

สคริปต์ตัวอย่างนี้แสดงวิธีที่คุณสามารถเข้าถึงหมายเลขเวอร์ชันของซอฟต์แวร์ควบคุมเวอร์ชันสําหรับโครงการของคุณ คุณสามารถเขียนหมายเลขเวอร์ชันในไฟล์การออกแบบที่คอมไพล์ในการออกแบบFPGAของคุณ ด้วยตรรกะการออกแบบเพิ่มเติม หมายเลขเวอร์ชันสามารถรายงานได้โดยFPGA ข้อมูลนี้จะมีประโยชน์มากในระหว่างการดีบัก โดยเฉพาะอย่างยิ่งหากคุณสลับระหว่างไฟล์การเขียนโปรแกรมหลายไฟล์ คุณสามารถค้นหาได้อย่างง่ายดายว่าการออกแบบเวอร์ชันใดที่ทํางานอยู่ในFPGAอิงตามหมายเลขเวอร์ชันในFPGA

ตัวอย่างนี้ใช้หมายเลขการปรับปรุงแก้ไข Subversion สําหรับโครงการของคุณ โดยจะใช้คําสั่ง svn info ในการรับข้อมูลเกี่ยวกับไฟล์ที่ระบุ คําสั่ง svn info จะพิมพ์ข้อมูลเกี่ยวกับรายการต่างๆ ในสําเนาการทํางานของคุณ และมาพร้อมกับบรรทัดที่มีหมายเลขการปรับปรุงในแบบฟอร์มต่อไปนี้:

การแก้ไข: หมายเลขการทบทวน<>

ตัวอย่างนี้ใช้สองขั้นตอนในการเรียกใช้คําสั่ง ข้อมูล Svn และแยกวิเคราะห์ผลลัพธ์เพื่อรับหมายเลขการปรับปรุง ขั้นตอน get_subversion_revision จะเริ่มคําสั่ง ข้อมูล Svn เรียกขั้นตอนพร้อมชื่อไฟล์เพื่อใช้กับคําสั่ง svn info ขั้นตอนจะกลับมาพร้อมกับข้อผิดพลาดหากไม่สามารถเรียกใช้คําสั่งได้ ไม่เช่นนั้นขั้นตอนจะส่งคืนสิ่งใด แต่จะตั้งค่าตัวแปรส่วนกลางบางตัว หากหมดเวลาของคําสั่ง svn info ค่าของตัวแปรส่วนกลาง ที่ทํา คือ -1 หากพบหมายเลขการปรับปรุงมูลค่าของตัวแปรส่วนกลาง ที่ทํา คือ 1 และหมายเลขการปรับปรุงอยู่ในตัวแปร ส่วนกลาง revision_number คุณสามารถแสดงหมายเลขการแก้ไขในข้อความ ดังเช่น ในตัวอย่างนี้ หรือเขียนลงในไฟล์การออกแบบ

ขั้นตอน get_version_info คือขั้นตอนผู้ช่วยที่วิเคราะห์คําสั่งทีละบรรทัด ซึ่งรวมถึงการแสดงออกปกติที่ตรงกับบรรทัดหมายเลขการปรับปรุงและแยกหมายเลขการปรับปรุง

proc get_subversion_revision { file_name } {

    เสร็จสิ้นทั้งหมด

    # จํานวนวินาทีสูงสุดที่รอให้คําสั่ง svn info
    # เสร็จสมบูรณ์เพื่อ
    ตั้งค่าtimeout_seconds 30

    # คําสั่งข้อมูล svn พร้อมชื่อไฟล์ที่เรียกใช้
    งาน cmd "svn info ${file_name}" #

    ความพยายามรับข้อมูล
    เวอร์ชัน # หากไม่สามารถเรียกใช้คําสั่งได้
    ให้ส่งคืนข้อผิดพลาด # ตั้งค่าเหตุการณ์ไฟล์เพื่อประมวลผลเอาต์พุต
    คําสั่ง หาก { [put {open "|$cmd"} input] } {
        ข้อผิดพลาด return-code $input
    } อื่น {

        fileevent $inputอ่านได้ [list get_revision_info $input ]

        # ตั้งค่าการหมดเวลาเพื่อไม่ให้กระบวนการหยุดทํางานหาก
        คลัง # หยุด
        ทํางาน ตั้งค่าการหมดเวลา [หลังจาก [ expr { $timeout_seconds * 1000 } ] \
            [ชุดรายการเสร็จสิ้น -1] ]

        # ห้ามดําเนินการต่อจนกว่าจะพบหมายเลขการแก้ไข
        หมายเลข หรือเวลาดําเนินการ ยกเลิกการหมดเวลาต่อไป
        vwait เสร็จสิ้น
        แล้วหลังจากยกเลิก
$timeout} }

proc get_revision_info { inp  }

    เสร็จสิ้นทั่วโลกrevision_number

    หาก { [eof $inp] } {
        close $inp} ที่ตั้งไว้ {close $inp}
        เสร็จเรียบร้อยแล้ว { $done } {
        รับบรรทัด$inp
    } อื่น {
        รับ$inpบรรทัด
        # ใช้สายปกติเพื่อจับคู่บรรทัดด้วย
        หมายเลข
        การปรับปรุง # หาก { [regexp {^Revision:\s+(\d+)\s*$} $line match revision_number] } {
            ตั้งค่าเสร็จสิ้น 1
        } }

ตั้งค่าเสร็จ 0
ชุดrevision_number ""

# ชื่อไฟล์มักจะเป็นไฟล์โครงการของคุณ
  
  


ชุด qpf
file_name [lindex $quartus(args) 0]

หาก { {get_subversion_revision $file_name } msg] } {
    post_message -type critical_warning "คําสั่ง Wizard't run to get\
        edition number $msg" }
อื่น }

    หาก { -1 == $done } {
        post_message -type critical_warning "หมายเลขการหมดเวลา"
    } } อื่น ๆ { [string equal "" $revision_number] } {
        post_message critical_warning -type \
            "ตัวตรวจสอบไม่พบหมายเลขการปรับปรุงในผลลัพธ์ของ svn info $file_name"
    } อื่น { post_message
        "การแก้ไขสําหรับ $file_name is $revision_number"
    }
}

คุณสามารถเรียกใช้สคริปต์ที่พรอมท์คําสั่งของระบบด้วยคําสั่งต่อไปนี้ (โดยสมมติให้สคริปต์อยู่ในไฟล์ที่มีชื่อ ว่า svn_revision.tcl):

quartus_sh -t svn_revision.tcl myproject.qpf

สคริปต์สร้างข้อความเช่นนี้เพื่อแสดงการปรับปรุง:

ข้อมูล: การปรับปรุงแก้ไขสําหรับ myproject.qpf คือ 417

คุณสามารถแสดงข้อความพร้อมหมายเลขการปรับปรุงใน ตัวแปรrevision_numberส่วนกลาง ตามตัวอย่างนี้ หรือเขียนลงในไฟล์การออกแบบ

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