Menu

Apa Itu Verilog? Panduan Pemula Bahasa Deskripsi Hardware

Pengantar Verilog dengan bahasa sederhana: apa itu Verilog, dipakai untuk apa, apa bedanya dengan bahasa pemrograman biasa, dan kenapa para desainer digital masih memakainya setelah 40 tahun.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Bahasa untuk Menggambarkan Rangkaian

Kebanyakan bahasa yang pernah kamu temui (Python, JavaScript, Go) menggambarkan urutan instruksi untuk dijalankan CPU. Verilog menggambarkan sebuah rangkaian. Kamu menuliskan kabel apa saja yang ada, register apa saja yang ada, dan bagaimana sinyal mengalir di antaranya. Simulator lalu bisa memutar ulang perilaku rangkaian itu, dan tool sintesis bisa mengubah teks yang sama menjadi gerbang logika dan flip-flop di chip sungguhan.

Itulah definisi singkatnya. Memahami konsekuensinya butuh waktu lebih lama.

Potongan kode itu terlihat seperti program kecil: sebuah module, sebuah blok initial, dan system task $display. Tekan Jalankan dan kamu akan melihat hello from verilog. Tapi di baliknya, simulator tidak sedang menjalankan fungsi. Ia berpura-pura waktu sedang berjalan dan menggerakkan rangkaian selangkah demi selangkah. Itulah kenapa kamu akan melihat $finish di mana-mana: harus ada yang menyuruh simulator berhenti.

Arti Sebenarnya dari "Deskripsi Hardware"

Satu baris C dijalankan ketika program counter sampai di baris itu. Satu baris Verilog menggambarkan sepotong rangkaian yang selalu ada. Perhatikan:

assign y = a & b;

Itu bukan "hitung y sekali". Artinya "ada kabel y, dan di setiap saat nilainya sama dengan a AND b". Ubah a atau b, maka y langsung mengikuti. Beberapa pernyataan assign dalam satu module bukanlah urutan, melainkan deskripsi paralel dari bagian-bagian rangkaian yang terpisah.

Inilah ciri utama Verilog sekaligus sumber semua bug pemula. Sebagian besar yang kamu tulis menggambarkan hal yang terjadi bersamaan, dan beberapa konstruksi yang terlihat seperti pernyataan berurutan (di dalam blok initial dan always) hanya terlihat begitu karena simulator berpura-pura.

Apa yang Kamu Bangun dengan Verilog

Verilog dipakai di setiap tingkat sistem digital:

  • Logika kombinasional. Adder, multiplexer, decoder, potongan ALU, pokoknya apa pun yang output-nya hanya bergantung pada input saat itu.
  • Logika sekuensial. Counter, shift register, finite state machine, apa pun yang digerakkan clock lewat posedge clk.
  • Inti prosesor. Dari CPU tugas kuliah sampai inti RISC-V open source yang sudah ada di silikon sungguhan, RTL-nya biasanya ditulis dengan Verilog atau SystemVerilog.
  • Desain FPGA. Logika yang dimuat ke FPGA Xilinx atau Intel (jaringan, pemrosesan gambar, kendali embedded) sebagian besar ditulis dengan Verilog.
  • ASIC. Chip khusus di dalam ponselmu, router-mu, mobilmu: desain front-end-nya ditulis dengan HDL, dan Verilog adalah salah satu dari dua pilihan utama.

Kamu tidak butuh hardware apa pun untuk belajar. Semua yang ada di dokumentasi ini berjalan di simulator berbasis browser.

Simulasi vs Sintesis

Ada dua cara "menjalankan" Verilog, dan keduanya tidak sama:

  • Simulasi memutar perilaku rangkaian di dalam software. Simulator (Icarus Verilog, Verilator, ModelSim, tool komersial) membaca module-mu ditambah testbench, yaitu kode yang menggerakkan input, lalu menghasilkan output: log teks, waveform, laporan lulus/gagal.
  • Sintesis mengambil sebagian dari Verilog dan mengubahnya menjadi netlist berisi gerbang sungguhan. Tool dari vendor (Vivado, Quartus, tool design compiler di perusahaan besar) menangani pemetaannya. Verilog yang disintesis harus mematuhi aturan tambahan: blok initial dan panggilan $display tidak ada di silikon.

Editor browser di halaman-halaman ini melakukan simulasi. Hanya itu yang kamu butuhkan sampai kamu benar-benar membuat chip atau memprogram FPGA.

Verilog vs SystemVerilog

Kalau kamu mencari-cari, kamu akan melihat kedua nama itu. SystemVerilog adalah superset: ia mempertahankan setiap konstruksi Verilog dan menambahkan fitur yang sebagian besar ditujukan untuk verifikasi (class, pengujian constrained-random, assertion, interface, sistem tipe yang jauh lebih kaya). Semua yang kamu pelajari di sini adalah SystemVerilog yang valid. Dalam praktiknya kedua nama itu sering tercampur; kebanyakan tool menerima keduanya dan kebanyakan file tetap berakhiran .v. Di seluruh dokumentasi ini kami menyebutnya "Verilog".

Verilog vs VHDL

