हार्डवेयर अनुकरण

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

कभी-कभी हार्डवेयर अनुकरण को हार्डवेयर उपकरणों के साथ भ्रमित किया जा सकता है जैसे हार्डवेयर संसाधित्र (प्रोसेसर) के साथ विस्तार कार्ड जो सॉफ़्टवेयर अनुकरण के कार्यों में सहायता करते हैं, जैसे कि x86 चिप्स के साथ पुराने डॉटर बोर्ड x86 OSes को विभिन्न संसाधित्र श्रेणी के मदरबोर्ड पर चलाने की अनुमति देते हैं।

परिचय
सिलिकॉन एकीकृत परिपथ रेस्पिन और प्रारंभिक स्तर का सबसे बड़ा हिस्सा कम से कम कार्यात्मक त्रुटियों और दोष (बग) के कारण अनजाने में डिजाइन प्रक्रिया के रजिस्टर-स्थानांतरण स्तर के चरण में प्रस्तुत किया गया है। इस प्रकार, व्यापक कार्यात्मक सत्यापन विकास लागत को कम करने और उत्पाद को समय पर वितरित करने की कुंजी है। एक डिजाइन का कार्यात्मक सत्यापन यद्यपि तर्क सिमुलेशन या FPGA प्रोटोटाइप का उपयोग करके किया जाता है | क्षेत्र में प्रोग्राम की जा सकने वाली द्वार श्रंखला (FPGAs) पर प्रोटोटाइप प्रत्येक के लाभ व हानि हैं और यद्यपि दोनों का उपयोग किया जाता है। तर्क अनुकरण आसान, सटीक, लचीला और कम लागत वाला है। हालांकि, सिमुलेशन प्रायः बड़े डिजाइन के लिए पर्याप्त तेज नहीं होता है और हार्डवेयर डिजाइन के विरुद्ध एप्लिकेशन सॉफ़्टवेयर चलाने के लिए लगभग हमेशा धीमा होता है। फील्ड-प्रोग्रामेबल गेट ऐरे-आधारित प्रोटोटाइप तीव्र और सस्ते होते हैं, लेकिन कई FPGAs में एक बड़े डिजाइन को लागू करने के लिए आवश्यक समय बहुत लंबा व त्रुटि-प्रवण हो सकता है। डिजाइन की गयी कमियों को ठीक करने के लिए परिवर्तनों को लागू करने में भी लंबा समय लगता है और इसके लिए बोर्ड वायरिंग में बदलाव की आवश्यकता हो सकती है। परंपरागत विक्रेता उपकरणों के साथ, FPGA प्रोटोटाइप में डिजाइन डिबगिंग क्षमता कम होती है, वास्तविक समय में FPGAs के अंदर संकेतों की जांच करना बहुत मुश्किल होता है और जांच को स्थानांतरित करने के लिए FPGAs को फिर से संकलित करने में बहुत लंबा समय लगता है। यह अधिक उन्नत FPGA प्रोटोटाइप डिबग यंत्र के निर्गमन के साथ बदल रहा है जो संकेत की दृश्यता की सीमाओं को हटा रहा हैं। सामान्य समझौता सत्यापन प्रक्रिया में सिमुलेशन का उपयोग करना है जब बग और फिक्स नियमित होते हैं और विकास चक्र के अंत में प्रोटोटाइप होते हैं जब डिजाइन मूल रूप से पूर्ण होता है और किसी भी शेष तंत्र-स्तरीय दोष को उजागर करने के लिए पर्याप्त परीक्षण प्राप्त करने के लिए गति की आवश्यकता होती है। FPGA प्रोटोटाइप सॉफ्टवेयर परीक्षण के लिए भी लोकप्रिय है।

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

अंतःपरिपथ अनुकरण FPGA प्रोटोटाइप के कार्यान्वयन के समय में कुछ सीमा तक सुधार करता है और एक व्यापक, कुशल दोषमार्जन क्षमता प्रदान करता है। FPGA प्रोटोटाइप ($75K) की तुलना में अनुकरण चलने की गति और उच्च लागत ($1M+) की कीमत पर ऐसा करता है। दूसरी दिशा से अनुकरण को देखते हुए, यह नकली टेस्टबेंच के लिए लाइव उद्दीपक को प्रतिस्थापित करके त्वरण के प्रदर्शन में सुधार करता है। यह उद्दीपक (स्टिमुलस) एक लक्ष्य प्रणाली (विकसित किया जा रहा उत्पाद) या परीक्षण उपकरण से आ सकता है। सिमुलेशन की गति से 10,000 से 100,000 गुना अधिक, अनुकरण एक व्यापक हार्डवेयर डिबग वातावरण प्रदान करते हुए एप्लिकेशन सॉफ़्टवेयर का परीक्षण करना संभव बनाता है।

डिबगिंग सिमुलेशन बनाम अनुकरण/प्रोटोटाइप
यह ध्यान देने योग्य है कि अनुकरण और प्रोटोटाइप में निष्पादन की दो अलग-अलग शैलियाँ शामिल हैं। सिमुलेशन आरटीएल कोड को क्रमिक रूप से निष्पादित करता है जबकि एक प्रोटोटाइप पूरी तरह से समानांतर रूप से निष्पादित होता है। इससे डिबगिंग में अंतर होता है। अनुकरण में:
 * उपयोगकर्ता एक विराम बिंदु व्यवस्थित कर सकता है और डिजाइन स्थिति का निरीक्षण करने के लिए सिमुलेशन को रोक सकता है, डिजाइन के साथ परस्पर क्रिया कर सकता है और सिमुलेशन फिर से शुरू कर सकता है।
 * उपयोगकर्ता "मध्य-चक्र" निष्पादन को रोक सकता है क्योंकि यह निष्पादित कोड के केवल एक भाग के साथ था।
 * उपयोगकर्ता किसी भी समय किसी भी मेमोरी अवस्थति का डिजाइन और सामग्री में कोई भी संकेत देख सकता है।
 * उपयोगकर्ता समय का बैकअप भी ले सकता है (यदि उन्होंने चेकपॉइंट (s) को सुरक्षित किया है) और फिर से चला सकते हैं।

