正規領域内では、正規本体は次のガイドラインにしたがっている必要があります。
- ローカルの非スタティック スカラーまたは配列変数を使用します。ローカル変数は、関数本体内 (関数内のデータフローの場合) またはループ本体 (ループ内のデータフローの場合) で宣言します。配列に関するその他の制限は、制御駆動型のタスク レベル並列処理の制限を参照してください。
-
hls::stream/hls::stream_of_blocks
を使用しない場合、データをフィードバックなしで、1 つの関数から別の関数の後に渡す関数呼び出しシーケンスの条件は次のとおりです。- 変数 (スカラー以外) に含めることができるのは、1 つの読み出しプロセスと 1 つの書き込みプロセスのみです。
- ローカルのスカラー以外の変数を使用する場合は write before read (受信前に送信) を使用します。スカラー変数では、write before read と read before write の両方を使用できます。
- 関数引数を使用する場合、read before write (送信前に受信) を使用します。本体内の反依存はデザインで保持される必要があります。
- 関数の戻り値型は void である必要があります。
- FIFO を使用する場合を除き、変数を介した異なるプロセス間にループ運搬依存がないようにします。ストリームに変換された配列では順方向のループ運搬依存がサポートされ、
hls::streams
では順方向および逆方向のループ運搬依存がサポートされます。- このような依存が最上位関数への連続呼び出しにまたがって存在する場合 (1 つの反復で書き出されて次の反復で読み込まれる入力引数など) を除く。
- データフロー領域内では、プロセスを定義する関数呼び出し内を除き、制御は一切サポートされません。
- 標準的なデータフローでは、条件文、ループ、return または goto 文、throw などの C++ 例外はありません。