Main Content

自動反復最適化

自動反復最適化を使用すると、クロック周波数を個々の最適化オプション (入力や出力のパイプライン、分散型パイプラン方式またはループ展開など) を指定せずに最適化できます。クロック周波数は、設計のクリティカル パスによって決まります。自動反復最適化では、パイプライン レジスタを挿入してクリティカル パスを中断し短くすることで、クロック周波数が向上します。

hdlcoder.optimizeDesign を使用してクロック周波数を最適化するには、次の方法があります。

  • 最適なクロック周波数: HDL Coder™ で実行する反復回数の最大値を指定します。設計内のクリティカル パスを最小にするように HDL Coder で最適化が反復されます。

  • ターゲット クロック周波数: 設計のターゲット クロック周波数と、HDL Coder で実行する反復回数の最大値を指定します。ターゲット クロック周波数に到達するか、反復回数の最大値に到達するまで HDL Coder で最適化が反復されます。

    ターゲット クロック周波数が達成できないことを HDL Coder が判断できます。これは、設計内の最大 Atomic 組み合わせロジック グループのレイテンシよりもターゲット クロック周期が短いためです。

自動反復最適化の仕組み

hdlcoder.OptimizationConfig オブジェクト プロパティを使用して、クロック周波数目標、最大反復回数、および反復最適化のタイミング戦略を指定できます。選択したタイミング戦略 (合成 (既定) またはクリティカル パスの推定) に応じて、HDL Coder が各反復で実行する手順は異なります。

合成を使用した自動反復最適化の実行は、設計の複雑度によっては長時間を要する場合があります。たとえば、タイミング戦略として合成を選択した関数 hdl.optimizeDesign を実行すると、合成がこの関数の実行時間の約 94% を占める可能性があります。実行時間を短縮しながら合成を使用するために、関数 hdlcoder.optimizeDesign は、過去の実行からコードを再生成したり、中断した実行を再開したりできます。

実行時間を最も効果的に短縮するには、タイミング戦略としてクリティカル パスの推定を選択します。合成では実際のクリティカル パスが特定されますが、クリティカル パスの推定では推定クリティカル パスが提示されます。クリティカル パスの推定を使用すると、自動反復最適化ではモデル生成と HDL コード生成が回避され、各反復の速度が向上します。タイミング戦略としてクリティカル パスの推定を選択すると、最初に関数 genhdltdb を使用してターゲット デバイスに対してタイミング データベースを生成する際に遅延を配置してクリティカル パスを減らす場合に最も効果的です。両方の戦略を使用して関数 hdlcoder.optimizeDesign を実行する例については、Use Critical Path Estimation for Faster Optimizationを参照してください。

タイミング戦略としてクリティカル パスの推定を選択した場合、自動反復最適化では次の手順が実行されます。

  1. 設計内のロジックを解析。

  2. クリティカル パスを推定し、タイミング データベースを使用してタイミング解析データを取得。詳細については、合成実行なしのクリティカル パスの推定を参照してください。

  3. パイプライン レジスタを挿入してクリティカル パスを中断。

  4. 遅延を調整。

  5. 反復データを新規フォルダーに保存。

タイミング戦略として合成を選択した場合、自動反復最適化では次の手順が実行されます。

  1. 設計内のロジックを解析。

  2. コードを生成。

  3. 合成ツールを使用して生成されたコードを解析し、マッピング後のタイミング解析データを取得。

  4. タイミング解析データを使用して設計に対してバック アノテーション。

  5. パイプライン レジスタを挿入してクリティカル パスを中断。

  6. 遅延を調整。

  7. 反復データを新規フォルダーに保存。

HDL Coder でクロック周波数の目標値または最大反復回数に達した場合、生成されたコードと反復データが新しいフォルダーに保存され、最終的なクリティカル パスに関するレポートが生成されます。

自動反復最適化の出力

HDL Coder が最適化ループから出るときに、最終反復の結果をフォルダー hdlsrc/your_model_name/hdlexpl/Final-timestamp に保存します。

最終反復のフォルダーには次が含まれます。

  • 生成された HDL コード (場所: hdlsrc/your_model_name フォルダー)。

  • データ ファイル cpGuidance.mat。これを元のモデルと共に使用すると、反復最適化を再度実行せずにコードを再生成できます。

  • 最適化レポート summary.html

自動反復最適化レポート

HDL Coder により最適化の最終反復のレポートが生成され、最終反復のフォルダー hdlsrc/your_model_name/hdlexpl/Final-timestamp に保存されます。

最適化の最終レポート summary.html には、次が含まれます。

  • 以下を含む概要セクション:

    • 最終的なクリティカル パスのレイテンシ

    • 各反復におけるクリティカル パスのレイテンシと経過時間

  • 以下を含む診断セクション:

    • 最終反復で停止した理由。

    • クリティカル パス解析の正確性を下げる可能性があるモデルまたはブロックの設定。

      モデルでこれらの設定を使用している場合は、可能な限り削除して、関数 hdlcoder.optimizeDesign を再実行してください。分散型パイプライン方式や制約付き出力パイプラインなどの一部の最適化では、クリティカル パスが解析された後、パイプライン レジスタの配置が変更される場合があります。

    • クリティカル パスに関する記述。ここには、元のモデルと生成されたモデルにおけるクリティカル パスの一部となっている信号とコンポーネントが表示されます。

      クリティカル パス上の信号またはコンポーネントを元のモデルまでたどれないというメッセージが表示される場合があります。HDL Coder が設計の内部表現を元の設計にマップできない場合があります。最適化を反復するたびに内部表現が変わります。最終的な表現が元の設計と異なる構造になる可能性があります。

自動反復最適化の合成ツールとハードウェア

タイミング戦略として合成を使用している場合、合成ツールは Xilinx® ISE か Xilinx Vivado® でなければなりません。ターゲット デバイスは Xilinx FPGA でなければなりません。

自動反復最適化の制限

  • 現在のリリースでは、タイミング戦略として合成を使用している場合、自動反復最適化は Altera® のハードウェアではサポートされていません。

  • 自動反復最適化は、コマンド ラインからのみ使用できます。

  • タイミング戦略が合成に設定されている場合、HDL Coder は、マッピング後のタイミング情報を使用します。これは、合成ツールによって配置配線の前に生成されます。マッピング後のタイミング情報は、合成ツールによって配置および配線の実行後に生成されるタイミング情報に比べると正確性に欠けますが、早く入手できます。

  • タイミング戦略がクリティカル パスの推定に設定されている場合、HDL Coder でタイミング データベースを使用してクリティカル パスが推定されます。クリティカル パスの推定で得られるクリティカル パスの結果は、合成で得られる結果に比べると正確性に欠けますが、このオプションを使用すると反復最適化を大幅に高速化できます (設計によっては約 10 倍高速になります)。

  • タイミング戦略としてクリティカル パスの推定を使用している場合、クリティカル パスの推定でサポートされていないブロックがモデル内にあると、タイミング戦略として合成を使用する場合と比べて結果の最適性が低下する可能性があります。クリティカル パスの推定でサポートされていないモデル内のブロックは、HDL コード生成チェック レポートとリソース利用レポートでメッセージとして表示され、MATLAB® コマンド ウィンドウでブロックを強調表示するスクリプトへのリンクとして表示されます。

  • タイミング戦略として合成を使用している場合のクリティカル パスの反復最適化タイミング値は、タイミング戦略としてクリティカル パスの推定を使用している場合の結果と比較できません。結果を比較するには、タイミング戦略としてクリティカル パスの推定を使用して hdlcoder.optimizeDesign を実行した後、最終的な設計で合成を実行します。

参考

|