更 新 日 期:

準備事項

範例程式下載 (一個Verilog寫的4-bit full-adder,與testbench)

本教學內容假設各位已經熟悉Design Analyzer與ModelSim ... 

觀念介紹

PrimePowerSynopsys發展的模擬軟體,用來做gate-level的Power的模擬。

下圖所示為各種軟體特性的示意 (資料來源:PrimePower Manual)

快速上手四部曲  

  1. 使用Synopsys的Design Analyzer對HDL source code做合成,產生gate-level netlist file

  2. 使用ModelSim產生該gate-level netlist與其vtestbench的對應top.vcd (Value Change File)

  3. 使用PrimePower做功率分析

 整個Design flow大致如下圖所示

  1. 使用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
就可以自動執行所有程序

  1. 使用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上的"記事本"打開看就會發現不同

  1. 使用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