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");
endOutput:
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;
endOutput:
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 mencetak | Satu kali saat dijalankan | Setiap kali nilai variabel berubah |
| Berapa kali | Sebanyak kamu memanggilnya | Terus-menerus (sampai berubah) |
| Digunakan untuk | Header, pesan pengujian | Melacak sinyal yang berubah |
Specifier Format Umum
| Specifier | Arti | Contoh |
|---|---|---|
%b | Biner | $display("%b", a); |
%d | Desimal | $display("%d", count); |
%h | Heksadesimal | $display("%h", data); |
%t | Waktu | $display("%t", $time); |
%0t | Waktu (tanpa spasi) | $display("%0t", $time); |
%s | String | $display("%s", "Hello"); |
Aturan Penting
| Aturan | Penjelasan |
|---|---|
$display mencetak sekali | Cocok untuk header dan hasil akhir |
$monitor mencetak saat ada perubahan | Cocok untuk mengamati sinyal |
Hanya satu $monitor yang aktif | Yang terakhir menggantikan yang sebelumnya |
Gunakan $finish untuk berhenti | Jika tidak, simulasi dapat berjalan selamanya |
Tantangan
Tambahkan pernyataan $display dan $monitor yang hilang ke testbench ini.
Yang perlu kamu lakukan:
- Tambahkan
$displayuntuk mencetak header: "Testing OR Gate" - Tambahkan
$monitoruntuk mencetak waktu, x, y, dan z setiap kali sinyal berubah. Format: "Time %0t: x=%b, y=%b, z=%b" - Tambahkan
$displaydi 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
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator14Dasar-Dasar Testbench
Apa Itu TestbenchMembuat StimulusDisplay dan MonitorDumpfile dan DumpvarsMenggunakan System TasksRekap: Testbench Lengkap3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online