Menu
CoddyTech

Display dan Monitor

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

$display dan $monitor adalah task sistem yang digunakan untuk mencetak informasi dari simulasimu. Keduanya membantumu melihat apa yang terjadi di dalam desainmu.

$display

$display mencetak pesan satu kali saat dijalankan.

Sintaks:

$display("message", variables);

Contoh:

initial begin
  $display("Simulation started");
  #10;
  $display("Time 10");
  #10;
  $display("Time 20");
end

Output:

Simulation started
Time 10
Time 20

$monitor

$monitor mencetak pesan secara otomatis setiap kali salah satu variabelnya berubah.

Sintaks:

$monitor("message", variables);

Contoh:

initial begin
  a = 0; b = 0;
  $monitor("Time %0t: a=%b, b=%b", $time, a, b);
  #10 a = 1;
  #10 b = 1;
  #10 a = 0;
end

Output:

Time 0: a=0, b=0
Time 10: a=1, b=0
Time 20: a=1, b=1
Time 30: a=0, b=1

$display vs $monitor

 $display$monitor
Kapan mencetakSatu kali saat dijalankanSetiap kali nilai variabel berubah
Berapa kaliSebanyak kamu memanggilnyaTerus-menerus (sampai berubah)
Digunakan untukHeader, pesan pengujianMelacak sinyal yang berubah

Specifier Format Umum

SpecifierArtiContoh
%bBiner$display("%b", a);
%dDesimal$display("%d", count);
%hHeksadesimal$display("%h", data);
%tWaktu$display("%t", $time);
%0tWaktu (tanpa spasi)$display("%0t", $time);
%sString$display("%s", "Hello");

Aturan Penting

AturanPenjelasan
$display mencetak sekaliCocok untuk header dan hasil akhir
$monitor mencetak saat ada perubahanCocok untuk mengamati sinyal
Hanya satu $monitor yang aktifYang terakhir menggantikan yang sebelumnya
Gunakan $finish untuk berhentiJika tidak, simulasi dapat berjalan selamanya
challenge icon

Tantangan

Tambahkan pernyataan $display dan $monitor yang hilang ke testbench ini.

Yang perlu kamu lakukan:

  1. Tambahkan $display untuk mencetak header: "Testing OR Gate"
  2. Tambahkan $monitor untuk mencetak waktu, x, y, dan z setiap kali sinyal berubah. Format: "Time %0t: x=%b, y=%b, z=%b"
  3. Tambahkan $display di akhir untuk mencetak "Test complete"

Coba sendiri

module or_gate (
  input x,
  input y,
  output z
);
  assign z = x | y;
endmodule

module testbench;
  reg x, y;
  wire z;
  
  or_gate dut (
    .x(x),
    .y(y),
    .z(z)
  );

  initial begin
    // TODO: Tambahkan header $display "Testing OR Gate"
    
    
    // TODO: Tambahkan $monitor untuk memantau waktu, x, y, z
    // Format: "Time %0t: x=%b, y=%b, z=%b"
    
    
    // Terapkan stimulus
    x = 0; y = 0; #10;
    x = 0; y = 1; #10;
    x = 1; y = 0; #10;
    x = 1; y = 1; #10;
    
    // TODO: Tambahkan $display "Test complete"
    
    
    $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