ModelSim之命令行仿真入門


下面是我們的Tcl仿真步驟:
啟動ModelSim SE, 首先看到在在ModelSim SE右邊的窗口有ModelSim> 這樣的提示符。在提示符后,順序運行以下命令:
    vlib work  該命令的作用是在該目錄下建立一個work目錄,請注意不要用操作系統來新建一個work的文件夾,因為用操作系統建立的work文件夾並沒有ModelSim SE自動生成的_info文件。
    vmap work work    該命令的作用是將目前的邏輯工作庫work和實際工作庫work映射對應。
    vlog camera.v  camera_tb.v  該命令的作用是編譯這些文件,要注意的是文件可以單獨分開編譯,但是一定要先編譯被調用的文件。假如是VHDL文件就可以用vcom file1,file2命令來編譯。
    vsim camera_tb  仿真命令, 注意后面的參數必須為camera_tb.v文件中的模塊名。
    add wave/camera_tb/ * 該命令的作用是將testbench文件camera_tb.v中模塊camera_tb下所有的信號變量加到波形文件中去,注意在“*”前要加空格。這時候你也可以看到wave文件被打開。當然也可以單個信號的添加,例如添加時鍾:add wave clk 等等。
    run 2000  該命令的作用是運行2000個單位時間的仿真。也可以用run –all命令來一直仿真下去。
    這時候就可以在wave窗口文件中看到你的仿真結果。
    當然也可以觀察其它窗口的結果,用view命令顯示     
     view * 觀察包括signals、wave、dataflow等窗口文件。也可以分別打開。例如用view signals來觀察信號變量。

    quit -f/-force/-sim  該命令分別是退出ModelSim(-f/-force)和退出仿真(-sim)。


    ModelSim SE6..2b還有一個很好用的功能。就是可以看整個文件所形成的數據流程,各個模塊之間的邏輯聯系。具體方法是在仿真后執行命令  view datalflow 就可以打開dataflow文件,在dataflow的窗口菜單中點擊add中的view all nets就可以觀察到各個模塊之間的邏輯聯系,模塊一般都為initial模塊、always模塊、assign模塊等等。點擊中一個模塊,則這個模塊變為紅色。這時候在view菜單下點擊show wave就可以在窗口下方彈出wave窗口,不同的是這個wave窗口所顯示的信號變量僅為點擊中的模塊所包括的信號變量,這時候也可以點擊仿真run –all小圖標來仿真有關這個模塊的輸入輸出關系。

    以上命令,就是ModelSim SE仿真程序所用到的基本命令。實際上都可以在窗口菜單中找到,效果是一樣的,可能大家覺得每次用鼠標點擊菜單方式更快一點,但是在ModelSim SE中開可以執行一種批處理文件,就是file.do文件,相當於DOS中的.bat文件。你可以用批處理方式來使你仿真簡單化,具體做法為,將你所要執行的命令編輯在一起,以上面所講為例,我可以編輯一個camera.do文件,文件內容如下:
vlib work                                 // 建庫
vmap work work                      // 映射
vlog camer.v camera_tb.v         // 編譯
vsim camera_tb                      // 仿真(模塊名稱)
add wave/camera_tb/ *            // 將camera_tb下的所有信號變量加入到wave窗口中,注意”*”前必須有空格
run 2000                  // 或者用run –all等。
view  dataflow             // 用navigate  nets觀察dataflow,不想觀察就可以不加這條指令

將上述內容保存后,每次用命令do  camera.do 就可以自動執行想要的仿真動作。

另外,對tcl命令作一個小小的整理:

1、編譯(它們的效果是等效的):

    vlog div.v div_tb.v

    vlog -work work div.v div_tb.v

   或者將它們分開進行單獨編譯

2、仿真(效果等效):

    vsim div_tb

    vsim -lib work div_tb

    vsim work.div_tb

    sim -L D:/Modelsim/Installfiles/altera/altera_mf work.videoin_tb

3、添加波形

    add wave/div_tb/ *

    add wave sim:/div_tb/*       //*前面沒有空格

也可以單獨添加波形(可以將它們直接寫成一個wave.do文件,以便直接執行do wave.do就可以完成各種波形的編輯設置):

add wave -divider Input
add wave sim:/divider_tb/rst_n
add wave sim:/divider_tb/clk_in
add wave -divider Ouput
add wave sim:/divider_tb/clk_out
#配置wave相關命令
WaveRestoreCursors {{Cursors 1} {200ns} 0} {{Cursors 2} {400ns} 0}
configure wave -rowmargin 4
configure wave -childrowmargin 2
configure wave -namecolwidth 150
configure wave -valuecolwidth 100
configure wave -signalnamewidth 0
configure wave -justifyvalue left
configure wave -snapdistance 10
configure wave -datasetprefix 0
configure wave -gridoffset 0
configure wave -gridperiod 1
configure wave -griddelta 40
configure wave -timeline 0

update

WaveRestoreZoom {0 ns} {1000 ns}

上面就是一些常用的Modelsim的tcl命令,至於其它的tcl命令有待后續補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM