เนื่องจากข้อจํากัดด้านเวลาแบบฝังไม่ถูกต้อง คุณอาจพบพฤติกรรม IP DCFIFO ที่ไม่ถูกต้องในฮาร์ดแวร์
ข้อจํากัดด้านเวลาที่ผิดพลาด (ซึ่งมีอยู่ในโค้ด DCFIFO) จะตั้งค่าการมอบหมายfalse_pathสําหรับการถ่ายโอนรหัสสีเทาระหว่างโดเมนการอ่านและเขียนสัญญาณนาฬิกาไม่ถูกต้อง
แม้ว่าความล้มเหลวของฮาร์ดแวร์จะไม่ค่อยมีมากนัก แต่ก็เป็นไปได้ที่การบิดเบี้ยวระหว่างการถ่ายโอนโดเมนที่มีรหัสเป็นสีเทาเหล่านี้อาจมีขนาดใหญ่พอที่ความเสียหายนั้นอาจเกิดขึ้นในโดเมนสัญญาณนาฬิการับสัญญาณ
ความน่าจะเป็นของความล้มเหลวของฮาร์ดแวร์จะเพิ่มขึ้นเมื่อการใช้ตรรกะและอัตราสัญญาณนาฬิกา DCFIFO เพิ่มขึ้น
หากการออกแบบของคุณได้รับผลกระทบ Alteraแนะนําวิธีแก้ไขปัญหาต่อไปนี้ โปรดทราบว่าการอัปเกรดเป็นซอฟต์แวร์ Quartus® Prime v15.1 และเป็นต้นไปจําเป็นสําหรับการแก้ไขปัญหา การแก้ไขปัญหานี้ใช้ได้กับตระกูลอุปกรณ์ด้านล่างเท่านั้น:
• Cyclone® V
• Arria® II GX
• Arria V และ Arria V GZ
• Stratix® IV
• Stratix V
• MAX® 10
โปรดทําตามขั้นตอนด้านล่างเพื่อจํากัดอย่างถูกต้องและเพิ่มประสิทธิภาพการถ่ายโอนโดเมนที่มีรหัสเป็นสีเทา:
1) ใช้การบ้านต่อไปนี้ในไฟล์การตั้งค่า Quartus Prime (.qsf):
เปิดset_global_assignment -name DISABLE_EMBEDDED_TIMING_CONSTRAINT
2) ตรวจสอบว่าไม่มีผู้ใช้สร้างclock_groupsหรือfalse_pathงานเพื่อลดการกําหนดเวลาสําหรับเส้นทางที่ข้ามโดเมนนาฬิกาเหล่านี้
ใช้รายงาน "report_clock_transfers" เพื่อระบุว่ามีการกําหนดfalse_pathสําหรับการข้ามโดเมนนาฬิกาหรือไม่
3) ใช้ข้อจํากัดด้านเวลาต่อไปนี้:
สําหรับ DCFIFO ลําดับชั้นของ = |dcfifo_component|*auto_generated
สําหรับ DCFIFO ที่มีความกว้างผสม ลําดับชั้นของ = |dcfifo_mixed_widths_component|*auto_generated
ตั้งค่าfrom_node_rdptr_list [get_keepers |rdptr_g*]
ตั้งค่าto_node_rdptr_list [ลําดับชั้นของ get_keepers |ws_dgrp|dffpipe*|dffe*]
set_max_skew -from $from_node_rdptr_list -to $to_node_rdptr_list -get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -from $from_node_rdptr_list -ไปยัง $to_node_rdptr_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -from $from_node_rdptr_list -ไปยัง $to_node_rdptr_list 100
set_min_delay -from $from_node_rdptr_list -ไปยัง $to_node_rdptr_list -100
ตั้งค่าfrom_node_wrptr_list [get_keepers |delayed_wrptr_g*]
ตั้งค่าto_node_wrptr_list [ลําดับชั้นของ get_keepers |rs_dgwp|dffpipe*|dffe*]
set_max_skew -from $from_node_wrptr_list -ไปยัง $to_node_wrptr_list -get_skew_value_from_clock_period src_clock_period -skew_value_multiplier 0.8
set_net_delay -from $from_node_wrptr_list -ไปยัง $to_node_wrptr_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
set_max_delay -from $from_node_wrptr_list -ไปยัง $to_node_wrptr_list 100
set_min_delay -from $from_node_wrptr_list -ไปยัง $to_node_wrptr_list -100
ตั้งค่าfrom_node_mstable_ws_list [ลําดับชั้นของ get_keepers |ws_dgrp|dffpipe*|dffe*]
ตั้งค่าto_node_mstable_ws_list [ลําดับชั้นของ get_keepers |ws_dgrp|dffpipe*|dffe*]
set_net_delay -from $from_node_mstable_ws_list -to $to_node_mstable_ws_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
ตั้งค่าfrom_node_mstable_rs_list [ลําดับชั้นของ get_keepers |rs_dgwp|dffpipe*|dffe*]
ตั้งค่าto_node_mstable_rs_list [ลําดับชั้นของ get_keepers |rs_dgwp|dffpipe*|dffe*]
set_net_delay -from $from_node_mstable_rs_list -to $to_node_mstable_rs_list -max -get_value_from_clock_period dst_clock_period -value_multiplier 0.8
4) ใช้รายงานreport_max_skewและreport_net_delayใน TimeQuest II Timing Analyzer เพื่อตรวจสอบว่าการกําหนดเวลาถูกปิดแล้วหรือไม่
สําหรับอุปกรณ์ Arria 10 และเป็นต้นไป จะมีการตรวจสอบพารามิเตอร์ "สร้างไฟล์ SDC และปิดใช้งานข้อจํากัดด้านเวลาแบบฝัง" ภายใต้ส่วนข้อจํากัดการกําหนดเวลาตามค่าเริ่มต้น ซึ่งช่วยให้คุณสามารถข้ามข้อจํากัดด้านเวลาแบบฝังที่ใช้set_false_pathในการลงทะเบียนการซิงโครไนซ์ ไฟล์ SDC ที่กําหนดค่าได้โดยผู้ใช้จะถูกสร้างขึ้นโดยอัตโนมัติเมื่อ DCFIFO สร้างอินสแตนซ์จากแคตตาล็อก IP ข้อจํากัดด้านเวลาใหม่ประกอบด้วยset_net_delay set_max_skew set_min_delay และset_ max_delayถูกนํามาใช้เพื่อจํากัดการออกแบบอย่างถูกต้อง