?? modulesim se 快速入門.txt
字號:
1.ModuleSim SE 快速入門
本文以ModelSim SE 5.6版本為基礎,介紹ModelSim SE的最基本用法,高深的我也不會 。
當你安裝完ModelSim SE之后,可以將你的ModelSim SE的起始路徑設置為你的工作目錄(如e:\verilog),具體方法是在右鍵單擊執行文件ModelSim SE的圖標再點擊屬性欄,就可以看到ModelSim SE的起始位置,改為你的工作目錄就可。
學習verilog語言也必須學習寫它的testbench文件,即測試文件。建議從最開始就學習寫,寫一個程序寫一個testbench。ModelSim SE仿真用的文件也就是testbench文件。Testbench文件可以在仿真中發現你的邏輯錯誤,對于以后作較大的程序更適用。而避免讓你在實際調試中的出現很多的問題而無頭緒。
好,現在假設你在e:\verilog目錄下有一個\div目錄,該目錄下有兩個文件div.v和tdiv.v為一個分頻時序描述文件和它的testbench文件。文件內容如下:
e:\verilog\div\div.v
module div(clk_i,clk_o,reset);
parameter DIV_N = 4;
input clk_i;
input reset;
output clk_o;
reg clk_o;
integer count;
always @ (negedge reset or posedge clk_i)
begin
if(!reset)
count <= 0;
else
if(count == 3)
count <= 0;
else
count <= count + 1;
end
always @ (negedge reset or posedge clk_i)
begin
if(!reset)
clk_o <= 0;
else
begin
if(count <= (DIV_N/2 - 1))
clk_o <= 0;
else
clk_o <= 1;
end
end
e:\verilog\div\tdiv.v
module testdiv;
reg clk_i;
reg reset;
wire clk_o;
always #50 clk_i = ~clk_i;
initial
begin
#0 reset = 0;clk_i = 0;
#100 reset = 1;
#2000 $stop;
end
div div1(.clk_i(clk_i),.clk_o(clk_o),.reset(reset));
endmodule
下面是我們的仿真步驟:
啟動ModelSim SE, 首先看到在在ModelSim SE右邊的窗口有ModelSim> 這樣的提示符。在提示符后,順序運行以下命令:
vlib work 該命令的作用是在該目錄下建立一個work目錄,請注意不要用操作系統來新建一個work的文件夾,因為用操作系統建立的work文件夾并沒有ModelSim SE自動生成的_info文件。
vmap work work 該命令的作用是將目前的邏輯工作庫work和實際工作庫work映射對應。
vlog div.v tdiv.v 該命令的作用是編譯這些文件,要注意的是文件可以單獨分開編譯,但是一定要先編譯被調用的文件。假如是VHDL文件就可以用vcom file1,file2命令來編譯。
vsim testdiv 仿真命令, 注意后面的參數必須為tdiv.v中的模塊名。
add wave/testdiv/ * 該命令的作用是將testbench文件tdiv.v中模塊testdiv下所有的信號變量加到波形文件中去。這時候你也可以看到wave文件被打開。
run 2000 該命令的作用是運行2000個單位時間的仿真。也可以用run –all命令來一直仿真下去。
這時候就可以在wave窗口文件中看到你的仿真結果。
當然也可以觀察其它窗口的結果,用view命令顯示
view * 觀察包括signals、wave、dataflow等窗口文件。也可以分別打開。例如用view signals來觀察信號變量。
ModelSim 5.6還有一個很好用的功能。就是可以看整個文件所形成的數據流程,各個模塊之間的邏輯聯系。具體方法是在仿真后執行命令 view datalflow 就可以打開dataflow文件,在dataflow的窗口菜單中點擊navigate(導航)中的view all nets就可以觀察到各個模塊之間的邏輯聯系,模塊一般都為initial模塊、always模塊、assign模塊等等。點擊中一個模塊,則這個模塊變為紅色。這時候在view菜單下點擊show wave就可以在窗口下方彈出wave窗口,不同的是這個wave窗口所顯示的信號變量僅為點擊中的模塊所包括的信號變量,這時候也可以點擊仿真run –all小圖標來仿真有關這個模塊的輸入輸出關系。
以上命令,就是ModelSim SE仿真程序所用到的基本命令。實際上都可以在窗口菜單中找到,效果是一樣的,可能大家覺得每次用鼠標點擊菜單方式更快一點,但是在ModelSim SE中開可以執行一種批處理文件,就是file.do文件,相當于DOS中的.bat
文件。你可以用批處理方式來使你仿真簡單化,具體做法為,將你所要執行的命令編輯在一起,以上面所講為例,我可以編輯一個div.do文件,文件內容如下:
vlib work // 建庫
vmap work work // 映射
vlog div.v tdiv.v // 編譯
vsim testdiv // 仿真(模塊名稱)
add wave/testdiv/ * // 將testdiv下的所有信號變量加入到wave窗口中,注意”*”前 // 必須, 有“ ”,即空格
run 2000 // 或者用run –all等。
view dataflow // 用navigate ? view all nets觀察dataflow,不想觀察就可以不
// 加這條指令
將上述內容保存后,每次用命令do div.do 就可以自動執行想要的仿真動作。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -