modelsim tutorial

12
Hari ke-2, session-4 Pusat Mikroelektronika ITB 1-12 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.

Upload: prawkr

Post on 19-Jun-2015

766 views

Category:

Documents


31 download

TRANSCRIPT

Hari ke-2, session-4

Pusat Mikroelektronika ITB 1-12

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.

Hari ke-2, session-4

Pusat Mikroelektronika ITB 2-12

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

Hari ke-2, session-4

Pusat Mikroelektronika ITB 3-12

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

# Compile of and_behaviour.vhd was successful. Kompilasi juga dapat dilakukan pada prompt dengan perintah vcom nama_file.

Simulasi

Setelah compile berhasil rancangan sudah dapat disimulasikan dengan menggunakan waveform editor.

Hari ke-2, session-4

Pusat Mikroelektronika ITB 4-12

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.

Hari ke-2, session-4

Pusat Mikroelektronika ITB 5-12

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

Hari ke-2, session-4

Pusat Mikroelektronika ITB 6-12

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 0 0 force -freeze sim:/and_behaviour/b 0 0 run force -freeze sim:/and_behaviour/b 1 0 run force -freeze sim:/and_behaviour/a 1 0 force -freeze sim:/and_behaviour/b 0 0 run force -freeze sim:/and_behaviour/b 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.

Hari ke-2, session-4

Pusat Mikroelektronika ITB 7-12

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.

Hari ke-2, session-4

Pusat Mikroelektronika ITB 8-12

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.

Rangkaian mux

sel y 0 a 1 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 :

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

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 2’complemen yaitu menginvers nilai kemudian menambahkan 1.

a b

y

sel

Hari ke-2, session-4

Pusat Mikroelektronika ITB 9-12

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

Hint : 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 result A = B 1 A /= B 0

Hint : gunakan syntax if.

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

Syntax : y <= '1' when a = b else '0';

ModelSim

Hari ke-2, session-4

Pusat Mikroelektronika ITB 10-12

Bar simulasi.

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

1 2 3

4

5 6 7 8

9

10

Hari ke-2, session-4

Pusat Mikroelektronika ITB 11-12

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 " Run " pack $rb $obj.c create window 2c 4c -window $rb

}

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}

}

Hari ke-2, session-4

Pusat Mikroelektronika ITB 12-12

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.