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

ملخص - Testbench كامل

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 78 من 90.

challenge icon

التحدي

يختبر هذا التحدي كل ما تعلمته عن لوحات الاختبار (testbenches): المحفزات (stimulus)، العرض (display)، المراقبة (monitor)، ملف التفريغ (dumpfile)، متغيرات التفريغ (dumpvars)، والمهام النظامية (system tasks). يُعطى لك وحدة بوابة XOR لاختبارها.
ما يجب عليك فعله:

قم بإنشاء testbench كامل يقدم ما يلي:

  1. يعلن عن الإشارات (reg للمدخلات، و wire للمخرجات)
  2. يقوم بإنشاء كائن من بوابة XOR باسم dut
  3. ينشئ ملف شكل موجة باسم xor_waveform.vcd
  4. يقوم بتفريغ جميع الإشارات في testbench
  5. يطبع الترويسة: "Testing XOR Gate"
  6. يستخدم $monitor لتتبع الوقت، x، y، و z
  7. يختبر جميع تركيبات المدخلات الأربعة (00، 01، 10، 11) مع تأخير #10 بين كل منها
  8. يطبع "Test complete" في النهاية
  9. ينهي المحاكاة باستخدام $finish

جرّب بنفسك

module xor_gate (
  input x,
  input y,
  output z
);
  assign z = x ^ y;
endmodule

module testbench;
  // TODO: أعلن عن reg لـ x و y
  
  // TODO: أعلن عن wire لـ z
  

  // TODO: أنشئ مثيلاً من xor_gate بالاسم dut
  // وصّل .x(x), .y(y), .z(z)


  initial begin
    // TODO: أضف $dumpfile "xor_waveform.vcd"
    
    // TODO: أضف $dumpvars (0, testbench)
    
    // TODO: أضف $display "Testing XOR Gate"
    
    // TODO: أضف $monitor لـ time و x و y و z
    // الصيغة: "Time %0t: x=%b, y=%b, z=%b"
    
    // TODO: أضف محفزات لجميع التركيبات الأربع
    // 00, 01, 10, 11 مع تأخير #10
    
    // TODO: أضف $display "Test complete"
    
    // TODO: أضف $finish
    
  end
endmodule

جميع دروس الأساسيات