|
觀念介紹
Debussy是NOVAS Software, Inc(思源科技)發展的HDL Debug & Analysis tool,這套軟體主要不是用來跑模擬或看波形,它最強大的功能是:能夠在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的原理架構,可歸納幾個結論:

快速上手五部曲: (Debussy v.5.2)
-
Import Files and generate FSDB file
-
Trace between hierarchy browser and source code
-
Trace between hierarchy browser、source code and schematic
-
Trace between hierarchy browser、source code、schematic and waveform
-
nLint (nState本文沒介紹,有興趣的讀者,請依文後的連結,自行下載CIC所提供的NOVAS原廠編寫教材參考)
-
Import Files and generate FSDB file
1-1 啟動Debussy:% Debussy & (此處的D大小寫都可以,但其它指令的大小寫可能就有差別)
開啟nTrace window如下,此時工作目錄下會新建一個"DebussyLog"目錄

1-2 Import Files:File \ Import Design...

結果如下圖所示:nTrace視窗中,含有三個區域,Hierarchical Brower、Source code window、Message window。 (如果不想看波形,只想查看source code與schematic的關係,您可以直接跳到step 2-1)

此時DebussyLog目錄內會有Debussy.cmd、turbo.log、compiler.log三個檔案。Debussy.cmd紀錄所有import 的檔案與之後所有的執行程序。我們可以直接引用這個檔案來執行上一次我們做過的一連串程序(refer to 1-5)。
1-3 設定外部模擬器,藉其產生FSDB file: Tools \ Options \ Preferences...

1-4 切換到Interactive Mode:Tools \ Interactive Mode (此時ToolBar上會出現Simulation選單) 開始執行模擬:Simulation \ Run/Continue (模擬結束工作目錄下就會產生dump_i.fsdb )

Source code目錄下,要有先前ModelSim所建立的此project的work library,不然會有錯誤訊息:Failed to access library 'work' at "work"。另外,你不能只是開一個work資料夾,而是要真的用ModelSim產生work library,並且把design compile to the work library後,step 1-4才會正確動作。
1-5 結束程式:File \ Exit
1-6 快速啟動執行序
把DebussyLog目錄下的指令記錄檔Debussy.cmd複製到目前工作目錄下,重新編輯此檔 (刪掉最後一行的"debExit" 然後儲存),引用它來開啟Debussy可重複之前同樣的動作程序
% Debussy -play Debussy.cmd & (結果相當於從步驟1-1做到1-4)
1-7 其他啟動Debussy的方法
% Debussy -f xxx.f (類似開啟一個事先編寫的批次檔,可以同時一次載入多個.v) % Debussy -vhdl -f xxx.f (類似開啟一個事先編寫的批次檔,可以同時一次載入多個.vhd)
以上都是屬於Import design from file的方法,另外還有一種方法是Import design from library。兩者的差異在於: Import design from file是將design compile to RAM,而Import design from library則是將design compile to library (default lib. is "work")。
對於比較大的project,為了避免每次使用Debussy都要花時間compile,建議採用Import design from library的方 法,而且mixed-language design一定要用Import design from library的方法。
Ex. for Verilog files:%vericom -inc -f run.f %Debussy -lib work -top xxx &
Ex. for VHDL files:%vhdlcom -93 -f run.f %Debussy -lib work -top xxx &
-
Trace between hierarchy browser and source code
2-1 在Hierarchy browser點擊A1(FourBitAdder)左側的符號"+",可以展開四個full adder (fa0, fa1, fa2, fa3)
-->
2-2 試著雙擊Hierarchy browser內的testbed or A1 or fa0 ... 右邊的source code window會立即切換到相對的module
也可以利用滑鼠"中鍵",將左邊的module name直接拖曳丟進右邊source code window,效果相同。 (利用滑鼠中鍵在不同視窗間拖曳,是Debussy中最常用的方法)
2-3 雙擊上圖source code window內的"fulladder"(in line 8),軟體會自動幫你追蹤出引用fa0的地方 結果示於下圖 -- A1(FourBitAdder)的fa0 (in line 32);若再雙擊fa0(in line 32),則又回到上圖。 --> 你可以藉由這個方法,輕易的追蹤出project內的所有design彼此之間的關連性

:恢復上一動作
2-4 除了追蹤designs之間的關連性,也可以用同樣的方法追蹤出signal's drivers and loads。 若雙擊上圖的訊號c_in (in line 24),將顯示該訊號的所有的drive loads 結果如下圖 -- message window顯示,有4處drive c_in,分別在add4test line 69, 71, 73, 75

用Show Next 來查看所有的drive loads (at line 69, 71, 73, 75)
選定line 69, Trace \ Load 則可用來追蹤該訊號的所有"loads"

-
Trace between hierarchy browser、source code and schematic
3-1 開啟nSchema有三種方法
-
(nTrace) Tools \ New Schematic \ ...
-
雙擊工具列上的New Schematic icon
-
把想看schematic的部分,直接以滑鼠中鍵,從hierarchy browser拖曳丟進 icon (常用)
下圖是把A1(FourBitAdder)丟進New Schematic icon的結果:

如果想直接看symbol "fulladder"的source code,先以左鍵選定(highlight)該元件,然後按右鍵,從快速選單選 擇"Display Source Code"
選擇(highlight)第一個full adder的第二條輸出訊號,然後按Tools \ New Schematic \Fan-In Cone試試
分別用來縮小/放大畫面, 則是讓圖形大小自動調整至填滿整個視窗(如上圖)
回前一畫面; 回最上層畫面
3-2 雙擊上圖內的元件符號(如第一個fulladder)可進一步看到其內容/ 細部電路組成(fa0)
3-3 請自行嘗試,在hierarchy browser、source code與schematic window之間,用滑鼠中鍵互相拖曳designs/signals的效果
-
Trace between hierarchy browser、source code、schematic and waveform
4-1 接下來的操作,需要利用模擬器所產生的資料(.fsdb),以"nWave"顯示訊號波形,有兩種可能作法
開啟"nWave"的方法有三種
4-1-1 如果是從1-2接著打開nWave window,一開始nWave內容是空的,要執行(nWave) File \ Open... 以載入dump_i.fsdb。

4-1-2 接著按 Get Signals icon,此時就會看到有訊號可以讓你選擇了 -- 如果你看不到訊號,把想觀察的design(A1),直接從(nTrace) Hierarchy browser拖進nWave就可以

4-1-3 (nWave) View \ Zoom \ Zoom All -- 如果你看不到波形,請再執行一次 (nTrace) Simulation \ Run/Continue就會看到

已在signal window選擇的訊號,如果想要刪除:選定要刪除的訊號highlight,按滑鼠右鍵選擇"Cut" 如果是從1-6接著打開nWave window的,直接進行step 4-1-2即可
4-2 啟動Active Annotation功能:(nTrace) Source \ Active Annotation 能夠在nWave選擇訊號觸發緣,同時在nTrace的source code的所有訊號符號下方,直接看到數值的變換
4-3 在nWave雙擊想觀察其觸發狀況的訊號 (如c_out)
4-4 從(nTrace)Hierarchy browser雙擊A1(FourBitAdder),按 Search Forward icon,看看在nTrace與nWave的變化
-
nLint
5-1 開啟圖形介面的nLint
% nLint -gui & (大小寫不能改,n一定要小寫,L一定要大寫)
開啟nLint window如下,此時工作目錄下會新建一個"nLintLog"目錄
5-2 Import Files:File \ Import Design... (與step 1-2一模一樣的操作後,結果如下所示)
5-3 執行Run \ Compile
5-4 執行Tools \ Rule Organizer,或按 選擇check哪些rules -- 不想檢查的項目,就把E/D那一欄的核選框框取消
5-5 執行Run \ Lint -- 會自動跳出ReportViwer顯示檢查結果
5-6 展開report,選擇第一個黃色警示標示,其出錯的原因與原始碼部份,會即時顯示在下方的欄框中。 如果要修改source code,在該錯誤選項上,按滑鼠右鍵,選擇Show violation \ to default editor
對於不想檢查的檔案,可以選定該檔後,按 再做compile。以此例而言,testbench是不可合成的, 故若先對add4test.v做suppress再執行step 5-5,結果就會變成"0 violation"。 |