วิธีการระบุพื้นที่ของการออกแบบ FPGA ที่ใช้ทรัพยากรและพื้นที่มากที่สุด


11

ฉันทำงานกับการออกแบบ FPGA ขนาดใหญ่และฉันอยู่ใกล้กับขีด จำกัด ทรัพยากรของ FPGA ที่ฉันใช้อยู่ในปัจจุบัน Xilinx LX16 ในแพ็คเกจ CSG225

การออกแบบก็เกือบจะเสร็จสมบูรณ์แล้วอย่างไรก็ตามในขณะนี้จะไม่เหมาะกับ FPGA อีกต่อไป ฉันสามารถปิดส่วนต่าง ๆ เพื่อให้มันเข้ากันได้ แต่ฉันต้องลดการใช้ทรัพยากรเพื่อที่จะทำให้การออกแบบเสร็จสมบูรณ์และมีความต้องการด้านเวลาและขนาด

ฉันต้องการทราบว่ามีเครื่องมือใดรายงานของเราที่สามารถช่วยฉันระบุว่าส่วนใดของการออกแบบของฉันใช้ทรัพยากรมากที่สุด การออกแบบของฉันไม่ได้ถูกแบ่งพาร์ติชันและแยกเป็นโมดูล VHDL มากกว่าหนึ่งโหลขึ้นไป

รายงานจังหวะเวลาของ Xilinx นั้นยอดเยี่ยม แต่ตอนนี้ฉันต้องรู้ว่าฉันจะหาเงินได้ดีที่สุดในแง่ของการประหยัดพื้นที่

ฉันยังมีเวลายากที่จะบอกว่าชนิดของทรัพยากรที่ฉันหมดหรือสิ่งที่มีผลต่อทรัพยากรเหล่านั้น

สิ่งที่น่ารำคาญอีกอย่างก็คือเมื่อการออกแบบมีขนาดใหญ่ขึ้นส่วนประกอบที่ใช้ในการกำหนดเวลาเริ่มล้มเหลวเนื่องจากการวางไม่เหมาะสม

ปัจจุบันฉันใช้รายงานช่วงเวลา Post-Place และ Route Static และฉันใช้ SmartXplorer ฉันใช้กลยุทธ์การออกแบบเพื่อปรับให้เหมาะกับเวลา

หลังจากปิดส่วนหนึ่งของการออกแบบของฉันเพื่อให้พอดีกับผลลัพธ์ต่อไปนี้คือบางส่วน:

การใช้การลงทะเบียน slice: 42% การใช้ LUT จำนวน 96% ของคู่ LUT-FF ที่ใช้งานอย่างเต็มรูปแบบ: 38% นี่หมายความว่าฉันเบาในการลงทะเบียน

มีเครื่องมือที่ช่วยให้นักพัฒนาเพิ่มประสิทธิภาพสำหรับพื้นที่หรืออย่างน้อยก็ให้ข้อมูลเชิงลึกเพิ่มเติมเกี่ยวกับรหัสของพวกเขา?

อัปเดต: หลังจากดูที่การใช้ประโยชน์ระดับโมดูลฉันพบว่าฉันมีกาวขนาดเล็ก async fifos ทั่วสถานที่ซึ่งใช้เวลาประมาณ 30% ของ LUT ทั้งหมด ฉันใช้มันเป็นกาวข้ามโดเมนสำหรับรถบัสความเร็วสูง ฉันควรกำจัดสิ่งเหล่านี้ได้เนื่องจากนาฬิกามีความสัมพันธ์กันแน่น (อินพุต 120 MHz สร้าง 100 MHz และ 200 MHz ผ่าน DCMs)


ดูเหมือนว่าคุณมีการเชื่อมต่อระหว่างสัญญาณจำนวนมากฉันแน่ใจว่าคุณสามารถแก้ไขได้โดยการเปลี่ยนระดับของการเพิ่มประสิทธิภาพการแบ่งปันทรัพยากรและอื่น ๆ คุณใช้เครื่องมืออะไร ISE หรือ Vivado
FarhadA

1
ฉันใช้ ISE (Vivado จะไม่สนับสนุน Spartan-6) ฉันโพสต์ข้อความนี้ในฟอรัม Xilinx และพวกเขาบอกว่าเปิดรายงานแผนที่โดยละเอียด ฉันทำสิ่งนี้และตอนนี้ไฟล์ * .mrp มีส่วนที่ 13 - การใช้ประโยชน์โดยลำดับชั้น ฉันจะโพสต์ข้อมูลเมื่อได้รับการจัดรูปแบบที่ดีขึ้นแล้ว
Marcus10110

คำตอบ:


5

ฉันข้ามโพสต์คำถามนี้ในฟอรัม Xilinx ที่นี่: http://forums.xilinx.com/t5/Implementation/How-to-determine-what-part-of-the-design-consumes-the-most/td-p / 393,247

คำตอบนี้ขึ้นอยู่กับความคิดเห็นเป็นส่วนใหญ่ ขอบคุณ Deepika, Sikta และ Gabor

ก่อนอื่นให้เปิดใช้งาน 'สร้างรายงานแผนที่โดยละเอียด' ในคุณสมบัติกระบวนการแผนที่ (-detail)

จากนั้นเปิดสรุปการออกแบบและไปที่การใช้ประโยชน์ระดับโมดูล นี่คือลำดับชั้นที่สมบูรณ์แสดงการใช้ประโยชน์จากการออกแบบที่พิเศษและรวม

แต่ละบรรทัดจะแสดงหมายเลขคู่เช่น 0/5392 ซึ่งหมายความว่าโมดูลนั้นมีศูนย์ขององค์ประกอบเฉพาะนั้น แต่โมดูลนั้นและโมดูลย่อยทั้งหมดมีองค์ประกอบทั้งหมด 5392 องค์ประกอบ

นี่คือผลลัพธ์ของฉัน (ขยายบางส่วน) รายงานการใช้ประโยชน์

เมื่อทำงานเกี่ยวกับการลดขนาด Gabor แนะนำให้เปลี่ยนเป็น FPGA ที่ใหญ่กว่าในเครื่องมือ synth เพื่อให้สามารถแมปได้อย่างสมบูรณ์แม้ว่ามันจะใหญ่เกินไปที่จะพอดีกับ FPGA ปัจจุบันของคุณและมันจะทำให้เครื่องมือทำงานได้เร็วขึ้น


3

ดูเหมือนว่าคุณกำลังใช้ทรัพยากรตรรกะเกือบทั้งหมดในขณะที่ใช้เพียงครึ่งหนึ่งของการลงทะเบียน ดูเหมือนว่าคุณต้องเข้าใจว่า LUT ของคุณหมดไปหมดแล้ว มีวิธีในการปรับแต่งส่วนประกอบเฉพาะและทำให้มีพื้นที่ว่างเพิ่มขึ้นเล็กน้อย - เช่น RAM, shift register และ state machine ดูที่ไฟล์. log ที่ได้จากเครื่องสังเคราะห์เสียง มันจะบอกคุณว่าองค์ประกอบของการอนุมาน ตรวจสอบให้แน่ใจว่ามีการอนุมานส่วนประกอบอย่างถูกต้อง หากไม่เป็นเช่นนั้นก็อาจจะไม่สร้าง netlist ที่มีประสิทธิภาพเป็นพิเศษ คุณสามารถบอกได้มากมายโดยดูจากไฟล์บันทึกการสังเคราะห์ มีความเป็นไปได้ที่การเปลี่ยนแปลงเล็กน้อยในโค้ดของคุณจะทำให้ซินธิไซเซอร์สามารถสรุปส่วนประกอบต่าง ๆ ได้ดังนั้นลองดูที่คู่มือซินธิไซเซอร์สำหรับเทมเพลตบางตัว คุณอาจต้องเปลี่ยนซินธิไซเซอร์เพื่อปรับพื้นที่ให้เหมาะสมแทนความเร็ว ตรวจสอบเพื่อให้แน่ใจว่าคุณไม่ได้ปิดการตั้งค่าใด ๆ ฉันเคยพยายามที่จะสังเคราะห์องค์ประกอบการออกแบบที่ใช้ 40% ของคู่ Spartan 3E 500 (คู่ LUT / FF 4, อินพุต 9,312 4, 5.6 KB บล็อก RAM) สำหรับ Virtex 6 HXT 565 (354,240 6 คู่อินพุต LUT / คู่ FF, 32 MB block RAM) ใช้เวลา 7 ชั่วโมงในการทำให้เสร็จสมบูรณ์และใช้เวลาถึง 40% ของชิป ?!?!?!? เปิดใช้งาน RAM บล็อกที่อนุมานถูกปิดใช้งานและซินธิไซเซอร์เปลี่ยน RAM หลาย KB เป็น LUT ไม่ใช่การตัดสินใจที่มีประสิทธิภาพที่สุดเท่าที่เคยมีมา หลังจากเปลี่ยนการตั้งค่ามันใช้เวลาประมาณ 1% ของชิป ไปคิด 312 คู่ LUT / FF 4-input, 5.6 KB block RAM) สำหรับ Virtex 6 HXT 565 (354,240 6-input LUT / คู่ FF คู่, RAM บล็อก 32 MB) ใช้เวลา 7 ชั่วโมงในการทำให้เสร็จสมบูรณ์และใช้เวลาถึง 40% ของชิป ?!?!?!? เปิดใช้งาน RAM บล็อกที่อนุมานถูกปิดใช้งานและซินธิไซเซอร์เปลี่ยน RAM หลาย KB เป็น LUT ไม่ใช่การตัดสินใจที่มีประสิทธิภาพที่สุดเท่าที่เคยมีมา หลังจากเปลี่ยนการตั้งค่ามันใช้เวลาประมาณ 1% ของชิป ไปคิด 312 คู่ LUT / FF 4-input, 5.6 KB block RAM) สำหรับ Virtex 6 HXT 565 (354,240 6-input LUT / คู่ FF คู่, RAM บล็อก 32 MB) ใช้เวลา 7 ชั่วโมงในการทำให้เสร็จสมบูรณ์และใช้เวลาถึง 40% ของชิป ?!?!?!? เปิดใช้งาน RAM บล็อกที่อนุมานถูกปิดใช้งานและซินธิไซเซอร์เปลี่ยน RAM หลาย KB เป็น LUT ไม่ใช่การตัดสินใจที่มีประสิทธิภาพที่สุดเท่าที่เคยมีมา หลังจากเปลี่ยนการตั้งค่ามันใช้เวลาประมาณ 1% ของชิป ไปคิด


