コーディング スタイル
どの C プログラムでも、最上位関数は main()
と呼ばれます。通常、この関数は C シミュレーションのテストベンチに含まれます。HLS コンポーネントの場合、main()
で呼び出されるサブ関数を高位合成の最上位関数として指定できます。最上位関数
main()
は合成できません。その他、次のような規則があります。
- 合成で最上位関数として選択できる関数は 1 つだけです。
- 最上位関数を合成すると、その下の階層にある関数も合成されます。
- 最上位関数の下位階層にない関数を合成するには、関数を合成用に 1 つの最上位関数に統合する必要があります。
C/C++ 言語サポート
データ型 で説明する党に、HLS コンポーネントでは多くの C および C++11/C++14 言語コンストラクトと、float 型および double 型も含めた各言語のすべてのネイティブ データ型がサポートされていますが、合成では次のコンストラクトはサポートされていません。
- ダイナミック メモリ割り当て: FPGA には決まったリソース セットがあるので、メモリ リソースの動的な作成と解放はサポートされません。
- オペレーティング システム (OS) の操作: FPGA に入出力されるすべてのデータは、入力ポートから読み出されるか、出力ポートに書き込まれる必要があります。ファイルの読み出し/書き込みのような OS 操作または時間や日付のような OS クエリはサポートされません。これらの操作は、ホスト アプリケーションまたはテストベンチで実行され、そのデータが関数引数として関数に渡されます。