如果問廣大的ICer一個問題,大家在日常仿真中用的最頻繁的工具是什么?
我相信絕大多數人的答案是Verdi ——Synopsys旗下的一款功能強大的工具:
Verdi自動化調試系統是Verdi SoC調試平臺的核心,它支持對所有設計和驗證流程進行全面的調試。它包括強大的技術,幫助您理解復雜和不熟悉的設計行為,讓困難和乏味的調試過程自動化,并能讓多樣和復雜的設計環境一致化。
如上面的官方定義所示:
在IC設計中,可以根據仿真結果檢查或者理解設計;
在IC驗證中,常常用來調試(debug)一些錯誤的情況。
在IC君的眼中,Verdi既可以閱讀調試代碼,又可以查看波形(Verdi里面的nWave工具),包括數字設計的波形和模擬設計的波形,確實是居家旅游、工作賺錢的必備利器。
下面分享一些在實際做項目過程中verdi在debug時的小技巧:連續信號有效數量的測量。
如下圖所示,clk是輸入時鐘信號,data_enable_in是輸入數據有效標志信號,y_in則是輸入數據。在debug的時候,有時我們想要知道白色光標和黃色光標時間內有多少個連續有效的數據y_in。我們該如何做到呢?
一般可以使用以下3種方法:
方法1:最直接也是最笨的辦法,當然是手動去數,1、2、3…;如果該時間段內,數據量較少,很快就可以數出來了。當數據量較多時,只要你有足夠的耐心和時間,有時還需要一副好眼睛,最終也是可以得到正確的結果。不過效率非常低下,比較麻煩的是還容易數錯。
方法2:如果已知時鐘周期(本例子中clkp=6.736ns),則可以計算該時間段內時鐘個數來獲知數據量;上面例子的圖中兩個光標之間的時間差delta=188.608ns,delta/T=28,因此就是28個數據了。是不是要比直接用手動數快很多了?這個辦法雖然準確,但是每次都要計算一次,如果需要頻繁的獲知不同時間段內的有效數據還是太麻煩了一點。
方法3:本文重點要介紹的方法。該方法是通過把時鐘周期設置為時間單位,這樣兩個光標之間的時間差就是該段時間內的有效數據量了。具體操作方法如下:
如下圖用鼠標點擊1,會彈出對話框;點擊2位置倒三角形,下拉選項中選時鐘周期單位是ns;然后再把timeunit
改為clock周期6.736ns,點擊OK
再看delta顯示出來的值,已經變成28了,即為我們要數的數據量了。
這個方法對于一段時間內的連續有效數據來說,應該是最簡單有效的獲取數據個數的方法了。任意改變兩光標的距離或位置,都很直接的得到該段時間內的連續有效數據量。該方法在debug過程中常常會用到,請大家善加利用。
另外還有一個比較有效的辦法是利用verdi的nWave里面的Signal Event Report
功能。該方法雖然稍顯麻煩,但善于利用,也可以變得非常好用。方法如下圖:
a.鼠標點擊選中clk 這個信號;
b.點擊view菜單,選擇下拉菜單里面的SignalEvent report,就會彈出對話框;
c.進度條往后拖,會看到Falling#這一欄顯示的數據28就是我們要的數據量了。
以上就是一段時間內連續有效數據的幾個測量方法。debug的時候方法3最簡單便捷,應用頻率也較高;但是其他幾個方法在特定的場景下也可以發揮出自己的作用,需要根據實際debug的時候靈活應用。
-
IC設計
+關注
關注
37文章
1291瀏覽量
103768 -
soc
+關注
關注
38文章
4122瀏覽量
217937 -
仿真
+關注
關注
50文章
4043瀏覽量
133416 -
Verdi
+關注
關注
0文章
22瀏覽量
8761 -
時鐘信號
+關注
關注
4文章
445瀏覽量
28510
發布評論請先 登錄
相關推薦
評論