準備事項
範例程式下載 (一個Verilog寫的4-bit full-adder,與testbench)
本教學內容假設各位已經熟析Design Analyzer與ModelSim ...
觀念介紹
NanoSim是Synopsys發展的模擬軟體,可以用來做Timing / Power的模擬,是一種transistor level and dynamic simulator,並且可以做數位與類比整合的模擬(mixed netlists)。
下圖所示為各種軟體特性的示意 (資料來源:PrimePower Manual)
整個軟體運作時的輸出與輸入檔案如下所示:(資料來源:CIC NanoSim課程教材)
Netlist Files:HDL code經過合成後轉出的.v檔,或是類比電路跑HSPICE的.sp檔
Stimulus Files:HDL寫的testbench.v經過value change dump轉成.vcd,.vcd再經過VTRAN轉成vector file (.vec)
.vec 是讓軟體用來餵給netlist當input pattern用的Configuration File:用來設定軟體模擬時,要擷取哪些點的哪些訊息(如電壓或電流),以儲存在.out與.log
(如果是用GUI介面,可以不需要這個檔案)Technology file:NanoSim uses a tech. file in place of MOS models during simulation
.out File :執行模擬後的產出檔案,供turboWave直接讀取以顯示電壓/電流波形
.fsdb File:執行模擬後的產出檔案,供turboWave直接讀取以顯示電壓/電流波形
.log File :模擬結果的輸出,裡面有耗電情況的report
由於NanoSim是Transistor-level simulator,要執行NanoSim有幾種方式
提供類比電路的spice netlist (.sp or .spi)與MOS spice module (含電壓/溫度規格) -- 類比模擬
提供數位電路的gate-level netlist (.v),cell-base spice simulation module (not cell-base Verilog simulation module)與MOS spice module (含電壓/溫度規格) -- 數位模擬 (官方使用說明)
提供類比電路的spice netlist (.sp or .spi)與數位電路的gate-level netlist (.v),以VCS搭配NanoSim做類比與數位的混合模擬 (官方使用說明)
由於CIC現有製程並無提供cell-base spice simulation module,所以第二種方法目前行不通
快速上手四部曲
NanoSim是一套功能很強大的軟體,其使用手冊依功能區分有十幾份,合計數千頁。本教學文件僅就其Logic Simulator的基本功能做初探,並做power模擬,可以參閱Tutorial : Simulating with Gate-Level Verilog Netlists。
範例程式裡幾個比較重要的檔案說明 | |
add4test.v | testbench file of the design project |
add4.v | The design project |
add4_gate.v | after synthesis, the gate-level netlist of the design project |
add4.vcd | The value change dump file generated from ModelSim |
supply.spi | SPICE file, to define power supply and temperature |
cmos35t.mod | SPICE file / Technology file, to define MOS model |
cfg | Configuration file |
add4.vtran | command-file for vtran command to transfer .vcd into .vec |
由testbench產生.vcd (利用ModelSim or other tools)
1-1 在原本的testbench(add4test)裡,加入如下的一段敘述
$dumpfile("xxx.vcd") -- 將所有dump的資料,存到某個檔案。(雙引號不可省)
$dumpvars() -- 紀錄所有變數的變化情況(括號可省略)。括號內沒有指定變數,表示all variables都dump1-2 開啟ModelSim,建一個project,然後compile gate-level netlist (add4_gate.v) and testbench (add4test.v) with simulate module library
1-3 切換到Library標籤下,選擇work library展開,執行top module name "testbed"的simulate
1-4 執行Run後,就會產生add4.vcd檔。
在執行Run之前,要先確認ModelSim跑模擬的時間長,至少要超過testbench裡所設定的總時間,以此例而言是取250001 ns(因為在add4test.v中有一行 initial #250000 $stop ; );或是直接執行Simulate \ Run \ Run -All 也可以
再把.vcd轉成.vec (必須先編輯command file add4.vtran )
執行 % vtran add4.vtran,就會產生add4.vec;
-- add4.vtran指定.vcd來源檔與.vec輸出檔名稱。以上範例是一個最精簡的寫法,如果您有興趣想進一步了解如何寫cmd_file,請參閱VTRAN Manual (有280頁... )
從testbench.v --> .vcd --> .vec有點麻煩,其實最簡單的作法,可以利用$monitor/$fmonitor指令,直接從testbench產生.vec檔。
開啟GUI介面的NanoSim,並做設定
3-1 執行 % nanosimgui &
選擇 Setup a new simulation
3-2 指定工作路徑時,該路徑必須已經存在,若該路徑不存在,軟體不會自動幫你建。按Next後,會在工作目錄下新增一個"add4.wrk"檔,下一次開啟NanoSim可以在3-1步驟選擇"Open an existing simulation"開啟"add4.wrk"
3-3 Netlist & Stimulus settings
3-3-1 輸入類比電路的SPICE file(如果有),與MOS model與VDD / VSS設定
當你在右邊"SPICE Netlist File"欄位內選定檔案,左邊"SPICE Netlist File Type"欄位會自動顯示相對應的Type
Pre-layout SPICE netlist files設定欄位內,若要刪除一列的設定項,於項目編號上按滑鼠右鍵,選"Delete Row"3-3-2 輸入合成後的gate-level netlist 與此design做合成時用的cell library路徑
3-3-3 指定gate-level netlist中的top module name,並指定configuration file路徑
為何這裡要用configuration file,而不直接在step 3-4, 3-5設定就好? 本configuration file內容如下...
第2, 3行就是步驟3-5的設定,第一行我目前不知道要在視窗哪裡設定,而這一行的意思是什麼我也不太清楚
但它會影響到做Gate-Level Verilog Netlists simulation的結果(不信你把它拿掉看看會發生什麼事...)3-3-4 輸入vector stimulus (.vec)
3-4 模擬前檢查所有的設定
3-5 按"Simulate"開始跑模擬
查看波形與報告結果 (利用turboWave or other waveform viwer)
用户90519 2009-8-11 15:07