3

การโพสต์ส่วน 'การใช้ทรัพยากร' ทั้งหมดจะคุ้มค่าจากผลลัพธ์ของเครื่องมือ

คุณใช้ Block RAM ทั้งหมดหรือไม่ เป็นเรื่องปกติที่จะสามารถแทนที่ฟังก์ชันลอจิก / คณิตศาสตร์ด้วยตารางการค้นหา RAM ที่เทียบเท่ากันหากโดเมนนั้นถูก จำกัด อย่างเพียงพอและมีความซับซ้อนเพียงพอที่จะคำนวณล่วงหน้าได้อย่างคุ้มค่า

เช่นเดียวกับการอนุมานของหน่วยความจำเช่นเดียวกับตัวคูณ บางครั้งการเบี่ยงเบนเล็กน้อยจากเทมเพลตการสร้างอินสแตนซ์ที่แนะนำอาจส่งผลให้ตัวคูณถูกอ้างถึงในหน่วย DSP48A

หากคุณใช้คอนโทรลเลอร์ PCIe คุณสามารถลดพื้นที่บัฟเฟอร์ทั้งหมดที่สงวนไว้สำหรับ TLP payloads หรือขนาดแพ็คเก็ต TLP สูงสุดได้หรือไม่ สิ่งนี้สามารถลดการใช้ RAM / ตรรกะของแกน IP ในราคาแบนด์วิดท์ที่วางได้ทั้งหมด

ด้วย (Altera) Quartus คุณสามารถเลือกได้หลายรายการในมุมมองลำดับชั้นการออกแบบและดูว่ามีการใช้สีในพื้นที่หลังการใช้รหัส / คลัสเตอร์ สิ่งนี้สามารถทำให้เห็นภาพการใช้สัมพัทธ์ของโมดูลการออกแบบของคุณ


ขอบคุณ ฉันใช้มาโคร IP อย่างหนักสำหรับตัวคูณและฉันใช้ CoreGen เพื่อสร้าง FIFO แม้ว่าฉันจะเลือก Fifos เล็ก ๆ บางส่วนเพื่อใช้ RAM แบบกระจาย (แทนที่จะเป็น RAM บล็อก) ฉันจะดูการใช้งานของพวกเขา
Marcus10110
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.