modelsim四部曲.docx

上传人:b****8 文档编号:23883151 上传时间:2023-05-21 格式:DOCX 页数:21 大小:543.39KB
下载 相关 举报
modelsim四部曲.docx_第1页
第1页 / 共21页
modelsim四部曲.docx_第2页
第2页 / 共21页
modelsim四部曲.docx_第3页
第3页 / 共21页
modelsim四部曲.docx_第4页
第4页 / 共21页
modelsim四部曲.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

modelsim四部曲.docx

《modelsim四部曲.docx》由会员分享,可在线阅读,更多相关《modelsim四部曲.docx(21页珍藏版)》请在冰豆网上搜索。

modelsim四部曲.docx

modelsim四部曲

準備事項

1.ModelSim試用版下載

2.範例程式下載(史丹佛大學一門課的期末專題ImplememtationofViterbiDecoder:

constrainlengthK=3,coderateR=1/2,register-exchange)

整個project共含7個Verilog程式:

system.v(top-level)

                                                      |--clkgen.v

                                                      |--chip_core.v

                                                               |--controller.v

                                                               |--spu.v

                                                               |--acs4.v

                                                                      |--acs1.v

(或是另外一個Verilog的簡單例子,可以從C:

\SynaptiCAD\Examples\TutorialFiles\

                                                                    VeriLoggerBasicVerilogSimulation\add4.vandadd4test.v)

(或是另外一個VHDL的簡單例子,可以從C:

\Modeltech_5.7e\examples\adder.vhdandtestadder.vhd)

ModelSimPE/LE/SE差別在哪?

本篇文章內容主要在教導軟體使用,以Verilog程式為範例。

假設各位讀者已經熟悉Verilog,廢話不多說,讓我們馬上來見識一下ModelSim...

快速上手四部曲:

建立Project、引進HDLFiles、Compile、模擬(Simulate/LoadingandRun)

1.建立一個新的Project

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

在Library標籤頁中,展開各Library就可以看到其下含的所有Package(forVHDL),進一步以Edit打開,可檢視該Package與PackageBody內容

1-2File\New\Project...   輸入projectnameandLocation

按OK鍵後

∙指定的路徑下會產生一個叫"work"的預設子資料夾,還有Viterbi.cr.mti、Viterbi.mpf兩個檔案

∙主操作畫面左邊的Workspace內,在原本的Library標籤外,會出現另一個Project標籤(但此時裡面內容是空的)

∙還會蹦出另一個"AdditemstotheProject"視窗

 

.mpf檔儲存的是此project的相關資料,下次要開啟此project就是利用File\Open\Project...開啟此.mpf

若要移除之前建立的project,請從File\Delete\Project...移除

 

 

2.載入Project的HDLsourcecodes

按"AdditemstotheProject"視窗中的"AddExistingFile"(或是從File\AddtoProject\ExistingFiles...)

HDLfiles擺放的位置,路徑名稱不能有中文,否則軟體會抓不到files

關掉"AdditemstotheProject"視窗,此時的Project下出現了HDLFile,一堆問號表示這些檔案都還沒compile。

如果要對project新增或移除HDLFile:

在Workspace內按滑鼠右鍵,選擇AddtoProject\ExistingFile... (新增)

                                                   RemovefromProject               (移除)

3.Compile

在Project標籤頁內,選定任一檔案,按滑鼠右鍵選擇Compile\CompileAll 或是直接按icon

CompileOut-of-Data只重新compile有修改過的檔案(比較節省時間,故也較常用)

此刻只做Compile還沒做Simulate,而ModelSim必須要作完Simulate(Loading)後才會把所有檔案link起來。

如果compiler的結果出現有errors或warnings的訊息,直接在該訊息上雙擊,即可進一步帶出詳細的訊息說明。

如果您處理的是VHDLproject,那在做Compile前,先在Project標籤頁內,選定所有檔案,按滑鼠右鍵選擇"Properties"做如下設定:

3.Simulate(Loading)

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

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

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

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

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

Loading要simulate的檔案的動作,也可以按Simulateicon

來完成

執行以上動作時,如果再附加一個設定步驟:

到Options標籤頁下,核選"Enablesourcefilecoverage",即可在模擬的程序中,附帶幫你檢查testbench對於if/caseconditionalstatement的模擬涵蓋率。

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

要編輯HDLfile,可以從Project(顯示檔案的狀態)或File標籤頁內雙擊HDL檔案以開啟編輯視窗(editwindow)。

sim標籤頁內雖然也有列出所有HDL檔案,但雙擊HDL檔案開啟的是來源視窗(sourcewindow),不能edit。

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

若要查看此project架構,必須切換到Sim標籤頁;不像VeriLoggerPro只要Compiler完,就可以在同一個Project畫面下看到整個projectstructure/hierarchy。

Sim標籤頁另外一個有趣的功能是:

在Sim標籤頁內選定哪一個module,其相對的內容會自動update於signals、source、edit...等window(如果你有開啟這些視窗的話)。

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

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

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

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

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

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

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

