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

Recap - Full 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 لتتبّع time وx وy وz
  7. يختبر all four combinations of inputs (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

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

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