एक प्रोटोटाइप के साथ: त्वरण और अनुकरण आरटीएल निष्पादन और डिबगिंग के संदर्भ में प्रोटोटाइप और सिलिकॉन की तरह अधिक हैं क्योंकि संपूर्ण डिजाइन एक साथ निष्पादित होता है जैसा कि सिलिकॉन में होगा। चूंकि एक ही हार्डवेयर का उपयोग यद्यपि सिमुलेशन त्वरण और अंतःपरिपथ अनुकरण दोनों प्रदान करने के लिए किया जाता है, ये प्रणाली इन दो बहुत अलग डिबगिंग शैलियों का मिश्रण प्रदान करती हैं।
 * उपयोगकर्ता दृश्यता के लिए एक तर्क विश्लेषक को नियुक्त करता है और इसलिए केवल सीमित संख्या में संकेत देख सकता है जिसे उन्होंने समय से पहले निर्धारित किया था (जांच पर क्लिप करके)। यह उभरते हुए FPGA प्रोटोटाइप टूल के साथ बदल रहा है जो 10,000s आंतरिक संकेतों, जैसे सर्टुस को पूर्ण दृश्यता प्रदान करते हैं।
 * तर्क विश्लेषक के प्रारंभ होने पर लक्ष्य नहीं रुकता है, इसलिए हर बार जब उपयोगकर्ता जांच या प्रारंभ की स्थिति बदलता है, तो उन्हें पर्यावरण को पुन:आरंभ (रीसेट) करना होगा और शुरुआत से फिर से शुरू करना होगा।
 * अवलोकन के लिए विशिष्ट संकेत उपलब्ध कराने के लिए जांच को सीधे आरटीएल डिजाइन में जोड़ा जाता है। जब तंत्र चलाया जाता है, तो प्रत्येक यंत्रीकृत संकेतो से जुड़ी RTL-आधारित जांच प्रत्येक क्लॉक साइकिल (सी पी यू का क्षमता मापक) पर संकेतो का मान एकत्र करती है। डेटा को FPGA ब्लॉक RAM में अनुरेख प्रतिरोधक (ट्रेस बफर) में संग्रहीत किया जाता है। प्रोटोटाइप से जुड़ा एक विश्लेषक उपयोगकर्ता को प्रभावी डिबगिंग के लिए तंत्र में ऑफ़लाइन दृश्यता देने वाली जानकारी को डाउनलोड करता है।

उच्च अंत हार्डवेयर अनुकरण कई विशेषताओं के साथ एक डिबगिंग वातावरण प्रदान करते हैं जो तर्क अनुरूपक में पाए जा सकते हैं और कुछ मामलों में उनकी डिबगिंग क्षमताओं से भी आगे निकल जाते हैं:


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

अनुकरण और द्वि-अवस्था तर्क
सिमुलेशन और त्वरण व अनुकरण के बीच एक और अंतर कार्यान्वयन के लिए हार्डवेयर का उपयोग करने वाले त्वरक का एक परिणाम है कि उनके पास केवल दो तर्क अवस्था हैं - जिस तरह से संविरचित किये जाने पर सिलिकॉन होगा। यह संकेत करता है:
 * वे एक्स-अवस्था प्रारंभन (इनिशियलाइज़ेशन) का विश्लेषण करने के लिए उपयोगी नहीं हैं।
 * वे क्षमता संकल्प का विश्लेषण नहीं कर सकते हैं या कम से कम यह संकलन समय पर स्थिर रूप से किया जाना चाहिए।
 * एमुलेटर यथावत् परिपथ समय का प्रतिरूप नहीं बनाते हैं और इसलिए उन्हें शायद कोई चाल (रेस) की स्थिति या व्यवस्था (सेटअप) नहीं मिलेगा और समय का उल्लंघन होगा।

इन कार्यों को तर्क सिमुलेशन के दौरान या स्थिर समय विश्लेषण उपकरण के साथ ठीक से किया जाता है।

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

यह भी देखें

 * हार्डवेयर-सहायता प्राप्त वर्चुअलाइजेशन
 * अनुकरण
 * अंतःपरिपथ अनुकरण
 * पृष्ठभूमि डिबग मोड अंतरापृष्ठ
 * उदाहरण:
 * सूक्ष्म संसाधित्र एमुलेटर एचपी 64000 (विभिन्न सीपीयू)

संदर्भ

 * Electronic Design Automation For Integrated Circuits Handbook, by Lavagno, Martin, and Scheffer, ISBN 0-8493-3096-3 A survey of the field, from which the above summary was derived, with permission.

अग्रिम पठन

 * SNEAK PEEK: INSIDE NVIDIA’S EMULATION LAB
 * Cadence Palladium Z1 Enterprise Emulation Platform
 * Synopsys Zebu Server emulator
 * Mentor Graphics Veloce emulation systems