Menu
CoddyTech

Apa Itu Testbench

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 73 dari 90.

testbench adalah module Verilog khusus yang digunakan untuk menguji module lain. Testbench memberikan input ke desainmu dan memeriksa apakah output-nya benar.

Mengapa Kita Membutuhkan Testbench?

Saat kamu membuat module, kamu perlu memastikan module tersebut berfungsi dengan benar. Testbench memungkinkan kamu untuk:

  • Menerapkan berbagai nilai input ke module
  • Mengamati output
  • Periksa apakah output sesuai dengan yang kamu harapkan
  • Lakukan ini secara otomatis tanpa pengujian manual

Testbench dibandingkan dengan Modul Desain

 Modul DesainTestbench
TujuanMengimplementasikan perangkat kerasMenguji modul desain
Memiliki port?Ya (input dan output)Tidak (mandiri)
Dapat disintesis?YaTidak (hanya simulasi)

Contoh Testbench Sederhana

module testbench;              // Tanpa port!

  // Input dan output berasal dari module yang sedang kita uji (DUT).
  reg a, b;                    // reg untuk input
  wire c;                      // wire untuk output
  

  // Ini adalah instansiasi module. Proses ini membuat salinan module and_gate dan menamainya dut.
  and_gate dut (               // Buat instans DUT
    .a(a),
    .b(b),
    .c(c)
  );

  // Ini adalah blok initial yang memberikan nilai uji ke input module yang sedang diuji.
  initial begin                // Berikan nilai uji
    a = 0; b = 0; #10;
    a = 0; b = 1; #10;
    a = 1; b = 0; #10;
    a = 1; b = 1; #10;
    $finish;
  end
endmodule

Poin Penting

  • Testbench tidak memiliki port
  • reg digunakan untuk sinyal yang berubah (input ke DUT)
  • wire digunakan untuk sinyal dari DUT (output)
  • Module yang sedang diuji disebut DUT (Design Under Test)
  • $finish mengakhiri simulasi

Kita akan membahas cara membuat stimulus, menampilkan hasil, dan fitur testbench lainnya dalam pelajaran berikutnya.

challenge icon

Tantangan

Kamu diberi sebuah modul gerbang AND. Tugasmu adalah menambahkan bagian yang hilang ke testbench-nya.

Yang harus dilakukan:

Tambahkan bagian berikut ke testbench:

  1. Deklarasikan reg untuk input a dan b
  2. Deklarasikan wire untuk output c
  3. Buat instance and_gate dengan nama dut dan hubungkan port-portnya

Coba sendiri

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

module testbench;
  
  // Tugas 1: Deklarasikan reg untuk input a dan b
  
  
  // Tugas 2: Deklarasikan wire untuk output c
  

  // Tugas 3: Buat instansiasi and_gate dengan nama dut
  // Hubungkan .a(a), .b(b), .c(c)


  initial begin
    a = 0; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 0; b = 1; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 0; #10 $display("%d & %d = %d", a, b, c);
    a = 1; b = 1; #10 $display("%d & %d = %d", a, b, c);
    $finish;
  end
endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online