您的位置:首页 > 职场人生

modelsim debug

2009-10-22 19:56 274 查看



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

[align=left]從wave window查看[/align]

[align=left]游標指到source or edit視窗內的該變數,即會顯示該變數當時的數值[/align]

[align=left]View Variables[/align]

[align=left] 模擬結果如下 [/align]
 

 

[align=left] 如果想要看所有波形的範圍:View Zoom Zoom Full [/align]
[align=left] 以滑鼠左鍵在波形顯示區域點一下,就會出現黃色的垂直座標線(cursor, 參閱step 5-4)。[/align]


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


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

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顯示如下:



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
[align=left]5-3 從dataflow視窗的ViewShow Wave,打開embedded wave viewer
選定dataflow視窗內的元件#ASSIGN#104,此時會看到wave視窗內列出該元件的所有I/O:
(此時如果有打開edit or source window,會自動顯示出元件#ASSIGN#104在原始碼的相對位置)[/align]



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



[align=left]選定想要用cursor測量觸發時間點的訊號[/align]

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

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


如果想將某一個cursor快速顯示在wave window內(將顯示波形範圍移到該處):
View Cursors
選擇想跳至的cursor
[align=left]5-5 如何step by step追蹤output被input觸發的情況呢?[/align]

[align=left]選定想要追蹤被觸發情況的訊號[/align]

[align=left]按 "Trace input net to event" icons[/align]

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



如果只要編輯與Compile HDL file

File New Source VHDL or Verilog or Other
或是
File Add to Project New File (或是在Project標籤內,按滑鼠右鍵Add to Project New File)



儲存檔案並關閉程式

File Save ...
Simulate End Simulation...
File Close Project (要先關掉simulation,project才能關掉)
File Quit (直接Quit 最快,可以省下上面關閉Simulation、Project的動作)

重新開啟 Project

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

進一步訊息,請參考
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產生.fsdb檔

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




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

如何用ModelSim產生.vec檔 (vector file)

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




您必須依自己的需要,在header information那幾行稍做修改,改成你design的I/Os(此處所列是一個4-bit full-adder的vector範例)。這是目前我所知道產生vector file最快的方法,否則你就必須先從testbench.v轉成file.vcd再轉成file.vec。(參閱NanoSim教學Step 1 ~ 2)


系統任務(system task)命令$monitor, $fmonitor, $display, $fdisplay的用法,請自行參閱Verilog書籍[2]sec. 3-3, sec. 9-5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 modelsim