การจัดกลุ่มเวลาเป็นวิธีที่มีประสิทธิภาพในการกําหนดเวลา คุณสามารถระบุอักขระตัวแทนที่มีโหนดที่ตรงกับรูปแบบในกลุ่ม และระบุอักขระตัวแทนที่ไม่รวมโหนดที่ตรงกับรูปแบบจากกลุ่ม คุณอาจต้องดูรายการโหนดทั้งหมดใน Timegroup เพื่อยืนยันว่าคุณได้ระบุรูปแบบอักขระตัวแทนที่ถูกต้อง
สคริปต์เหล่านี้อธิบายเกี่ยวกับโหนดในกลุ่มเวลาในการออกแบบของคุณ สคริปต์จะซ้ํากันในทุกโหนดเวลาในการออกแบบของคุณ โดยเปรียบเทียบชื่อของโหนดเวลากับรูปแบบการแบ่งกลุ่มเวลาแต่ละรูปแบบ ตามด้วยรูปแบบการแยกกลุ่มเวลาแต่ละรูปแบบ
มีข้อจํากัดเกี่ยวกับสคริปต์นี้ โดยไม่ได้จัดการกับกลุ่มเวลาในการทํางาน การรวมหรือการไม่รวมกลุ่มเวลาเป็นองค์ประกอบของกลุ่มเวลาอื่นถูกต้อง แต่สคริปต์นี้ไม่รองรับ
หากต้องการรวมบัสทั้งหมดไว้ในกลุ่มเวลา ให้ใช้เครื่องหมายดอกจันหลังชื่อบัสในเวอร์ชั่น 4.2 และด้านล่างของซอฟต์แวร์ Quartus II เริ่มต้นด้วยเวอร์ชัน 5.0 คุณสามารถระบุชื่อบัสที่ไม่มีเครื่องหมายดอกจัน สคริปต์ประกอบด้วยการตรวจสอบลักษณะการทํางานนี้โดยอิงตามหมายเลขเวอร์ชั่นของซอฟต์แวร์
โครงการ load_package global quartus load_package advanced_timing # ตรวจสอบว่าสคริปต์ทํางานใน 4.2 และก่อนหน้า, # หรือ 5.0 และใหม่กว่า 5.0 และใหม่กว่าจะจดจําชื่อ <bus>เป็น # รายการกลุ่มเวลาที่ถูกต้อง ในขณะที่ 4.2 และก่อนที่จะต้องมี ชื่อ # <bus>* เป็นรายการ กลุ่มเวลา qver การจับคู่$quartus(เวอร์ชั่น) regexp {^Version (\d)} หาก { $qver < 5 } { ตั้งค่าneed_asterisk 1 } อื่น { ตั้งค่าneed_asterisk 0 } project_open [lindex $quartus(args) 0] ตั้งค่า tg_name create_timing_netlist [li li $quartus(args) 1] post_message "โหนดต่อไปนี้เป็นสมาชิกของ timegroup $tg_name:" ตั้งค่าtg_name [escape_brackets $tg_name] ตั้งค่าtg_members [timegroup -get_members $tg_name] ตั้งค่าtg_exceptions [timegroup -get_exceptions $tg_ name] # ลูปนี้จะอธิบายเกี่ยวกับโหนดเวลาทุกโหนดในforeach_in_collection node_idการออกแบบ [get_timing_nodes -type all] { ตั้งค่าnode_name [get_timing_node_info -ชื่อข้อมูล $node_id] # หากชื่อโหนดไม่ได้อยู่ในบัส ให้ล้างbus_name # ตั้งค่าไว้ เป็นอย่างอื่น ถ้า { ! [regexp {(.*?) \[\d+\]} $node_name match bus_name] } } { set bus_name "" } # ตอนนี้เรามีชื่อโหนดแล้ว ตรวจสอบว่าตรงกับ รูปแบบใดๆ ในชุดกลุ่มเวลาที่ระบุตรงกับ 0 foreach_in_collectionสมาชิก $tg_member { ตั้งค่าesc_name [escape_brackets [lindex $member 2]] หาก { [string match $esc_name $node_name] } { set matches 1 } อื่นๆ { ! $need_asterisk && \ [string match $esc_name $bus_name] } { set matches 1 } } # หาก$matchesคือ 1 ที่นี่ โหนดกําหนดเวลาจะตรงกับชื่อสมาชิก # ใน timegroup อย่างไรก็ตาม อาจยังคงมีข้อยกเว้น # ตรวจสอบดูได้ที่นี่ หาก { $matches } { foreach_in_collection exception $tg_exceptions { set esc_name [escape_brackets [lindex $exception 2]] หาก { [string match $esc_name $node_name] } set matches 0 } elseif { ! $need_asterisk && \ [string match $esc_name $bus_name] } { set matches 0 } } } # เราได้ดูข้อยกเว้นทั้งหมดแล้ว หาก $matches ยังคงเป็น 1 อยู่ # ชื่อโหนดจะตรงกับรูปแบบของสมาชิก และไม่ # ตรงกับรูปแบบข้อยกเว้น ดังนั้นให้พิมพ์ชื่อ โหนด หาก { $matches } { post_message $node_name } } project_close