บทนำ
เมื่อพบข้อมูลหลายอย่างที่ขัดแย้งหรือไม่ครบถ้วนบนอินเทอร์เน็ตและในบางคลาสฝึกอบรมเกี่ยวกับวิธีสร้างข้อ จำกัด เวลาในรูปแบบ SDCอย่างถูกต้องฉันต้องการขอความช่วยเหลือจากชุมชน EE สำหรับโครงสร้างการสร้างนาฬิกาทั่วไปที่ฉันพบ
ฉันรู้ว่ามีความแตกต่างในวิธีที่จะใช้ฟังก์ชั่นบางอย่างใน ASIC หรือ FPGA (ฉันได้ทำงานกับทั้งคู่) แต่ฉันคิดว่าควรมีวิธีทั่วไปที่ถูกต้องในการ จำกัด เวลาของโครงสร้างที่กำหนดโดยไม่ขึ้นกับ เทคโนโลยีพื้นฐาน - โปรดแจ้งให้เราทราบหากฉันทำผิดในสิ่งนั้น
นอกจากนี้ยังมีความแตกต่างบางอย่างระหว่างเครื่องมือต่าง ๆ สำหรับการใช้งานและการวิเคราะห์เวลาของผู้ขายต่าง ๆ (แม้จะมี Synopsys ที่เสนอซอร์สโค้ดตัวแยกวิเคราะห์ SDC) แต่ฉันหวังว่าพวกเขาส่วนใหญ่จะมีปัญหาเกี่ยวกับไวยากรณ์ซึ่งสามารถค้นหาได้ในเอกสาร
คำถาม
นี่คือโครงสร้างนาฬิกามัลติเพล็กเซอร์ต่อไปนี้ซึ่งเป็นส่วนหนึ่งของโมดูลclkgenซึ่งเป็นส่วนหนึ่งของการออกแบบที่มีขนาดใหญ่ขึ้นอีกครั้ง:
ในขณะที่ext_clk
อินพุตถูกสร้างขึ้นจากการออกแบบภายนอก (การป้อนผ่านอินพุตพิน), clk0
และclk4
สัญญาณยังถูกสร้างและใช้งานโดยโมดูลclkgen (ดูคำถามนาฬิการะลอกของฉันที่เกี่ยวข้องสำหรับรายละเอียด) และมีข้อ จำกัด เกี่ยวกับนาฬิกาชื่อbaseclk
และdiv4clk
, ตามลำดับ
คำถามคือวิธีการระบุข้อ จำกัด เช่นที่วิเคราะห์เวลา
- ถือว่า
cpu_clk
เป็นนาฬิกาแบบมัลติเพล็กซ์ซึ่งสามารถเป็นหนึ่งในนาฬิกาแหล่งที่มา (fast_clk
หรือslow_clk
หรือext_clk
) โดยคำนึงถึงความล่าช้าผ่านประตู AND และ OR ที่แตกต่างกัน - ในขณะเดียวกันก็ไม่ตัดเส้นทางระหว่างนาฬิกาต้นทางที่ใช้ในที่อื่นในการออกแบบ
ในขณะที่กรณีที่ง่ายที่สุดของมัลติเพล็กเซอร์นาฬิกาบนชิปดูเหมือนจะต้องการเพียงแค่set_clock_groups
คำสั่ง SDC :
set_clock_groups -logically_exclusive -group {baseclk} -group {div4clk} -group {ext_clk}
... ในโครงสร้างที่กำหนดสิ่งนี้มีความซับซ้อนเนื่องจากข้อเท็จจริงที่ว่าclk0
(ผ่านทางfast_clk
เอาต์พุต) และclk4
(ผ่านslow_clk
) ยังคงใช้ในการออกแบบแม้ว่าcpu_clk
จะถูกกำหนดค่าให้เป็นext_clk
เมื่อuse_ext
ถูกยืนยันเท่านั้น
ตามที่อธิบายไว้ที่นี่ที่set_clock_groups
คำสั่งดังกล่าวจะทำให้เกิดความต่อไปนี้:
คำสั่งนี้เทียบเท่ากับการเรียก set_false_path จากแต่ละนาฬิกาในทุกกลุ่มไปยังนาฬิกาในแต่ละกลุ่มและในทางกลับกัน
... ซึ่งจะไม่ถูกต้องเนื่องจากนาฬิกาอื่น ๆ ยังคงใช้ที่อื่น
ข้อมูลเพิ่มเติม
use_clk0
, use_clk4
และuse_ext
ปัจจัยการผลิตที่ถูกสร้างขึ้นในลักษณะดังกล่าวว่ามีเพียงหนึ่งของพวกเขาอยู่ในระดับสูงในเวลาใดก็ตาม ในขณะที่สิ่งนี้สามารถใช้เพื่อหยุดนาฬิกาทั้งหมดหากuse_*
อินพุตทั้งหมดต่ำโฟกัสของคำถามนี้อยู่ที่คุณสมบัติการทำมัลติเพิลนาฬิกาของโครงสร้างนี้
X2อินสแตนซ์ (บัฟเฟอร์ง่าย) ในวงจรเป็นเพียงสถานที่ที่ผู้ถือเพื่อเน้นปัญหาของสถานที่และเส้นทางอัตโนมัติเครื่องมือถูกมักจะฟรีเพื่อบัฟเฟอร์สถานที่ใดก็ได้ (เช่นระหว่างand_cpu_1/z
และor_cpu1/in2
หมุด) ตามหลักการแล้วข้อ จำกัด เรื่องเวลาควรไม่ได้รับผลกระทบจากสิ่งนั้น