関数のインライン展開
ソフトウェア関数のインライン展開と同様、ハードウェア関数のインライン展開にも利点があります。
関数をインライン展開すると、実際の引数と仮引数が解決された後に、関数呼び出しが関数本体のコピーに置き換えられます。インライン展開された関数は、別の階層として表示されなくなります。関数のインライン展開では、インライン関数内の演算が周辺の演算と一緒に効率的に最適化されるので、ループの全体的なレイテンシまたは開始間隔を向上できます。
関数をインライン展開するには、インライン展開する関数の本体の最初に「
#pragma HLS inline」と入力します。次のコードでは、mmult_kernel 関数がインライン展開されるように Vivado HLS に指示されます。void mmult_kernel(float in_A[A_NROWS][A_NCOLS],
float in_B[A_NCOLS][B_NCOLS],
float out_C[A_NROWS][B_NCOLS])
{
#pragma HLS INLINE
int index_a, index_b, index_d;
// rest of code body omitted
}