2023年7月1日土曜日

電力解析でのスイッチング確率の設定する (set_switching_activity)

論理合成 (DesignCompiler) や静的遅延解析 (PrimeTime) における電力計算をスイッチング確率ベースで行う場合,スイッチング確率を外部から指定するために set_switching_activity コマンドを使う.DesignCompiler における set_switching_activity コマンドのオプションや使い方をまとめる.

dc_shell> set_switching_activity
[-static_probability static_probability]
[-toggle_rate toggle_rate]
[-state_condition state_condition]
[-path_sources path_sources]
[-rise_ratio rise_ratio]
[-period period_value | -base_clock clock]
[-type object_type_list]
[-hierarchy]
[object_list]
[-verbose]

-static_probability static_probability
電圧の High(1) の確率を指定する.引数は0から1.0までの小数である.0.25を指定すると,その時間における電圧 High の確率が25%として計算する.

-toggle_rate toggle_rate
正の小数として,0->1および1->0にトグルするトグル確率を指定する.単位時間におけるトグル確率として指定する.単位時間は -period オプションを用いて指定する.時間の単位はライブラリの物を利用する.クロックがある場合は,-base_clock オプションを用いる事で指定したクロック周期に対するトグル確率として指定する.(後述の利用例を見るとよい)

-state_condition state_condition
状態遷移条件によって振る舞いが異なるピンやセルなどの状態依存トグル確率を指定する.ただしセルやピンの電力の状態遷移依存性がキャラクタライザによって適切にキャラクタライズされている必要がある.このオプションはセルのリーク電流の状態依存性などをアノテートする事を可能にする.指定する state_condition が電力テーブルの内部表現と一致している必要がある.

-path_sources path_sources
パス依存のトグル確率を計算する時にパスの source を指定する.セルの電力のパス依存性がキャラクタライズされている必要がある.指定する path_source が電力テーブルの内部表現と一致している必要がある.

-rise_ratio rise_ratio
ピンのトグル数のうち立ち上がり波形の確率を,0から1の小数で指定する.0の場合はすべての入力が立ち下がり,1の場合はすべての入力が立ち上がりとして指定する.本オプションを利用する場合はトグル確率をユーザーが指定しなくてはいけない.初期値は0.5.

-period period_value
-toggle_rate オプションで指定したトグルが発生する時間期間を指定する.時間の単位はライブラリのものである.本オプションが指定された場合,実際のトグル確率は -toggle_rate オプションで指定した数字を本オプションで割った数字となる.本オプションを明示的に指定しない場合数字として1.0が利用される.

-base_clock clock
トグル確率を計算するために利用するクロックを指定する.本オプションによってクロックが指定された場合,際のトグル確率は -toggle_rate オプションで指定した数字を本オプションで指定したクロック周期で割った数字となる.クロック周期を変更しながら複数回 report_power コマンドを実行する事も可能で,その場合トグル確率は毎回クロック周期ごとに計算しなおされる.クロックとしてワイルドカード"*"を指定する事も可能で,その場合PowerCompiler はそのデザインに関係するクロックを自動的に検出してトグル確率を計算する.

-type object_type_list
スイッチング確率を設計者が明示的に指定したい場合に,対象となるオブジェクトを指定する.オブジェクトとしては以下を選択できる.
registers (sequential cell outputs),
tristates (tristate cell outputs),
black_boxes (black box cell outputs),
inputs (input design ports or hierarchical instance pins),
outputs (output design ports or hierarchical instance pins),
inouts (inout design ports / hierarchical instance pins),
ports (design port or hierarchical instance pins),
nets (nets),
regs_on_clocks clock_list (outputs of flip-flips clocked by the clocks in
clock_list),
clock_gating_cells (clock gating cell outputs),
memory (memory cell outputs).
本オプションを特定のインスタンスに指定する事でスイッチング確率を明示的に指定する事が可能である.registers もしくは regs_on_clock を指定した場合,順序セルの反転出力(QN),非反転出力(Q)が共にアノテートされる.その場合非反転出力は指定のトグル確率が,反転出力は1から指定のトグル確率を引いた値がアノテートされる.regs_on_clock を対象とする場合は,クロック名のリストである clock_list 引数を指定する必要がある.registers はフリップフロップおよびラッチが対象となるが,regs_on_clock はフリップフロップのみ対象であり,クロックゲーティングも対象である.
object_list 引数は対象を明示的に指定するが,-type は対象を暗黙に指定する.オプションは相互に排他的である.

-hierarchy
-type オプションと共に利用し,指定したオブジェクトの下位の階層すべてにアノテートする.本オプションを利用しない場合は,指定したオブジェクトのトップ階層のみアノテートする.

object_list
-static_probability オプションおよび -toggle_rate オプションの対象となる,ネット,ピン,ポート,セルなどのオブジェクトのリストを指定する.

-verbose
スイッチング確率をアノテートした結果を詳細に報告する.


コマンド例
次の例では,set_switching_activity は入力ポートのトグル確率を 33 / 1320 = 0.025,静的分布確率を 0.015 に設定する.
dc_shell> set_switching_activity -toggle_rate 33 -period 1320 
-static_probability 0.015 [get_inputs]

次の例では,入力ポートのトグル確率を0.25,静的分布確率を0.015に設定する.ここではクロック CLK が関連するクロックとして定義されているので,電力を計算する時のトグル確率はクロック周期 10 を用いて実際には 0.25 / 10 = 0.025 として計算される.
dc_shell> create_clock CLK -period 10
dc_shell> set_switching_activity -toggle_rate 0.25 -base_clock CLK -static_probability 0.015 -type inputs

次の例では状態遷移依存の静的分布確率を or1 セルにアノテートする.
dc_shell> set_switching_activity -static_probability 0.10 -state_condition "A & B" [get_cell or1]
dc_shell> set_switching_activity -static_probability 0.35 -state_condition "A & ! B" [get_cell or1]
dc_shell> set_switching_activity -static_probability 0.25 -state_condition "! A & B" [get_cell or1]
dc_shell> set_switching_activity -static_probability 0.30 -state_condition "! A & ! B" [get_cell or1]

次の例では,パス依存トグル確率を xor1 セルの Y 出力にアノテートする. 
dc_shell> set_switching_activity -toggle_rate 0.022 [get_pin xor1/Y]
dc_shell> set_switching_activity -toggle_rate 0.020 -path "A" [get_pin xor1/Y]
dc_shell> set_switching_activity -toggle_rate 0.002 -path "B" [get_pin xor1/Y]

次の例では現在のデザインにおけるすべての順序セルのアノテートされたスイッチング条件を除去する.
dc_shell> set_switching_activity -type registers -hierarchy

次の例ではクロック clk1 と clk2 を使うすべてのレジスタのスイッチング確率をアノテートする.
dc_shell> set_switching_activity -toggle_rate 0.1 -static_probability 0.5 -type {regs_on_clock {clk1 clk2}} -hierarchy

次の例では related_clock 属性としてワイルドカード"*" を指定したオブジェクトに対し,すべての入力にトグル確率0.2を,静的分布確率0.5を,アノテートする.電力解析結果は report_power コマンドで表示される.関連するクロックは自動的に推論され,トグル確率0.2がそれぞれのクロックの周期に会わせて相対的にスケールされる.
dc_shell> set_switching_activity -toggle_rate 0.2 -static_probability 0.5 -base_clock "*" -type inputs
dc_shell> report_power

0 件のコメント:

コメントを投稿