एक नई कॉन्फ़िगरेशन प्रणाली - सेमीविकी के माध्यम से यूवीएम को तेज़ बनाना

एक नई कॉन्फ़िगरेशन प्रणाली - सेमीविकी के माध्यम से यूवीएम को तेज़ बनाना

स्रोत नोड: 3036575

यूनिवर्सल वेरिफिकेशन मेथडोलॉजी (UVM) SystemVerilog डिज़ाइन को सत्यापित करने में मदद करने का एक लोकप्रिय तरीका है, और इसमें शामिल है विन्यास प्रणाली दुर्भाग्य से इसमें गति और उपयोग संबंधी कुछ समस्याएं हैं। सीमेंस ईडीए के रिच एडेलमैन ने इन मुद्दों से कैसे बचा जाए इस विषय पर एक विस्तृत 20 पेज का पेपर लिखा है, और मैंने आपके लिए मुख्य बिंदुओं को संक्षेप में प्रस्तुत किया है। सत्यापन इंजीनियर मान निर्धारित करने के लिए, फिर बाद में अपने UVM परीक्षण में मान प्राप्त करने के लिए UVM कॉन्फ़िगरेशन डेटाबेस का उपयोग करते हैं। 'T' मान सेट करने और प्राप्त करने का एक उदाहरण है:

uvm_config#(T)::सेट(स्कोप, इंस्टेंस_पाथ_नाम, फ़ील्ड_नाम, वैल्यू); uvm_config#(T)::get(स्कोप, इंस्टेंस_पाथ_नाम, फ़ील्ड_नाम, वैल्यू);

यूवीएम टेस्टबेंच को परीक्षण के तहत डिवाइस से कनेक्ट करने पर वर्चुअल इंटरफेस को पास करने के लिए कॉन्फ़िगरेशन डेटाबेस का उपयोग किया जाता है। UVM कॉन्फ़िगरेशन का उपयोग करने में तीन समस्याएं हैं:

  • बड़ा कोड, कोड की लगभग 2,600 पंक्तियाँ
  • सटीक प्रकार मिलान की आवश्यकता है, इसलिए 'int' और 'बिट' समान नहीं हैं
  • धीमा कोड

धीमे कोड के मामले पर विचार करें, क्योंकि वाइल्डकार्ड वाले नामों का उपयोग करके सेट() पर हजारों कॉल के साथ 'सेट' और 'गेट' चरण को पूरा करने में 30 मिनट तक का समय लग सकता है।

बीता हुआ समय मि

रिच यूवीएम कॉन्फ़िगरेशन के लिए एक नया समाधान प्रस्तावित करता है जिसकी गति बहुत तेज़ है, इसकी तुलना में केवल कुछ सेकंड लगते हैं।

नया समाधान न्यूनतम

यदि आपका यूवीएम कोड वाइल्डकार्ड का उपयोग करने से बचता है और इसमें कुछ 'सेट' कमांड हैं, तो आपका कोड तेजी से चलेगा।

UVM कॉन्फ़िगरेशन समस्याओं के संभावित समाधान हैं:

  • इसके बजाय एक वैश्विक चर का प्रयोग करें
  • एक सेट के साथ UVM कॉन्फ़िगरेशन का उपयोग करें()
  • कुछ सेट के साथ UVM कॉन्फ़िगरेशन का उपयोग करें()
  • कॉन्फ़िगरेशन ट्री का उपयोग करें
  • कुछ अलग करने की कोशिश करो

कुछ अलग करने की कोशिश करने का आखिरी तरीका नया समाधान है, और यह सेट() और गेट() एपीआई का उपयोग करना जारी रखता है, फिर कॉन्फ़िगरेशन के पैरामीटराइजेशन को हटाकर सरल बनाता है, प्राथमिकता को हटा देता है, और लुकअप एल्गोरिदम परिवर्तन को हटा देता है। इस नए दृष्टिकोण के परिणाम तेज़ गति हैं।

आपका नया कॉन्फ़िगरेशन आइटम 'config_item' से व्युत्पन्न वर्ग में परिभाषित किया गया है, और नीचे दिया गया उदाहरण सेट की जा रही संपत्ति के रूप में 'int value' दिखाता है। डिबग उद्देश्यों के लिए आप प्रीटी-प्रिंट फ़ंक्शन जोड़ते हैं।

वर्ग my_special_config_item config_item का विस्तार करता है; फ़ंक्शन नया (स्ट्रिंग नाम = "my_special_config_item"); सुपर.न्यू(नाम); एंडफ़ंक्शन पूर्णांक मान; वर्चुअल फ़ंक्शन स्ट्रिंग Convert2string(); वापसी $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string()); एंडफ़ंक्शन एंडक्लास

'Config_item' में एक नाम विशेषता है, और इस नाम को देखा जाता है, साथ ही उदाहरण का नाम भी। कॉन्फ़िगरेशन ऑब्जेक्ट में नाम वापस करने के लिए get_name() फ़ंक्शन भी है। किसी भी "instance_name.field_name" को खोजने के लिए कॉन्फ़िगरेशन डेटाबेस तेज़ लुकअप और निर्माण गति के लिए एक सहयोगी सरणी का उपयोग करता है।
पता लगाने की क्षमता के लिए आप पता लगा सकते हैं कि किसने सेट किया या किसने गेट कहा, क्योंकि फ़ाइल नाम और लाइन नंबर सेट() और गेट() फ़ंक्शन कॉल में फ़ील्ड हैं।

सेट (शून्य, "top.ab*", "स्पीड", my_speed_config, `__FILE__, `__LINE__) प्राप्त करें (शून्य, "top.abcdmonitor1", "स्पीड", स्पीडकॉन्फिग, `__FILE__, `__LINE__)

एक्सेसर कतार को डिबग के दौरान मुद्रित किया जा सकता है यह देखने के लिए कि सेट() और गेट() को किसने कॉल किया है।

वाइल्डकार्ड का समर्थन करने के लिए कंटेनरों का उपयोग करके एक लुकअप तंत्र जोड़ना आवश्यक है। उदाहरण के नाम 'top.abcd*_0' पर विचार करें।

कंटेनर पेड़ मिन
कंटेनर वृक्ष

इंस्टेंस नाम के वाइल्डकार्ड भाग को एसोसिएटिव ऐरे के बजाय कंटेनर ट्री का उपयोग करके नियंत्रित किया जाता है।

सारांश

यूवीएम टेस्टबेंच में मॉड्यूल/इंस्टेंस और क्लास-आधारित दुनिया के बीच डेटा साझा करना यूवीएम कॉन्फ़िगरेशन डेटाबेस का उपयोग करके किया जा सकता है, बस गति धीमी होने के प्रति सचेत रहें। यदि आपकी कार्यप्रणाली बहुत सारे कॉन्फ़िगरेशन का उपयोग करती है, तो पेश किए गए नए दृष्टिकोण का उपयोग करने पर विचार करें जिसमें यूवीएम कॉन्फ़िगरेशन डेटाबेस फ़ाइल में कोड की 300 लाइनों के बजाय लगभग 2,600 लाइनों का उपयोग करने वाला पैकेज है।

पूरा 20 पेज का पेपर पढ़ें, कॉन्फ़िगरेशन पागलपन से बचने का आसान तरीका सीमेंस ईडीए में।

संबंधित ब्लॉग

इस पोस्ट को इसके माध्यम से साझा करें:

समय टिकट:

से अधिक सेमीविकी