0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

全網(wǎng)最實(shí)用的Verdi教程1

jf_78858299 ? 來(lái)源:芯片驗(yàn)證日記 ? 作者:芯片驗(yàn)證日記 ? 2023-05-05 14:49 ? 次閱讀

前言

Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi支持對(duì)所有設(shè)計(jì)和驗(yàn)證流程進(jìn)行全面的調(diào)試。它能夠幫助工程師理解復(fù)雜和不熟悉的設(shè)計(jì)行為,讓困難和乏味的調(diào)試過(guò)程自動(dòng)化,并能讓多樣和復(fù)雜的設(shè)計(jì)環(huán)境一致化。在芯片設(shè)計(jì)過(guò)程中,可以根據(jù)仿真結(jié)果檢查或者理解設(shè)計(jì);在芯片驗(yàn)證過(guò)程中,常常用來(lái)調(diào)試(debug)一些錯(cuò)誤的情況。Verdi既可以閱讀調(diào)試代碼,又可以查看波形,包括數(shù)字設(shè)計(jì)的波形和模擬設(shè)計(jì)的波形。

本文內(nèi)容標(biāo)題截圖

本文一共一萬(wàn)一千多字,上百?gòu)埥貓D,基本涵蓋了Verdi的日常用法和常規(guī)技巧,內(nèi)容比較多我對(duì)標(biāo)題做了如下的截圖,方便大家閱讀查找。整理的過(guò)程中參考了很多大佬的文章,文末也都一一列舉出來(lái)了。由于時(shí)間倉(cāng)促,整理的還不是太理想,還是希望能幫助到一些朋友吧。

圖片圖片圖片圖片圖片

一、verdi使用教程

(一) Verdi環(huán)境配置

bashrc中配置

export Verdi_HOME=$Synopsys_Dir/Verdi2015
# export NOVAS_HOME=$Synopsys_Dir/Verdi2015
export PATH=$Verdi_HOME/bin:$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/lib/linux64"$PATH
export LD_LIBRARY_PATH="/opt/Synopsys/Verdi2015/share/PLI/VCS/linux64"$PATH

上面三個(gè)環(huán)境變量的解釋?zhuān)?/p>

VERDI_HOME/NOVAS_HOME:仿真器默認(rèn),且為設(shè)置PATH做準(zhǔn)備

PATH:讓系統(tǒng)(Linux)找到verdi

LD_LIBRARY_PATH:讓系統(tǒng)(Linux)能夠找到Verdi需要的庫(kù)文件.so(靜態(tài)庫(kù)),.a(動(dòng)態(tài)庫(kù)),.tab(表格文件).

(二)VCS產(chǎn)生Verdi波形

[1] 使用Verilog系統(tǒng)函數(shù),在tb****文件中加入相應(yīng)的系統(tǒng)函數(shù)

initial begin
  $fsdbDumpfile("fifo.fsdb");
  $fsdbDumpvars(0);
end

[2] 使用UCLI、TCL接口(VCS使用tcl腳本)

global env
fsdbDumpfile "$env(demo_fifo).fsdb"
fsdbDumpvars 0 "top_tb"
run

(三) Verdi基礎(chǔ)使用

1 打開(kāi)Verdi

(1)verdi -nologo

(2)makefile命令

2. nTrace使用

(1)查看包含的設(shè)計(jì)架構(gòu)

圖片

(2)查尋模塊實(shí)例化的位置

①在設(shè)計(jì)結(jié)構(gòu)中雙擊實(shí)例化模塊的名字->源代碼窗口高亮了模塊名

②再雙擊高亮的模塊名->看到在上層模塊中的哪一行被調(diào)用了

在nTrace中查找模塊和信號(hào)

圖片

查尋字符串

圖片

查看驅(qū)動(dòng)信號(hào)相關(guān)

圖片圖片

圖片

(3) nSchema使用

查看原理圖

圖片

顯示原理圖各信號(hào)名

圖片

RTL 級(jí) : 在當(dāng)前的層次中查找某個(gè)信號(hào)

圖片

圖片

使用Fan-In Cone追蹤某個(gè)信號(hào)的驅(qū)動(dòng)邏輯

①首先要用上面的辦法來(lái)查找信號(hào)②調(diào)用該工具:

圖片

產(chǎn)生partial hierarchy schematic

用來(lái)查看與選擇特定信號(hào)有關(guān)的邏輯/模塊

①選擇需要查看的信號(hào)(可以通過(guò)shift鍵來(lái)選擇多個(gè)信號(hào))

圖片

(4) nState使用

查看狀態(tài)機(jī)視圖

圖片

查看狀態(tài)的執(zhí)行語(yǔ)句和轉(zhuǎn)移條件

圖片

查看某個(gè)狀態(tài)的執(zhí)行次數(shù)

圖片

圖片

(5) nWave使用
[1] 添加波形到nWave

①我們要打開(kāi).v文件

