資料來源
(1) VCS與verdi聯合進行單步調試 | 駿的世界 (lujun.org.cn)
(2) 當simulation hang住的時候該怎么辦? (qq.com)
(3) https://blog.csdn.net/gsjthxy/article/details/107207452
注1:(1)中的單步調試不是很適合debug hang case; (2)中的方法,試用了一下,首先tcl腳本存在一些語法問題,需要注意空格的必要性;其次,改掉語法錯誤后,調用函數沒有效果;(3)和(2)原理上一樣,具體實現不同;
1.VCS與verdi聯合進行單步調試
注:資料(1)中的示例可以把testbench中的一些變量拖到波形中觀察!!!
(1) 編譯: 在VCS編譯的時候,要額外加上 -debug_access+all -kdb -lca 這個三個選項參數。這樣,之后生成的simv,才能支持單步調試功能。
即 vcs -debug_access+all -kdb -lca
(2) 編譯示例: makefile的vcs目標,對代碼進行編譯,生成simv。
(3) 仿真: 生成simv后,要增加一個選項,-gui=verdi,表示使用verdi這個工具進行單步調試。
(4) 仿真示例: makefile的sim目標,代碼仿真,進行單步調試。
(5) gui界面:執行 make vcs; make sim 后,會彈出verdi界面,並且停在0時刻。此時打開波形,時刻停在0時刻,信號還沒有產生波形。
(5.1) 在關心的代碼處設置斷點。
(5.2) 在交互式窗口,輸入run,或者快捷鍵F5,或者菜單欄Simulation->Run/Continue。運行仿真。
(5.3) 仿真會在斷點處停下來。
(5.4) 在交互式窗口輸入next,或者快捷鍵F10,或者菜單欄 Simulation->Step/Next->Next。