التحقق الوظيفي

التحقق الوظيفي هو التحقق من أن التصميم الرقمي يتوافق مع المواصفات. يحاول التحقق الوظيفي الإجابة على السؤال "هل هذا التصميم المقترح يفعل الوظيفة المطلوبة منه؟"  يستغرق التحقق معظم الوقت والجهد حيث يصل إلى 70٪ من وقت التصميم والتطوير  في معظم مشاريع تصميم الأنظمة الإلكترونية الكبيرة. يعد التحقق الوظيفي أحد أنواع التحقق المختلفة فعلى سبيل المثال يوجد التحقق المادي الذي يأخذ في اعتباره الجوانب غير الوظيفية التي تدخل في التصنيع مثل التوقيت والتخطيط والطاقة.

خلفية 
على الرغم من زيادة عدد المقاحل بشكل كبير وفقًا لقانون مور ، إلا أن زيادة عدد المهندسين والوقت الذي يستغرقه إنتاج التصميمات يزيد بشكل خطي فقط، بينما يزداد أيضًا عدد الأخطاء البرمجية. تأتي معظم الأخطاء في البرمجة من الإهمال (12.7٪) ، وسوء التواصل (11.4٪) ، وتحديات المعماريات الدقيقة (9.3٪). وبالتالي ، يتم إنتاج أدوات التصميم الإلكتروني الآلية لمواكبة تعقيد تصميم المقاحل عبر استخدام لغات توصيف العتاد مثل فيريلوج و في إتش دي إل لتسهيل عملية التطوير وتحويلها إلى عملية آلية وليست يدوية.

تكمن صعوبة التحقق الوظيفي في كمية الاحتمالات الاختبارات الموجودة حتى في تصميم بسيط. غالبًا ما يكون هناك أكثر من 10 ^ 80 اختبارًا محتملاً للتحقق بشكل شامل من التصميم، وهو رقم يستحيل تحقيقه في العمر! هذا الجهد يعادل التحقق من البرنامج ، وهو صعب NP أو حتى أسوأ، وحتي الآن لم يتم العثور على حل يعمل بشكل جيد في جميع الحالات. ومع ذلك، يمكن التحقق بعدة طرق. لا يوجد أي منها مثالي ، ولكن يمكن أن يكون كل منها مفيدًا في ظروف معينة:

 محاكاة التصميم تحاكي التصميم قبل أن يتم بناؤه.
 تسريع المحاكاة عبر عتاد متخصص للمحاكاة.
 يوجد نوع آخر من المحاكاة (المماثلة أو المضاهاة) وهو عن طريق استخدام مصفوفة مُبرمجة ولكن هذا عادة ما يكون مكلفًا ولكن هو أسرع كثيرًا من محاكاة التصميم باستخدام برنامج
 يحاول التحقق الشكلي أن يثبت رياضيًا أن بعض المتطلبات قد تم الوفاء بها ، أو أن السلوكيات غير المرغوب فيها لا يمكن أن تحدث وهذا عن طريق خورازميات رياضية لا تعتمد علي محاكاة التصميم ولكن عن طريق استكشاف فضاء الحالات الممكنة.
 يستخدم التحقق الذكي الآلية لملاءمة منصة الاختبار مع التغييرات في طبقة تبادل المسجلات.
 تُستخدم الإصدارات الخاصة بـ لغات توصيف العتاد من النسالة وغيرها من الأساليب البحثية للعثور على المشكلات الشائعة.

أنواع 
هناك ثلاثة أنواع من التحقق الوظيفي ، وهي: التحقق الوظيفي الحركي، والتحقق الوظيفي الهجين ، والتحقق الثابت.

يستخدم التحقق المحاكي (ويسمى أيضًا " التحقق الحركي ") على نطاق واسع "لمحاكاة" التصميم ، نظرًا لأن هذه الطريقة يمكنها التوسع بسهولة شديدة عند زيادة حجم التصميم. يتم توفير الحث المناسب لاستعمال كل سطر في رمز توصيف العتاد وذلك عن طريق تطوير منصة الاختبار للتحقق وظيفيًا من التصميم من خلال توفير احتمالات اختبارات مختلفة للتأكد من أن التصميم يعمل وفقًا للمواصفات والوظائف المطلوبة في ضوء مدخلات معينة.

تتكون بيئة المحاكاة عادةً من عدة أنواع من المكونات:

 يولد المولد مدخلات رقمية تُستخدم لاختبار الحالات الموجودة بين المتطلبات ورد فعل التصميم. تخلق المولدات الحديثة حث عشوائي وعشوائي محدد للتحقق من أجزاء عشوائية من التصميم. الغرض من العشوائية هو تحقيق توزيع عالٍ على فضاء الحث المتاح للمدخلات والذي عادة ما يكون كبيرًا جدًا.
 دور المولد هو ملء هذه الفجوة بشكل عشوائي. تسمح هذه الآلية للمولد بإنشاء مدخلات تكشف عن الأخطاء التي لا يتم البحث عنها مباشرة من قبل المستخدم. هذه المولدات أيضًا تكون محددة العشوائية نحو حالات التصميم المهمة لزيادة التأكيد على المنطق. نظرًا لأن مدخلات التصميم يجب أن تكون صحيحة ويجب الحفاظ على العديد من الأهداف (مثل العشوائية المحددة) ، فإن العديد من المولدات تستخدم تقنية مشكلة إرضاء القيود لحل متطلبات الاختبار المعقدة.
 يقوم المسيِّر بترجمة الحث الذي ينتجه المولد إلى مدخلات فعلية للمنافذ كما هو محدد في مواصفات واجهة التصميم.. تقوم المولدات بإنشاء مدخلات على مستوى عالٍ من التجريد ، أي كلغة معاملات أو لغة تجميع.
 ينتج المحاكي مخرجات التصميم ، بناءً على الحالة الحالية للتصميم والمدخلات. يحتوي جهاز المحاكاة على وصف لقائمة شبكة التصميم. يتم إنشاء هذا الوصف عن طريق توليف HDL إلى قائمة شبكة مستوى بوابة منخفضة.
 يقوم المراقب بتحويل حالة التصميم ومخرجاته إلى مستوى تجريد المعاملة بحيث يمكن تخزينها في قاعدة بيانات "شاشة النتائج" ليتم التحقق منها لاحقًا.
 يتحقق المدقق من أن محتويات "شاشة النتائج" صحيحة حيث يجب على المدقق التحقق من تطابق النتائج الفعلية مع النتائج المتوقعة.

يتم استخدام التغطية لتقييم محفزات التصميم وأن التصميم قد تم استعماله بشكل مناسب. وتشمل:

 التغطية الوظيفية (هل تم ممارسة كل وظائف التصميم؟)
 وتغطية البيان (هل تم ممارسة كل سطر من التصميم؟)
 وتغطية التفرعات (هل تم ممارسة كل اتجاه في كل فرع؟ ).

أدوات المحاكاة والتحقق 

 ألديك
 أنظمة أيفري
 نظام التحقق من Breker: Trek (أداة إنشاء اختبار قائمة على النموذج ل SoCs المعقدة)
 كيدانس لأنظمة التصميم
 مينتور جرافيكس
 تقنية نوسيم
 برنامج أوبيسديان
 حلول وان سبين
 سينوبسيس

أنظر أيضا 

 التحقق الشكلي
 التحقق الفوقي

مراجع 

منطق في علم الحاسوب