Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تغطية الحدود والتحكم

جزء من قسم تصميم RTL والتحقق منه في رحلة Verilog على Coddy. الدرس 29 من 38.

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

مقتطف ذو صلة؛ يتم توفير التصريحات والاتصالات المحيطة في التحدي.

if(value==0) seen[0]=1;
else if(value==15) seen[1]=1;
else seen[2]=1;

يتذكر قناع البتات الفئات التي ظهرت دون استبدال النتائج السابقة.

اجمع بين تغطية الحدود وتغطية مجموعات التحكم مع عمليات تحقق مستقلة من الصحة.

challenge icon

التحدي

متوسط

تتبّع ثلاث فئات لتغطية المدخلات في seen من دون مسح النتائج السابقة: يسجّل البِت 0 القيمة value=0، ويسجّل البِت 1 القيمة value=15، ويسجّل البِت 2 القيم من 1 إلى 14. تحتوي المدخلات على بِتّات معروفة. يهيّئ المستدعي seen=0 قبل السيناريو. تحتوي هذه الوحدة على task مخصّصة للمحاكاة فقط، ويستدعيها مقعد الاختبار المقفَل. أعمدة الخرج: seen بالنظام العشري.

أكمل design.v وحافظ على أسماء الوحدات ومنافذها. يوفّر testbench.v المقفَل تغييرات المدخلات ويطبع المخرجات بعد استقرارها. ويختار سيناريو باستخدام وسيط للمحاكي مثل +CASE=1؛ ولا توجد حاجة إلى إدخال قياسي. أبقِ الطباعة والتحكم في السيناريو داخل مقعد الاختبار المقفَل؛ ونفّذ جسم task فقط. يجب أن يكون الخرج المتوقع صفاً واحداً من القيم العشرية لكل ملاحظة، مفصولة بمسافة واحدة ومنتهية بسطر جديد.

جرّب بنفسك

module dut;
    task observe;
        input [3:0] value;
        inout [2:0] seen;
        begin
            // أكمل مهمة المدقق.
            seen=seen;
        end
    endtask
endmodule
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس تصميم RTL والتحقق منه

تدرّب بنفسك: مترجم Verilog عبر الإنترنت