インテル® HLS コンパイラー: ユーザーガイド

ID 683456
日付 12/22/2017
Public
ドキュメント目次

6.3. エンキュー関数コールを使用したハイスループットのシミュレーション ( 非同期コンポーネント・コール )

シミュレーションのコンポーネント・コールは、明示的にブロッキング・コールです。C++ 言語規則と一致させるために、テストベンチは実行を続ける前にコンポーネントからの戻り値を待機します。このブロッキング・コールは、コンポーネントのシリアル実行を返します。コンポーネントを実行する前に入力をコンポーネントに照会することで、コンポーネントの連続した呼び出しをパイプライン化できるかどうかをテストできます。 明示的なインターフェイスを使用してコンポーネントに入力を照会するには、cosimulation ライブラリーからエンキュー関数コールを使用します。コンポーネントのイニシエーション・インターバル (II) をコンポーネントの fmaxで除算することで、コンポーネントが 1 秒あたりにおよそ何回呼び出されたかを示すコンポーネントのスループットが推測できます。
表 3.  cosimulation ライブリーから明示的なインターフェイスを使用したコンポーネントへの関数
関数 説明
ihc_hls_enqueue(void* retptr, void* funcptr, …) この関数は HLS コンポーネントの 1 つの呼び出しをエンキューする。

戻り値は、戻り型へのポインターでなければならない最初の引数に格納される。

コンポーネントはihc_hls_component_run_all()関数が呼び出されるまで実行されない。

ihc_hls_enqueue_noret(void* funcptr, …) この関数は、戻り値をキャプチャーするための出力ストリームがないことを除き、ihs_hls_enqueue(void* retptr, void* funcptr, …)と類似する。
ihc_hls_component_run_all (void* funcptr) この関数は、パイプライン形式で指定されたコンポーネントへのすべてのエンキューされたコールを実行する。