वहाँ RTL के लिए पूर्णांकों का उपयोग कर के बारे में कुछ भी नहीं गलत है दर असल , लेकिन वहाँ कारण हैं कुछ से बचने के लिए यह है कि। यह वास्तव में व्यक्तिपरक "सर्वोत्तम अभ्यास" के बारे में एक सवाल है और आपको अंततः खुद को पता लगाना होगा कि आप क्या पसंद करते हैं। उस की मदद के रूप में, मैं इस पर अपने अनुभव और विचार साझा करूंगा।
मुख्य रूप से , मैं (विवश) पूर्णांक का उपयोग करने के पक्ष में हूं, जब संश्लेषण के लिए भी लिख रहा हूं। मैं कभी-कभी ऐसा करता हूं, लेकिन व्यवहार में , आमतौर पर मैं signed
और से चिपकता हूं unsigned
। मैं क्यों पर विस्तार से बताऊंगा।
आप वैसे भी अपने डिजाइन के हिस्से में एक सदिश डेटाटाइप्स का उपयोग करने के लिए मजबूर होंगे:
शायद ही कोई विक्रेता-आईपी या 3 पार्टी-आईपी integer
बंदरगाहों के लिए प्रकार का उपयोग करेगा
उदाहरण के लिए, ब्लॉकरैम के माध्यम से डेटा भेजते समय, भले ही आप इसका अनुमान लगाते हों और इसलिए कभी भी किसी भी आईपी / मैक्रो / आदिम को इंटरफ़ेस करने की आवश्यकता नहीं होती है, आपको सबसे अधिक वैसे भी सदिश प्रकार में बदलने की आवश्यकता होगी।
यहां तक कि अगर उपरोक्त में से कोई भी लागू नहीं होता है, तो आपको ज्यादातर कुछ बिंदु पर कुछ और करने के लिए इंटरफ़ेस करने की आवश्यकता होगी (एक शीर्ष-स्तरीय पोर्ट, यदि कुछ और नहीं)
चूंकि आप integer
पूर्ण डिजाइन के लिए उपयोग नहीं कर सकते हैं , आप इसे सभी को एक साथ छोड़ना चाह सकते हैं, क्योंकि:
कुछ बिंदुओं पर, आपको वैसे भी रूपांतरण करने की आवश्यकता होगी, और यह integer
पहली जगह में उपयोग करने के बिंदु से दूर ले जाता है
इसके अलावा, सिमुलेशन के लिए, इन रूपांतरणों को आम तौर पर 'U'
या 'X'
तो रीसेट करने से पहले या अन्य समयों के वैक्टर के साथ बुलाया जाएगा , और इस तरह के हर एक फ़ंक्शन कॉल पैकेज फ़ंक्शन से चेतावनी संदेश उत्पन्न करेगा, जो आपके सिमुलेशन चेतावनी / संकेत को अव्यवस्थित करेगा।
उपयोग की कमियांinteger
:
वेक्टरकृत प्रकारों के विपरीत, पूर्णांक नहीं होते हैं 'U'
और 'X'
; मुझे वे सिमुलेशन में बहुत मददगार लगते हैं। आप देखते हैं कि डिजाइन के माध्यम से कैसे अनइंस्टाल्यूट किए गए सिग्नल फैलते हैं, और यदि आप रीसेट के बाद बहुत सारे अनइंस्टाल्यूटेड सिग्नल देखते हैं तो आप शायद प्रतिक्रिया देंगे। पूर्णांक का उपयोग करते समय यह मामला नहीं होगा।
पूर्णांक के साथ, जोड़-तोड़ / मिलान के दौरान गलत तरीके से अनुकरण / संश्लेषण गलत मिलान का अधिक जोखिम होता है, जिसके परिणामस्वरूप अंडर-ओवरफ्लो होता है। (जैसा कि पहले ही किसी और ने बताया है।)
विशिष्ट मामले जहां मुझे integer
वास्तव में एक अच्छा विकल्प लगता है:
डीबग सिग्नल / काउंटर के लिए जिसे आप चिपस्कॉप / सिग्नलटैप आदि के माध्यम से मॉनिटर करते हैं।
पूरी तरह से काउंटरों का आंतरिक प्रतिनिधित्व, जो कभी भी आपके स्वयं के कोड में या बाहर नहीं जाते हैं। हां, ऐसे मामले हैं, जैसे यदि आप एक फीफो लिख रहे हैं और आप डेड-रेकिंग कर रहे हैं full
, तो सिग्नल बनाने के लिए लिखते हैं / पढ़ते हैं empty
, almostFull
आदि (हालांकि पॉइंटर्स पर अंकगणित इस मामले में डेड-रेकिंग से बेहतर तरीका है। ..)
मेरे अपने निष्कर्ष: मैं कभी-कभी पूर्णांक का उपयोग करता हूं, लेकिन संयम से, और अधिकतर ऊपर वर्णित मामलों में। मैं पूर्णांक का उपयोग करने के बजाय unsigned
और अधिक ओवरहेड नहीं देखता signed
, और इसलिए, आमतौर पर उनसे चिपक जाता है।