源代碼級別調試
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 #命令模板
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代碼。
編輯:hfy
-
vhdl
+關注
關注
30文章
817瀏覽量
128159 -
DEBUG
+關注
關注
3文章
94瀏覽量
19933 -
Vivado
+關注
關注
19文章
812瀏覽量
66611
發布評論請先 登錄
相關推薦
評論