25 / 37 · अवधारणा
सत्यापन योजना, coverage और स्वतंत्र संदर्भ मॉडल
परीक्षण पास होने और विनिर्देश पूरा होने में अंतर करें तथा सीमा, संयुक्त शर्त और न्यूनतम प्रतिउदाहरण को योजना से जोड़ें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
सत्यापन योजना विनिर्देश को जाँच योग्य दावों में बदलती है
“सही काम करता है” के बजाय reset के बाद अवस्था, सामान्य इनपुट का आउटपुट, रुकने पर hold, अमान्य इनपुट का व्यवहार और पूर्णता समय जैसे ठोस दावे लिखें। हर दावे को कम-से-कम एक परीक्षण और अवलोकन बिंदु से जोड़ने पर छूटी शर्तें आसानी से मिलती हैं।
| कार्यात्मक दावा | Stimulus | अवलोकन |
|---|---|---|
| Reset प्राथमिक है | reset और enable दोनों 1 | अगली अवस्था प्रारंभिक मान |
| डेटा क्रम सुरक्षित है | लगातार असममित पैटर्न | हर आउटपुट का मान और valid |
| सीमा पर सही चक्रीय वापसी | अधिकतम अवस्था के आसपास | M-1→0, सीमा से बाहर कोई मान नहीं |
| रुकावट में hold | इनपुट बदले, accept=0 | संग्रहित अवस्था अपरिवर्तित |
| Overlapping patterns स्वीकार हैं | 10101 | तीसरे और पाँचवें स्वीकृत इनपुट पर detection |
स्वतंत्र संदर्भ मॉडल क्यों चाहिए?
Shift concatenation RTL का संदर्भ मॉडल उसी sliceस्लाइस वेक्टर से लगातार बिटों की सीमा चुनना। चुनी हुई सीमा परिणाम की चौड़ाई और बिट क्रम तय करती है। और पढ़ें से कॉपी करने पर इंडेक्स की गलती भी कॉपी हो सकती है। पूर्णांक गुणा/modulo या string के अंतिम हिस्से की तुलना जैसे अलग रूप में विनिर्देश लिखने से दोनों की परस्पर समीक्षा में मदद मिलती है। फिर भी केवल अलग रूप स्वतः स्वतंत्रता सिद्ध नहीं करता; छोटे उदाहरण हाथ से जाँचें।
Coverage पास हुए परीक्षणों की संख्या नहीं है
कोड की पंक्ति चली है, यह coverage कार्यात्मक मामला जाँचे जाने से अलग है। reset×enable, state×input और full×push×pop जैसी संयुक्त शर्तें दोष दिखा सकती हैं। केवल random परीक्षणों पर न छोड़ें; दुर्लभ और महत्वपूर्ण संयोजनों के directed tests जोड़ें।
N इनपुट वाले संयोजन परिपथ के इनपुट की पूर्ण जाँच हो सकती है, लेकिन अनुक्रमिक परिपथ में इनपुट की समय श्रृंखलाएँ भी होती हैं। देखें कि हर अवस्था पहुँच योग्य है या नहीं और अपरिवर्तनीय शर्तअपरिवर्तनीय शर्त हर अनुमत निष्पादन में हमेशा सत्य रहने वाली शर्त। मसलन चार स्थान वाली FIFO में संग्रहित वस्तुओं की संख्या हमेशा 0 से 4 के बीच रहती है। सभी संक्रमणों में बनी रहती है या नहीं। Simulation के सीमित पास रिकॉर्ड को असीमित समय का गणितीय प्रमाण न कहें।
Implementation की कॉपी से अपेक्षित मान बनाने के बजाय विनिर्देश से स्वतंत्र उत्तर निकालें। विफलता मिले तो केवल वास्तविक मान नहीं, उससे ठीक पहले का इनपुट और अवस्था भी रखें।
- विनिर्देश और stimulus: सीमांत और संयुक्त शर्तें चुनें
- स्वतंत्र संदर्भ मॉडल: अपेक्षित मान और valid होने का समय निकालें
- DUT से तुलना: उसी अवलोकन समय पर मिलाएँ
- पहली असंगति लिखें: न्यूनतम प्रतिउदाहरण और seed रखें
विफलता को छोटा करें और रिकॉर्ड रखें
पहली mismatch की पिछली अवस्था, इनपुट, अपेक्षित और वास्तविक मान सहेजें। अनावश्यक stimulus हटाकर ऐसा न्यूनतम प्रतिउदाहरण बनाएँ जिसमें विफलता बनी रहे, फिर सुधारें। केवल संशोधित परीक्षण पास न कराएँ; पुराने सीमांत और resetरीसेट अवस्था को विनिर्दिष्ट प्रारंभिक मान पर लौटाने वाला नियंत्रण। उसका तुल्यकालिक या अतुल्यकालिक होना और अन्य नियंत्रणों पर प्राथमिकता साथ तय करें। और पढ़ें परीक्षण भी regression में फिर चलाएँ।
खुद आज़माएँ
RTL code coverage 100% है और 10,000 random परीक्षण पास हुए हैं। Reset और enable दोनों 1 होने का मामला कभी बना ही नहीं, तो क्या जोड़ना चाहिए?
व्याख्या पढ़ें
उस संयुक्त शर्त को विनिर्देश में देखें और प्राथमिकता स्पष्ट करने वाली गैर-शून्य प्रारंभिक अवस्था से directed test जोड़ें। Code coverage या परीक्षण संख्या किसी खास कार्यात्मक शर्त के सत्यापन का विकल्प नहीं है।