標籤:
學習FPGA以來,一直是用Modelsim作為模擬調試工具,前幾天在同事那兒看到了一個新工具:Debussy,看她用的相當順手,而且工具本身也相 當好用,有很多Modelsim不具有的功能,然後就立馬上網下載了Debussy軟體和相關教程學習了一下,從本文開始軟體的學習筆記。
Debussy 是NOVAS Software, Inc(思源科技)開發的HDL Debug & Analysis tool,這套軟體主要不是用來跑類比或看波形,它本身不具有模擬功能,需要調用Modelsim等模擬軟體產生的模擬結果檔案來觀測波形,但是它可以預 存設計中所有訊號的模擬波形,模擬需要新調入訊號進行觀測時,可以即時調入而無需重新跑模擬;Debussy另一個最強大的功能是:能夠在HDL source code、schematic diagram、waveform、state bubble diagram之間,即時做trace,協助工程師debug;可能您會覺的:只要有simulator如ModelSim就可以做debug了,我何必 再學這套軟體呢? 其實Debussy v5.0以後的新版本,還提供了nLint -- check coding style & synthesizable,這蠻有用的,可以協助工程師瞭解如何寫好coding style,並養成習慣。
首先來學習一下Debussy的軟體使用,1所示為Debussy的基本原理架構,其中主要由4部分組成:nSchema、nTrace、nWave和nState。
圖1
nTrace:超文本原始碼分析和瀏覽工具,是Debussy 軟體所開啟的主畫面;nWave:波形分析觀測工具,可由nTrace內開啟;nSchema:層次原理圖產生器;nState:有限狀態機器提取和分析工具。
上文中提到,Debussy軟體一大功能就是波形的預存觀測功能。由於Debussy自身不具有模擬功能,需要由 Modelsim等模擬軟體產生fsdb(fast signal database)檔案,是Spring Soft (Novas)公司Debussy / Verdi 支援的波形檔案,一般較小,使用較為廣泛,其餘模擬工具如ncsim,modlesim等等可以通過載入Verdi 的PLI (一般位於安裝目錄下的share/pli 目錄下) 而直接dump fsdb檔案。fsdb檔案是verdi使用一種專用的資料格式,類似於VCD,但是它是只提出了模擬過程中訊號的有用資訊,除去了VCD中資訊冗餘,就 像對VCD資料進行了一次huffman編碼。因此fsdb資料量小,而且會提高模擬速度。下面介紹一下利用Modelsim產生fsdb檔案的方 法,Verilog HDL和VHDL方法有些不同,因此分別說明:
A. Verilog HDL方法
1. 修改Modelsim安裝根目錄下modelsim.ini檔案,去除唯讀保護後,加入一條語句:Veriuser=<Debussuy軟體安裝目錄>/Debussy/share/PLI/modelsim_pli/WINNT/novas.dll
2. 在Testbench中加入以下代碼:
initial begin
$fsdbDumpfile("wave_test.fsdb");
$fsdbDumpvars;
end
3. 在Modelsim中建立工程,編譯所有*.v檔案,調用模擬命令:vsim –pli novas.dll work.**_tb,模擬一段時間後退出模擬。然後可以在建立工程根目錄下發現多出了一個wave_test.fsdb檔案。
B. VHDL方法
1. 從<Debussy安裝目錄>\Debussy\share\PLI\modelsim_fli54\WINNT中找到novas.vhd文 件和novas_fli.dll檔案,novas_fli.dll檔案拷貝到modelsim安裝根目錄的win32檔案夾下,並且修改 modelsim.ini檔案,去除唯讀保護後,加入一條語句:Veriuser=novas_fli.dll;
2. 在Modelsim中建立工程,將第1步中的novas.vhd檔案拷貝到建立的modelsim工程根目錄下,在Transcript中運行以下指令碼命令:
vlib novas
vmap novas novas
vcom –work novas ./novas.vhd
3. 在VHDL Testbench中加入語句:
library novas;use novas.pkg.all;
process
begin
fsdbDumpfile("wave_vhd.fsdb");
fsdbDumpvars(0,"div_tb"); --0表示dump的模組層,“div_tb”表示第0層模組名
wait;
end process;
4. 編譯所有*.v檔案,調用模擬命令:vsim work.**_tb,模擬一段時間後退出模擬。然後可以在建立工程根目錄下發現多出了一個wave_vhd.fsdb檔案。
注:在VHDL方法中遇到了些問題,在執行vsim命令時出現以下錯誤警告:
# Loading D:\modeltech_6.6f\win32/./novas_fli.dll
# ** Warning: (vsim-FLI-3159) Failed to find foreign function ‘fliparseVariableInFile‘ in FLI object file "D:\modeltech_6.6f\win32/./novas_fli.dll".
# Region: /
# ** Fatal: (vsim-3274) Null foreign subprogram pointer (19).
在網上搜尋了也沒有什麼好的解決方案,產生方法也沒有什麼問題。只能自己試著解決一下問題了。看錯誤是因為 fliparseVariableInFile沒有在novas_fli.dll中找到,這個函數在Testbench中也沒有使用,但是在 novas.vhd中確實有這個名為“fliparseVariableInFile” 的procedure說明,在novas_fli.dll沒找到會不會是因為novas.vhd檔案和novas_fli.dll檔案不匹配造成的。定位 了問題,就修改了一下novas.vhd檔案,將有關fliparseVariableInFile的說明都注釋掉了,然後重新編譯了novas庫,運行 vsim就好使了,run後成功產生了fsdb檔案。
fsdb產生後,就可以通過Debussy軟體中的nWave匯入:
1. 首先開啟Debussy軟體,啟動介面是nTrace,通過Tools->New Waveform建立一個nWave視窗,2所示;
圖2
2. 在nWave中開啟**.fsdb檔案,3所示;
圖3
3. 通過Get Signals按鈕選取需要觀測的訊號,4所示為在nWave中顯示的波形。
圖4
學習筆記(二)主要熟悉一下Debussy軟體中nWave的介面和學習一下相關的常規操作。首先介紹一下nWave介面,1所示,其中主要包含三個 視窗:訊號視窗、值視窗和波形視窗。在訊號視窗中顯示了加入的所有訊號,並且可以分組,其中圖1中訊號都在組G1中;值視窗顯示了當前游標所處位置的訊號 值;波形視窗中顯示所有加入訊號的波形,其中上邊地區有個視窗尺規,表示當前顯示視窗範圍的時間尺規,中間是波形顯示地區,除了訊號波形,還有游標 (cursor)和標記(marker),最下邊地區是全域尺規,表示整個fsdb檔案所含資訊範圍的時間尺規。
圖1
按照筆記(一)的方法成功地產生了fsdb檔案,通過File->Open或者快速鍵開啟,2所示,在左側視窗中選擇路徑,在右側視窗中選擇fsdb檔案。
圖2
fsdb檔案讀取之後,在nWave是沒訊號顯示的,需要通過Signal->Get Signals或者快速鍵選取訊號,快顯視窗3所示,左側視窗中顯示了整個模擬設計的層次,中間視窗顯示了選定層次中的所有訊號,可以點擊選取需要觀測的訊號。
圖3
讀取訊號之後就可觀測到訊號波形了,1所示。在各個視窗中需要一些常用操作:
訊號視窗:如果需要拖動訊號改變顯示順序,需要點擊滑鼠中鍵即滾輪選中需要拖動的訊號,4所示,而黃色游標表示訊號拖動後所處位置;改變黃色游標的位置也需要通過點擊滑鼠中鍵來完成,配合剪下、複製和粘貼訊號等操作。
圖4
值視窗:值視窗顯示當前游標所處位置各訊號的值,並且可以通過 View->Values at Cursor/Marker同時顯示光線標位置和標記位置處訊號的值,5所示,顯示的訊號值有2列,分別對應游標和標記位置處訊號值。右擊值視窗可以改 變訊號的數字表示格式,6所示,當前選擇訊號的表示格式為16進位,可以將其切換成二進位、10進位等。
圖5
圖6
波形視窗:在波形視窗中最主要的是游標和標記的操作,可以由三個鍵的組合操作就能完 成所有工作,1. 通過滑鼠左鍵控制游標的位置;2. 通過滑鼠中鍵控制標記的位置;3. 通過滑鼠右鍵放大游標和標記間地區的波形至整個波形視窗。在移動游標和標記時,要注意一個選項Waveform->Snap Cursor To Transitions,在使能該選項時,游標和標記始終處於訊號波形變化邊沿,如1-bit訊號的上升沿或者下降沿;在不使能該選項時,游標和標記可以 在訊號波形任意位置,7所示,左邊圖為不使能選項效果,右邊圖為使能時效果。通過滑鼠右鍵放大了游標和標記間地區波形,8所示。
圖7
圖8
波形視窗中操作還有幾個快速鍵:
z: 縮小
shift+z:放大
f:所有波形縮小至整個視窗中顯示
l:返回至上一個視圖
在nWave中還提供了類比波形的顯示功能,9所示,白色波形曲線是通過Waveform->Analog Waveform將數字資料化成類比曲線,可以看到有明顯的量化效果;而紅色和黃色曲線是通過Analog->Convert To Analog將數字資料轉化成類比量,可以看到轉化後波形比較光滑,並且可以在Analog菜單中設定各種參數,
Debussy學習筆記