ザイリンクス-HLS-の研究ノート(8):ハイレベル合成HLSのご紹介
RTLでは、設計者は、どのようにこれらのレジスタに対応するために、レジスタまたはを構築する方法を検討する必要があるが、唯一のこれらのレジスタは、デザインの役割を果たしている方法を検討する必要があります。EDAツールは、モデルは、デバイス上の特定の回路実装に変換、第一の電気RTLモデルの数に変換することができます。いわゆる「プログラム」カスタムデバイスを指定するために使用することができる書類のコンパイルは、FPGAなどの既存の機器の一部をプログラムするために使用することができ、実際にあります。
HLSは、道より高いレベルで、設計者はより多くの偉大な建築とないHLSで実行するように独立したコンポーネントまたはバイ・サイクルごとに検討する必要があります。HLSのデザイナーに焦点を当てるシステムの動作モードである必要があり、HLSツールは、特定のRTLの微細構造を生成するための責任を負うことになります。早いHLSツールのほとんどは、Verilogのに基づいており、利用者は、RTLのVerilogで生成Verilogの言語記述ツールを使用する必要があります。今HLSツールの多くはデザイナー端とC / C ++言語を使用して開始します。もちろん、最も重要なことは、我々がそれを使用してどのような言語ではなく、必要があると包括的なプログラムであるかどうかを確認することですHLSツールを選択します。
全体的に、HLSは、自動的に次の作業を手動で行わなければならなかった完了することができます:
- HLSアルゴリズムが自動的に分析し、潜在的な同時実行の使用
- HLSは、自動的に、必要なパスにクロックを挿入し、自動的にほとんどを選択し、レジスタ
- 方向経路上のデータへのHLS自動的に生成された論理制御アクセス
- システムのインターフェイスの一部を自動的に設計の他の部分をHLS
- 自動的にバランスに帯域幅リソースのデータ記憶部をマップするHLS
- 計算論理ユニットに対応する自動プログラム部分が自動的に同等の計算の前提条件の下で最も効果的な方法を選択し、HLS
ほとんどのHLSツールは、ドッキングデバイスは、コンピューティング、および目的最適化方向の相互作用を記述し、標準化された機能を提供するために、ユーザーが必要になります。と
Vivado HLSの場合、ユーザーが必要とします:
- C / C ++ / Cシステムを持つ関数で記述されました
- 検証結果のテストプラットフォーム(Cテストベンチ)
- FPGAデベロッパー版
- 所望のクロックサイクル
- 単純な実装ガイダンス
Vivado HLSのユーザーガイドをよると、私たちは、入力プログラム、次の仕様を行います。
- 私たちは、動的なメモリ割り当てを使用していない(のmalloc()、、)(無料新、および削除を使用せずに())
- ポインタの使用を減少させるための操作を意味します
- 、私たちは、このようなコードなどの他のプラットフォームでのテストにこれらの命令を使用することができます(()などアボートなど()、終了()、printfの)システムコールを使用していないが、
- これは、これらの命令を無視(または直接削除)されている総合的な時間であり、
- 他の標準コンテンツライブラリの使用を削減(人気コンテンツのサポートにMATH.Hが、いくつかの非互換性があります)
- C ++仮想関数と関数ポインタの使用を削減
- 再帰方程式を使用しないでください。
- 私たちのインタラクティブなインターフェースの正確な表現
RTL設計が利用可能である場合には、HLSツールのほとんどは、標準のRTL設計フローになります。論理合成でザイリンクスDesign SuiteのザイリンクスVivadoにFPGAロジックコンポーネントにRTLネットリストレベルの設計を変換することが行われる、これは、さらに、論理ネットリスト必要性だけでなく、それらの接続のメンバーを含みます。Vivado後ネットリストと利用可能なリソースに関連するターゲットデバイス、およびこのプロセスはレイアウト布(PAR)と呼ばれます。出力FPGAのコンフィギュレーションビットストリームは、(ビットストリーム)取り付けられ、ユーザがFPGAの所望の機能を達成するために、ビットストリームをアップロードすることができます。ビットストリームは、バイナリ内の論理手段の使用、接続モード、およびオンチップメモリを含むFPGAの利用可能なリソース、のそれぞれに実質的に配置されています。大例えばFPGAザイリンクスFPGA以上10億個のウルトラスケール設定ビットを有する、少なくとも数百ビットの百万の小型FPGA上に配置されてもよい存在します。