?? modelsim se操作指南.txt
字號:
(PROMPT : vlog cache.v memory.v proc.v)
(PROMPT : vcom util.vhd set.vhd top.vhd)
打開Compile HDL Source Files對話框。 逐個編譯Verilog文件。
cache.v memeory.v proc.v
4. 依賴設計,VHDL的編譯次序是特定的。在這個例子中,top.vhd文件必須最后編譯。按照下面的順序編譯文件:
util.vhd set.vhd top.vhd
5. 編譯完成,點Done。
運行仿真
1. 選取Load Design開始仿真。Load Design對話框打開,選取top實體點擊Load。
(PROMPT : vsim top)
2. View\All,(PROMPT : view *)
3. add list *
add wave *
(Signals MENU: View\List\Signals in Region)
(Signals MENU: View\Wave\Signals in Region)
4. 觀察一下工作區的Structure pane。注意設計中兩者的層次混合,VHDL級的用一個方框前綴指示,Verilog級的用一個圓形前綴指示。
5. 在Structure pane中點擊模塊c:cache,它的源代碼出現在源文件窗口。
6. 用查找功能定位cache.v文件中cache_set的聲明。
Edit\Find。
找到了可以發現,cache_set是cache.v文件內例示了的VHDL實體。
7. 在Structure window,點擊行“s0:cache_set(only)”。則Source window顯示了cache_set實體的VHDL代碼。
8. Quit -force
第五課 Debugging a VHDL simulation
準備仿真
1. 拷貝..\example\下的gates.vhd,adder.vhd,testadder.vhd文件到新建的工作目錄,并定位為當前工作目錄。
2. 生成一個新庫:vlib library_2。
3. 在命令行的方式下敲入以下命令將源文件編譯到新庫中
vcom –work library_2 gates.vhd adder.vhd testadder.vhd
4. 下一步是映射新庫到工作庫,可以編輯modelsim.ini文件來生成映射,或者用vmap命令生成一個邏輯庫名字來完成。
vmap work library_2
ModelSim為你修改modelsim.ini文件。
5. 選取Design\Load Design,打開Load Design對話框。
6. 確認simulation resolution為缺省;在設計單元中選取名為test_adder_structural的配置;單擊Load接受設置。
(PROMPT : vsim –t ns work.test_adder_structural)
7. 打開所有的窗口。(PROMPT:View *)(MENU:View\All)
8. 在Signals window中選區所有信號Edit\Select All然后拖到List window中。
(MENU:View\List\Signals in Region) (PROMPT:add list *)
9. 同樣地,把信號加到Wave window中。鍵入命令:add wave *
(MENU:View\Wave\Signals in Region)(DRAG&Drop)
10. 在主工具條上的運行時間選擇器中,改變運行時間設置為1000ns。
(MENU:Option\Simulation\Defaults)
運行調試仿真
1. 選取Run,運行仿真。(PROMPT:run)
主窗口中的一條消息將通報你有一個判斷錯誤。執行下面步驟查找錯誤。
2. 首先,改變仿真判斷選項。選取Option\Simulation。
3. 選取Assertions頁面。改變選擇為Break on Assertion to Error并點擊OK。這將使仿真停在HDL判斷語句上。
4. 選取Restart。(MENU:File\Restart) (PROMPT:restart)
確定Restart對話框中所有條目被選,然后點擊Restart。
5. 選取Run。可以看到Source window中的箭頭指向判斷語句。
(MENU:Run\Run 1000 ns) (PROMPT:run)
6. 在Variables window中,你可以看到i=6。這表示仿真停留在測試模式環路的第六次重復中。
7. 點擊加號“+”展開名為test_patterns的變量。
8. 也要展開排列test_patterns(6)的第六次紀錄。
判斷表明了Signal window中的 sum不等于Variables window中的sum字段。輸入a,b和cin的和應該等于輸出sum。但是在測試向量內有一個錯誤。為了改正這個錯誤,你需要重仿真且修改測試向量的初始值。
9. 執行restart –f命令
參數-f使ModelSim不出現確認對話框就重新仿真。
10. 在test Process window中選取 testbench process更新 Variables window。
11. 再次展開Variables window中的test_patterns和test_patterns(6)。點擊變量名字,高亮顯示.sum紀錄,然后選取Edit\Change。
12. 把value中數值的最后四位(1000),替換為0111,并點擊Change。(這只是暫時編輯,你必須用文本編輯器永久地改變源代碼。)
13. 選取Run。
(MENU:Run\Run 1 us) (PROMPT:run)
這樣,仿真運行時就不會報錯了。
改變new-line觸發
缺省的,對于列出信號的每一次變化一條新線顯示在List window中。下面的步驟將改變觸發因而每100ns就列出這些值。
1. 在List window中,選取Prop\Display Props。
2. 在Triggers頁面完成這些步驟。
•取消選取Trigger On:Signals以禁止在信號上觸發
•選取Trigger On:Strobe以開啟strobe
•在Strobe Period域鍵入100
•在First Strobe at域鍵入70
•單擊OK接受設置
3. 最后一步將把信號a,b和sum改為十進制。選取Prop\Signal Props,打開Modify Signal Properties(list)對話框。
4. 選取信號,改變其屬性。然后結束ModelSim,quit –force。
第六課 Running a batch-mode simulation
批處理模式仿真必須運行在DOS或UNIX提示符下。
1. 生成一個新目錄,設置成當前工作目錄。拷貝..\examples\counter.vhd到該目錄下。
2. 生成一個新的設計庫:vlib work
3. 映射庫:vmap work work
4. 編譯源文件:vcom counter.vhd
5. 使用宏文件為計數器提供激勵。拷貝..\example\stim.do文件到當前工作目錄中。
6. 生成批處理文件,內容為:
add list –decimal *
do stim.do
write list counter.lst
7. 執行下面的命令,運行批處理模式仿真:
vsim –do yourfile –wlf saved.wlf counter
•在名為“counter”的設計單元調用vsim仿真器
•通過-wlf這個可選項通知仿真器在名為saved.wlf的日志文件中保存仿真結果
•運行yourfile指定:值以十進制的方式列示出來;執行名為stim.do的激勵;并將結果寫到名為counter.lst的文件中。缺省的設計名為counter。
8. 瀏覽仿真結果 vsim –view saved.wlf
9. 打開一些窗口 view signals list wave
10. 在窗口中放置信號 add wave *
add list *
11. 運用Variables windows實驗保存的仿真結果。完成了結束仿真:
quit –f
有關批處理和命令行模式更多的信息,請參閱ModelSim User’s Manual。
第七課 Executing Commands at startup
本課與第六課所介紹的工作于相同的目錄,也是以命令行方式操作。
1. 這里將用到宏文件(DO)提供啟動信息。拷貝..\examples\startup.do到當前工作目錄。
2. 拷貝modeltech目錄下的modelsim.ini文件到當前工作目錄。然后編輯該文件,指定一個在設計導入之后被執行的命令。用notepad打開ini文件,取消下屬語句的注釋,它位于文件的[vsim]部分:(修改后保存)
Startup=do startup.do
3. 瀏覽這個DO文件,可以發現它用了一個預定義變量$entity來為不同的設計在啟動時作不同的事情。
4. 鍵入以下指令指定將被仿真的頂級設計單元,開始仿真:vsim counter
注意到沒有顯示對話框仿真器就導入了設計單元。對于一再地仿真同一個設計單元,這樣做是很便捷的。還可以注意到所有的窗口都打開了,這是因為命令view *包括在啟動宏里面。
5. 結束ModelSim,執行quit –f命令。
6. 在其他例子中是不需要startup.do文件的,所以用文本編輯器注釋掉modelsim.ini文件中的Startup這一行。
第八課 Finding names and values
Finding items by name in tree windows
你可以使用各個窗口(List,Process,Signal,Source,Structure,Variables,and Wave window)中的查找對話框找尋你需要的HDL條目。Edit\Find
Searching for item values in the List and Wave windows
你可以在List and Wave windows中搜尋HDL條目的值。Edit\Search
你能夠為Signal Name(s)定位值,搜尋基于以下的選項:
Search Type:Any Transition搜尋選取信號的任何變化
Search Type:Rising Edge搜尋選取信號的上升沿
Search Type:Falling Edge搜尋選取信號的下降沿
Search Type:Search for Signal Value
搜尋Value域中指定的值(符合VHDL or Verilog的數值格式)
Search Type:Search for Expression
搜尋評測一個布爾真值的Expression域中的表達式
表達式可以調用一個以上的信號,但是限制在紀錄于List windows上的信號。表達式可以包括常量、變量和Tcl宏。如果沒有指定表達式,搜尋將返回一個錯誤。參閱ModelSim Command Reference以獲取更多關于表達式語法的信息。
Search Options:Match Count
你能夠搜尋關于值的第n個變化或者是第n個匹配。Match Count指示了搜尋到的變化或匹配的數量。
Search Options:Ignore Glitches
忽略VHDL信號和Verilog網表中的零寬度的脈沖干擾。
搜尋的結果顯示在對話框的底部。
第四章 使用中的注意事項
1. 如果打開ModelSim,沒有出現Welcom to ModelSim對話框,可以在主窗口點擊Help \ Enable Welcome,則以后打開ModelSim就會出現該對話框。
2. 在工作區底部的狀態欄里會顯示一些有用的信息。
3. 操作哪個目錄中的文件一定要定位到該目錄,或者是設置為當前工作目錄。
4. 不能用UNIX或window命令來生成work子目錄,因為里面沒有_info文件,只能用菜單或vlib命令。
5. 斷點只能設置在可執行的行上,這些行以綠色行號指示
6. 在Basic Verilog Simulation一課里面,編譯兩個文件的次序是不重要的(不同于被編譯器指示生成的源碼的從屬性)。Verilog -Xl的用戶可能再次感到奇怪,他們了解設計單元之間的接口檢測或是編譯器指示的繼承關系上可能存在的問題。ModelSim推遲了這樣的檢測,直到設計被導入。所以在這里,如果你選擇在tcounter.v之前或之后編譯counter.v不存在任何問題。
7. 一組Verilog文件可以以任意次序編譯,但是在一個混合VHDL/Verilog設計中,Verilog文件必須在VHDL文件值前編譯。
8. force命令可以驅動clk,相當于給仿真初始化。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -