EDA365电子工程师网

标题: ModelSim ...快速上手四部曲 [打印本页]

作者: mengzhuhao    时间: 2008-10-21 20:40
标题: ModelSim ...快速上手四部曲
快速上手四部曲:建立Project、引進HDL Files、Compile、模擬(Simulate/Loading and Run)
4 Q. l  Q" D7 r# X& Y( S; V
1-1 第一次執行程式時,可以從 [開始] \ [程式集] \ ModelSim SE \ ModelSim;或是執行ModelSim在桌面的捷徑
# |* g: V: e& I& k
在Library標籤頁中,展開各Library就可以看到其下含的所有Package (for VHDL),進一步以Edit打開,可檢視該Package與Package Body內容
1-2 File \ New \ Project ...    輸入project name and Location
按OK鍵後
  • 指定的路徑下會產生一個叫"work"的預設子資料夾,還有Viterbi.cr.mti、Viterbi.mpf 兩個檔案
  • 主操作畫面左邊的Workspace內,在原本的Library標籤外,會出現另一個Project標籤(但此時裡面內容是空的)
  • 還會蹦出另一個"Add items to the Project"視窗
 
.mpf 檔儲存的是此project的相關資料,下次要開啟此project 就是利用 File \ Open \ Project... 開啟此.mpf* ~+ T4 L) ~: k* ]5 V( n
若要移除之前建立的project,請從 File \ Delete \ Project... 移除
 
 
按"Add items to the Project"視窗中的"Add Existing File" (或是從File \ Add to Project \ Existing Files ...)
HDL files擺放的位置,路徑名稱不能有中文,否則軟體會抓不到files
關掉"Add items to the Project"視窗,此時的Project下出現了HDL File,一堆問號表示這些檔案都還沒compile。
如果要對project新增或移除HDL File:5 h( K0 F% N+ s- R( n
在Workspace內按滑鼠右鍵,選擇 Add to Project \ Existing File...  (新增)7 ?/ K) ^7 k) l4 w. C- |
                                                    Remove from Project                (移除)
在Project標籤頁內,選定任一檔案,按滑鼠右鍵選擇 Compile \ Compile All  或是直接按 icon
9 @8 |- N3 c) F2 t  F0 D+ K8 o& s0 ^ Compile Out-of-Data只重新compile有修改過的檔案 (比較節省時間,故也較常用)
此刻只做Compile 還沒做Simulate,而ModelSim必須要作完Simulate (Loading)後才會把所有檔案link起來。如果compiler的結果出現有errors或warnings的訊息,直接在該訊息上雙擊,即可進一步帶出詳細的訊息說明。
如果您處理的是VHDL project,那在做Compile前,先在Project標籤頁內,選定所有檔案,按滑鼠右鍵選擇"Properties"做如下設定:
切換到Library標籤頁,展開"work"目錄,其下可以看到此project包含的所有檔案,檔案前的符號"M",表示這些檔案的性質是"Module";如果你寫的是VHDL程式那檔案前所看到的符號會變成"E"(Entity) and "A"(Architecture)。
如果compiler完,work目錄底下仍然看不到東西,無法展開,請稍等5~10秒(等程式update最新狀態),或是按滑鼠右鍵選擇"Update"重新整理
4-1 直接以滑鼠左鍵雙擊要Simulate 的檔案,或是按滑鼠右鍵選擇Simulate。, d2 V% A$ E6 ?) l6 T. o% E- n/ a) Y# y
此處選擇要Simulate (Loading)的檔案不一定要是top-level file,但如果你選的不是top-level file,project中的sub-ciricuit必須一個一個load,比較麻煩。
請注意,這裡的"Simulate"並沒有真的做模擬,只是把程式"Loading"進來,並將sub-module 彼此間 link 起來
Loading 要simulate 的檔案的動作,也可以按Simulate icon 來完成
執行以上動作時,如果再附加一個設定步驟:到Options標籤頁下,核選"Enable source file coverage",即可在模擬的程序中,附帶幫你檢查testbench 對於 if / case conditional statement的模擬涵蓋率。
執行完Simulate (Load)的動作後,程式會自動再跳出兩個標籤頁Sim與Files,此時在Sim下可以看到整個Project的Hierarchy關係
要編輯HDL file,可以從Project(顯示檔案的狀態)或File標籤頁內雙擊HDL檔案以開啟編輯視窗(edit window)。sim標籤頁內雖然也有列出所有HDL檔案,但雙擊HDL檔案開啟的是來源視窗(source window),不能edit。 檔案編輯(修改)完成(存檔)後,回到Project標籤頁內看該檔案的狀態時,會發現它變成未compile的問號,要重新對它做compile,把目前的Simulate關掉(Simulate \ End Simulation...),再重新 load一次,才能對新的程式做模擬 。 若要查看此project架構,必須切換到Sim標籤頁;不像VeriLogger Pro只要Compiler完,就可以在同一個Project畫面下看到整個project structure / hierarchy。Sim 標籤頁另外一個有趣的功能是:在Sim 標籤頁內選定哪一個module,其相對的內容會自動update 於signals、source、edit...等window (如果你有開啟這些視窗的話)。
, j$ w3 P/ t* e* h, v另外,source與edit window兩者都可用來查看模擬時的某一個變數值或設定中斷點,但前者不可編輯。
以下,我們接著要把想觀察的訊號引出來,然後"Run" simulation ...
4-2 在Sim標籤頁內選定top-level file (system.v),打開 signals window:View \ Signals  就可以看到top-level file的所有I/O signal。
4-3 在signals window的左半邊欄位內選定想看的訊號(如orig_bit_s1、y1_s1、y2_s1、decoded_coulmn_s1),按滑鼠右鍵 Add to Wave \ Selected Signals,會跳出另一個"wave window"並把您想觀察的訊號都列出來
 
