このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
1. インテル® Hyperflex™ HyperFlex FPGAアーキテクチャーの概要
2. インテル® Hyperflex™ アーキテクチャーRTLデザイン・ガイドライン
3. インテル® Hyperflex™ アーキテクチャー・デザインのコンパイル
4. デザイン例ウォークスルー
5. リタイミングの制限と対処方法
6. 最適化の例
7. インテル® Hyperflex™ アーキテクチャーの移植ガイドライン
8. 付録
9. インテル® Hyperflex™ アーキテクチャー高性能デザイン・ハンドブック
10. インテル® Hyperflex™ アーキテクチャー高性能デザイン・ハンドブック
2.4.2.1. 高速クロック・ドメイン
2.4.2.2. ループの再構築
2.4.2.3. コントロール信号のバックプレッシャー
2.4.2.4. FIFOステータス信号によるフロー・コントロール
2.4.2.5. スキッドバッファーを使用したフロー制御
2.4.2.6. リード・モディファイ・ライトのメモリー
2.4.2.7. カウンターとアキュムレーター
2.4.2.8. ステートマシン
2.4.2.9. メモリー
2.4.2.10. DSPブロック
2.4.2.11. 一般ロジック
2.4.2.12. モジュラスと除算
2.4.2.13. リセット
2.4.2.14. ハードウェアの再利用
2.4.2.15. アルゴリズム要件
2.4.2.16. FIFO
2.4.2.17. 三元加算器
5.2.1. Insufficient Registers
5.2.2. Short Path/Long Path
5.2.3. Fast Forwardの制限
5.2.4. ループ
5.2.5. クロックドメインごとに1つのクリティカル・チェイン
5.2.6. 関連するクロックグループのクリティカル・チェイン
5.2.7. 複雑なクリティカル・チェイン
5.2.8. 配置可能ノードの拡張
5.2.9. ドメイン境界エントリとドメイン境界出口
5.2.10. デュアル・クロック・メモリーを備えたクリティカル・チェイン
5.2.11. クリティカル・チェインビットとバス
5.2.12. ディレイライン
4.1.4. ステップ4:ショートパスとロングパスの条件を最適化する
非同期レジスターを削除し、パイプライン・ステージを追加した後、高速転送の詳細レポートは、ショートパスとロングパスの条件がさらなる最適化を制限することを示唆しています。この例では、最長パスがこの特定のクロックドメインのfMAXを制限します。パフォーマンスを向上させるには、次の手順に従って、このクロックドメインの最長パスの長さを短くします。
- ロングパス情報を表示するには、早送り詳細レポートのCritical Chain Detailsタブをクリックします。このパスに関するロジックの構造を確認し、関連するRTLコードを検討してください。このパスには、node.vファイルのnodeモジュールが含まれます。クリティカル・パスは、いくつかのコンパレータの一部であるレジスターdata_hiおよびdata_loの計算に関連しています。
以下に、このパスの元のRTLを示します。
always @(*) begin : comparator if(data_a < data_b) begin sel0 = 1'b0; // data_a : lo / data_b : hi end else begin sel0 = 1'b1; // data_b : lo / data_a : hi end end always @(*) begin : mux_lo_hi case (sel0) 1'b0 : begin if(LOW_MUX == 1) data_lo = data_a; if(HI_MUX == 1) data_hi = data_b; end 1'b1 : begin if(LOW_MUX == 1) data_lo = data_b; if(HI_MUX == 1) data_hi = data_a; end default : begin data_lo = {DATA_WIDTH{1'b0}}; data_hi = {DATA_WIDTH{1'b0}}; end endcase endコンパイラーは、このRTLから次のロジックを推測します。
- sel0信号を作成するコンパレーター
- data_hiおよびdata_lo信号を作成する1組のマルチプレクサー(次の図に示すように)。
図 99. ノード・コンポーネントの接続 - nodeモジュールをインスタンス化するpixel_network.vファイルを確認します。 nodeモジュールの出力は、使用しないと接続されません。これらの接続されていない出力では、 LOW_MUXまたはHI_MUXコードは使用されません。次の例に示すように、マルチプレクサを推測するのではなく、ビットごとの論理演算を使用してdata_hiおよびdata_lo信号の値を計算します。
reg [DATA_WIDTH-1:0] sel0; always @(*) begin : comparator if(data_a < data_b) begin sel0 = {DATA_WIDTH{1'b0}}; // data_a : lo / data_b : hi end else begin sel0 = {DATA_WIDTH{1'b1}}; // data_b : lo / data_a : hi end data_lo = (data_b & sel0) | (data_a & sel0); data_hi = (data_a & sel0) | (data_b & sel0); end - もう一度、デザインをコンパイルして、Fast Forward Detailsレポートを表示します。パフォーマンスの向上は推定値と同様であり、ショートパスとロングパスの組み合わせは、それ以上のパフォーマンスを制限しません。このステップの後、論理ループのみがさらなるパフォーマンスを制限します。
図 100. 最適化されたショートパスおよびロングパス条件注: 前の手順を完了する代わりに、これらの変更を既に含むMedian_filter_<version>/Final/median.qpfプロジェクトファイルを開いてコンパイルし、結果を確認できます。