ในอินเทอร์เฟซเอาต์พุตซิงโครนัสต้นทาง FPGAจะส่งสัญญาณนาฬิกาสําหรับอุปกรณ์ปลายทาง ในส่วนต่อประสานซอร์สซิงโครนัสที่ปรับให้ชิดขอบ การเปลี่ยนนาฬิกาจะเกิดขึ้นในเวลาเดียวกันกับการเปลี่ยนข้อมูล รูปภาพที่ 1 แสดงอินเทอร์เฟซเอาต์พุตซิงโครนัสต้นทางตัวอย่าง
ใช้ขั้นตอนต่อไปนี้เพื่อจํากัดอินเทอร์เฟซเอาต์พุตซิงโครนัสที่ปรับให้สอดคล้องกับ Edge:
- สร้างนาฬิกาพื้นฐานและที่สร้างขึ้น
- เพิ่มข้อจํากัดความล่าช้าของเอาต์พุต
- เพิ่มข้อยกเว้นพาธเท็จเพื่อแยกพาธที่ไม่ถูกต้องออกจากการวิเคราะห์และการรายงานเวลา
สําหรับรายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนเหล่านี้ หรือการคํานวณและข้อจํากัดที่อธิบายไว้ด้านล่าง โปรดดูข้อจํากัดและการวิเคราะห์ Source-Synchronous Interfaces (PDF)
นาฬิกา
ต้องระบุสัญญาณนาฬิกาฐานบนพอร์ตอินพุตของFPGA
ต้องระบุนาฬิกาที่สร้างขึ้นบนเอาต์พุตลูปแบบล็อกเฟส (PLL) ทั้งหมด เอาต์พุตซิงโครนัสที่จัดให้มีอัตราข้อมูลเป็นสองเท่าของ Edge จะปรับสัญญาณนาฬิกาเอาต์พุตให้สอดคล้องกับสัญญาณนาฬิกาข้อมูล
ต้องระบุนาฬิกาที่สร้างขึ้นบนพอร์ตนาฬิกาเอาต์พุตของFPGA นาฬิกาที่สร้างขึ้นคือข้อมูลอ้างอิงสัญญาณนาฬิกาสําหรับค่าความล่าช้าของเอาต์พุตสําหรับบัสข้อมูล
ข้อจํากัดความล่าช้าของเอาต์พุต
คุณสามารถใช้ข้อมูลจําเพาะการเบลอสูงสุดเพื่อคํานวณค่าความล่าช้าของเอาต์พุต ข้อมูลจําเพาะการเบลอสูงสุดแสดงถึงความผันแปรของเวลาที่อนุญาตสําหรับแต่ละบิตของบัสข้อมูลเพื่อไม่ให้FPGA
ค่าความล่าช้าสูงสุดของเอาต์พุตคือระยะเวลาสัญญาณนาฬิกา - ค่าการเบลอสูงสุด
ค่าความหน่วงต่ําสุดของเอาต์พุตคือค่าการเบลอสูงสุด
ข้อยกเว้นพาธเท็จ
ในตัวอย่างที่ Edge-aligned นี้ ข้อมูลจะถูกถ่ายโอนตามทรานซิชันที่เพิ่มขึ้นและลดลง และการเปลี่ยนผ่านของนาฬิกาปลายทาง ใช้ข้อยกเว้นพาธเท็จเพื่อลดการเปลี่ยนผ่านนาฬิกาที่เพิ่มขึ้นและลดลง เนื่องจากข้อมูลจะไม่ถูกถ่ายโอนในการเปลี่ยนผ่านนาฬิกาบนขอบตรงข้าม
ไฟล์ SDC ตัวอย่าง
# สร้างสัญญาณนาฬิกาฐานบนพอร์ตอินพุตของFPGA ด้วยระยะเวลา 10 ns create_clock -name input_clock -period 10 [get_ports clk_in] # สร้างสัญญาณนาฬิกาที่สร้างขึ้นบนเอาต์พุต PLL # Output clk[0] จะขับเคลื่อนพอร์ต สัญญาณนาฬิกาเอาต์พุต create_generated_clock -name data_clock -source [get_pins pll|inclk[0]] \ [get_pins pll|clk[0]] create_generated_clock -name clock_clock -source [get_pins pll|inclk[0] \ [get_pins pll|clk[1]] # สร้างนาฬิกาที่สร้างขึ้นบนพอร์ตนาฬิกาเอาต์พุตของcreate_generated_clock FPGA -name output_clock -source [get_pins pll|clk[1]] \ [get_ports clk_out] # เพิ่มข้อจํากัดการหน่วงเวลาเอาต์พุตสูงสุดและต่ําสุด # โดยที่ข้อกําหนดของความเร็วที่ +/- 250ps # ใช้สมการสําหรับค่าหน่วงเวลาเอาต์พุตที่แสดงอยู่เหนือ output_clock set_output_delay -max -clock [expr { 10 - 0.250 }] \ [get_ports data_out*] set_output_delay -max -clock output_clock -clock_fall \ [expr { 10 - 0.250 }] [get_ports data_out*] -add set_output_delay -min -output_clock 0.250 [get_ports data_out*] set_output_delay -min -clock output_clock -clock_fall 0.250 \ [get_ports data_out*] -add #เพิ่มข้อยกเว้นพาธเท็จสําหรับการถ่ายโอนข้ามนาฬิกา set_false_path -setup -end -rise_from [get_clocks data_clock] \ -fall_to [get_clocks output_clock] set_false_path -setup -end -fall_from [get_clocks data_clock] \ -rise_to [get_clocks output_clock] set_false_path -hold -end -end -rise_from [get_clocks data_clock] \ -fall_to [get_clocks output_clock] set_false_path -hold -end -fall_from [get_clocks data_clock] \ -rise_to [get_clocks output_clock]