②打開(kāi)nWave然后打開(kāi).fsdb波形文件③正式添加波形:

快捷鍵G或者:

圖片

圖片

在nTrace中選中信號(hào)后,鼠標(biāo)中鍵拖拽,或者ctrl+w進(jìn)行添加

自動(dòng)加載,用-ssf 命令

verdi -sv -f filelist.f -top tb_top -ssf dut.fsdb &

[2] 查找某信號(hào),添加到nWave中

①通過(guò)nTrave查找到該信號(hào)②通過(guò)上面的方法進(jìn)行添加或者通過(guò)get signal來(lái)查找

圖片

nWave波形窗口,快捷鍵 g 加載信號(hào)(Get signals)。在彈出的窗口選中需要添加的信號(hào),點(diǎn)擊滾輪選擇需要添加信號(hào)的位置,也可在代碼中(nTrac界面)選中信號(hào) Ctrl+W 將信號(hào)加載在波形中

[2--]查找信號(hào)

找到模塊里的某個(gè)信號(hào),按?彈出find string對(duì)話框進(jìn)行查找。

圖片

[3] 給Group重命名,排序,以及調(diào)整信號(hào)位置

[1]重命名

圖片

[2]信號(hào)的拖拽:通過(guò)鼠標(biāo)中鍵進(jìn)行拖拽。

[3]縮?。嚎旖萱Iz,或者100%匹配:F

[4]放大:左鍵拖選放大范圍shift+Z ctrl+滑輪:進(jìn)行放大或者縮小

[5]移動(dòng):鼠標(biāo)中鍵按住信號(hào)拖拽中鍵選擇位置:

圖片

[6]復(fù)制:ctrl+P,或者右擊信號(hào),選擇復(fù)制的選項(xiàng)

[7]粘貼:ins鍵,或者右擊信號(hào),選擇粘貼的選項(xiàng)(注意:可以通過(guò)鼠標(biāo)中鍵選擇粘貼的位置)

[8]刪除:delete

[4] 改變信號(hào)的顏色

第一步:Tools->preferences->waveform->viewoption->waveformpane->general->paint waveform with specified color/pattern

圖片

第二步:選中信號(hào),然后按快捷鍵C改變信號(hào)顏色。

按C或者T修改信號(hào)或者波形顏色,按****T 更實(shí)用 ,每按一次顏色自動(dòng)改變。不區(qū)分大小寫(xiě)。

圖片

[5] 查看信號(hào)及變化
圖片

任意值:所有信號(hào)變化,一般會(huì)應(yīng)用到組合邏輯的指示信號(hào)信號(hào)沿:用于查找有效指示信號(hào),比如使能信號(hào)總線值:主要是用來(lái)查找數(shù)據(jù)信號(hào)模擬值:查看比如函數(shù)發(fā)生器產(chǎn)生的正弦波信號(hào)進(jìn)制之間的轉(zhuǎn)換:

[6] 進(jìn)制之間的轉(zhuǎn)換
圖片
[7] 符號(hào)數(shù)之間的轉(zhuǎn)換
圖片
[8] 狀態(tài)寄存器顯示為狀態(tài)名字

nTrace:

圖片

或者nWave:

圖片

[9] 通過(guò)移除關(guān)聯(lián),從狀態(tài)機(jī)名字恢復(fù)到原來(lái)的進(jìn)制顯示

圖片

可以看到,我們打開(kāi)過(guò)狀態(tài)機(jī)視圖之后,我們也就可以在狀態(tài)名和進(jìn)制之間轉(zhuǎn)換了:

圖片

[10] 通過(guò)邏輯操作創(chuàng)建新信號(hào)
圖片
圖片
[11] 如何添加marker

shift+M。為方便波形定位,按鍵shift+M使用mark功能標(biāo)記一下,可以自定義名稱(chēng)和顏色,方便查找。

圖片

[12] 總線操作:
圖片
圖片
[13] 如何查找信號(hào)的某個(gè)值、某個(gè)值跳轉(zhuǎn)到某個(gè)值
圖片圖片圖片
[14] 如何對(duì)比兩個(gè)波形
圖片
[15] 顯示信號(hào)全路徑

按 **=H=** 顯示波形信號(hào)全路徑,再按**H**撤銷(xiāo)。不區(qū)分大小寫(xiě)。

圖片

[16] 對(duì)信號(hào)的簡(jiǎn)單操作

點(diǎn)擊波形窗口,選中信號(hào),使用Delete刪除信號(hào)。選中信號(hào),使用Ctrl+p復(fù)制選中的信號(hào),然后使用insert按鍵插入,粘貼的位置由黃線所在位置決定。

[17] 移動(dòng)波形窗口信號(hào)的位置

使用滾輪在波形窗口選中信號(hào),然后拖到代碼窗口即可查看選中波形的代碼邏輯

[18] 放大縮小

Z:Zoom In;z:Zoom Out;f:Zoom All

[19] 顯示狀態(tài)機(jī)的跳轉(zhuǎn)

選中狀態(tài)機(jī)狀態(tài)的波形,在nWave窗口選中Tools>Bus Contention>打開(kāi)狀態(tài)機(jī),(關(guān)閉), 返回查看波形已經(jīng)變?yōu)闋顟B(tài)的名稱(chēng)。 補(bǔ)充:選擇具有狀態(tài)機(jī)的模塊選中,然后在主工具欄選擇Tools>Extract interative FSM

圖片

點(diǎn)擊OK,然后點(diǎn)擊下面的狀態(tài)機(jī),即可看到狀態(tài)的跳轉(zhuǎn)。

圖片

[20] 參考信號(hào)數(shù)值

選中Source>Active Annotation即可看到每一個(gè)信號(hào),參數(shù)的數(shù)據(jù)顯示。

[21] 新建組并對(duì)組重命名

將黃線放到最后一行,添加信號(hào)即可新建一個(gè)信號(hào)組。然后鼠標(biāo)選中右鍵即可進(jìn)行相關(guān)操作,也可以選中一個(gè)模塊,直接Ctrl+4即可將接口信號(hào)加入波形窗口。

[22] Signal Event Report統(tǒng)計(jì)

統(tǒng)計(jì)出某個(gè)信號(hào)在特定時(shí)間段內(nèi)的跳變的次數(shù)。

按鼠標(biāo)滑輪中建,添加一條mark標(biāo)記線用于選擇統(tǒng)計(jì)區(qū)間。

View -> Signal Event Report

圖片

Rising:指的是指定Marker時(shí)間段內(nèi)上升沿?cái)?shù);

Falling:指的是指定Marker時(shí)間段內(nèi)下降沿?cái)?shù);

=備注:利用Logical Operation和Signal Event Report可以統(tǒng)計(jì)非連續(xù)有效信號(hào)=

[23] Waveform Compare比較波形

nWave提供了一種綜合比較自動(dòng)比較不同結(jié)果的能力。在比較完成后,nWave以圖形方式顯示波形窗格中的任何不匹配,然后可以通過(guò)每個(gè)不匹配來(lái)分析差異。

Tools -> Waveform Compare

圖片

(四) Verdi使用技巧

1、連續(xù)信號(hào)有效數(shù)量的測(cè)量

[1] 下面分享一些在實(shí)際做項(xiàng)目過(guò)程中verdi在debug時(shí)的小技巧:連續(xù)信號(hào)有效數(shù)量的測(cè)量。

如下圖所示,clk是輸入時(shí)鐘信號(hào),data_enable_in是輸入數(shù)據(jù)有效標(biāo)志信號(hào),y_in則是輸入數(shù)據(jù)。在debug的時(shí)候,有時(shí)我們想要知道白色光標(biāo)和黃色光標(biāo)時(shí)間內(nèi)有多少個(gè)連續(xù)有效的數(shù)據(jù)y_in。我們?cè)撊绾巫龅侥兀?/p>

圖片

一般可以使用以下3種方法:

方法1:最直接也是最笨的辦法,當(dāng)然是手動(dòng)去數(shù),1、2、3…;如果該時(shí)間段內(nèi),數(shù)據(jù)量較少,很快就可以數(shù)出來(lái)了。當(dāng)數(shù)據(jù)量較多時(shí),只要你有足夠的耐心和時(shí)間,有時(shí)還需要一副好眼睛,最終也是可以得到正確的結(jié)果。不過(guò)效率非常低下,比較麻煩的是還容易數(shù)錯(cuò)。

方法2:如果已知時(shí)鐘周期(本例子中clkp=6.736ns),則可以計(jì)算該時(shí)間段內(nèi)時(shí)鐘個(gè)數(shù)來(lái)獲知數(shù)據(jù)量;上面例子的圖中兩個(gè)光標(biāo)之間的時(shí)間差delta=188.608ns,delta/T=28,因此就是28個(gè)數(shù)據(jù)了。是不是要比直接用手動(dòng)數(shù)快很多了?這個(gè)辦法雖然準(zhǔn)確,但是每次都要計(jì)算一次,如果需要頻繁的獲知不同時(shí)間段內(nèi)的有效數(shù)據(jù)還是太麻煩了一點(diǎn)。

方法3:本文重點(diǎn)要介紹的方法。該方法是通過(guò)把時(shí)鐘周期設(shè)置為時(shí)間單位,這樣兩個(gè)光標(biāo)之間的時(shí)間差就是該段時(shí)間內(nèi)的有效數(shù)據(jù)量了。具體操作方法如下:

如下圖用鼠標(biāo)點(diǎn)擊1,會(huì)彈出對(duì)話框;點(diǎn)擊2位置倒三角形,下拉選項(xiàng)中選時(shí)鐘周期單位是ns;然后再把timeunit 改為clock周期6.736ns,點(diǎn)擊OK.

