Menu
CoddyTech

Cheat Sheet Verilog

Terakhir diperbarui

Struktur module & port

Module adalah komponen dasar: punya nama dan daftar port.

SintaksArti
module adder(...); ... endmoduleMendefinisikan module beserta isinya
input clk;Port input
output q;Port output
output reg q;Output yang dikendalikan dari blok always
input [7:0] data;Bus input 8 bit (vector)
inout sda;Port dua arah
adder u1 (.a(x), .b(y), .sum(s));Membuat instance module dengan port bernama

Tipe data

wire memodelkan sambungan; reg menyimpan nilai yang diberikan oleh kode prosedural.

ElemenKegunaan
wire w;Net yang dikendalikan oleh assign atau output module
reg r;Menyimpan nilai yang diberikan di dalam blok always/initial
wire [3:0] bus;Vector 4 bit (bit 3 turun ke 0)
reg [7:0] count;Register 8 bit
bus[2]Memilih satu bit
bus[3:1]Memilih sebagian bit (part-select)
reg mem [0:255];Memori: array berisi register
parameter WIDTH = 8;Konstanta bernama untuk module

Literal angka

Formatnya <size>'<base><value>: size dalam bit, base berupa b/o/d/h.

SintaksArti
4'b1010Biner 4 bit, nilai 10
8'hFFHex 8 bit, nilai 255
8'hffSama saja: digit hex tidak membedakan huruf besar dan kecil
16'd255Desimal 16 bit, nilai 255
3'o7Oktal 3 bit, nilai 7
8'b1010_1100Garis bawah mengelompokkan digit agar mudah dibaca
1'bxNilai bit yang tidak diketahui (x)
1'bzNilai bit high-impedance (z)

Operator

Operator bitwise, logika, perbandingan, dan reduksi.

