|
準備事項
範例程式下載
(一個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,所以第二種方法目前行不通
快速上手四部曲
-
由testbench產生.vcd
(利用ModelSim or other HDL simulator)
-
再把.vcd轉成.vec
(必須先編輯command file add4.vtran)
-
開啟GUI介面的NanoSim,並做設定
-
查看波形與報告結果
(利用turboWave or other waveform viwer)
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都dump
1-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) 
|