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

مهام التحقق القابلة لإعادة الاستخدام

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

تجمع task في Verilog العمل الإجرائي، ويمكنها إرجاع النتائج من خلال الوسائط output أو inout. تقلل مهام منصة الاختبار من عمليات التحقق المكررة. وعلى خلاف function التوافقية، يمكن أن تتضمن task عناصر تحكم في التوقيت عند ملاءمة ذلك، لكن مهام التحقق هذه تُجري مقارنات تستغرق وقتًا صفريًا فقط. استخدم المهام التلقائية إذا كانت الاستدعاءات المتزامنة المنفصلة تحتاج إلى تخزين محلي مستقل؛ أما الاستدعاءات المقدمة هنا فهي متسلسلة.

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

task check_value;
    input [7:0] actual,expected;
    output ok;
    begin ok = (actual === expected); end
endtask

يتلقى المستدعي نتيجة التحقق من خلال وسيطة إخراج صريحة.

حدّد اتجاهات وسيطات task وأعِد ضبط متغيرات النتائج لكل استدعاء قبل جمع حالات الفشل.

challenge icon

التحدي

متوسط

نفّذ check_value بحيث تكون قيمة ok واحدًا عندما يتطابق actual وexpected وفق مساواة الحالات الأربع، وصفرًا خلاف ذلك. تحتوي هذه الوحدة على task مخصّصة للمحاكاة فقط، ويستدعيها ملف الاختبار المقفل. أعمدة الخرج: ok.

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

جرّب بنفسك

module dut;
    task check_value;
        input [7:0] actual,expected;
        output ok;
        begin
            // أكمل مهمة المدقق.
            ok=0;
        end
    endtask
endmodule
quiz iconاختبر نفسك

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

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

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