|
準備事項
範例程式下載 (一個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
|