UVM में नए () और create () में क्या अंतर है? वे निर्माणकर्ताओं से कैसे अलग हैं?


जवाब 1:

new () SystemVerilog में देशी कंस्ट्रक्टर फ़ंक्शन है, और यह UVM विशिष्ट नहीं है। आपको एसवी-विशिष्ट वर्गों जैसे कि मेलबॉक्स और सेमाफोर के साथ उपयोग करने की आवश्यकता है।

create () एक फैक्ट्री मेथड है जिसका उपयोग uvm_object और uvm_component से ली गई कक्षाओं के निर्माण के लिए किया जाता है जब स्ट्रेटएमएम के साथ होता है। फंक्शन क्रिएट () के कुछ फायदे हैं लेकिन उपयोग और सेटअप के लिए यह थोड़ा अधिक जटिल है। यह केवल तभी काम करता है जब कोई वर्ग कारखाने के साथ पंजीकृत किया गया हो, सामान्य रूप से UVM मैक्रोज़ uvm_component_utils… और uvm_object_utils… का उपयोग करके। क्रिएट () का उपयोग करते समय, रनटाइम पर निर्मित प्रकार को ओवरराइड करना संभव है और इस प्रकार एक अन्य प्रकार की वस्तु बना सकते हैं। नए () के साथ यह संभव नहीं है।

जब तक आप वास्तव में नहीं चाहते कि कोई व्यक्ति ओवरराइड्स का उपयोग करने से रोके, आप डिफ़ॉल्ट रूप से क्रिएट () का उपयोग कर सकते हैं, और केवल नए () का उपयोग कर सकते हैं यदि आपके पास ऐसा करने के लिए बहुत अच्छा कारण है, या यदि आप गैर-यूवीएम ऑब्जेक्ट बना रहे हैं।