|
準備事項
範例程式下載
(一個Verilog寫的4-bit full-adder,與testbench)
本教學內容假設各位已經熟悉Design
Analyzer與ModelSim
...
觀念介紹
PrimePower是Synopsys發展的模擬軟體,用來做gate-level的Power的模擬。
下圖所示為各種軟體特性的示意
(資料來源:PrimePower Manual)

快速上手四部曲
-
使用Synopsys的Design
Analyzer對HDL source code做合成,產生gate-level netlist file
-
使用ModelSim產生該gate-level
netlist與其vtestbench的對應top.vcd
(Value Change File)
-
使用PrimePower做功率分析
整個Design
flow大致如下圖所示

-
使用Synopsys的Design
Analyzer對HDL source code做合成,產生gate-level netlist
file 
1-1
以% da &進入Design Analyzer後,第一步先設定synthesis library
path (xxx.db)
-- 選定synthesis library,後面ModelSim做gate-level模擬時,才知道要提供相對哪一個simulate
module library
(.v)
從Setup\Defaults... 設定Search
Path與Link Library
若不想每次執行Design Analyzer都設定一次,直接編輯根目錄下的隱藏檔
.synopsys_dc.setup是建議的方法
1-2
File \ Read,Edit \ Uniquify \ Hierarchy,Tools \ Design
Optimization,File \ Save As \ (Verilog format)
如果想把剛剛在Design
Analyzer執行過的所有動作編輯成一個script file,便於日後可以在dc_shell下執行,您只要關閉Design
Analyzer後,在剛剛的工作目錄下找一個叫"command.log"的檔案,其最後幾行就記錄著您剛才的所有動作,正所謂"凡走過必留下痕跡"
^_^ 以本例而言,你會看到此檔案尾端的內容如下:
把這一段copy下來另外存成一個run.scr,下次只要進dc_shell並include此檔
% dc_shell &
dc_shell > include run.scr
就可以自動執行所有程序
-
使用ModelSim產生該gate-level
netlist與其testbench的對應top.vcd
(Value Change File) 
2-1
開啟ModelSim: % vsim &
2-2
開一個project,把此project的design經過合成器所產生的gate-level
netlist (add4_gate.v)、testbench(add4test.v)與對應於合成時所用的synthesis
library (fast.db, slow.db)的simulate module library (umc18.v,
umc18iov3v5.v),通通adding
to project 2-3
修改add4test.v -- 加上一段指令以產生.vcd
2-4 Compile
\ Compile All 
2-5
切換到Library標籤下,選擇work library展開,執行top module
name "testbed"的simulate 2-6
執行Simulate \ Run \
Run -All
後,在工作目錄下就會產生一個叫"add4.vcd"的檔案。
由於目前CIC沒提供ModelSim Linux的版本,如果產生.vcd檔的這個步驟是用PC版的ModelSim
SE做,會有問題,必須用工作站版本的ModelSim產生的.vcd才能用。 兩者產生的資料,在工作站的環境下看是相同的
但以PC上的"記事本"打開看就會發現不同
-
使用PrimePower做功率分析

3-1
進入PrimePower
% pp_shell
3-2
首先要設定跟Design Analyzer一樣的library路徑
pp_shell>
set search_path " ...
/synopsys/CBDK018_UMC_Artisan/CIC/SynopsysDC " pp_shell>
set link_library " * slow.db fast.db
dw_foundation.sldb"
此步驟建議寫成 .synopsys_pp.setup
放在個人工作站根目錄下,或是此project的工作目錄下,
這樣就不用每次都設定 3-3
read gate-level netlist
pp_shell>
read_verilog add4_gate.v
3-4
指定current design,本例指定top module "FourBitAdder"
pp_shell>
current_design FourBitAdder
3-5
read VCD file,並將testbench (ex. testbed)從top module的模組別名(ex.
FourBitAdder的模組別名是A1)中strip掉
pp_shell>
read_vcd -strip_path testbed/A1 add4.vcd
3-6
開始計算/模擬功率消耗
pp_shell>
calculate_power
3-7
輸出模擬結果,預設會存在工作目錄下的"primepower.rpt"
pp_shell>
report_power
primepower.rpt內容如下所示:
步驟3-3 ~ 3-7若執行結果無誤,回應訊息會顯示"1"
執行過的指令(3-3~3-7),在結束pp_shell後,會存在工作目錄下pp_shell_command.log檔的最後一段,您可以把這些指令行複製,重新編輯成一個run_pp.scr,日後你想執行這task時,只要打
% pp_shell -f
run_pp.scr
|