圖片

再看delta顯示出來(lái)的值,已經(jīng)變成28了,即為我們要的數(shù)據(jù)量了。

圖片

這個(gè)方法對(duì)于一段時(shí)間內(nèi)的連續(xù)有效數(shù)據(jù)來(lái)說(shuō),應(yīng)該是最簡(jiǎn)單有效的獲取數(shù)據(jù)個(gè)數(shù)的方法了。任意改變兩光標(biāo)的距離或位置,都很直接的得到該段時(shí)間內(nèi)的連續(xù)有效數(shù)據(jù)量。該方法在debug過(guò)程中常常會(huì)用到,請(qǐng)大家善加利用。

[2]另外還有一個(gè)比較有效的辦法是利用verdi的nWave里面的Signal Event Report 功能。該方法雖然稍顯麻煩,但善于利用,也可以變得非常好用。方法如下圖:

a.鼠標(biāo)點(diǎn)擊選中clk 這個(gè)信號(hào);b.點(diǎn)擊view菜單,選擇下拉菜單里面的SignalEvent report,就會(huì)彈出對(duì)話框;c.進(jìn)度條往后拖,會(huì)看到Falling#這一欄顯示的數(shù)據(jù)28就是我們要的數(shù)據(jù)量了。

圖片

以上就是一段時(shí)間內(nèi)連續(xù)有效數(shù)據(jù)的幾個(gè)測(cè)量方法。debug的時(shí)候方法3最簡(jiǎn)單便捷,應(yīng)用頻率也較高;但是其他幾個(gè)方法在特定的場(chǎng)景下也可以發(fā)揮出自己的作用,需要根據(jù)實(shí)際debug的時(shí)候靈活應(yīng)用。

[2]網(wǎng)格法

點(diǎn)擊菜單里面的view選項(xiàng),選擇Grid Options,如下圖所示:

圖片

選中選項(xiàng)Grid on 以及選項(xiàng)Grid Counter with Start Number,如下圖所示,點(diǎn)擊Apply或者OK之后,就可以看到波形里面出現(xiàn)了網(wǎng)格,最下面有數(shù)字出現(xiàn)。這種方法還有一個(gè)好處是鼠標(biāo)左鍵點(diǎn)到CLK信號(hào)的任意位置,計(jì)數(shù)都是從新的地方開(kāi)始,具有很強(qiáng)的靈活性。

圖片

[4] 自動(dòng)添加計(jì)數(shù)器:

右擊CLK信號(hào),選擇Add Counter Signal by,選擇上升沿、下降沿、任意沿中的一個(gè),就會(huì)自動(dòng)產(chǎn)生一個(gè)16進(jìn)制的計(jì)數(shù)信號(hào),不過(guò)它的計(jì)數(shù)起點(diǎn)是從CLK的0時(shí)刻開(kāi)始,不能選擇任意時(shí)刻,所以缺乏靈活性。

圖片

關(guān)于方法3和方法4,更推薦方法3網(wǎng)格法,看起來(lái)很強(qiáng)大,大家可以繼續(xù)探索探索。

[5]打開(kāi)路徑下的verdi.cmd記錄了上一次的全部動(dòng)作。如果verdi意外關(guān)閉,可以使用verdi -play verdi.cmd來(lái)復(fù)原。

[6]可以給clk的上升沿打上標(biāo)記(好像叫l(wèi)abel),在兩個(gè)光標(biāo)之間會(huì)顯示標(biāo)記的個(gè)數(shù),也就是周期數(shù)。

2、非連續(xù)有效信號(hào)量測(cè)方法

實(shí)際debug過(guò)程中,更常遇到的場(chǎng)景是 非連續(xù)有效的信號(hào) ,如下圖所示:CLK并不是在每個(gè)時(shí)刻都是有效的,這時(shí)我們又該如何比較快速準(zhǔn)確的獲知某個(gè)時(shí)間段內(nèi)有效信號(hào)(CLK)個(gè)數(shù)呢?

圖片

跟獲取連續(xù)有效信號(hào)個(gè)數(shù)一樣,如果某個(gè)時(shí)間段內(nèi)有效信號(hào)個(gè)數(shù)較少(比如少于10個(gè)),直接手動(dòng)數(shù)就可以了。當(dāng)有效信號(hào)toggle次數(shù)比較多時(shí),肉眼無(wú)法快速看出數(shù)量的時(shí)候,我們可以利用Verdi nWave里面的Logical operation 和Signal Event report 這兩個(gè)功能來(lái)實(shí)現(xiàn)。

對(duì)于非連續(xù)有效數(shù)據(jù)傳輸,通常會(huì)有一個(gè)信號(hào)來(lái)標(biāo)志哪筆數(shù)據(jù)是有效的,如上圖中的valid_in信號(hào)為1時(shí)表示data_in數(shù)據(jù)有效。利用這個(gè)標(biāo)志信號(hào)跟時(shí)鐘進(jìn)行“與”操作,就得到一個(gè)新的時(shí)鐘。這個(gè)新的時(shí)鐘只有在數(shù)據(jù)有效時(shí)才有,在數(shù)據(jù)無(wú)效時(shí)被遮掉了。再通過(guò)Signal Event report獲知指定時(shí)間內(nèi)新的時(shí)鐘個(gè)數(shù),就可以知道有效數(shù)據(jù)的個(gè)數(shù)了。

具體操作步驟如下:

(1).鼠標(biāo)選中時(shí)鐘信號(hào)clk和數(shù)據(jù)有效標(biāo)志信號(hào)valid_in;(2).點(diǎn)開(kāi)nWave 菜單里面的Signal,再選擇下拉菜單里的Logical Operation,如下圖:

圖片

(3).在彈出的對(duì)話框里面,如下圖所示,確認(rèn)Expression里的信號(hào)操作是”&”;把Name 改成valid_in_clk;然后點(diǎn)擊Create/Modify按鈕;

圖片

再回來(lái)看波形,如下圖所示,就會(huì)發(fā)現(xiàn)多了一個(gè)信號(hào)valid_in_clk,這個(gè)信號(hào)就是我們需要的新時(shí)鐘信號(hào)。

圖片

(4)接下來(lái)就是Signal Event Report閃亮登場(chǎng)了。選中valid_in_clk,然后在View下拉菜單里面選Signal Event Report。如下圖所示,在彈出的對(duì)話框里,找到Falling#這一列,里面列的數(shù)字16就是我們指定的時(shí)間段內(nèi)有效的數(shù)據(jù)個(gè)數(shù)了。

圖片

如果還是半信半疑的同學(xué),可以手動(dòng)數(shù)一數(shù),看看Logical Operation加Signal Event Report這套組合拳的結(jié)果是否正確。

3、搜索查找

Verdi提供了很強(qiáng)大的搜索查找功能,充分利用好這些功能在IC設(shè)計(jì)/驗(yàn)證過(guò)程中可以大大提高debug 效率。下面我們就結(jié)合實(shí)際應(yīng)用來(lái)介紹一下Verdi中常用的搜索查找功能以及一些使用技巧。

[1] 數(shù)值搜索、上升沿和下降沿搜索

進(jìn)行數(shù)值搜索、上升沿和下降沿搜索

圖片

選中信號(hào),按n向后搜索,N向前搜索;或者按左右小箭頭進(jìn)行查找搜索。例如:

數(shù)值搜索:

圖片

上下沿搜索:

圖片

[2] 層次瀏覽器窗格中尋找實(shí)例(instance)

在利用 Verdi debug時(shí),首先需要找到我們負(fù)責(zé)模塊的實(shí)例(instance),再選擇相應(yīng)的信號(hào)來(lái)觀察它們的行為來(lái)debug。當(dāng)設(shè)計(jì)很龐大時(shí),要找到底層的一個(gè)小模塊,如果用鼠標(biāo)從 top一層一層的往下點(diǎn),效率會(huì)比較低;又或者我們只負(fù)責(zé)了一個(gè)小模塊,對(duì)整個(gè)設(shè)計(jì)的層級(jí)關(guān)系并不清楚的時(shí)候,找到我們的底層設(shè)計(jì)會(huì)變得非常困難。

這時(shí),只要我們知道底層模塊的實(shí)例名,就可以利用Verdi的“Show Navigation Text Field”功能快速查找了。操作方法如下圖,

a)在Verdi的層次瀏覽器窗格(Verdi界面的左部)點(diǎn)右鍵,彈出菜單里選“Show Navigation Text Field”或快捷鍵“Ctrl+S”

b) 在輸入對(duì)話框里輸入相應(yīng)的實(shí)例名,再點(diǎn)右邊的搜索按鈕就可以了。

圖片

圖片

**[3] **搜索源代碼

源代碼窗格里提供了三種搜索指令,功能各不相同,用來(lái)應(yīng)付不同的使用場(chǎng)景。

1)Find scope

Find scope適用于整個(gè)chip里面的查找。前面提到的應(yīng)用場(chǎng)景如下:

A)Source –> find scope或者 按shift+S

B)在彈出對(duì)話框里Scope Type選module

Filter內(nèi)填要找module關(guān)鍵字;Instance list 里面選擇一個(gè),點(diǎn)Go To,source code就會(huì)打開(kāi)該module。

圖片

另外,對(duì)話框最下面列出了整個(gè)設(shè)計(jì)中找到的個(gè)數(shù),可以知道該module被instance次數(shù)。

2) Find Signal/Instance/instport

這個(gè)指令可以查找指定模塊內(nèi)的信號(hào)、實(shí)例或輸入輸出端口。這個(gè)指令的好處是可以把要查找的內(nèi)容都列出來(lái),想看哪一個(gè)就用鼠標(biāo)點(diǎn)一下,就會(huì)切換到源代碼窗格對(duì)應(yīng)位置。當(dāng)模塊內(nèi)要查找的signal(instance or input/output port)比較多時(shí),可以快速的找到想看的signal。

操作方法如下:

source –> Find Signal/Instance/instport 或者shift+A

選擇要查找的類(lèi)型:signal, instance or instport

輸入框里面輸入信號(hào)名,點(diǎn)Find按鈕,下面會(huì)列出所有找到的信號(hào),點(diǎn)擊某個(gè)信號(hào),就會(huì)到達(dá)source code 里面對(duì)應(yīng)的信號(hào)

圖片

3) find string

Find string應(yīng)該是debug 過(guò)程中使用頻率最高的查找指令了。只要在輸入框里面輸入部分或全部要查找的字符串,再點(diǎn)一下find 按鈕就可以了。

這個(gè)指令可以在當(dāng)前文檔(current File)或者全部文檔(All file)里面查找,因?yàn)樽址檎移ヅ涞帽容^多,要根據(jù)需要選擇在當(dāng)前文檔或全部文檔查找,以提高查找效率。

因?yàn)槭褂妙l率高,Verdi也很貼心的在默認(rèn)工具欄里放置了Find string的輸入窗口,如下:

圖片

輸入欄輸入字符串有幾種方法

(1)手動(dòng)輸入,好處是可以只輸入部分字符,不用全部輸入信號(hào)名(2)點(diǎn)擊信號(hào),按中鍵拖入輸入欄,然后點(diǎn)向上或向下查找,找同名信號(hào)(3)點(diǎn)擊信號(hào),按快捷鍵”Ctrl+F”,信號(hào)名就會(huì)自動(dòng)輸入到輸入欄。這個(gè)快捷鍵很好用。

圖片

[4] nWave里面的信號(hào)追溯源代碼

Debug過(guò)程中,往nWave 里添加信號(hào)后,查看了信號(hào)波形,如果看到異常往往要回頭看一下源代碼。如果一時(shí)找不到了,find string當(dāng)然可以找得到,但是需要輸入一串字符,可能就不那么樂(lè)意了。

其實(shí)Verdi很貼心,可以直接把nwave里面的波形拖到nTrace里面,可以快速的找到要找的信號(hào)。

操作方法:nWave里面選擇信號(hào),如out_den。按住中鍵,直接拖到source code plane,然后放開(kāi),就會(huì)顯示你要找的信號(hào)了

圖片

上述內(nèi)容介紹了Verdi常用的幾種搜索查找功能和技巧。希望對(duì)大家有幫助,debug效率更上一個(gè)檔次。如果你有什么好想法,也歡迎后臺(tái)留言一起討論。

4、總線拆分

分析波形的時(shí)候有時(shí)候需要把一個(gè)多比特的bus拆分成幾個(gè)位寬較小的bus,以方便觀察數(shù)值。

右鍵/Signal -> Bus Operations -> Expand as Sub-bus

圖片

將32bit分割為4個(gè)8bit bus.

圖片

分割結(jié)果:

圖片

5、統(tǒng)計(jì)

統(tǒng)計(jì)出某個(gè)信號(hào)在特定時(shí)間段內(nèi)的跳變的次數(shù)。這個(gè)結(jié)合下一節(jié)的邏輯運(yùn)算,可以把一些復(fù)雜的波形分析用直觀的形式表現(xiàn)出來(lái)。還是右鍵點(diǎn)擊波形窗口左邊的某個(gè)信號(hào)名字,在彈出菜單中選擇Signal Event Report。

圖片

在彈出的對(duì)話框中,可以關(guān)注感興趣的內(nèi)容,比如Rising#,指的是默認(rèn)Markers標(biāo)定的時(shí)間段內(nèi),該信號(hào)的上升沿次數(shù)。這樣就不用很辛苦的放大波形,用眼睛一個(gè)一個(gè)去數(shù)了。

圖片

6、邏輯運(yùn)算

在一個(gè)頻繁變化的信號(hào)、尤其是多比特的bus信號(hào)中觀察是否出現(xiàn)了某個(gè)值,有時(shí)候可以通過(guò)搜索來(lái)追蹤。也可以通過(guò)對(duì)現(xiàn)有信號(hào)執(zhí)行的邏輯操作創(chuàng)建新信號(hào),或者搜索信號(hào)值。但是如何一目了然地看到呢?右鍵/Signal -> Logical Operation,通過(guò)新建一個(gè)信號(hào),該信號(hào)是待觀察信號(hào)的某種邏輯表達(dá)式。

數(shù)值搜索

圖片

邏輯操作

例如:兩信號(hào)進(jìn)行與運(yùn)算,也可以進(jìn)行其他運(yùn)算。

圖片

相與之后結(jié)果:

圖片

7、manage.rc

manage.rc可以管理多個(gè)rc文件,實(shí)現(xiàn)每次啟動(dòng)Verdi都能載入預(yù)設(shè)的設(shè)置,同時(shí)不受上次啟動(dòng)Verdi后保存的設(shè)置影響。還可以保存本次使用過(guò)程中更改過(guò)的設(shè)置,以便更新預(yù)設(shè)設(shè)置。這個(gè)略微有些復(fù)雜。在啟動(dòng)Verdi時(shí),需要加個(gè)參數(shù)。

-managercFile some_path/manage.rc

這個(gè)manage.rc的內(nèi)容大概是這樣的:

@Manage rc file Version 1.0
[File]
default_file = ~/load_only.rc
working_file = ./novas.rc


[Load]  
default_file


[Save]  
working_file = MODIFIED_KEY

例子中作為只讀的default_file文件,可以放一些自己習(xí)慣或者喜歡的設(shè)置。比如tab等于4還是8,各種界面的字體,以及其它一些每次啟動(dòng)Verdi都希望生效的設(shè)置。working_file用來(lái)保存本次使用更改的設(shè)置,如果有想長(zhǎng)期預(yù)設(shè)的,可以從中copy出來(lái)到default_file,這樣方便升級(jí)迭代。

通過(guò)如下常規(guī)的參數(shù)調(diào)用

-rcFile some_path/some.rc

也可以讀入一個(gè)rc文件實(shí)現(xiàn)類(lèi)似預(yù)設(shè)功能,不過(guò)這種方法的缺點(diǎn)是這個(gè)rc文件會(huì)被當(dāng)前調(diào)用覆蓋。后果就是下次啟動(dòng)的Verdi會(huì)帶有上次使用的痕跡,比如打開(kāi)波形文件的目錄位置。用的次數(shù)多了,不勝其煩。干脆用manage.rc來(lái)徹底的解決。

另外,親測(cè)命令行鍵入 -managercFile 的方式也可以通過(guò)設(shè)置環(huán)境變量來(lái)替代,如在 .cshrc 中添加

setenv NOVAS_MANAGE_RC_FILE some_path/manage.rc

8、Trace代碼過(guò)程中波形窗口保持前置

不知道從哪個(gè)版本開(kāi)始,Verdi默認(rèn)打開(kāi)了Active Detection,Trace窗口在trace過(guò)程中會(huì)被激活前置,造成波形窗口被遮擋,也是不勝其煩。當(dāng)然這也屬于個(gè)人喜好問(wèn)題。

圖片

那如何保持波形窗口始終在前呢?首先需要在Trace下拉菜單中取消Active Detection,然后點(diǎn)擊波形窗口右上角的Keep as Top。

圖片

這樣在代碼Trace時(shí),波形始終可以看到,方便debug。Active Detection可以在rc文件中預(yù)設(shè)。Keep as Top還沒(méi)有找到預(yù)設(shè)的方法。

9、Parameter 提示的默認(rèn)進(jìn)制

