Modelsim 教程

Modelsim 教程br/快速上手四部曲:建立Project、引進HDLFiles、Compile、模擬(Simulate/LoadingandRun)br/ br/建立一個新的Projectbr/ br/1-1第一次執行程式時,可以從[開始][程式集]ModelSimSEModelSim;或是執行ModelSim在桌面的捷徑br/ br/br/ br/在Library標籤頁中,展開各Library就可以看到其下含的所有Package(forVHD

快速上手四部曲:建立Project、引進HDL Files、Compile、模擬(Simulate/Loading and Run)

  1.  

    建立一個新的Project

 

1-1 第一次執行程式時,可以從 [開始] [程式集] ModelSim SE ModelSim;或是執行ModelSim在桌面的捷徑

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 在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”視窗

 

 

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 .mpf 檔儲存的是此project的相關資料,下次要開啟此project 就是利用 File Open Project… 開啟此.mpf

 Modelsim 教程 - pingqingjian - pingqingjian的博客 若要移除之前建立的project,請從 File Delete Project… 移除

 

 

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 Modelsim 教程 - pingqingjian - pingqingjian的博客

  1.  

    載入Project 的HDL source codes

 

按”Add items to the Project”視窗中的”Add Existing File” (或是從File Add to Project Existing Files …)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 HDL files擺放的位置,路徑名稱不能有中文,否則軟體會抓不到files

關掉”Add items to the Project”視窗,此時的Project下出現了HDL File,一堆問號表示這些檔案都還沒compile。

如果要對project新增或移除HDL File:

在Workspace內按滑鼠右鍵,選擇 Add to Project Existing File… (新增)

                                                    Remove from Project                (移除)

  1.  

    Compile

 

在Project標籤頁內,選定任一檔案,按滑鼠右鍵選擇 Compile Compile All 或是直接按 icon  Modelsim 教程 - pingqingjian - pingqingjian的博客

 Modelsim 教程 - pingqingjian - pingqingjian的博客 Compile Out-of-Data只重新compile有修改過的檔案 (比較節省時間,故也較常用)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 此刻只做Compile 還沒做Simulate,而ModelSim必須要作完Simulate (Loading)後才會把所有檔案link起來。如果compiler的結果出現有errors或warnings的訊息,直接在該訊息上雙擊,即可進一步帶出詳細的訊息說明。

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 如果您處理的是VHDL project,那在做Compile前,先在Project標籤頁內,選定所有檔案,按滑鼠右鍵選擇”Properties”做如下設定:

 Modelsim 教程 - pingqingjian - pingqingjian的博客

  1.  

    Simulate (Loading)

 

切換到Library標籤頁,展開”work”目錄,其下可以看到此project包含的所有檔案,檔案前的符號”M”,表示這些檔案的性質是”Module”;如果你寫的是VHDL程式那檔案前所看到的符號會變成”E”(Entity) and “A”(Architecture)。

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 如果compiler完,work目錄底下仍然看不到東西,無法展開,請稍等5~10秒(等程式update最新狀態),或是按滑鼠右鍵選擇”Update”重新整理

4-1 直接以滑鼠左鍵雙擊要Simulate 的檔案,或是按滑鼠右鍵選擇Simulate。

此處選擇要Simulate (Loading)的檔案不一定要是top-level file,但如果你選的不是top-level file,project中的sub-ciricuit必須一個一個load,比較麻煩。

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 請注意,這裡的”Simulate”並沒有真的做模擬,只是把程式”Loading”進來,並將sub-module 彼此間 link 起來

Loading 要simulate 的檔案的動作,也可以按Simulate icon  Modelsim 教程 - pingqingjian - pingqingjian的博客 來完成

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 執行以上動作時,如果再附加一個設定步驟:到Options標籤頁下,核選”Enable source file coverage”,即可在模擬的程序中,附帶幫你檢查testbench 對於 if / case conditional statement的模擬涵蓋率。

執行完Simulate (Load)的動作後,程式會自動再跳出兩個標籤頁Sim與Files,此時在Sim下可以看到整個Project的Hierarchy關係

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

要編輯HDL file,可以從Project(顯示檔案的狀態)或File標籤頁內雙擊HDL檔案以開啟編輯視窗(edit window)。sim標籤頁內雖然也有列出所有HDL檔案,但雙擊HDL檔案開啟的是來源視窗(source window),不能edit。

檔案編輯(修改)完成(存檔)後,回到Project標籤頁內看該檔案的狀態時,會發現它變成未compile的問號,要重新對它做compile,把目前的Simulate關掉(Simulate End Simulation…),再重新 load一次,才能對新的程式做模擬 。

 Modelsim 教程 - pingqingjian - pingqingjian的博客 若要查看此project架構,必須切換到Sim標籤頁;不像VeriLogger Pro只要Compiler完,就可以在同一個Project畫面下看到整個project structure / hierarchy。Sim 標籤頁另外一個有趣的功能是:在Sim 標籤頁內選定哪一個module,其相對的內容會自動update 於signals、source、edit…等window (如果你有開啟這些視窗的話)。

另外,source與edit window兩者都可用來查看模擬時的某一個變數值或設定中斷點,但前者不可編輯。

  •  

    Project 標籤頁用以顯示HDL檔案的狀態(也可以開啟其編輯視窗)

  •  

    Library 標籤頁用以選定要Simulate的檔案

  •  

    Sim 標籤頁用以查看project structure與開啟某module的來源視窗

  •  

    File 標籤頁用以開啟某HDL檔案的編輯視窗

    ==>   四個功能拆成四個設定頁,這是ModelSim 比較耍寶的地方。

 

以下,我們接著要把想觀察的訊號引出來,然後”Run” simulation …

4-2 在Sim標籤頁內選定top-level file (system.v),打開 signals window:View Signals 就可以看到top-level file的所有I/O signal。

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

4-3 在signals window的左半邊欄位內選定想看的訊號(如orig_bit_s1、y1_s1、y2_s1、decoded_coulmn_s1),按滑鼠右鍵 Add to Wave Selected Signals,會跳出另一個”wave window”並把您想觀察的訊號都列出來

 

  Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 直接把signals window 的訊號拖曳到wave window 也可以 (訊號的排列次序也可以用左鍵拖曳搬移)。

      訊號的排列次序,可以直接用滑鼠拖曳調整。

 Modelsim 教程 - pingqingjian - pingqingjian的博客 如果要看的是module / sub-module 所有訊號,4-2~4-3步驟可以一次完成:

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

4-4 切回主視窗,Simulate Run Run 100ns  Modelsim 教程 - pingqingjian - pingqingjian的博客    –>    預設Run length=100ns (一次跑100ns;可以更

Simulate Run Run-All       Modelsim 教程 - pingqingjian - pingqingjian的博客    –>    跑到按 “Break”  Modelsim 教程 - pingqingjian - pingqingjian的博客 才暫停   

                                                                                      –>    按”Continue Run”  則繼續

Simulate Run Step  Modelsim 教程 - pingqingjian - pingqingjian的博客            –>    單步執行程式 (for debugging)

Simulate Run Restart  Modelsim 教程 - pingqingjian - pingqingjian的博客        –>    重新執行模擬

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 程式執行暫停或是跑到中斷點時,要查看任一訊號或變數的數值,方法有三種

  •  

    從wave window查看

  •  

    游標指到source or edit視窗內的該變數,即會顯示該變數當時的數值

  •  

    View Variables

 

     模擬結果如下

 

  Modelsim 教程 - pingqingjian - pingqingjian的博客 

 

     如果想要看所有波形的範圍:View Zoom Zoom Full

     以滑鼠左鍵在波形顯示區域點一下,就會出現黃色的垂直座標線(cursor, 參閱step 5-4)。

 Modelsim 教程 - pingqingjian - pingqingjian的博客 直接在訊號波形上雙擊,會帶出Dataflow window (step 5-3);如果你是在紅色的(unknown)線上雙擊,還可以進一步的在Dataflow window內選定該unknown signal 的wire,按滑鼠右鍵選擇 TraceX 協助你debug

 Modelsim 教程 - pingqingjian - pingqingjian的博客 如果訊號不想以預設的二進位表示,可以在wave window內選定該訊號名稱,按滑鼠右鍵選擇Signal Properties…,然後選擇表示方法(如十進位表示Decimal)。

  1.  

    Dataflow window (for debugging and tracing)

 

“Dataflow window”可用來檢視所設計的電路,其訊號的實際連接情況(Drivers / Receivers),也就是顯示訊號在執行模擬的過程中,經過哪些程序(process),開啟的方法有兩個:

  •  

    直接雙擊wave window的訊號波形,會自動跳出dataflow window,其中顯示該訊號的連接情況;以這種方法帶出dataflow window會在下方同時顯示wave viewer,不需要的話可以從ViewShow Wave取消。

  •  

    從ModelSim主視窗中的ViewDataflow開啟視窗,從signals window將要看的訊號”拖曳”到Dataflow window

 

5-1 假設我們要看的是orig_del_bit_s1訊號,此時Dataflow window顯示如下:

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

5-2 如果想進一步察看此訊號的Receiver,選定其輸出連線(red highlight),按  Modelsim 教程 - pingqingjian - pingqingjian的博客 (expand net to all readers, ie. dow-stream circuit) 就會顯示如下結果: (直接以滑鼠左鍵雙擊red highlighted line也有同樣效果)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

同理,可以使用  Modelsim 教程 - pingqingjian - pingqingjian的博客 查看訊號的Drivers (ie. up-stream circuit)、使用  Modelsim 教程 - pingqingjian - pingqingjian的博客 查看訊號的Drivers and Receivers。

 Modelsim 教程 - pingqingjian - pingqingjian的博客  Modelsim 教程 - pingqingjian - pingqingjian的博客 (Erase All):清除dataflow window

5-3 從dataflow視窗的ViewShow Wave,打開embedded wave viewer

       選定dataflow視窗內的元件#ASSIGN#104,此時會看到wave視窗內列出該元件的所有I/O:

       (此時如果有打開edit or source window,會自動顯示出元件#ASSIGN#104在原始碼的相對位置)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

 

5-4 執行模擬3500 ns,結果如下:可以看到此cell的輸入觸發輸出的情況

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

  1.  

    選定想要用cursor測量觸發時間點的訊號

  2.  

    以滑鼠左鍵在wave顯示視窗上點一下,cursor(黃色垂直線含時間座標)會自動出現

  3.  

    利用”Finder Previous Transition”、”Finder Next Transition”兩個icons,可以讓cursor自動貼到trigger edge,以便正確的量測觸發時間點。此功能非常便於尋找訊號的觸發/轉態點(active point)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客 如果想將某一個cursor快速顯示在wave window內(將顯示波形範圍移到該處):

     View Cursors 選擇想跳至的cursor

5-5 如何step by step追蹤output被input觸發的情況呢?

  1.  

    選定想要追蹤被觸發情況的訊號

  2.  

    按 “Trace input net to event” icons

  3.  

    自動產生另一個cursor指到前一個觸發output的input時間點,多按幾次”Trace input net to event”,會看到如下圖所示的情況,兩個cursor之間的時間間距,為白色文字所顯示的100 ns。

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

  1.  

    如果只要編輯與Compile HDL file

 

File New Source VHDL or Verilog or Other

或是

File Add to Project New File (或是在Project標籤內,按滑鼠右鍵Add to Project New File)

 

 Modelsim 教程 - pingqingjian - pingqingjian的博客

  1.  

    儲存檔案並關閉程式

 

File Save …   

Simulate End Simulation…

File Close Project  (要先關掉simulation,project才能關掉)

File Quit  (直接Quit 最快,可以省下上面關閉Simulation、Project的動作)  

  1.  

    重新開啟 Project

 

File Open Project… (選擇.mpf檔)

  1.  

    進一步訊息,請參考

    Help SE PDF Documentation Tutorials 線上使用手冊

    一些值得進一步參閱的功能:creating and viewing datasets、performance analyzer、code coverage …

    •  

      如何用ModelSim產生.vcd檔(Value Change Dump)

     

    在testbench內加入以下這段程式,然後執行ModelSim從compile -> Simulate -> Run -All,關閉ModelSim後,就會在工作目錄下看見”file_name.vcd”。

     Modelsim 教程 - pingqingjian - pingqingjian的博客

    •  

      如何用ModelSim產生.fsdb檔

     

    在testbench內加入以下這段程式,然後執行ModelSim從compile -> Simulate -> Run -All,關閉ModelSim後,就會在工作目錄下看見”file_name.fsdb”。

     Modelsim 教程 - pingqingjian - pingqingjian的博客

     Modelsim 教程 - pingqingjian - pingqingjian的博客 要用ModelSim產生.fsdb的條件是:跑ModelSim的環境下必須有安裝Debussy,否則ModelSim會說它看不懂”fsdbDumpfile”這個指令

    •  

      如何用ModelSim(參閱NanoSim教學Step 1 ~ 2)

       Modelsim 教程 - pingqingjian - pingqingjian的博客 系統任務(system task)命令$monitor, $fmonitor, $display, $fdisplay的用法,請自行參閱Verilog書籍[2]sec. 3-3, sec. 9-5

今天的文章Modelsim 教程分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/6653.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注