ปัญหาสำคัญ
เนื่องจากปัญหาในซอฟต์แวร์ Intel® Quartus® Prime Pro เวอร์ชัน 22.3 และรุ่นก่อนหน้า คุณอาจเห็นลูปที่ได้รับรายงานสําหรับหน่วยความจําที่มีฟังก์ชั่นการเปิดใช้งานการอ่านซึ่งถูกนําไปใช้ใน MLAB โดยหนึ่งในวิธีการรายงานต่อไปนี้:
- การเตือน "พบการวนรอบแบบผสมของโหนด *" ในรายงาน Timing Analyzer
- การละเมิดกฎ "LNT-30011 - การออกแบบมี Combinational Loops" ในรายงานผู้ช่วยออกแบบ (สังเคราะห์)
- การละเมิดกฎ "TMC-20017 - ตรวจพบลูป" ในรายงานผู้ช่วยออกแบบ (Signoff)
- "Loops" รายงานเมื่อรันรายงาน "check_timing" ใน Timing Analyzer
- คําเตือน "โหนด: * ถูกพบว่าเป็นนาฬิกา แต่ไม่พบการมอบหมายนาฬิกาที่เกี่ยวข้อง" ในรายงาน Timing Analyzer
ลูปที่รายงานเป็นผลมาจากแลตช์ที่กําลังปรับใช้บนเอาต์พุตของ MLAB เพื่อรองรับฟังก์ชันการอ่าน แลตช์นี้ไม่ได้รับการวิเคราะห์เวลาอย่างถูกต้อง ซึ่งส่งผลให้ไม่สามารถรับประกันฟังก์ชันการทํางานในฮาร์ดแวร์ได้
ปัญหานี้อาจเกิดขึ้นสําหรับลักษณะการใช้งานหน่วยความจําต่อไปนี้ ซึ่งวางอยู่ในบล็อกหน่วยความจํา MLAB:
- โค้ด RTL ที่อนุมานหน่วยความจําโดยตรงที่มีฟังก์ชันการอ่านเปิดใช้งาน
- การสร้างอินสแตนซ์หน่วยความจําโดยตรง รวมถึงการเปิดใช้งานการอ่านและการตั้งค่า ram_block_type ของ MLAB หรือ AUTO
เมื่อต้องการหลีกเลี่ยงปัญหานี้ ให้เลือก ทํา อย่างใดอย่าง หนึ่งต่อไปนี้
- หลีกเลี่ยงการใช้ฟังก์ชันการใช้งานการอ่าน
- สําหรับหน่วยความจําแบบอนุมาน RTL ให้ใช้ แอตทริบิวต์ ramstyle เพื่อบังคับให้หน่วยความจําเข้าสู่บล็อกหน่วยความจํา M20K
- สําหรับการสร้างอินสแตนซ์หน่วยความจําโดยตรง ให้ ตั้งค่า ram_block_type เป็น M20K
- ใช้การกําหนด QSF ต่อไปนี้เพื่อป้องกันการแมปจากหน่วยความจํา M20K ไปยัง MLABs: "set_global_assignment -name BLOCK_RAM_TO_MLAB_CELL_CONVERSION OFF"
ปัญหานี้ถูกกําหนดให้ได้รับการแก้ไขในรุ่นอนาคตของซอฟต์แวร์ Intel® Quartus® Prime Pro Edition