-
set_switching_activity
指定したエレメントのアクティビティを設定します。スタティック確率と信号レート、またはスタティック レートとトグル レートのいずれかを設定できます。次に例を示します。
- プライマリ ポートとデザイン全体のブラック ボックス出力のデフォルトのスイッチング アクティビティを設定する場合
set_switching_activity -default_static_probability 0.5 -default_toggle_rate 12.5
- ポート/ネット/ピンの信号レートを設定する場合
set_switching_activity -static_probability 0.5 -signal_rate 50 [get_ports din*]
重要: スタティック確率が 0 より大きく 1 未満の場合、信号レートは 0 より大きくする必要があります。同様に、信号レートが 0 の場合、スタティック確率は 0 または 1 にする必要があります。スタティック確率と信号レートは、一緒に指定する必要があります。 - プライマリ ポートとデザイン全体のブラック ボックス出力のデフォルトのスイッチング アクティビティを設定する場合
- ポート/ネット/ピンのトグル レートを設定する場合
set_switching_activity -static_probability 0.5 -toggle_rate 25 [get_nets din_int*]
トグル レートはエレメントに関連付けられたクロック専用のもので、有効な値の範囲は 0 ~ 100 です。
- ノード グループに対してスイッチング アクティビティを設定する方法は、次のとおりです。
set_switching_activity
コマンドで -type オプションを使用すると、ノード グループ (タイプ) のアクティビティ レートを設定できます。次の表は、サポートされるタイプを示しています。
タイプ名 | スイッチング アクティビティ | ピン名 | セル名 |
---|---|---|---|
bram_enable | ブロック RAM のイネーブル ピン | ENARDEN/ENBWREN | RAMB36/18 |
bram | ブロック RAM のアクティブ データ出力すべて | DOADO/DOBDO | RAMB36/18 |
bram_wr_enable | ブロック RAM のライト イネーブル ピン | WEA/WEBWE | RAMB36/18 |
register | フリップフロップ/ラッチの出力ピン | Q | FD* |
shift_register | シフト レジスタの出力ピン | Q | SRL* |
lut_ram | RAM の出力データ ピン | O | RAM(32|64|128|256)* |
lut | 出力ピン | O | LUT* |
dsp | DSP データ出力すべて | P/ACOUT/BCOUT/PCOUT | DSP48 |
gt_txdata | ポートの TX データ | TXDATA | GT*_CHANNEL |
gt_rxdata | RX データ出力ポート | RXDATA | GT*_CHANNEL |
io_output | プライマリ出力 | get_ports -filter {DIRECTION = OUT} && ‘I’ pin of OBUF* & IOBUF* | OBUF* |
io_bidir_enable | Bidir ポートのイネーブル ピン | T | OBUF* |
次のセクションに、set_switching_activity
コマンドの使用方法を説明します。デザインの最上位スコープの LUT にスイッチング アクティビティを設定するには、次のコマンドを使用します。
set_switching_activity -type lut –static_probability 0.5 –toggle_rate 25 [get_cells]
CPU/MEM の階層のすべてのレジスタにトグル レートとスタティック確率を設定するには、次のコマンドを使用します。
set_switching_activity -type register -toggle_rate 0.4 -static_probability 0.5 [get_cells CPU/MEM]
CPU の階層とその下の階層のすべてのレジスタに指定したトグル レートとスタティック確率を設定:
set_switching_activity -type register -toggle_rate 0.4 -static_probability 0.5 –hier [get_cells CPU]
すべてのプライマリ出力に指定したスイッチング アクティビティを設定:
set_switching_activity -type io_output –static_probability 0.5 -toggle_rate 0.4 -all
(toggle_rate/200) =<
static_probability =< 1-(toggle_rate/200
という条件を満たす必要が出てくるので、理想としては含めないほうがよいでしょう。グリッチ スイッチングを考慮するには、信号レート設定と実際のアクティビティ レートを一緒に使用します。create_clock
、
create_generated_clock
、set_case_analysis
など) を使用してください。-
report_switching_activity
指定したエレメントのアクティビティをレポートします。スタティック確率、信号レートおよびトグル レートを表示します。割り当てられたスイッチング アクティビティのソースも表示します。次に、
report_switching_activity
コマンドの例を示します。- 単一ネットのスタティック確率、信号レート、トグル レートをレポート:
割り当てられたスイッチング アクティビティのソースは、(C) = XDC 制約、(D) = トグル デフォルト、(S) = SAIF アノテート、(A) = ユーザー割り当て、となります。Vivado% report_switching_activity -static_probability [get_ports clk_p] clk_p: static probability = 0.5 (C) Vivado% report_switching_activity [get_ports clk_p] clk_p: static probability = 0.5 (C) signal rate = 400 (C) toggle rate = 200 (C)
- グループ ノードをレポート:
階層 CPU の分散 RAM すべてのスイッチング アクティビティをレポート:
report_switching_activity –type lut_ram [get_cells CPU/*]
デザインの GT RXDATA すべてのスイッチング アクティビティをレポート:
サポートされるタイプの詳細は、表 1 を参照してください。report_switching_activity –type gt_rxdata -all
- 単一ネットのスタティック確率、信号レート、トグル レートをレポート:
- ネットのリストに対し、平均的なスイッチング アクティビティをレポートします。
- バスのスイッチング アクティビティ
-
report_switching_activity -average [get_nets bussed_signal[*]]
- インスタンスのスイッチング アクティビティ
-
report_switching_activity -average [get_nets -top -hier -filter {TYPE==SIGNAL && NAME =~ "Instance_Name"}
- デザイン全体のスイッチング アクティビティ
-
report_switching_activity -average [get_nets -top -hier -filter {TYPE==SIGNAL}
-average オプションを使用すると、既存のデザインの典型的なスイッチング アクティビティを算出でき、そのアクティビティを XPE で適用して、類似のデザインの消費電力を見積もることができます。
-
reset_switching_activity
特定のネットリスト エレメントのアクティビティ レート (スタティック確率、信号レート、およびトグル レート) をツールのデフォルト値にリセットします。このコマンドは、ユーザー指定の値とシミュレーション アクティビティ レート設定の両方をリセットします。次に例を示します。
- プライマリ ポートとデザイン全体のブラック ボックス出力のデフォルトのスイッチング アクティビティをリセット:
reset_switching_activity -default
- デザイン全体のアクティビティ レートをリセット:
reset_switching_activity -all
- 特定のポート/ネット/ピンのアクティビティ レートをリセット:
reset_switching_activity [get_ports din*]
- ノード グループのアクティビティ レートをリセット:
デザインのすべてのブロック RAM イネーブル (ENARDEN/ENBWREN) のスイッチング アクティビティをリセット:
reset_switching_activity –type bram_enable -all
階層 CPU/ とその下のレベルのすべての LUT のスイッチング アクティビティをリセット:
reset_switching_activity –type lut –hier [get_cells CPU/MEM]
- プライマリ ポートとデザイン全体のブラック ボックス出力のデフォルトのスイッチング アクティビティをリセット:
-
read_saif
SAIF シミュレーション出力ファイルを読み込んで、一致するネットリスト エレメントにこのファイルに記述されているスイッチング アクティビティをアノテートします。次に例を示します。
read_saif -out_file read_saif.rpt -strip_path tb/tb_core/core -file routed.saif
read_saif
のオプションは、次のとおりです。-
out_file
- 不一致のシミュレーションおよびデザイン ネット リストをファイルにダンプします。
-
strip_path
- デフォルトでは、デザインの最上位がテストベンチにインスタンシエートされていると想定されます。このため、階層の最初の 2 レベルは SAIF データがデザインにアノテートされるときに削除されます。シミュレーション設定に複数の階層レベルが含まれる場合は、SAIF から削除される階層を指定して、実際のデザインに近い状態になるようにします。
-
read_saif
コマンドでは、SAIF アノテーション サマリも表示され、一致するデザイン ネットの数が表示されます。正確な解析には、デザイン ネットが 100% 一致しているのが理想的です。
read_saif
コマンドでは、デザイン クロック ネットのアクティビティは変更されません。クロック ネット アクティビティは、タイミング制約で駆動されます。
read_saif
コマンドは、各 SAIF ファイルに対して複数回実行できます。これにより、異なるブロックの複数の SAIF ファイルを読み込むことができます。すべての SAIF ファイルのスイッチング アクティビティを考慮して消費電力が見積もられます。同じネットが複数の SAIF ファイルに含まれている場合は、read_saif
コマンドを使用して最後に読み込んだ SAIF ファイルからのスイッチング アクティビティが適用されます。
-
create_clock
クロック波形を指定する合成/インプリメンテーション制約です。次に例を示します。
create_clock -name clk -period 5 [get_ports clk]; # 200MHz
-
create_generated_clock
生成クロック波形を指定する合成/インプリメンテーション制約です。次に例を示します。
create_generated_clock -name gen_clk -source clk1 -divide_by 2 [get_net -hier sys_clk]
-
set_input_delay
プライマリ入力を特定のクロックに関連付けます。これはマルチクロック デザインの場合、特にプライマリ ポートが異なるクロックで起動する場合に重要です。次に例を示します。
create_clock -name clk1 -period 5 [get_ports clk] set_input_delay -clock clk1 1 [get_ports d]
注記: プライマリ ポートがどのクロックとも関連付けられていない場合、スイッチング レートはパスのデスティネーション クロックに基づいて計算されます。
デフォルトでは、create_clock
および create_generated_clock
は XDC ファイルで定義されているので、再実行する必要はありません。ただし、消費電力レポートのクロック周波数を変更するなど what-if 解析を実行するには、変更を反映させるため create_clock
または create_generated_clock
を使用する必要があります。