4-2在Sim標籤頁內選定top-levelfile(system.v),打開signalswindow:

View\Signals 就可以看到top-levelfile的所有I/Osignal。

4-3在signalswindow的左半邊欄位內選定想看的訊號(如orig_bit_s1、y1_s1、y2_s1、decoded_coulmn_s1),按滑鼠右鍵AddtoWave\SelectedSignals,會跳出另一個"wavewindow"並把您想觀察的訊號都列出來

 

直接把signalswindow的訊號拖曳到wavewindow也可以(訊號的排列次序也可以用左鍵拖曳搬移)。

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

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

4-4 切回主視窗,Simulate\Run\Run100ns

   -->   預設Runlength=100ns(一次跑100ns;可以更改)

                          Simulate\Run\Run-All     

   -->   跑到按"Break"

才暫停   

                                                                                     -->   按"ContinueRun"

則繼續

                          Simulate\Run\Step 

           -->   單步執行程式(fordebugging)

                          Simulate\Run\Restart 

       -->   重新執行模擬

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

∙從wavewindow查看

∙游標指到sourceoredit視窗內的該變數,即會顯示該變數當時的數值

∙View\Variables

    模擬結果如下

 

 

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

View\Zoom\ZoomFull

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

直接在訊號波形上雙擊,會帶出Dataflowwindow(step5-3);如果你是在紅色的(unknown)線上雙擊,還可以進一步的在Dataflowwindow內選定該unknownsignal的wire,按滑鼠右鍵選擇TraceX協助你debug

如果訊號不想以預設的二進位表示,可以在wavewindow內選定該訊號名稱,按滑鼠右鍵選擇SignalProperties...,然後選擇表示方法(如十進位表示Decimal)。

5. Dataflowwindow(fordebuggingandtracing)

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

∙直接雙擊wavewindow的訊號波形,會自動跳出dataflowwindow,其中顯示該訊號的連接情況;以這種方法帶出dataflowwindow會在下方同時顯示waveviewer,不需要的話可以從View\ShowWave取消。

∙從ModelSim主視窗中的View\Dataflow開啟視窗,從signalswindow將要看的訊號"拖曳"到Dataflowwindow

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

5-2如果想進一步察看此訊號的Receiver,選定其輸出連線(redhighlight),按

(expandnettoallreaders,ie.dow-streamcircuit)就會顯示如下結果:

(直接以滑鼠左鍵雙擊redhighlightedline也有同樣效果)

同理,可以使用

查看訊號的Drivers(ie.up-streamcircuit)、使用

查看訊號的DriversandReceivers。

(EraseAll):

清除dataflowwindow

5-3從dataflow視窗的View\ShowWave,打開embeddedwaveviewer

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

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

5-4執行模擬3500ns,結果如下:

可以看到此cell的輸入觸發輸出的情況

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

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

3.利用"FinderPreviousTransition"、"FinderNextTransition"兩個icons,可以讓cursor自動貼到triggeredge,以便正確的量測觸發時間點。

此功能非常便於尋找訊號的觸發/轉態點(activepoint)

如果想將某一個cursor快速顯示在wavewindow內(將顯示波形範圍移到該處):

    View\Cursors\選擇想跳至的cursor

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

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

2.按"Traceinputnettoevent"icons

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

5.如果只要編輯與CompileHDLfile

File\New\Source\VHDLorVerilogorOther

或是

File\AddtoProject\NewFile(或是在Project標籤內,按滑鼠右鍵AddtoProject\NewFile)

6.儲存檔案並關閉程式

File\Save\...   

Simulate\EndSimulation...

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

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

6.重新開啟Project

File\Open\Project... (選擇.mpf檔)

1.進一步訊息,請參考

Help\SEPDFDocumentation\Tutorials線上使用手冊

一些值得進一步參閱的功能:

creatingandviewingdatasets、performanceanalyzer、codecoverage...

其他用途:

(以下這些做法,必須在工作站下執行,PC環境下產生的檔案不能用)

▪如何用ModelSim產生.vcd檔(ValueChangeDump)

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

▪如何用ModelSim產生.fsdb檔

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

要用ModelSim產生.fsdb的條件是:

跑ModelSim的環境下必須有安裝Debussy,否則ModelSim會說它看不懂"fsdbDumpfile"這個指令

▪如何用ModelSim產生.vec檔(vectorfile)

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

您必須依自己的需要,在headerinformation那幾行稍做修改,改成你design的I/Os(此處所列是一個4-bitfull-adder的vector範例)。

這是目前我所知道產生vectorfile最快的方法,否則你就必須先從testbench.v轉成file.vcd再轉成file.vec。

(參閱NanoSim教學Step1~2)

系統任務(systemtask)命令$monitor,$fmonitor,$display,$fdisplay的用法,請自行參閱Verilog書籍[2]sec.3-3,sec.9-5

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1