直接把signals window 的訊號拖曳到wave window 也可以 (訊號的排列次序也可以用左鍵拖曳搬移)。
3 W+ m0 V% l8 W1 c& t: n      訊號的排列次序,可以直接用滑鼠拖曳調整。
* \/ Q" v4 g# d 如果要看的是module / sub-module 所有訊號,4-2~4-3步驟可以一次完成:
4-4 切回主視窗,Simulate \ Run \ Run 100ns     -->    預設Run length=100ns (一次跑100ns;可以更改)
1 q* Z: M; A7 K9 b: ]                           Simulate \ Run \ Run-All          -->    跑到按 "Break" 才暫停   ! A' V% j. @+ Z7 D: f8 m: _( \
                                                                                      -->    按"Continue Run" 則繼續                           Simulate \ Run \ Step             -->    單步執行程式 (for debugging)2 O  b6 ?' W( t+ h" f: o' ^+ F
                           Simulate \ Run \ Restart         -->    重新執行模擬
程式執行暫停或是跑到中斷點時,要查看任一訊號或變數的數值,方法有三種
     模擬結果如下
  
     如果想要看所有波形的範圍:View \ Zoom \ Zoom Full      以滑鼠左鍵在波形顯示區域點一下,就會出現黃色的垂直座標線(cursor, 參閱step 5-4)。 直接在訊號波形上雙擊,會帶出Dataflow window (step 5-3);如果你是在紅色的(unknown)線上雙擊,還可以進一步的在Dataflow window內選定該unknown signal 的wire,按滑鼠右鍵選擇 TraceX 協助你debug
如果訊號不想以預設的二進位表示,可以在wave window內選定該訊號名稱,按滑鼠右鍵選擇Signal Properties...,然後選擇表示方法(如十進位表示Decimal)。
"Dataflow window"可用來檢視所設計的電路,其訊號的實際連接情況(Drivers / Receivers),也就是顯示訊號在執行模擬的過程中,經過哪些程序(process),開啟的方法有兩個: 5-1 假設我們要看的是orig_del_bit_s1訊號,此時Dataflow window顯示如下:) S8 k7 z3 K6 w4 s
5-2 如果想進一步察看此訊號的Receiver,選定其輸出連線(red highlight),按 (expand net to all readers, ie. dow-stream circuit) 就會顯示如下結果: (直接以滑鼠左鍵雙擊red highlighted line也有同樣效果)
同理,可以使用 查看訊號的Drivers (ie. up-stream circuit)、使用 查看訊號的Drivers and Receivers。
(Erase All):清除dataflow window
5-3 從dataflow視窗的View\Show Wave,打開embedded wave viewer/ D6 P2 H2 p7 R" r' Q$ P4 _
       選定dataflow視窗內的元件#ASSIGN#104,此時會看到wave視窗內列出該元件的所有I/O:5 s' Q- t* Y2 T# u
       (此時如果有打開edit or source window,會自動顯示出元件#ASSIGN#104在原始碼的相對位置)
5-4 執行模擬3500 ns,結果如下:可以看到此cell的輸入觸發輸出的情況
如果想將某一個cursor快速顯示在wave window內(將顯示波形範圍移到該處):     View \ Cursors \ 選擇想跳至的cursor
5-5 如何step by step追蹤output被input觸發的情況呢?
File \ New \ Source \ VHDL or Verilog or Other 或是 File \ Add to Project \ New File (或是在Project標籤內,按滑鼠右鍵Add to Project \ New File) ! T$ [' z0 M# a% B
File \ Save \ ...    Simulate \ End Simulation... File \ Close \ Project  (要先關掉simulation,project才能關掉) File \ Quit  (直接Quit 最快,可以省下上面關閉Simulation、Project的動作)  
& D# g, d/ d1 K
File \ Open \ Project... (選擇.mpf檔) , i2 Z" y+ n" v: t( y
其他用途: (以下這些做法,必須在工作站下執行,PC環境下產生的檔案不能用)2 z" _" }7 Z/ B4 D+ g
在testbench內加入以下這段程式,然後執行ModelSim從compile -> Simulate -> Run -All關閉ModelSim後,就會在工作目錄下看見"file_name.vcd"。
& r% _, x& A8 L) B* h; O: X4 ?
  R6 q! p; w) |1 O$ `9 W# d# D' g( q
在testbench內加入以下這段程式,然後執行ModelSim從compile -> Simulate -> Run -All關閉ModelSim後,就會在工作目錄下看見"file_name.fsdb"。
1 n" s: O% ]$ @6 D& N, C; ~3 `0 _( ]: \( C$ z. E+ U- ~+ d$ i
要用ModelSim產生.fsdb的條件是:跑ModelSim的環境下必須有安裝Debussy,否則ModelSim會說它看不懂"fsdbDumpfile"這個指令
1 s5 w* l+ R7 Z9 v# {) J& d/ U. L/ P
在testbench內加入以下這段程式,然後執行ModelSim從compile -> Simulate -> Run -All關閉ModelSim後,就會在工作目錄下看見"add4.vec"。0 I4 m4 K6 K/ p/ Y
% v) k5 _& a# J2 ~5 S& a2 s& ?

作者: g19860529    时间: 2008-11-6 21:49
是个繁体的,看着有点晕啊,不过还是谢谢楼主
作者: stone5280    时间: 2009-2-2 09:54
xuexile \# a, o! o4 h5 o; i/ q: C; j
谢谢分享
作者: yoghourt    时间: 2009-2-4 13:13
LZ用心了
3 _" {6 ~' ]" c# V) X% t0 ~: v谢谢
作者: 独自莫凭栏    时间: 2009-2-17 11:34
多谢楼主了
作者: dxj1214    时间: 2012-9-8 14:06
谢谢分享!




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2