एक FPGA डिजाइन के क्षेत्रों की पहचान कैसे करें जो सबसे अधिक संसाधनों और क्षेत्र का उपयोग करते हैं?


11

मैं एक बड़े FPGA डिजाइन पर काम कर रहा हूं, और मैं FPGA की संसाधन सीमाओं के बहुत करीब हूं, जिसका मैं वर्तमान में उपयोग कर रहा हूं, CSG225 पैकेज में Xilinx LX16।

डिजाइन भी लगभग पूरा हो गया है, हालांकि फिलहाल यह FPGA में फिट नहीं होगा। मैं इसे प्राप्त करने के लिए भागों को बंद कर सकता हूं, हालांकि मुझे डिज़ाइन को पूरा करने के लिए संसाधन उपयोग को कम करना होगा और समय और आकार की आवश्यकताओं को पूरा करना होगा।

मैं जानना चाहूंगा कि क्या कोई उपकरण हमारी रिपोर्ट है जो मुझे यह पहचानने में मदद कर सकता है कि मेरे डिजाइन के कौन से हिस्से सबसे अधिक संसाधनों का उपभोग कर रहे हैं। मेरे डिजाइन का विभाजन नहीं किया गया है, और लगभग एक दर्जन या अधिक वीएचडीएल मॉड्यूलों में विभाजित किया गया है।

Xilinx की टाइमिंग रिपोर्ट शानदार है, लेकिन अब मुझे यह जानने की जरूरत है कि मैं अंतरिक्ष की बचत के मामले में अपना सबसे अच्छा बैंग-फॉर-बक कहां प्राप्त कर सकता हूं।

मेरे पास यह बताने में कठिन समय है कि मैं किस प्रकार के संसाधनों से बाहर चल रहा हूं, या उन संसाधनों पर क्या प्रभाव पड़ता है।

एक और झुंझलाहट यह है कि जैसे-जैसे डिज़ाइन बड़ा होता जाता है, समय को पूरा करने के लिए उपयोग किए जाने वाले घटक विफल होने लगे हैं क्योंकि उनका स्थान अब आदर्श नहीं है।

वर्तमान में, मैं पोस्ट-प्लेस और रूट स्टेटिक टाइमिंग रिपोर्ट का उपयोग करता हूं, और मैं स्मार्टप्लेपर का उपयोग करता हूं। मैं समय के लिए अनुकूलित करने के लिए डिज़ाइन रणनीतियों का उपयोग कर रहा हूं।

इसे फिट करने के लिए मेरे डिज़ाइन के कुछ हिस्सों को बंद करने के बाद, यहाँ कुछ परिणाम दिए गए हैं:

स्लाइस रजिस्टर उपयोग: 42% स्लाइस LUT उपयोग: 96% पूरी तरह से इस्तेमाल LUT-FF जोड़े की संख्या: 38% क्या इसका मतलब है कि मैं रजिस्टरों पर हल्का हूं, लेकिन गेट उपयोग पर भारी है?

क्या क्षेत्र के लिए डेवलपर्स को अनुकूलित करने में मदद करने के लिए उपकरण हैं, या कम से कम उन्हें अपने कोड में अधिक जानकारी देने के लिए?

अपडेट: मॉड्यूल लेवल यूटिलाइजेशन को देखने के बाद, मुझे पता चला कि मेरे पास पूरे एलयूएस में लगभग 30% तक जगह लेने के लिए छोटे गोंद async फीफो हैं। मैं उन्हें उच्च गति बसों के लिए क्रॉस-क्लॉक-डोमेन गोंद के रूप में उपयोग कर रहा हूं। मुझे इन को खत्म करने में सक्षम होना चाहिए, क्योंकि घड़ियां कसकर संबंधित हैं। (120 मेगाहर्ट्ज इनपुट, डीसीएम के माध्यम से 100 मेगाहर्ट्ज और 200 मेगाहर्ट्ज का उत्पादन करता है)


ऐसा लगता है कि आपके पास संकेतों के बीच बहुत अधिक अंतर है, मुझे यकीन है कि आप अनुकूलन, संसाधन साझा करने और इस तरह के स्तर को बदलकर ठीक कर सकते हैं। आप किस उपकरण का उपयोग कर रहे हैं? ISE या विवाडो?
फरहाद

1
मैं आईएसई का उपयोग कर रहा हूं (विवाडो स्पार्टन -6 का समर्थन नहीं करेगा) मैंने इसे एक्सिलिंक्स मंचों में क्रॉस-पोस्ट किया, और उन्होंने विस्तृत मानचित्र रिपोर्ट चालू करने के लिए कहा। मैंने ऐसा किया, और * .mrp फ़ाइल में अब धारा 13 है - पदानुक्रम द्वारा उपयोग। एक बार जब मैं इसे बेहतर स्वरूपित कर लूंगा तो मैं डेटा पोस्ट करूंगा।
मार्कस १०१०११ १ '

जवाबों:


5

मैंने इस प्रश्न को Xilinx फोरम पर यहाँ पोस्ट किया है: http://forums.xilinx.com/t5/I क्रियान्वयन/ How-to-determine-what-part-of-the-design-consumes-the-most /td-p / 393,247

यह जवाब काफी हद तक वहां की टिप्पणियों पर आधारित है। दीपिका, सिकता और गैबोर का धन्यवाद।

सबसे पहले, मानचित्र प्रक्रिया गुणों (-detail) में 'विस्तृत विस्तृत एमएपी रिपोर्ट' सक्षम करें।

फिर, डिज़ाइन सारांश खोलें, और मॉड्यूल स्तर उपयोग के लिए नेविगेट करें। यहाँ पूरी पदानुक्रम है, अनन्य और समावेशी डिजाइन उपयोग दिखा रहा है।

प्रत्येक पंक्ति 0/5392 जैसी संख्या जोड़ी दिखाएगी। इसका मतलब यह है कि उस मॉड्यूल में उस विशिष्ट तत्व का शून्य होता है, लेकिन उस मॉड्यूल और उसके सभी उप-मॉड्यूलों में कुल 5392 तत्व होते हैं।

यहाँ मेरा आउटपुट (आंशिक रूप से विस्तारित) है उपयोग की रिपोर्ट

आकार को कम करने पर काम करते समय, गैबोर एक बड़े FPGA को संश्लेषित टूल में बदलने की सलाह देते हैं ताकि यह पूरी तरह से तब भी मैप हो सके जब यह आपके वर्तमान FPGA में फिट होने के लिए बहुत बड़ा हो, और यह टूल को तेज़ी से चलाने देगा।


3

लगता है कि आप लगभग सभी लॉजिक संसाधनों का उपयोग कर रहे हैं, जबकि केवल रजिस्टरों का आधा उपयोग कर रहे हैं। ऐसा लगता है कि आपको यह पता लगाने की आवश्यकता है कि आपके सभी LUT क्या खा रहे हैं। विशेष घटकों को अनुकूलित करने और उन्हें थोड़ा और अधिक कुशल बनाने के तरीके हैं - रैम, शिफ्ट रजिस्टर और राज्य मशीन जैसी चीजें। सिंथेसाइज़र से परिणामी .log फ़ाइल को देखें। यह आपको बताएगा कि किस तरह के घटकों का अनुमान लगाया जा रहा है। सुनिश्चित करें कि यह घटकों को ठीक से संदर्भित कर रहा है। यदि ऐसा नहीं है, तो यह विशेष रूप से कुशल नेटलिस्ट उत्पन्न नहीं कर सकता है। आप केवल संश्लेषण लॉग फ़ाइलों को देखकर बहुत कुछ बता सकते हैं। यह संभव है कि आपके कोड में कुछ मामूली बदलाव सिंथेसाइज़र को विभिन्न घटकों का अनुमान लगाने की अनुमति दें, इसलिए कुछ टेम्पलेट के लिए सिंथेसाइज़र मैनुअल पर एक नज़र डालें। आपको गति के बजाय क्षेत्र के लिए अनुकूलन करने के लिए सिंथेसाइज़र को स्विच करना पड़ सकता है। इसके अलावा, यह सुनिश्चित करने के लिए जांचें कि आपके पास कोई बंद सेटिंग नहीं है। मैंने एक बार एक डिज़ाइन घटक को संश्लेषित करने की कोशिश की, जिसमें एक वीरटेक्स 6 एचएक्सटी ५६५ (३५४,२४० ६-इनपुट ६-एलयूटी / ड्युअल एफएफ जोड़े, ३२ के लिए ४०% स्पार्टन ३ ई ५०० (९ ३१२ ४-इनपुट एलयूटी / एफएफ जोड़े, ५.६ केबी ब्लॉक रैम) का सेवन किया गया था) एमबी ब्लॉक रैम)। Xilinx बराबर होने में 7 घंटे का समय लगा और लगभग 40% चिप लगी। ?!?!?!? अवर ब्लॉक रैम को बंद कर दिया गया, और सिंथेसाइज़र ने कई KB RAM को LUT में बदल दिया। सबसे कुशल निर्णय कभी नहीं। सेटिंग बदलने के बाद, यह चिप के 1% की तरह उठा। जाओ पता लगाओ। वीरटेक्स 6 एचएक्सटी 565 (354,240 6-इनपुट एलयूटी / दोहरी एफएफ जोड़े, 32 एमबी ब्लॉक रैम) के लिए 312 4-इनपुट एलयूटी / एफएफ जोड़े, 5.6 केबी ब्लॉक रैम)। Xilinx बराबर होने में 7 घंटे का समय लगा और लगभग 40% चिप लगी। ?!?!?!? अवर ब्लॉक रैम को बंद कर दिया गया, और सिंथेसाइज़र ने कई KB RAM को LUT में बदल दिया। सबसे कुशल निर्णय कभी नहीं। सेटिंग बदलने के बाद, यह चिप के 1% की तरह उठा। जाओ पता लगाओ। वीरटेक्स 6 एचएक्सटी 565 (354,240 6-इनपुट एलयूटी / दोहरी एफएफ जोड़े, 32 एमबी ब्लॉक रैम) के लिए 312 4-इनपुट एलयूटी / एफएफ जोड़े, 5.6 केबी ब्लॉक रैम)। Xilinx बराबर होने में 7 घंटे का समय लगा और लगभग 40% चिप लगी। ?!?!?!? अवर ब्लॉक रैम को बंद कर दिया गया, और सिंथेसाइज़र ने कई KB RAM को LUT में बदल दिया। सबसे कुशल निर्णय कभी नहीं। सेटिंग बदलने के बाद, यह चिप के 1% की तरह उठा। जाओ पता लगाओ।


3

यह उपकरण आउटपुट से पूरे 'संसाधन उपयोग' अनुभाग को पोस्ट करने योग्य होगा।

क्या आप सभी ब्लॉक रैम का उपयोग करते हैं? यदि डोमेन पर्याप्त रूप से प्रतिबंधित है, तो समतुल्य रैम लुक-अप तालिकाओं के साथ तर्क / गणित कार्यों को बदलने में सक्षम होना आम है, और वे पूर्व-गणना योग्य होने के लिए पर्याप्त जटिलता के हैं।

साथ ही याददाश्त की कमी, मल्टीप्लायरों के लिए भी यही बात लागू होती है। कभी-कभी अनुशंसित तात्कालिकता टेम्पलेट से एक छोटा विचलन डीएसपी 48 एए इकाइयों के गुणक को बाहर निकाल सकता है।

यदि आप PCIe नियंत्रक का उपयोग कर रहे हैं, तो क्या आप TLP पेलोड, या अधिकतम TLP पैकेट आकार के लिए आरक्षित कुल बफर स्थान को कम कर सकते हैं? हालांकि यह आईपी-कोर के रैम / लॉजिक उपयोग को कम कर सकता है, हालांकि कुल-पुट / कुल बैंडविड्थ।

(Altera) Quartus के साथ, आप डिज़ाइन पदानुक्रम दृश्य में बहु-आइटम का चयन कर सकते हैं और वहां पोस्ट-पी एंड आर क्षेत्र उपयोग रंग कोडित / संकुल देख सकते हैं। यह आपके डिजाइन मॉड्यूल के सापेक्ष उपयोग का एक दृश्य विचार दे सकता है।


धन्यवाद। मैं मल्टीप्लायरों के लिए हार्ड आईपी मैक्रोज़ का उपयोग कर रहा हूं और मैंने एफआईएफओ बनाने के लिए कोरगेन का उपयोग किया है, हालांकि मैंने वितरित रैम (ब्लॉक रैम के बजाय) का उपयोग करने के लिए कुछ छोटे पोजोस का चयन किया। मैं उनके उपयोग पर ध्यान दूंगा।
Marcus10110
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.