जवाबों:
व्यवहार कोड उच्च-स्तरीय है और आमतौर पर इसे संश्लेषित नहीं किया जा सकता है। लूप, देरी और "प्रारंभिक" स्टेटमेंट जैसे निर्माण व्यवहार हैं।
RTL कोड निचले स्तर का है और इसे संश्लेषित करने का इरादा है। यह एक सर्किट को इंटरकनेक्टेड रजिस्टरों के संयोजन के रूप में परिभाषित करता है और उन रजिस्टरों के बीच सिग्नल पर किए जाने वाले ऑपरेशन।
याहू उत्तर से लिया गया और तुरंत Google के साथ मिला!
"रजिस्टर ट्रांसफर लेवल" कोड रजिस्टरों और कॉम्बीनेटरियल लॉजिक के संदर्भ में वर्णित कोड है जो उनके बीच बैठता है और एक संश्लेषण उपकरण के इनपुट के रूप में उपयोग करने का इरादा रखता है। कोड भाषा के एक संश्लेषित सबसेट [1] से चिपक जाता है। कोई स्पष्ट देरी नहीं है, सभी समय घड़ी के किनारों के संदर्भ में है। स्तर पर ट्रिगर लैचेस का प्रतिनिधित्व करने वाली संरचनाएं आमतौर पर बच जाती हैं। रजिस्टरों को आम तौर पर घड़ियों की एक छोटी संख्या से देखा जाता है जिनका विवरण टाइमिंग विश्लेषक को दिया जा सकता है। कॉम्बीनेटरियल लॉजिक की उम्मीद आमतौर पर [2] एक एकल घड़ी चक्र के भीतर बसने के लिए होती है जो इसकी जटिलता को सीमित करता है। यह गेट स्तर के मॉडल की तुलना में उच्च स्तर है, लेकिन यह अभी भी परिभाषित करता है कि प्रत्येक घड़ी चक्र पर प्रत्येक रजिस्टर का क्या मूल्य है।
"व्यवहार" कोड आम तौर पर एक कोड है जो एक सिमुलेशन में उपयोग के लिए उच्च स्तर पर व्यवहार का वर्णन करता है, लेकिन इसका उद्देश्य सिंक्रनाइज़ करने योग्य नहीं है। यह एक सिमुलेशन में अपने डिजाइन के आसपास के वातावरण का वर्णन करने के लिए इस्तेमाल किया जा सकता है। व्यक्तिगत मॉड्यूल के विस्तृत RTL डिजाइन से आगे निकलने से पहले समग्र डिजाइन प्राप्त करने के लिए एक डिजाइन में एक प्रारंभिक कदम के रूप में इसका इस्तेमाल किया जा सकता है।
[१] सही उपसमुच्चय संश्लेषण उपकरणों के बीच भिन्न होता है।
[२] यदि यह सिमुलेशन और सिंथेसिस की तुलना में एक ही चक्र के भीतर नहीं बसता है, तो विभिन्न परिणाम दे सकते हैं और टाइमिंग एनालाइज़र उल्लंघन दिखाएगा जब तक कि यह स्पष्ट रूप से नहीं बताया जाता है।
एक अधिक सामान्यीकृत परिभाषा।
व्यवहार संहिता: परिभाषा के अनुसार यह एक डिजिटल घटक के व्यवहार को परिभाषित करता है। यह जानकारी नहीं देता है कि इसे वास्तविक HW (संश्लेषण) में कैसे लागू किया जाएगा। यह जानकारी नहीं देगा कि आवश्यक ऑपरेशन करने के लिए रजिस्टर और गेट को कैसे लागू किया जाएगा। यह सी में एक एल्गोरिथ्म या FSM लिखना अधिक पसंद है।
RTL: यह एक डिजिटल घटक का अधिक सटीक रूप है। यह जानकारी देता है, कैसे कोड को वास्तविक HW (संश्लेषण के बाद) के रूप में लागू किया जाएगा। यह भी जानकारी देता है कि रजिस्टर और गेट के बीच डेटा कैसे स्थानांतरित किया जाएगा।
यह एक ही भाषा है, लेकिन विभिन्न शैलियों का उपयोग किया जाता है। अनुभव के साथ आप उन्हें जल्दी से अलग बता सकते हैं, यहाँ प्रत्येक के कुछ लक्षण हैं:
व्यवहार वेरिलॉग कोड आम तौर पर एक initial begin
ब्लॉक के भीतर ऊपर से नीचे तक चलने वाले अनुक्रमिक कंप्यूटर प्रोग्राम की तरह दिखता है । आपको पता चल सकता है कि शीर्ष स्तर के व्यवहार मॉड्यूल में कोई इनपुट / आउटपुट पोर्ट परिभाषित नहीं हैं, क्योंकि आउटपुट सिम्युलेटर सुविधाओं के लिए हो सकता है, जैसे कंसोल $display()
या फाइल सिस्टम के साथ $open
या तरंग डम्पर के साथ $dumpfile
और $dumpvars
। लंबे अनुकार समय का उपयोग करके लागू किए गए कथनों के बीच देरी के लिए देखें उदाहरण के लिए #4000
और कार्यों का इंतजार कर रहा है wishbone_master.checked_read(addr, value)
। इन उच्च स्तर के निर्माणों के लिए यह स्पष्ट नहीं है कि संश्लेषित तकनीक समकक्ष / क्या हो सकती है।
संश्लेषण के लिए वेरिलॉग में हमेशा इनपुट / आउटपुट पोर्ट होते हैं, क्योंकि कनेक्टेड पोर्ट के बिना मॉड्यूल का कोई साइड इफेक्ट नहीं होता है और इसे समाप्त किया जा सकता है [1]। देरी शायद कुछ विशेष घड़ी के चक्रों को गिनकर कार्यान्वित की जाती है। नोट करें कि कुछ वेरिलॉग सिस्टम फ़ंक्शंस $clog2(PARAMETER)
को सिंथेसिस के लिए कोड में अनुमति दी जा सकती है, इसलिए उपस्थिति की $function
कोई गारंटी नहीं है। संश्लेषण के लिए कोड एक संवेदनशीलता सूची के साथ प्रत्येक में कई स्वतंत्र 'प्रक्रियाओं' को शामिल करता है। कुछ प्रौद्योगिकियाँ initial begin
स्मृति पुनरीक्षण के लिए ब्लॉकों को अनुमति देती हैं ताकि फिर से गारंटी न हो।
अंतत: डिज़ाइनर को उनके द्वारा लिखे गए कोड का उद्देश्य पता होता है और वे इसे सिंथेसिस टूलसेट या एक सिम्युलेटर में उचित रूप से लागू करेंगे।
[१] कुछ IP ब्लॉकों को छोड़कर जो आंतरिक चिप सुविधाओं जैसे JTAG से बैक-डोर कनेक्शन कर सकते हैं