ในซอฟต์แวร์ Quartus® Prime Pro Edition คุณจะเห็นว่านาฬิกาลูปล็อกเฟส (PLL) ไม่ได้รับอย่างถูกต้องเมื่อนาฬิกาอ้างอิง PLL มีนาฬิกาหลักหลายนาฬิกา ซึ่งเกิดขึ้นเนื่องจากตัววิเคราะห์การกําหนดเวลาไม่สามารถระบุว่าควรใช้นาฬิกาหลักหลายตัวตัวใด
คุณอาจเห็นข้อความเตือนที่แสดงด้านล่างนี้ในตัววิเคราะห์การกําหนดเวลาเมื่อรูปแบบนาฬิกาเป็นดังนี้:
คําเตือน(332036): นาฬิกา: clk0 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332036): นาฬิกา: clk1 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332087): ไม่สามารถรับนาฬิกาหลักสําหรับการกําหนดค่านาฬิกานี้ได้ นาฬิกา: ไม่ได้สร้าง u0_pll450m|iopll_0_n_cnt_clk
คําเตือน(332036): นาฬิกา: clk0 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332036): นาฬิกา: clk1 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332087): ไม่สามารถรับนาฬิกาหลักสําหรับการกําหนดค่านาฬิกานี้ได้ นาฬิกา: ไม่ได้สร้าง u0_pll450m|iopll_0_m_cnt_clk
คําเตือน(332036): นาฬิกา: clk0 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332036): นาฬิกา: clk1 พบในฐานะผู้สมัครค่านาฬิกาหลักที่เป็นไปได้
คําเตือน(332087): ไม่สามารถรับนาฬิกาหลักสําหรับการกําหนดค่านาฬิกานี้ได้ นาฬิกา: ไม่ได้สร้าง u0_pll450m|iopll_0_outclk0
สิ่งนี้เกิดขึ้นในการออกแบบที่กําหนดเป้าหมายอุปกรณ์ Stratix® 10 และอุปกรณ์ Agilex™ เท่านั้น
ในการจํากัดนาฬิกาเอาต์พุต PLL อย่างถูกต้องด้วยตนเองให้สร้างนาฬิกาหลักระบุนาฬิกาหลักสําหรับแต่ละนาฬิกาเอาต์พุต PLL และเพิ่มกลุ่มนาฬิกาเพื่อตัดนาฬิกาเอาต์พุต PLL จากนาฬิกาอ้างอิงที่แตกต่างกัน
ข้อจํากัดการกําหนดเวลาต่อไปนี้สามารถใช้สําหรับแผนงานนาฬิกาด้านบนได้:
create_clock -name clk0 -period 100MHz [get_ports clk0]
create_clock -name clk1 -period 100MHz [get_ports clk1]
create_generated_clock-ชื่อ {u0|iopll_0_m_cnt_clk} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -มาสเตอร์ {clk0} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock-ชื่อ {u0|iopll_0_n_cnt_clk} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -มาสเตอร์ {clk0} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock-ชื่อ {u0|iopll_0_outclk0} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -มาสเตอร์ {clk0} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add
create_generated_clock-ชื่อ {u1|iopll_0_m_cnt_clk} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 12 -multiply_by 1 -duty_cycle 50.00 -มาสเตอร์ {clk1} { u0_pll450m|iopll_0|tennm_pll~mcntr_reg } -add
create_generated_clock-ชื่อ {u1|iopll_0_n_cnt_clk} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 1 -multiply_by 1 -duty_cycle 50.00 -มาสเตอร์ {clk1} { u0_pll450m|iopll_0|tennm_pll~ncntr_reg } -add
create_generated_clock-ชื่อ {u1|iopll_0_outclk0} -แหล่งที่มา {u0_pll450m|iopll_0|tennm_pll|core_refclk} -divide_by 3 -multiply_by 12 -duty_cycle 50.00 -มาสเตอร์ {clk1} { u0_pll450m|iopll_0|tennm_pll|outclk[1] } -add
set_clock_groups -exclusive -group {u0|iopll_0_outclk0} -กลุ่ม {u1|iopll_0_outclk0}
คุณสามารถหาชื่อโหนดที่ถูกต้องได้ในตัวค้นหาโหนด และพารามิเตอร์ตัวแบ่งและตัวคูณจากการกําหนดค่า PLL