在Verdi中,如果把鼠標(biāo)放到Verilog代碼中的parameter上,可以提示其值是多少。因?yàn)楦鞣N原因,有時(shí)候會(huì)以二進(jìn)制的形式提示,如果這個(gè)parameter是32比特,那把這個(gè)二進(jìn)制看明白也太費(fèi)眼睛了。簡(jiǎn)單的話還是16進(jìn)制比較易讀。這個(gè)可以在下圖中的Parameter Value Radix中設(shè)置。當(dāng)然也可以把它加入rc文件進(jìn)行預(yù)設(shè)。

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • VCS
    VCS
    +關(guān)注

    關(guān)注

    0

    文章

    79

    瀏覽量

    9611
  • Verdi
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    8782
  • 芯片驗(yàn)證
    +關(guān)注

    關(guān)注

    5

    文章

    34

    瀏覽量

    47230
  • DEBUG
    +關(guān)注

    關(guān)注

    3

    文章

    94

    瀏覽量

    19923
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)教VCS和verdi怎么聯(lián)合使用

    最近要用到VCS仿真后生成FSDB文件,然后在Verdi中進(jìn)行自動(dòng)偵錯(cuò),請(qǐng)問(wèn)我怎么安裝Verdi這個(gè)軟件以及如何啟動(dòng)license,并且怎么寫(xiě)testbench文件才可以產(chǎn)生FSDB文件。請(qǐng)懂得人給我支支招,我也是剛開(kāi)始學(xué)習(xí)這個(gè)軟件的使用。
    發(fā)表于 01-22 14:53

    Verdi工具怎么安裝?如何破解?

    本文介紹Verdi工具的安裝及破解過(guò)程
    發(fā)表于 06-21 07:15

    VCS+Verdi如何安裝?怎么破解?

    VCS+Verdi如何安裝?怎么破解?
    發(fā)表于 06-21 06:11

    VCS仿真卡住,為什么無(wú)法生成verdi波形文件呢?

    在make com編譯成功后,terminal卡住了一直沒(méi)有反應(yīng),這是什么情況有大佬知道嗎?VCS仿真卡住,為什么無(wú)法生成verdi波形文件呢?
    發(fā)表于 06-21 08:14

    怎么修改verdi軟件波形背景顏色?

    畢業(yè)設(shè)計(jì)中用到verdi的波形,需要波形窗口的背景最好為白色,默認(rèn)為黑色。怎么修改設(shè)置,謝謝在線等,經(jīng)過(guò)半天的嘗試,和各位大神的請(qǐng)教,終于搞定了,拿出來(lái)和各位大神分享,希望更多的人參與到分享中來(lái),謝謝[/td]
    發(fā)表于 06-23 10:32

    Verdi 54v7 LINUX

    Verdi 54v7 LINUX
    發(fā)表于 03-25 13:19 ?9次下載

    verdi-SP2軟件下載

    本文檔內(nèi)容提供了verdi-SP2軟件免費(fèi)下載,供有需要的朋友參考
    發(fā)表于 04-19 17:28 ?7次下載

    Verdi使用技巧 連續(xù)有效信號(hào)量測(cè)方法

    Verdi自動(dòng)化調(diào)試系統(tǒng)是Verdi SoC調(diào)試平臺(tái)的核心,它支持對(duì)所有設(shè)計(jì)和驗(yàn)證流程進(jìn)行全面的調(diào)試。它包括強(qiáng)大的技術(shù),幫助您理解復(fù)雜和不熟悉的設(shè)計(jì)行為,讓困難和乏味的調(diào)試過(guò)程自動(dòng)化,并能讓多樣和復(fù)雜的設(shè)計(jì)環(huán)境一致化。
    的頭像 發(fā)表于 05-15 15:46 ?9901次閱讀
    <b class='flag-5'>Verdi</b>使用技巧 連續(xù)有效信號(hào)量測(cè)方法

    如何通過(guò)自動(dòng)化腳本實(shí)現(xiàn)Questasim和Verdi的聯(lián)合仿真

    Verdi是用來(lái)仿真以及debug波形的工具,但它不能夠用來(lái)編譯verilog和systemverilog文件,所以需要借助第三方EDA工具去做編譯的工作。 這里主要分享一下使用questasim
    的頭像 發(fā)表于 06-13 17:00 ?4583次閱讀
    如何通過(guò)自動(dòng)化腳本實(shí)現(xiàn)Questasim和<b class='flag-5'>Verdi</b>的聯(lián)合仿真

    分享《verdi用法小結(jié)》的pdf

    分享Verdi用法小結(jié)的pdf文檔
    的頭像 發(fā)表于 02-18 20:21 ?1224次閱讀
    分享《<b class='flag-5'>verdi</b>用法小結(jié)》的pdf

    Verdi使用技巧(三)

    前一段時(shí)間IC君比較忙,沒(méi)有更新文章,最近稍微閑下來(lái)點(diǎn),繼續(xù)更新Verdi相關(guān)的文章。
    的頭像 發(fā)表于 04-25 14:44 ?4721次閱讀
    <b class='flag-5'>Verdi</b>使用技巧(三)

    全網(wǎng)最實(shí)用的Verdi教程2

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi
    的頭像 發(fā)表于 05-05 14:53 ?8658次閱讀
    <b class='flag-5'>全網(wǎng)</b>最實(shí)用的<b class='flag-5'>Verdi</b>教程2

    全網(wǎng)最實(shí)用的Verdi教程3

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用VCS+Verdi或者Xcelium/xrun+Verdi的方式進(jìn)行代碼的仿真與檢查。Verdi
    的頭像 發(fā)表于 05-05 14:53 ?5751次閱讀
    <b class='flag-5'>全網(wǎng)</b>最實(shí)用的<b class='flag-5'>Verdi</b>教程3

    Verdi環(huán)境配置、生成波形的方法

    Verdi是一個(gè)功能強(qiáng)大的debug工具,可以配合不同的仿真軟件進(jìn)行debug,很多企業(yè)常用的就是VCS+Verdi或或者Xcelium(xrun)+Verdi的方式進(jìn)行代碼的仿真與檢查
    的頭像 發(fā)表于 05-29 09:48 ?3963次閱讀
    <b class='flag-5'>Verdi</b>環(huán)境配置、生成波形的方法

    Verdi連續(xù)波激光器-Coherent

    描述: Verdi系列激光器,是基于OPSL專(zhuān)利技術(shù),是高功率的532nm綠光激光器。常用于鈦寶石激光器泵浦、全息、干涉、冷原子等領(lǐng)域。 Verdi系列激光器,是久負(fù)盛名的激光器,具有非常出色
    的頭像 發(fā)表于 06-30 09:47 ?542次閱讀
    <b class='flag-5'>Verdi</b>連續(xù)波激光器-Coherent