Panduan Pemula dalam Menggunakan Modelsim untuk Simulasi FPGA dan ASIC
Tutorial – Menggunakan Modelsim untuk Simulasi, untuk Pemula.
Modelsim adalah program yang dibuat oleh Mentor Graphics yang digunakan untuk mensimulasikan desain VHDL dan Verilog Anda. Ini adalah program simulasi yang paling banyak digunakan dalam bisnis dan pendidikan. Tutorial ini menjelaskan terlebih dahulu mengapa simulasi itu penting, kemudian menunjukkan bagaimana Anda dapat memperoleh Modelsim Student Edition secara gratis untuk penggunaan pribadi Anda.
Simulasi adalah langkah penting dalam merancang FPGA dan ASIC. Simulasi memungkinkan desainer untuk menstimulasi desainnya dan melihat bagaimana kode yang mereka tulis bereaksi terhadap stimulus. Simulasi yang hebat akan menggunakan semua kemungkinan keadaan desain untuk memastikan bahwa semua skenario masukan akan ditangani dengan tepat. Apakah Anda lupa pernyataan if di suatu tempat? Apakah Anda ingat untuk memberikan setiap tugas pernyataan kasus yang mungkin? Ini adalah jenis kesalahan yang sangat mudah dilakukan saat Anda tidak mensimulasikan desain Anda. Mari kita mulai.
Apakah Anda telah mengunduh dan menginstal Modelsim di komputer Anda? Dapatkan di sini. Lakukan instalasi dengan parameter default. Perhatikan bahwa Anda perlu meminta lisensi dari Mentor Graphics . Di akhir instalasi Anda harus memilih Selesai dan jendela browser akan terbuka dengan formulir Permintaan Lisensi. Mengklik link permintaan lisensi yang ada dari bookmark browser Anda atau dari link yang diposting di web tidak akan berfungsi.
Kode yang akan kita simulasikan adalah desain VHDL di bawah ini. Kode sebenarnya tidak penting, jadi jika Anda mempelajari Verilog tidak apa-apa! Anda tidak perlu mengetahui VHDL untuk tutorial ini. Kode VHDL membuat And Gate sederhana dan memberikan beberapa masukan ke dalamnya melalui bangku tes. Salin kode di bawah ini ke and_gate.vhd dan testbench ke and_gate_tb.vhd.
and_gate.vhd:
library ieee;
use ieee.std_logic_1164.all;
entity and_gate is
port (
input_1 : in std_logic;
input_2 : in std_logic;
and_result : out std_logic
);
end and_gate;
architecture rtl of and_gate is
signal and_gate : std_logic;
begin
and_gate <= input_1 and input_2;
and_result <= and_gate;
end rtl;
dan_gate_tb.vhd:
library ieee;
use ieee.std_logic_1164.all;
entity and_gate_tb is
end and_gate_tb;
architecture behave of and_gate_tb is
signal r_SIG1 : std_logic := '0';
signal r_SIG2 : std_logic := '0';
signal w_RESULT : std_logic;
component and_gate is
port (
input_1 : in std_logic;
input_2 : in std_logic;
and_result : out std_logic);
end component and_gate;
begin
and_gate_INST : and_gate
port map (
input_1 => r_SIG1,
input_2 => r_SIG2,
and_result => w_RESULT
);
process is
begin
r_SIG1 <= '0';
r_SIG2 <= '0';
wait for 10 ns;
r_SIG1 <= '0';
r_SIG2 <= '1';
wait for 10 ns;
r_SIG1 <= '1';
r_SIG2 <= '0';
wait for 10 ns;
r_SIG1 <= '1';
r_SIG2 <= '1';
wait for 10 ns;
end process;
end behave;
Mari kita buka Modelsim. Anda akan disambut dengan jendela yang terlihat seperti ini
Jendela Utama Modelsim
Untuk menjalankan simulasi, Anda perlu membuat proyek. Klik File -> Baru -> Proyek. Anda akan melihat jendela disajikan di sebelah kiri. Pilih lokasi untuk proyek baru Anda dan beri nama and_gate. Proyek di Modelsim memiliki ekstensi file .prj. Biarkan pengaturan lainnya ke default. Ini hanya mengatakan bahwa semua kode akan dikompilasi ke dalam perpustakaan “berfungsi”.
Klik Tambah File yang Ada seperti yang ditunjukkan pada gambar di sebelah kanan. Arahkan ke lokasi tempat Anda mengunduh and_gate.vhd dan and_gate_tb.vhd dan tambahkan keduanya ke proyek Anda. Pertahankan pengaturan lainnya pada defaultnya. Klik OK setelah selesai.
Jendela Proyek Modelsim – File Ditambahkan ke Proyek
Perhatikan sekarang bahwa file telah berhasil ditambahkan ke proyek Anda. Lihat dua tanda tanya biru pada Gambar Modelsim Project Window di atas? Artinya Modelsim belum mengkompilasi filenya. Anda perlu mengkompilasi file sumber. Untuk melakukannya, klik kanan pada and_gate.vhd, klik Kompilasi, lalu klik Kompilasi Semua. Anda akan melihat pesan di jendela Konsol berwarna hijau yang menyatakan bahwa kompilasi berhasil seperti yang ditunjukkan pada gambar di bawah.
Hasil Kompilasi yang Berhasil
Untuk memulai simulasi Anda, klik Simulasikan di Menu Bar, lalu klik Mulai Simulasi. Ini membuka Jendela Mulai Simulasi. Klik tanda tambah di sebelah kantor, lalu klik tanda tambah di sebelah and_gate_tb. Pastikan Anda memilih and_gate_tb dan bukan and_gate karena kami ingin mensimulasikan desain di tingkat bangku tes. Setelah and_gate_tb disorot, klik OK.
Jendela Simulasi Modelsim – Simulasi Siap
Hampir sampai! Simulasi sudah siap dan menunggu. Sekarang, sebagian besar waktu Anda menggunakan Modelsim akan dihabiskan untuk melihat tampilan bentuk gelombang. Tampilan bentuk gelombang berisi gelombang (biner 0 dan 1, digit heksadesimal, digit biner, tipe enumerasi, dll) untuk semua sinyal dalam desain Anda. Ini menunjukkan bagaimana modul Anda bereaksi terhadap stimulus yang berbeda. Gambar berikutnya menunjukkan seperti apa tampilan bentuk gelombang Anda, tetapi pertama-tama Anda perlu menambahkan beberapa sinyal untuk dipantau. Dalam contoh ini, kami akan memantau semua sinyal di bangku tes. Untuk melakukannya, klik kanan di and_gate_tb di jendela sim dan klik Tambahkan Gelombang . Anda juga dapat mengeklik dan menyeret sinyal ke jendela bentuk gelombang dari jendela lain di Modelsim.
Ini adalah jendela bentuk gelombang Anda. Semua sinyal bangku tes telah ditambahkan sebagai sinyal yang dapat Anda pantau. Untuk menjalankan simulasi, klik Ikon dengan selembar kertas kecil dan panah bawah di sebelah waktu 100 ns. Ini akan menjalankan simulasi Anda selama 100 nanodetik. Perhatikan bagaimana sinyalnya berubah! Selamat! Anda telah membuat simulasi Modelsim pertama Anda!
Tutorial ini menunjukkan cara membuat proyek Anda sendiri di Modelsim, menambahkan file ke proyek Anda, mengkompilasi file sumber, memulai simulasi, dan melihat bentuk gelombang Anda. Anda siap menjelajahi semua contoh di halaman web ini dan menjalankan sendiri simulasinya. Gunakan sidebar di bagian atas halaman untuk navigasi.