Anda di halaman 1dari 12

Hari ke-2, session-4

Simulasi HDL menggunakan MODELSim


Tujuan : ModelSim adalah simulator yang umum dipakai, bekerja stand
alone dan terdapat pada platform Windows sehingga peserta diharapkan memahami fungsi simulasi pada perancangan dengan HDL dan dapat menggunakan simulator ModelSim .

Metoda : Mengikuti tutorial pada modul ini kemudian dilanjutkan dengan


mengerjakan latihan disain sederhana sesi latihan yang diberikan.

Tutorial
Pendahuluan ModelSim adalah tool yang digunakan untuk mensimulasikan hasil design HDL, dengan melakukan simulasi rancangan dapat terverifikasi fungsinya. Membuat Project Baru Untuk memulai model sim kita harus membuka sebuah project, untuk membuat project baru :
Pilih > File > New > Project

Setelah itu isilah nama project (Project Name) dengan Pelatihan_IC , lokasi project (Project Location) C:/Modeltech_6.0/pelatihan_IC, dan nama library : work , kemudian klik OK. Jika direktori belum ada maka akan muncul dialog box untuk membuat direktori baru klik OK.

Pusat Mikroelektronika ITB

1-12

Hari ke-2, session-4

Menambahkan file baru ke dalam project. Kemudian akan muncul dialog box untuk menambahkan items kedalam project, klik Create New File.

Setelah Create New File diklik akan muncul dialog box, isilah nama file dengan and_behaviour , kemudian type file VHDL, folder file disimpan pada Top Level.

Setelah itu pada workspace akan tampak file yang kita create, kemudian ketikkan pada text editor text VHDL berikut:
1 library IEEE; 2 use IEEE.std_logic_1164.all; 3 4 entity and_behaviour is 5 port ( A : in std_logic; 6 B : in std_logic; 7 Y : out std_logic 8 ); 9 end entity and_behaviour; 10 11 architecture behaviour of and_behaviour is 12 begin 13 Y <= A and B; 14 end behaviour;

Pada saat menambahkan file baru file belum di set sebagai type vhdl maka kita harus menset dengan cara workspace set file
Pusat Mikroelektronika ITB 2-12

Hari ke-2, session-4


and_behaviour.vhd menjadi type VHDL dengan cara klik kanan file and_behaviour.vhd pada workspace kemudian pilih properties.

Set compile to library pada work , kemudian type VHDL dengan menekan button Change Type.

Kompilasi Sebelum disimulasikan pada waveform editor file .vhd harus di-compile terlebih dahulu. Untuk meng-compile file vhd klik compile button jika kompilasi sukses maka akan muncul tanda ( ) hijau pada workspace dan pada prompt transcript Kompilasi juga dapat dilakukan pada prompt dengan perintah vcom nama_file. Simulasi Setelah compile berhasil rancangan sudah dapat disimulasikan dengan menggunakan waveform editor.
# Compile of and_behaviour.vhd was successful.

Pusat Mikroelektronika ITB

3-12

Hari ke-2, session-4

Untuk melakukan simulasi double-klik entity and_behaviour pada library work. Atau dapat juga dengan mengetikkan pada prompt:
VSIM 1> vsim work.and_behaviour

Untuk memulai simulasi dengan menampilkan wave simulator klik kanan pada instance and_behaviour pada pop-up menu pilih Add > Add to Wave maka waveform simulator akan muncul.

Pusat Mikroelektronika ITB

4-12

Hari ke-2, session-4

Membuat sinyal pada WaveForm Editor

Untuk memberikan nilai pada sinyal dilakukan dengan mengklik kanan pada sinyal yang akan kita beri nilai, kemudian pilih force maka akan muncul dialog box seperti dibawah. Isilah value dengan 0, kemudian klik OK.

