Synopsys PrimeTime PX(PTPX)は、時序検証に加え、RTL/ゲートレベル設計における高精度な消費電力解析を実行できる商用ツールです。本稿では、物理実装後のゲート網表を対象とした平均消費電力評価フローを中心に解説します。
基本的な解析手順は以下の3ステップで構成されます:
1. シミュレーション環境で網表(例:Place-and-Route後網表)を実行し、信号活動情報を波形ファイル(FSDBまたはVCD形式)として取得
2. PTPXに標準セルライブラリ、設計網表、制約ファイル(SDC)、遅延情報(SDF)、および波形ファイルを入力
3. 活動率に基づく内部電力・スイッチング電力・リーク電力を統合的に算出
以下は、実際のPTPXスクリプト例です。変数名とパス構造を再設計し、可読性と再利用性を向上させています:
# --- 電力解析モード設定 ---
set_power_analysis_enable true
set_power_calculation_mode "averaged" ;# 時間平均モード(time_basedは非使用)
# --- 設計読み込みとリンク ---
set TARGET_MODULE "top_core"
set CELL_LIBRARY_PATH "/lib/stdcells_ff_0p8v_125c.db"
set LINK_LIBS "* $CELL_LIBRARY_PATH"
read_verilog -format verilog "netlist/post_pnr.v"
current_design $TARGET_MODULE
link
# --- 制約とタイミング情報の読み込み ---
read_sdc "constraints/functional.sdc"
read_sdf -analysis_type ocv "timing/post_route.sdf"
# --- 基礎チェック ---
check_timing > "reports/timing_check.log"
update_timing
# --- 波形データの統合 ---
read_fsdb -strip_path "tb_top/dut_instance" "waveforms/stim.fsdb" -time {50.0 350.0}
# --- 活動率レポート生成(未アノテート信号確認) ---
report_switching_activity -list_not_annotated > "reports/missing_activity.log"
# --- 電力解析実行と出力 ---
check_power > "reports/power_check.log"
update_power
# --- 階層別電力集計(ブロック単位) ---
report_power -hierarchy -significant_digits 4 > "reports/power_hierarchy.rpt"
# --- コンポーネント単位詳細レポート(内部/スイッチング/リーク) ---
report_power -verbose -significant_digits 4 > "reports/power_breakdown.rpt"
重要なコマンドの動作について補足します:
- set_power_analysis_enable true:ライセンス検証を含む電力解析機能を有効化。無効時はreport_powerが空出力となります。
- set_power_calculation_mode "averaged":指定時間ウィンドウ内の平均消費電力を計算。一方time_basedモードでは、各タイムスライスごとの瞬時電力を出力可能ですが、結果ファイルサイズが大幅に増大するため、本評価では採用していません。
- read_fsdb -strip_path "tb_top/dut_instance":FSDBファイル内に含まれる階層パスから、DUT(Device Under Test)のインスタンス名を抽出するためのオプションです。テストベンチ構造がmodule tb_top; top_core dut_instance(...); endmodule;である場合、正確なパス指定が必須です。
- -time {50.0 350.0}:解析対象期間をナノ秒単位で明示。小数点を許容し、シミュレーション分解能に合わせた精密な区間指定が可能です。
- report_power -hierarchy:設計のモジュール階層構造を維持した電力集計を生成。合成時に-no_flattenまたは-hierarchyオプションが適用された網表が必要です。
- report_power -verbose:各セルタイプ・ネット・ピン単位の電力寄与を列挙。特にinternal_power(ドライバセル内部損失)、switching_power(負荷容量駆動に伴う充放電)、leakage_power(サブスレッショルドリーク)の分離表示が可能です。