Vivado使用技巧(21):模擬中的Debug特性
原始碼級別除錯
Vivado Simulator提供了在模擬過程中debug設計的特性,通過為原始碼新增一些可控制的執行條件來檢查出問題的地方。總的來說有三種除錯方法:
1.使用Step逐行除錯
Step命令一次只執行HDL程式碼中的一行,從而驗證和除錯設計。執行模擬後,點選Run->Step或工具欄中的Step可執行該命令。Restart可以將時間復位到TestBench的開始。當前執行的程式碼會高亮顯示並且前方有箭頭指示:
執行Step後會開啟與頂層設計單元相關的HDL檔案視窗,在視窗名稱上右鍵->新建水平分組或新建垂直分組即可同時檢視HDL和波形視窗。
2.使用斷點(breakpoint)除錯
Step除錯的缺點是在大型設計中很繁瑣且花費大量時間。設計者可以在原始碼中自行指定執行停止的點,稱為斷點。執行模擬時,模擬器遇到斷點就會暫停。可設定斷點的行前有一個空心圈,點選可設定斷點,轉變為實心圈。
對應的Tcl命令為“add_bp file_name line_number”。模擬除錯過程中,斷點和Step除錯是可以一起使用的。在實心圈上右鍵,或Run選單中點選Delete All Breakpoints可以刪除所有斷點。
3.條件除錯
在設計中新增條件斷點,模擬器檢測到條件為真時就會暫停當前模擬。條件必須用Tcl命令新增,示例如下:
add_condition <condition> <message> #命令模板
add_condition {reset == 1 && clk == 1} {puts “Reset went to high”; stop}
#當clk與reset同時為高暫停模擬,控制檯列印訊息輸出
遇到條件斷點並暫停後,只有等到下一個模擬命令才會繼續執行模擬。
將物件強制到特定值
Vivado Simulator提供了Force功能將訊號、wire或reg強制為某一值,該操作會重寫訊號定義在HDL設計中的行為。考慮如下應用情況:
- TestBench中沒有對某一訊號進行驅動,可以使用Force功能給予激勵;
- Debug過程中使用Force糾正錯誤的值,以繼續進行模擬分析。
使用Force Constant、Force Clock、Remove Clock相關命令配置Force功能,而且模擬restart後仍然會保留已經設定了的Force特性。
1.Force Constant功能
該命令會將訊號固定為一個常數值,重寫了其HDL程式碼中的賦值。在Objects視窗或波形視窗中選中某一物件,右鍵->Force Constant,開啟如下視窗:
Force value按照value radix選擇的基數設定常數值;設定的值開始於Starting after time offset設定的時間,如果不帶單位則預設為ns;Cancel after time offset設定的時間後會取消應用Force功能。
2.Force Clock功能
該命令會使訊號以一定速率在兩個值之間來回轉換,類似於時鐘訊號一樣(但不侷限於生成時鐘訊號,可以定義任意振盪的值)。在Objects視窗或波形視窗中選中某一物件,右鍵->Force Constant,開啟如下視窗:
Leading edge value和Trailing edge value分別指定兩個振盪狀態的值;Duty cycle和Period設定佔空比和週期。右鍵選單中的Remove Force用來清除設定。靈活使用Force特性可以加快設計模擬的除錯驗證,而不需要修改HDL程式碼。
相關文章
- Vivado使用技巧(7):使用IP核自帶Testbench進行模擬
- modelsim 獨立模擬vivado的IP核及模擬指令碼指令碼
- Vivado使用技巧(24):HDL/XDC中設定綜合屬性
- Vivado使用技巧(5):屬性編輯器的使用
- Vivado使用技巧(25):Block Synthesis技術BloC
- Vivado使用技巧(20):Waveform功能詳解ORM
- Vivado使用技巧(17):建立IBIS模型模型
- NOIP模擬88(多校21)
- Vivado使用技巧(9):COE檔案使用方法
- Vivado DDS IP核使用和模擬(一、單通道訊號發生器)
- Vivado使用技巧(28):支援的Verilog語法
- Vivado使用技巧(23):綜合執行與OOC
- Vivado使用技巧(4):查詢功能詳解
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- Java 21 神仙特性:虛擬執行緒使用指南(一)Java執行緒
- JS 怎樣模擬類的特性JS
- 使用Python中的字典模擬類Python
- Vivado使用技巧(22):綜合策略與設定的選擇
- Vivado使用技巧(16):SSN轉換噪聲分析
- Vivado使用技巧(14):IO規劃方法詳解
- Vivado使用技巧(8):Core Container打包IP核AI
- 暑集假訓SCP提高擬模21
- AndroidStudio使用技巧-debug篇Android
- debug技巧之使用Arthes除錯除錯
- Vivado使用技巧(13):CSV檔案定義IO Ports
- [賽記] 暑假集訓CSP提高模擬20 21
- Java 21 新特性:虛擬執行緒(Virtual Threads)Java執行緒thread
- Vivado使用技巧(10):編輯與改寫IP核原始檔
- Java21的新特性Java
- 利用cache特性檢測Android模擬器Android
- Vivado使用技巧(12):設定DCI與內部參考電壓
- 用ABAP模擬JavaScript的柯里化語言特性(Curry)JavaScript
- NOI 2024省選OIFC模擬21 T3
- Visual Studio中的Android模擬器使用詳解Android
- Eclipse的Debug介紹與技巧Eclipse
- Eclipse 的 Debug 介紹與技巧Eclipse
- 21個值得收藏的Javascript技巧JavaScript
- db2中模擬ORACLE中的truncate操作DB2Oracle