OperatorKegunaan
& | ^ ~Bitwise AND, OR, XOR, NOT
&& || !Logika AND, OR, NOT (menghasilkan 1 bit)
== != < > <= >=Operator perbandingan
<< >>Geser kiri dan kanan
+ - * / %Operator aritmetika
&busReduksi AND (AND dari semua bit)
|busReduksi OR (OR dari semua bit)
^busReduksi XOR (paritas dari semua bit)
{a, b}Penggabungan; {4{1'b1}} direplikasi menjadi 4'b1111

Continuous assignment

assign mengendalikan wire secara terus-menerus: pakai untuk logika kombinasional.

SintaksArti
assign y = a & b;Mengisi y dengan AND dari a dan b
assign sum = a + b;Menghitung penjumlahan secara terus-menerus
assign y = sel ? a : b;Ternary: multiplexer 2-ke-1
assign {c, s} = a + b;Menangkap carry dan sum sekaligus
assign y = ~en;Mengendalikan wire dari sinyal yang dibalik

Blok prosedural

always dan initial menjalankan pernyataan; sensitivity list menentukan kapan.

SintaksArti
always @(*) begin ... endLogika kombinasional (setiap perubahan input)
always @(posedge clk)Berjalan di setiap sisi naik clock (sekuensial)
always @(negedge clk)Berjalan di setiap sisi turun clock
always @(posedge clk or posedge rst)Blok dengan clock dan reset asinkron
initial begin ... endBerjalan sekali di waktu 0 (testbench, hanya simulasi)
begin ... endMengelompokkan beberapa pernyataan
#10Tunda 10 satuan waktu (hanya simulasi)

Blocking vs non-blocking

Pakai = untuk logika kombinasional, <= untuk logika sekuensial dengan clock.

SintaksArti
a = b;Blocking: dijalankan berurutan, langsung
a <= b;Non-blocking: semua RHS dibaca dulu, baru nilainya diberikan
always @(*) y = a & b;Kombinasional: pakai blocking =
always @(posedge clk) q <= d;Flip-flop: pakai non-blocking <=
Mencampur = dan <= dalam satu blokHindari: sumber bug yang umum

Alur kontrol

Percabangan dan cabang banyak arah di dalam blok prosedural.

SintaksArti
if (cond) ... else ...Pernyataan kondisional
if (a) x = 1; else x = 0;If/else satu baris
case (sel) ... endcaseCabang banyak arah berdasarkan nilai
2'b00: y = a;Sebuah item case
default: y = 0;Item case cadangan
for (i = 0; i < 8; i = i + 1)Perulangan (sering di dalam generate atau simulasi)
repeat (4) @(posedge clk);Mengulang pernyataan sebanyak N kali

Pola umum

Komponen yang kamu tulis berulang kali, ditambah task untuk testbench.

PolaSintaks
D flip-flopalways @(posedge clk) q <= d;
Register dengan resetalways @(posedge clk) if (rst) q <= 0; else q <= d;
Counteralways @(posedge clk) count <= count + 1;
Register state FSMalways @(posedge clk) state <= next_state;
Logika next-state FSMalways @(*) case (state) ... endcase
Mencetak nilai$display("q = %b", q);
Mencetak saat berubah$monitor("t=%0t q=%b", $time, q);
Mengakhiri simulasi$finish;

Semua sintaks Verilog yang sering kamu pakai, dalam satu halaman. Cheat sheet Verilog ini adalah referensi cepat untuk bahasa deskripsi hardware ini: mendeklarasikan module dan port, memilih tipe data, menulis logika kombinasional dan sekuensial, serta pola blok always yang menggambarkan rangkaian sungguhan.

Sintaks di sini adalah Verilog standar (IEEE 1364) dan berjalan di simulator umum seperti Icarus Verilog dan Verilator. Salin yang kamu butuhkan, atau coba langsung di playground Verilog: tulis module, simulasikan, dan lihat output-nya di browsermu.

FAQ cheat sheet Verilog

Apakah cheat sheet Verilog ini gratis?

Ya. Cheat sheet Verilog ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari sintaks, operator, atau pola blok always.

Apa perbedaan wire dan reg?
wire memodelkan sambungan fisik dan harus dikendalikan terus-menerus, oleh pernyataan assign atau output module, jadi kamu memakainya untuk net kombinasional. reg menyimpan nilainya sampai kode prosedural mengubahnya, jadi kamu memakainya untuk apa pun yang diberi nilai di dalam blok always atau initial. Meskipun namanya begitu, reg tidak selalu menjadi register di hardware; artinya hanya bahwa nilainya diatur secara prosedural.
Apa perbedaan blocking assignment dan non-blocking assignment?
Blocking assignment (=) langsung dijalankan secara berurutan, seperti pernyataan pemrograman biasa, jadi pakai untuk logika kombinasional di blok always @(*). Non-blocking assignment (<=) mengevaluasi semua sisi kanan terlebih dahulu, lalu memperbarui semua sisi kiri bersamaan, sehingga memodelkan flip-flop dengan benar. Jadi pakai di blok dengan clock always @(posedge clk). Mencampur keduanya dalam satu blok adalah sumber bug simulasi yang klasik.
Bisakah saya berlatih Verilog secara online?

Bisa. Buka playground Verilog untuk menulis module, menyimulasikannya, dan melihat output-nya di browsermu, tanpa perlu instalasi. Kalau kamu ingin belajar terarah, kursus Verilog interaktif gratis dari Coddy membawamu dari module dan tipe data sampai blok always dan finite state machine, langkah demi langkah.

Apakah cheat sheet ini cocok untuk pemula?

Cocok. Isinya disusun mulai dari fondasinya (module, port, dan tipe data) sampai logika sekuensial dan pola FSM, jadi kamu bisa mulai dari bagian atas lalu pelan-pelan belajar menggambarkan rangkaian sungguhan.

Ilustrasi bahasa pemrograman di Coddy

Belajar Verilog bersama Coddy

Mulai