ตัววิเคราะห์เวลาจะพิจารณาถึงตัวแบ่งสัญญาณนาฬิกา สัญญาณนาฬิการะลอกหรือวงจรที่ปรับเปลี่ยนหรือเปลี่ยนคุณสมบัติของนาฬิกาขาเข้าหรือโฮสต์เมื่อนาฬิกาถูกสร้างขึ้น คุณควรกําหนดเอาต์พุตของวงจรเหล่านี้ว่าเป็นสัญญาณนาฬิกาที่สร้างขึ้น คํานิยามนี้ช่วยให้ตัววิเคราะห์เวลาสามารถวิเคราะห์นาฬิกาเหล่านี้และบัญชีสําหรับความหน่วงแฝงของเครือข่ายใดๆ ที่เกี่ยวข้องกับนาฬิกาเหล่านี้
คุณสามารถใช้คําสั่ง create_generated_clock เพื่อสร้างนาฬิกาที่สร้างขึ้น รายการต่อไปนี้แสดงคําสั่ง create_generated_clock และตัวเลือกที่มีอยู่:
create_generated_clock [ชื่อ<clock>] -source <host pin> [-edges <edge list>] [-edge_shift <shift list>] [-divide_by <factor>] [-multiply_by <factor> >] [-duty_cycle <percent>] [-add] [-invert] [-host_clock <clock>] [-phase <phase>] [-offset <offset>] < วัตถุแหล่งข้อมูล>
ตารางที่ 1 อธิบายถึงตัวเลือกสําหรับคําสั่งcreate_generated_clock
ตารางที่ 1 คําอธิบายตัวเลือกสําหรับคําสั่ง create_generated_clock
คําอธิบายตัวเลือก | |
---|---|
-ชื่อ <ชื่อคล็อก> | ชื่อของนาฬิกาที่สร้างขึ้น ตัวอย่างเช่น clk_x2 หากคุณไม่ได้ระบุชื่อนาฬิกา ชื่อนาฬิกาจะเหมือนกับโหนดแรกที่มีการกําหนดนาฬิกาให้ |
พิน <host ต้นทาง> | พิน <host> จะระบุโหนดในการออกแบบที่การตั้งค่านาฬิกาได้รับ |
-รายการ edges <edge> |-edge_shift <shift > | ตัวเลือก -edges จะระบุขอบที่เพิ่มขึ้นและลดลงใหม่ในส่วนที่เกี่ยวกับขอบที่เพิ่มขึ้นและลดลงของนาฬิกาโฮสต์ Edge ที่เพิ่มขึ้นและลดลงของนาฬิกาโฮสต์จะมีหมายเลข 1.<n> เริ่มจาก Edge ที่เพิ่มขึ้นครั้งแรก เช่น Edge 1 Edge แรกที่ลดลงหลังจากนั้นคือ Edge Number 2, หมายเลข Edge ที่เพิ่มขึ้นถัดไป 3 และอื่นๆ รายการ <edge>ต้องอยู่ในลําดับที่เพิ่มขึ้น สามารถใช้ Edge เดียวกันกับสองรายการเพื่อระบุการเต้นของสัญญาณนาฬิกาโดยไม่ขึ้นกับรอบการทํางานของรูปคลื่นเดิม edge_shift ระบุจํานวนการเปลี่ยนแปลงสําหรับแต่ละ Edge ในรายชื่อ <edge > สามารถใช้ตัวเลือก -invert เพื่อแปลงนาฬิกาหลังจากใช้ -edges และ -edge_shifts |
-divide_by <แฟคเตอร์>| -multiply_by<แฟคเตอร์> | ปัจจัยdivide_byและmultiply_byอิงตามขอบนาฬิกาที่เพิ่มขึ้นครั้งแรก และขยายหรือทําสัญญารูปคลื่นตามปัจจัยที่ระบุ ตัวอย่างเช่น -divide_by 2 เทียบเท่ากับ -edges {1 3 5} สําหรับนาฬิกาคูณ สามารถระบุรอบหน้าที่ได้อีกด้วย ตัววิเคราะห์เวลารองรับการระบุตัวคูณและแบ่งปัจจัยในเวลาเดียวกัน |
-duty_cycle<เปอร์เซนต์> | ระบุวงจรหน้าที่ของนาฬิกาที่สร้างขึ้น รอบหน้าที่จะถูกนําไปใช้ล่าสุด |
-เพิ่ม | อนุญาตให้คุณระบุมากกว่าหนึ่งนาฬิกาไปยังพินเดียวกัน |
-invert | การกลับรายการจะถูกใช้ที่เอาต์พุตของนาฬิกาหลังจากที่มีการใช้การปรับเปลี่ยนอื่นๆ ทั้งหมด ยกเว้นรอบหน้าที่ |
-host_clock<คล็อก> | host_clockจะถูกใช้เพื่อระบุนาฬิกาหากมีหลายนาฬิกาอยู่ที่พินโฮสต์ |
-เฟส<phase> | ระบุเฟสของนาฬิกาที่สร้างขึ้น |
-ออฟเซ็ต<offset> | ระบุออฟเซ็ตของนาฬิกาที่สร้างขึ้น |
วัตถุแหล่งข้อมูล<> | ระบุพอร์ตหรือพินที่การมอบหมายมีผล |
ความหน่วงแฝงแหล่งที่มาขึ้นอยู่กับความล่าช้าของเครือข่ายนาฬิกาจากนาฬิกาโฮสต์ (ไม่จําเป็นต้องเป็นพินโฮสต์) คุณสามารถใช้คําสั่ง set_clock_latency -source เพื่อแทนที่ความหน่วงแฝงของแหล่งที่มาได้
รูปภาพที่ 1 แสดงรูปคลื่นสําหรับคําสั่ง SDC ต่อไปนี้ที่สร้างนาฬิกาแบบกลับด้านโดยใช้นาฬิกา 10 ns
create_clock -period 10 [get_ports clk] create_generated_clock -divide_by 1 -invert -source [get_registers clk] \ [get_registers เจนเนอเร|clkreg]
รูปภาพที่ 2 แสดงรูปคลื่นสําหรับคําสั่ง SDC ต่อไปนี้ที่ปรับเปลี่ยนนาฬิกาที่สร้างขึ้นโดยใช้ตัวเลือก-edgeและ-edge_shift
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # สร้างcreate_generated_clockนาฬิกาแบบหารด้วย 2 -source [get_ports clk] -edges { 1 3 5 } \ [get_registers clkdivA|clkreg] # สร้างการแบ่งตาม 2 นาฬิกาโดยไม่ขึ้นกับรอบการทํางานของนาฬิกาโฮสต์ตอนนี้ 50%) create_generated_clock -source [get_ports clk] -edges { 1 1 5 } -edge_shift 0 5 0 } \ [get_registers clkdivB|clkreg]
รูปภาพที่ 3 แสดง wafeforms สําหรับคําสั่ง SDC ต่อไปนี้ที่แสดงให้เห็นถึงผลของตัวเลือก -คูณ บนนาฬิกาที่สร้างขึ้น
create_clock -period 10 -waveform { 0 5 } [get_ports clk] # สร้างcreate_generated_clockนาฬิกาคูณคูณ 2 -source [get_ports clk] -multiply_by 2 \ [get_registers clkmult|clkreg]