प्रक्रिया चल रही है, जबकि कोई घटना कभी नहीं होगी!
जब किसी प्रक्रिया द्वारा एक प्रक्रिया को जागृत किया जाता है, तो यह पूर्ण होने ("अंत प्रक्रिया") या एक स्पष्ट "प्रतीक्षा" कथन तक चलता है, और सो जाता है। यह, ज़्यादा समय, शून्य समय लेता है। जिसका अर्थ यह है कि यदि आपके पास अपनी प्रक्रिया में लूप हैं, तो वे प्रभावी रूप से पूरी तरह से अनियंत्रित होते हैं, और जब आप संश्लेषित करते हैं, तो आप समानांतर में प्रत्येक पुनरावृत्ति को चलाने के लिए पर्याप्त हार्डवेयर उत्पन्न करेंगे। साथ ही, किसी भी प्रक्रिया, कार्य आदि, शून्य समय लेते हैं - जब तक कि उनमें एक स्पष्ट "प्रतीक्षा" कथन न हो (जिस स्थिति में प्रक्रिया "प्रतीक्षा" पर निलंबित होती है, जैसे प्रक्रिया को रेखांकित किया गया था)।
इस प्रक्रिया के दौरान, सभी संकेतों के पास मूल रूप से वह मूल्य होता है जब प्रक्रिया जागृत होती है, और किसी भी सिग्नल असाइनमेंट को बाद में होने के लिए संग्रहीत किया जाता है। (चर अद्यतन तुरंत; प्रक्रिया में बाद में बयान नए मान देखें)।
जब प्रक्रिया निलंबित ("प्रतीक्षा" या "अंत प्रक्रिया" पर), तब तक कुछ भी नहीं होता जब तक कि अन्य सभी प्रक्रियाएं भी निलंबित न हों। (लेकिन याद रखें कि वे सभी शून्य समय लेते हैं!)। यदि कोई प्रक्रिया "अंत प्रक्रिया" पर निलंबित होती है तो यह शुरुआत से फिर से शुरू हो जाएगी जब इसकी संवेदनशीलता सूची इसे जगाती है। यदि यह एक स्पष्ट "प्रतीक्षा" पर निलंबित करता है, तो "प्रतीक्षा" एक घटना या भविष्य का समय निर्दिष्ट करेगा, जो "प्रतीक्षा करें" के बाद इसे पुनरारंभ करेगा। (नोट्स: 1: संवेदनशीलता सूची को मिश्रित न करें और उसी प्रक्रिया में शैलियों की प्रतीक्षा करें! 2: प्रतीक्षा करें जब तक कि कुछ घटना संश्लेषित नहीं हो जाती है (हालांकि कुछ उपकरण ऑब्जेक्ट कर सकते हैं); कुछ समय के लिए प्रतीक्षा करें केवल सिमुलेशन है)
फिर सभी सिग्नल असाइनमेंट किया जाता है। चूंकि सभी प्रक्रियाएं सो रही हैं, यह सभी दौड़ की स्थिति और समय के खतरों को समाप्त करती है। इनमें से कुछ असाइनमेंट (जैसे घड़ी के लिए '1') घटनाओं को उनके लिए संवेदनशील प्रक्रियाओं पर निर्धारित करने का कारण बनेंगे।
सभी सिग्नल असाइनमेंट किए जाने के बाद, समय एक असीमित लघु टिक (जिसे डेल्टा चक्र कहा जाता है) आगे बढ़ाता है, और फिर अनुसूचित घटनाओं के साथ सभी प्रक्रियाएं जागृत होती हैं।
यह तब तक जारी रहता है जब तक कोई डेल्टा चक्र नहीं होता है जिसमें कोई भी नई घटना निर्धारित नहीं होती है, और अंत में सिमुलेशन वास्तविक समय के चरण से आगे बढ़ सकता है।
इस प्रकार
process(clk)
begin
if rising_edge(clk) then
A <= B;
B <= A;
end if;
end process;
खतरा मुक्त VHDL में है।
यदि आपको कभी भी वेरिलोग का उपयोग करने की आवश्यकता है, तो ध्यान रखें कि इनमें से कुछ अलग-अलग होते हैं, और आप अनुकरण परिणामों में पूर्वानुमान के समान स्तर पर भरोसा नहीं कर सकते हैं।
संश्लेषण में, ज़ाहिर है, हम हार्डवेयर जो इस प्रक्रिया को निष्पादित करने के लिए कुछ वास्तविक समय लगेगा उत्पन्न करते हैं। हालांकि, संश्लेषण और बैक-एंड टूल्स (स्थान और मार्ग) या तो इस मॉडल का ईमानदारी से पालन करने की गारंटी देते हैं, या असफल होते हैं और रिपोर्ट करते हैं कि वे क्यों विफल रहे। उदाहरण के लिए, वे सभी वास्तविक देरी जोड़ देंगे और सत्यापित करेंगे कि राशि आपकी निर्दिष्ट घड़ी अवधि से कम है। (जब तक आप घड़ी की गति बहुत अधिक सेट नहीं करते हैं!)।
तो जब तक टूल सफलता की रिपोर्ट करता है (और आप घड़ी की गति जैसे समय की बाधाओं को सही ढंग से सेट कर रहे हैं) तो आप उपरोक्त "शून्य समय" मॉडल का नाटक कर सकते हैं, और वास्तविक हार्डवेयर व्यवहार से मेल खाता है, सिमुलेशन। उपकरण कीड़े को छोड़कर गारंटीकृत!
आप अपने प्रश्न को स्पष्ट करना चाहते हैं – briantyler
क्या आप स्थिति के कुछ उदाहरण कोड के साथ स्पष्टीकरण दे सकते हैं? मुझे विश्वास है कि मैं जानता हूं कि आप क्या पूछ रहे हैं, लेकिन बिना किसी ठोस समस्या के जवाब देना मुश्किल है। –