Keduanya bahasa deskripsi hardware. Keduanya standar IEEE. Keduanya sudah ada sejak tahun 1980-an. Perbedaannya:

  • Sintaks. Verilog berasal dari C: kurung kurawal, kata kunci yang ringkas, aturan tipe yang lebih longgar. VHDL berasal dari Ada: lebih panjang, jauh lebih ketat soal tipe.
  • Wilayah. Verilog mendominasi desain komersial di Amerika Serikat. VHDL masih umum di Eropa, di bidang pertahanan, dan di codebase lama.
  • Kemampuan. Apa yang bisa diungkapkan keduanya kurang lebih setara. Pilih berdasarkan apa yang dipakai timmu.

Kalau kamu baru pertama kali belajar HDL, Verilog lebih mudah dimulai: sintaksnya lebih kecil, lebih longgar, dan kumpulan contoh di internet lebih banyak.

Cara Dokumentasi Ini Menjalankan Verilog

Editor di bawah memakai Icarus Verilog (iverilog) di baliknya. Tool ini mengubah kode sumbermu menjadi simulator lewat proses compile, lalu menjalankannya di dalam sandbox. Tidak perlu lisensi Vivado, tidak perlu instal Quartus, tidak perlu board FPGA. Kamu menulis module ditambah testbench kecil, tekan Jalankan, lalu kamu melihat output dan waveform-nya.

Itu adalah counter 4-bit lengkap beserta testbench-nya. Module counter adalah design under test (DUT); module test menggoyang clock, melepas reset, dan mencetak nilainya di setiap siklus. Jalankan, dan kamu akan melihat count naik dari 0 sampai 15 lalu kembali ke awal. Buka tab Waveform dan kamu akan melihat hal yang sama dalam bentuk transisi tegangan.

Selanjutnya

Konteks yang kamu punya sudah cukup untuk mulai menulis module. Dokumen berikutnya, Hardware vs Software, membahas pergeseran cara berpikir ini sedikit lebih dalam, karena inilah batu sandungan terbesar bagi programmer Verilog baru. Setelah itu: menginstal simulator lokal (opsional, browser sudah cukup), menulis module pertamamu dari nol, lalu sisa bahasanya.

Atur kecepatanmu. Sintaksnya kecil; yang butuh usaha adalah cara berpikirnya.

Pertanyaan yang sering diajukan

Apa itu Verilog dalam bahasa sederhana?

Verilog adalah bahasa deskripsi hardware (HDL) untuk menggambarkan rangkaian digital dalam bentuk teks. Alih-alih menulis instruksi yang dijalankan CPU, kamu menggambarkan kabel, register, gerbang logika, dan bagaimana sinyal mengalir di antaranya. Simulator lalu menjalankan deskripsi itu agar kamu bisa memeriksa perilakunya, dan tool sintesis bisa mengubah deskripsi yang sama menjadi layout chip sungguhan.

Verilog digunakan untuk apa?

Verilog dipakai untuk merancang dan memverifikasi hardware digital: CPU, GPU, switch jaringan, kontroler memori, blok pemrosesan sinyal, desain FPGA, pokoknya apa pun yang dibangun dari gerbang logika dan flip-flop. Verilog juga dijalankan murni dalam simulasi untuk mengajarkan logika digital dan membuat prototipe desain sebelum ada silikon yang diproduksi.

Apakah Verilog bahasa pemrograman?

Tidak dalam arti yang biasa. Kode Verilog menggambarkan struktur dan perilaku hardware (sinyal, gerbang, dan penyimpanan yang dikendalikan clock), bukan urutan instruksi CPU. Banyak baris yang kamu tulis terjadi bersamaan di chip, tidak satu per satu. Perubahan cara berpikir inilah rintangan terbesar saat pindah dari software ke Verilog.

Apa perbedaan Verilog dan SystemVerilog?

SystemVerilog adalah superset dari Verilog. Ia mempertahankan semua sintaks Verilog dan menambahkan fitur yang terutama ditujukan untuk verifikasi: class, stimulus acak dengan batasan (constrained-random), assertion, interface, dan tipe data yang lebih kaya. Tool yang menerima SystemVerilog juga menerima Verilog biasa. Untuk kebanyakan pekerjaan tingkat pengantar, keduanya terlihat sama persis.

Apa perbedaan Verilog dan VHDL?

Verilog dan VHDL sama-sama bahasa deskripsi hardware yang menyelesaikan masalah yang sama. Sintaks Verilog berasal dari C dan lebih ringkas; sintaks VHDL berasal dari Ada, lebih panjang, dan lebih ketat soal tipe. Pemakaiannya di industri berbeda-beda menurut wilayah dan tim. Keduanya masih hidup dan keduanya terstandardisasi (IEEE 1364/1800 untuk Verilog/SystemVerilog, IEEE 1076 untuk VHDL).

Apakah Verilog sulit dipelajari?

Sintaksnya kecil, lebih kecil daripada C++. Bagian yang sulit adalah melepaskan kebiasaan dari dunia software. Di Verilog, kebanyakan pernyataan menggambarkan hal yang terjadi pada waktu yang sama, bukan berurutan, dan salah memilih penugasan blocking atau non-blocking bisa menentukan apakah rangkaianmu berfungsi atau tidak. Wajar kalau minggu pertama terasa membingungkan sebelum semuanya masuk akal.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai