VCS與verdi聯合進行單步調試


原文鏈接:http://www.lujun.org.cn/?p=1924

我們在驗證的時候,會有對自己寫的驗證代碼進行debug的時候,往往在這個時候,我們基本是通過$display,系統函數來打印我們關心的東西,然后進行debug。但是這樣的效率是很低的。

vcs提供了單步調試的功能,並且能夠配合verdi工具。利用這兩個工具,可以方便我們進行debug。

如以下的UVM驗證環境:

  • flist:  file list,包含了環境中需要編譯,仿真的文件

  • get_file.sh:  自動生成flist文件的腳本

  • Makefile: 執行編譯,仿真的makefile

  • source:   RTL 源代碼目錄

  • top_tb.sv: 驗證環境頂層

  • uvm_code: UVM驗證代碼目錄

在VCS編譯的時候,要額外加上 -debug_access+all -kdb -lca 這個三個選項參數。這樣,之后生成的simv,才能支持單步調試功能。

即        vcs  -debug_access+all -kdb -lca

makefile的vcs目標,對代碼進行編譯,生成simv。

生成simv后,要增加一個選項,-gui=verdi,表示使用verdi這個工具進行單步調試。

makefile的sim目標,代碼仿真,進行單步調試。

執行 make vcs; make run 后,會彈出verdi界面,並且停在0時刻。

此時界面,如下所示,1處為代碼結構,2為代碼區,3為交互式窗口,4為watch窗口。

此時打開波形,時刻停在0時刻,信號還沒有產生波形。

在scoreboard中,設置斷點,查看接收的包信息。

在交互式窗口,輸入run,或者快捷鍵F5,或者菜單欄Simulation->Run/Continue。運行仿真。

此時,仿真會在斷點處停下來。

對get_actual變量,右鍵,Add to Watches->Add to Watch 1。將變量添加到watch中。

因為,此時這個變量,還沒有獲取到值,因此值為null。

在交互式窗口輸入next,或者快捷鍵F10,或者菜單欄 Simulation->Step/Next->Next。

執行到獲取包。將包添加到watch中。

    

此時,包就不是null,而是有值了,可以查看包中各個變量的值。

此時,波形也會顯示到當前仿真時刻,各個信號的波形。

通過這種,方式,是不是debug,就容易很多了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM