背景
假設(shè)一種場景,在調(diào)試環(huán)境的時候,運行到15min的時候,環(huán)境出現(xiàn)bug,需要去debug。也許錯誤的第一現(xiàn)場并不是15min的時候,可能在14min30s-15min之間,那么如果正向執(zhí)行就需要14min30s以上。所以這個時候如果能夠直接反向運行到14min30s,就可以節(jié)省很多時間。就像jojo的奇妙冒險中吉良吉影的招式,敗者食塵一樣,逆轉(zhuǎn)時間
編譯選項
要實現(xiàn)這個功能,依賴于VCS和VERDI的聯(lián)合調(diào)試,所以在編譯的時候需要使用下面的指令
vcs-full64-sverilog-ntb_optsuvm-1.2-lca-kdb-debug_access+reverse
除了常規(guī)的選項以外,-kdb選項是用于生成kdb數(shù)據(jù)庫,支持verdi的聯(lián)合調(diào)試,而lca是kdb的依賴選項。
最后的-debug_access+reverse則是最關(guān)鍵的開關(guān),需要加上這個選項才是實現(xiàn)反向運行。
編譯完成以后,進(jìn)行仿真的時候,需要使用./simv -verdi,啟動仿真。這樣就能夠直接調(diào)用verdi進(jìn)行聯(lián)合仿真。
測試代碼
本次的測試代碼就是簡單的4行打印。
moduletest(); importuvm_pkg::*; `include"uvm_macros.svh" initialbegin `uvm_info("a","hellouvm!",UVM_NONE) `uvm_info("b","hellouvm!",UVM_NONE) `uvm_info("c","hellouvm!",UVM_NONE) `uvm_info("d","hellouvm!",UVM_NONE) end endmodule
reverse
啟動verdi之后,注意圖中紅色框框中的一排按鈕,這就是reverse功能的按鈕。從圖標(biāo)形狀來開,和聯(lián)合仿真的正向交互式仿真是一致,功能上他們其實也是對偶的。
reverse按鈕
如果你開起了reverse選項,但是仍然沒有出現(xiàn)這一排按鈕,那么就需要在tools下的perferences中,開啟reverse按鈕。
perferences
在perferences中的interactive debug下,找到reverse debug
reverse
接下來可以在代碼中設(shè)置兩個斷點進(jìn)行測試。直接單擊代碼左側(cè)即可甚至斷點。和C的單步調(diào)試是一樣的,直接run就能在斷點處停止。
設(shè)置斷點
我們跑到第九行的斷點,可以看到中間在七行停止了一次,最后在第九行停下來,6 7 8行的信息都已經(jīng)打印出來了。
前向運行
那么如果我們需要回到第七行,就可以直接進(jìn)行點擊下圖中的run reverse按鈕。
run reverse
然后就能夠回到上一個斷點處
當(dāng)然也可以,點擊旁邊的next reverse按鈕進(jìn)行反向單步運行
反向單步
就能夠從第九行回到第八行
其他按鈕和這兩個類似,但是正向調(diào)試的反向版本。
本次分享了VCS+VERDI的reverse反向運行功能,可以將整個仿真反向運行,從而減少正向仿真的時間消耗。
當(dāng)然,這必須在VCS+VERDI的聯(lián)合調(diào)試下才可以,如果是VCS單獨仿真,dump波形,再使用VERDI離線調(diào)試就不能使用。而聯(lián)合仿真也會大幅度降低運行速度,所以推薦在早期debug驗證環(huán)境的時候使用。
審核編輯:劉清
-
VCS
+關(guān)注
關(guān)注
0文章
78瀏覽量
9565 -
Verdi
+關(guān)注
關(guān)注
0文章
22瀏覽量
8750
原文標(biāo)題:聯(lián)合仿真VCS+VERDI+Reverse,你會嗎?
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論