Lakukan hal yang sama seperti juga untuk sinyal b kemudian klik run . Sampai tahap ini kita telah mensimulasikan memberi input nilai a dan b dengan 0 kemudian hasilnya akan bernilai 0, amati pada waveform editor. Ulangi langkah diatas untuk nilai seperti tabel kebenaran AND. amati hasil simulasi apakah sesuai dengan tabel kebenaran?
a\b 0 1 0 0 0 1 0 1

Tabel kebenaran AND

Pusat Mikroelektronika ITB

5-12

Hari ke-2, session-4

Membuat .do file. Kita dapat menyimpan hasil simulasi kita pada file berekstensi *.do sehingga jika kita ingin melihat hasil simulasi kita kita dapat memanggilnya tanpa mengulangi simulasi. Untuk membuat file berekstensi do klik File> New > Source > Do kemudian copy-kan command2 hasil simulasi kita pada text editor :
vsim work.and_behaviour add wave sim:/and_behaviour/* force -freeze sim:/and_behaviour/a force -freeze sim:/and_behaviour/b run force -freeze sim:/and_behaviour/b run force -freeze sim:/and_behaviour/a force -freeze sim:/and_behaviour/b run force -freeze sim:/and_behaviour/b

0 0 0 0 1 0 1 0 0 0 1 0

run kemudian save pada file bernama and_behaviour.do Menjalankan .do file. Pada prompt ketik :

VSIM > do and_behaviour.do

Membuat TestBench. file .do umumnya hanya jalan pada ModelSim, agar simulasi kita dapat dijalankan pada tools lain kita harus membuat TestBench. Pada waveform editor klik tombol restart atau ketik restart pada prompt. Kemudian klik kanan sinyal a dan pilih create/modify Waveform.

Pusat Mikroelektronika ITB

6-12

Hari ke-2, session-4 Kemudian pada dialog box yang muncul pilih Constant untuk pattern; Start Time : 0 dan End Time : 100 klik next, dan pada dialog berikutnya isi value dengan 0 dan klik finish, maksudnya kita membuat sinyal konstan bernilai 0 pada selang waktu 0 100 ns.

Ulangi langkah diatas untuk sinyal b, kemudian untuk periode berikutnya kemudian klik tombol run -all.

Untuk membuat file testbench File> Export Waveform dan muncul dialogbox pilih VHDL testbench dan File Name and_behaviour_tb akhiri dengan klik ok.

Pusat Mikroelektronika ITB

7-12

Hari ke-2, session-4 LATIHAN Latihan 1. Simulasikan fungsi gerbang OR dengan langkah seperti pada tutorial diatas.
a\b 0 1 0 0 0 1 0 1

Tabel kebenaran OR

Untuk menambah file .vhd baru kedalam project : File > Add to Project > New File. Untuk menambah file .vhd yang sudah ada kedalam project : File > Add to Project > Existing File. Latihan 2 Simulasikan rangkaian mux kemudian amatilah hasil simulasi. a b sel y

Rangkaian mux

sel 0 1

y a b

Hint : gunakan syntax when.


Input : a , b, sel. Output : y.

Syntax : y <= a when sel = 0 else b;

Latihan 3 Simulasikan rangkaian adder/penjumlahan dengan memberikan input yang berbeda-beda kemudian amatilah hasil simulasi. Hint : Syntax : sum <= a + b; Latihan 4 Simulasikan rangkaian subtractor/pengurangan. Hint : pada operasi biner pengurangan/subtractor dapat dilakukan dengan penjumlahan dengan negasi. Untuk negasi dapat dilakukan dengan 2complemen yaitu menginvers nilai kemudian menambahkan 1.
Pusat Mikroelektronika ITB 8-12

Input : a , b : std_logic_vector( 7 downto 0). Output : sum: std_logic_vector( 7 downto 0).

Hari ke-2, session-4

0101(b) 5(d) 0011(b) 3(d) 0010(b) 2(d) 0101(b) 5(d) 1101(b) -3(d)

Hint :

0010(b) 2(d) Input : a , b : std_logic_vector( 7 downto 0). Output : result : std_logic_vector( 7 downto 0). Signal : b_compl : std_logic_vector( 7 downto 0)

Syntax : b_compl <= (not a)+ "00000001"; result <= a + b_compl;

Latihan 5 Simulasikan rangkaian comparator/pembanding.


input A = B A /= B result 1 0

Hint : gunakan syntax if. Input : a , b : std_logic_vector( 7 downto 0). Output : result : std_logic_vector( 7 downto 0). Syntax : y <= ' when a = b else ' ; 1' 0'

ModelSim
Pusat Mikroelektronika ITB 9-12

Hari ke-2, session-4

Bar simulasi.

10

1. workspace : berisi project, library, sim, dan file untuk mempermudah mengolah desain. 2. objects : sinyal yang disimulasikan. 3. text editor : untuk mengedit text baik vhdl, verilog, do, tcl, dll. 4. prompt : command prompt untuk menginput command dengan text. 5. compile : tombol kompilasi. 6. compile all: untuk meng-compile seluruh file pada project. 7. simulate : untuk mensimulasikan file yang telah dicompile. 8. break : untuk menghentikan simulasi. 9. restart : untuk mengulang simulasi. 10. run : untuk menjalankan simulasi selama periode tertera (100ns).

ENJOY HDL

Pusat Mikroelektronika ITB

10-12

Hari ke-2, session-4 Membuat interface dengan Tcl ModelSim menyediakan fasilitas interface grafis untuk mempermudah melakukan simulasi, untuk membuat interface grafis ini dilakukan dengan menggunakan bahasa yang disebut Tcl. buatlah file baru file>New>Source>Other kemudian isikan code Tcl dibawah ini.
proc and_behaviour {} { if {[winfo exists .behav]} { destroy .behav} toplevel .behav wm geometry .behav 150x200+2+2 buat_kanvas .behav.i pack .behav.i create_run_buttons .behav.i} proc create_run_buttons { obj } { set rb $obj.a_0 button $rb -command "force -freeze /and_behaviour/a 0 0 " -text " 0 "

pack $rb
$obj.c create window 1c 2c -window $rb set rb $obj.a_1 button $rb -command "force -freeze /and_behaviour/a 1 0 " -text " 1 " pack $rb $obj.c create window 1c 3c -window $rb set rb $obj.b_0 button $rb -command "force -freeze /and_behaviour/b 0 0 " -text " 0 " pack $rb $obj.c create window 3c 2c -window $rb set rb $obj.b_1 button $rb -command "force -freeze /and_behaviour/b 1 0 " -text " 1 " pack $rb $obj.c create window 3c 3c -window $rb set rb $obj.run button $rb -command "run" -text " pack $rb $obj.c create window 2c 4c -window $rb } Run "

proc buat_kanvas { obj } { frame $obj -height 20c -width 20c -bg gray -relief flat canvas $obj.c -height 20c -width 20c -bg gray -relief flat pack $obj.c -in $obj when { /and_behaviour/a'event or /and_behaviour/b'event} { catch {destroy .behav.i.rslt} set disp [examine -value /and_behaviour/y] label .behav.i.rslt -text $disp .behav.i.c create window 2c 1c -window .behav.i.rslt} }

Pusat Mikroelektronika ITB

11-12

Hari ke-2, session-4 Save file dengan nama tcl_interface.tcl kemudian load design dilanjutkan load file Tcl dengan perintah source dan menjalankan file tcl seperti berikut: Modelsim> source tcl_interface.tcl Modelsim> and_behaviour Maka akan muncul window berikut:

Dengan interface diatas anda dapat mensimulasikan fungsi and yang anda buat dengan lebih mudah, tombol sebelah kiri mengindikasikan nilai a sedangkan tombol sebelah kanan nilai b kemudian untuk menjalankan digunakan tombol run, cobalah klik tombol dan amati hasilnya pada waveform.

Pusat Mikroelektronika ITB

12-12

Anda mungkin juga menyukai