?? modelsim se操作指南.txt
字號:
第一章 介 紹
本指南是為 ModelSim5.5f版本編寫的,該版本運行于UNIX和Microsoft Windows 95/98/Me/NT/2000的操作系統環境中。本指南覆蓋了VHDL和Verilog模擬仿真,但是你在學習過程中會發現對于單純的HDL設計工作而言,它是一個很有用的參考。ModelSim具備強大的模擬仿真功能,在設計、編譯、仿真、測試、調試開發過程中,有一整套工具供你使用,而且操作起來極其靈活,可以通過菜單、快捷鍵和命令行的方式進行工作。ModelSim的窗口管理界面讓用戶使用起來很方面,它能很好的與操作系統環境協調工作。ModelSim的一個很顯著的特點就是它具備命令行的操作方式,類似于一個shell有很多操作指令供你使用,給人的感覺就像是工作在Unix環境下,這種命令行操作方式是基于Tcl/Tk的,其功能相當強大,這需要在以后的實際應用中慢慢體會。
ModelSim的功能側重于編譯、仿真,不能指定編譯的器件,不具有編程下載能力。不象 Synplify和MAX+PLUS II可以在編譯前選擇器件。而且ModelSim在時序仿真時無法編輯輸入波形,不象MAX+PLUS II可以自行設置輸入波形,仿真后自動產生輸出波形,而是需要在源文件中就確定輸入,如編寫測試臺程序來完成初始化、模塊輸入的工作,或者通過外部宏文件提供激勵。這樣才可以看到仿真模塊的時序波形圖。另外對于Synplify來說,也只具有編譯能力,但是比MAX+PLUS II可編譯的verilog的內容要多,所以常常可以現在Synplify下編譯,生成編譯文件再送到MAX+PLUS II中使用。
ModelSim還具有分析代碼的能力,可以看出不同的代碼段消耗資源的情況,從而可以對代碼進行改善,以提高其效率。
第二章 ModelSim的主要結構
ModelSim的主窗口(Main window)包括菜單欄、工具欄、工作區和命令行操作區。
在工作區可以顯示Project Tab、Library Tab、Sim Tab(顯示Load Design、Hierarchical Structure);在命令行操作區,可以用命令提示符的方式進行編譯、仿真設計,同時打開其他窗口。
在菜單欄View下可以打開,source window、list window、wave window、structure window、 signal window、dataflow window、process window、viarables window等窗口,用來測試仿真、調試仿真。由此也可以看出該軟件具有強大的仿真設計能力,它提供的工具很多。
在幫助菜單里有SE的幫助文件和Tcl的幫助文件,是學用ModelSim很好的幫手。
第三章 ModelSim的簡要使用方法
在這一章里通過一些課程來簡單介紹ModelSim的使用方法,更多的需要在實際應用中熟練和掌握。
第一課 Create a Project
1. 第一次打開ModelSim會出現Welcome to ModelSim對話框,選取Create a Project,或者選取File\New\Project,然后會打開Create Project對話框。
2. 在Create Project對話框中,填寫test作為Project Name;選取路徑Project Location作為Project文件的存儲目錄;保留Default Library Name設置為work。
3. 選取OK,會看到工作區出現Project and Library Tab。
4. 下一步是添加包含設計單元的文件,在工作區的Project page中,點擊鼠標右鍵,選取Add File to Project。
5. 在這次練習中我們加兩個文件,點擊Add File to Project對話框中的Browse按鈕,打開ModelSim安裝路徑中的 example目錄,選取counter.v和tcounter.v,再選取Reference from current location,然后點擊 OK。
6. 在工作區的Project page中,單擊右鍵,選取Compile All。
7. 兩個文件編譯了,鼠標點擊Library Tab欄,將會看到兩個編譯了的設計單元列了出來。看不到就要把Library的工作域設為work。
8. 最后一不是導入一個設計單元,雙擊Library Tab中的counter,將會出現Sim Tab,其中顯示了counter設計單元的結構。也可以Design\Load design來導入設計。
到這一步通常就開始運行仿真和分析,以及調試設計,不過這些工作在以后的課程中來完成。結束仿真選取Design \ End Simulation,結束Project選取File \ Close \ Project。
第二課 Basic VHDL Simulation
準備仿真
1. 為這次練習新建一個目錄,然后拷貝example目錄中所有的vhd文件到該目錄下。設置該目錄為當前工作目錄,這一步通過從該目錄調用ModelSim或是選取File\Change Directory命令來完成。
2. 在編譯任何HDL代碼前,要建立一個設計庫來存放編譯結果。選取Design \ Create a New Library生成一個新的設計庫。確定選取Create: a new library and a logical mapping to it,在Library Name域中鍵入work,然后選取OK。這就在當前目錄中建立了一個子目錄,即你的設計庫。ModelSim在這個目錄中保存了名為_info的特殊文件。
( Prompt : vlib work
vmap work work )
3. 選取工具欄里的Compile命令來編譯counter.vhd文件到新庫中。這將打開Compile HDL Source Files對話框。使用vcom命令是看不到的。從列表中選取counter.vhd再點擊Compile,完成后選取Done。可以編譯多個文件,按照設計的需要依次選取進行編譯。
( Prompt : vcom counter.vhd )
4. 選取工具欄里的Load design按鈕,導入設計單元。Load design對話框可以讓你選擇庫和頂級( top-level )設計單元來仿真,你也可以為仿真選取Simulation Resolution限制。這次仿真運行,下述是缺省的顯示:
• Simulator Resolution: default (the default is 1 ns)
• Library: work
• Design Unit: counter
如果設計單元是一個實體,你可以點擊前面的加號,來瀏覽其關聯的結構。
( Prompt : vsim counter )
5. 選取counter,然后選擇Load接受設置。
6. 下面,選取View \ All打開所有的窗口,關于窗口的描述,參閱ModelSim User’s Manual。
( Prompt : view * )
7. 在Signals window選取View\List\Signals in Region,這個命令顯示List window中的頂級( top-level )信號。
( Prompt : add list /counter/* )
8. 下步,通過從Signals window選取View\Wave\Signals in Region添加頂級( top-level )信號到Wave window。
( Prompt : add wave /counter/* )
運行仿真
通過應用始終輸入激勵來開始仿真。
1. 點擊主窗口,在vsim提示符下敲如下面的命令:
( force clk 1 50 , 0 100 –repeat 100 )
( MENU : Signals\Edit\Clock )
ModelSim解釋force命令如下:
 force clk to the value 1 at 50 ns after the current time
 then to 0 at 100 ns after the current time
 repeat this cycle every 100 ns
2. 現在你可以練習來自于主窗口或波形窗口工具條按鈕的兩個不同的Run功能。(Run功能在主窗口和波形窗口中定義,即這兩個窗口中有Run功能)。首先選取Run按鈕,運行完成之后選取Run All。
Run. 運行仿真,在100ns后停止。
(PROMPT: run 100) (MENU: Run \ Run 100ns)
Run-All. 一直運行仿真,直到選取Break。
(PROMPT: run -all) (MENU: Run \ Run -All)
3. 選取主窗口或波形窗口的Break按鈕來中斷仿真,一旦仿真到達一個可接受的停止點,它就停止運行。
在源文件窗口中的箭頭指向下一條將被執行的語句。(如果暫停發生時,仿真沒在評測一個過程,則沒有箭頭顯示在源文件窗口上)。
下面,你將在18行的函數內部設置一個斷點。
4. 移動鼠標到源文件窗口,在18行上點擊設置斷點,可以看到緊挨著行號有一個紅點,可以用鼠標點擊切換斷點的使能與否,斷點禁止后看到是一個小的紅色的園環。可以在斷點上點擊鼠標右鍵,選取Remove BreakPoint 18來取消斷點。
( PROMPT : bp counter.vhd 18 )
5. 選取Continue Run按鈕恢復中斷了的運行,ModelSim會碰上斷點,通過源文件中的一個箭頭或是在主窗口中的一條中斷信息來顯示出來。
(PROMPT: run -continue) (MENU: Run \ Continue)
6. 點擊Step按鈕可以單步執行仿真,注意Variables window中值的變化。如果你愿意可以持續點擊Step。
(PROMPT: run -step) (MENU: Step)
7. 當你完成了,敲入以下命令結束仿真。
quit -force
8. 命令沒有尋求確認就結束了ModelSim。
第三課 Basic verilog Simulation
1. 新建一個目錄,并設置該目錄為當前工作目錄,通過從該目錄調用ModelSim或是選取File\Change Directory命令來完成。
2. 拷貝example目錄中verilog文件到當前目錄下。在你編譯verilog文件前,你需要在新目錄下生成一個設計庫。如果你僅僅熟悉解釋性verilog仿真器,諸如Cadence Verilog-XL,那么對于你來說這是一個新的方法。因為ModelSim是一個編譯性Verilog 仿真器,對于編譯它需要一個目標設計庫。如果需要的話,ModelSim能夠編譯VHDL和Verilog代碼到同一個庫中。
3. 在編譯任何HDL代碼前,要建立一個設計庫來存放編譯結果。選取Design \ Create a New Library生成一個新的設計庫。確定選取 Create: a new library and a logical mapping to it,在Library Name域中鍵入work,然后選取OK。這就在當前目錄中建立了一個子目錄,即你的設計庫。ModelSim在這個目錄中保存了名為_info的特殊文件。
( Prompt : vlib work
vmap work work )
4. 下面你將編譯Verilog設計。
這個設計例子由兩個Verilog源文件組成,每一個都包含一個唯一的模塊。文件counter.v包含一個名為counter的模塊,它執行一個簡單的八位加法計數器。另一個文件tcounter.v是一個測試臺模塊(test_counter),通常用來校驗counter。在仿真下,你可以看到這兩個文件,通過一個被測試臺例示了的模塊counter的一個簡單的實例(名為dut的實例),來層次化的設置了。稍候你將有機會看一下這個代碼的結構,現在,你需要編譯兩個文件到work設計庫。
5. 通過選取工具條中的Compile按鈕來編譯兩個文件。
( PROMPT : vlog counter.v tcounter.v )
這就打開了Compile HDL Source Files對話框。
選取兩個文件后,選擇Compile,編譯完成后選取Done。
6. 選取工具條中的Load Design按鈕開始仿真。
( PROMPT : vsim test_counter )
Load Design對話框允許你從指定的庫中選取一個設計單元仿真。你也可以
為仿真選取Simulation Resolution限制,缺省的庫是work,缺省的Simulation Resolution是1ns。
7. 選取test_counter,點擊Load接受這些設置。
8. 通過在主窗口下的vsim提示符下敲入下述命令來調出Signals、List and Wave window:
view signals list wave
(MENU: View\<window name\)
9. 為了列示頂級( top-level )信號,移動鼠標到Signals window,選取View\List\Signals in Region。
( Prompt : add list /test_counter/* )
10. 現在向Wave window添加信號。在Signals window選取Edit\Select All選擇三個信號,拖動三個信號到Wave window的路徑名或是數值窗格的任一個中。
HDL條目也能夠從一個窗口拷貝到另一個窗口(或者是在Wave and List window內部),通過Edit \ Copy和Edit \ Paste菜單命令。也能刪除選取的條目Edit \ Delete。
11. 下面打開Source window,選取View \ Source
( Prompt : view source )
12. 導入設計的時候會在工作去開出一個新的Sim Tab欄。這個Structure Pane展示了設計的層次結構。你可以點即“+”(expand)或“-”(contract)來觀察。
13. 點擊其中的Function increment可以注意到其他窗口是怎么適當的自動更新的。明確地說,Source window顯示了你在 Structure window所選的層次水平的Verilog代碼.在這種方式下使用Structure Pane類似于解釋性Verilog的范圍命令。現在,點擊Structure Pane的頂層線,確定test_counter模塊顯示在Source window。
運行仿真
1. Run運行100ns,缺省設置。
(PROMPT: run ) (MENU: Run\Run 100ns)
2. 設置Run Length為500ns,然后Run。
現在仿真運行了600ns,在工作取底部狀態欄可以看到這些信息。
3. 上個命令使仿真器前進了500ns,也可以設置仿真器推進的時間
run @ 3000
實際仿真器向前推進了2400ns(3000-600)
4. 選取主窗口Run All。
(PROMPT: run -all ) (MENU: Run\Run -All)
5. 選取Break中斷運行。
看Source window,察看中斷執行的語句。
調試仿真
1. 在List window選取/test_counter/count。從List window菜單條中選取 Prop \ Signal Props。Modify Signal Properties (list) 對話框打開了。
為信號counter選取十進制(在Radix),相應的List window的輸出也發生改變,成為十進制數,而不是缺省的二進制了。
2. 我們選取工作區Structure Pane中的dut:counter,然后在counter.v中的30行(這里包含一個到Verilog功能增量的調用)設置斷點。
3. 選取Restart按鈕,重載設計組件和重置仿真時間為零。
(PROMPT: restart ) (MENU: File\Restart)
確認Restart對話框中所有條目被選中,然后點擊Restart。
例子中的Verilog代碼中19行有一個stop語句,如果不Restart的話,將會停
在這一句上。
4. 選取Run –All(主窗口),恢復執行仿真。中斷后看Source window。
(PROMPT: run -all ) (MENU: Run\Run -All)
5. 正常的,當中斷到達后你對一個或多個信號的值感興趣,你有幾個選項可以檢測這些值。你能看顯示在Signals window中的值;可以在Source window中,在變量上點右鍵;或者使用examine命令。
examine count
命令的結果是,值會輸出在主窗口。
6. 執行單步跳使命令Step,遍歷Verilog源函數。
7. 結束仿真的命令為:quit –force。
第四課 Mixed VHDL/verilog simulation
準備仿真
1. 生成一個新的工作目錄,拷貝..\examples\mixedhdl\下的*.vhd和*.v文件到新目錄中。設置為為當前工作目錄。運行軟件,如果Welcome對話框出現,選取Proceed to ModelSim。
2. Select Design\Create a New Library
(PROMPT:vlib work)
Type Library Name:work
Select OK!
3. 編譯文件
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -