Vitis Model Composer では、カーネル関数にランタイム パラメーターを含む AI エンジン カーネルを、ウィンドウ タイプおよびストリーム タイプと共にインポートできます。次の表に、ランタイム パラメーターとして渡すことができるスカラー データ型をリストします。
<Type> | 実数/複素数 | 符号の有無 |
---|---|---|
int8 | 実数 | 符号付き |
int16 | 実数 | 符号付き |
int32 | 実数 | 符号付き |
int64 | 実数 | 符号付き |
uint8 | 実数 | 符号なし |
uint16 | 実数 | 符号なし |
uint32 | 実数 | 符号なし |
uint64 | 実数 | 符号なし |
cint16 | 複素数 | 符号付き |
cint32 | 複素数 | 符号付き |
float | 実数 | なし |
cfloat | 複素数 | なし |
関数引数の各パラメーター (スカラー型およびベクター型) に対し、暗黙ポートが推論されます。次の表に、各関数引数に推論されるポートのタイプを示します。
仮引数 | ポート クラス |
---|---|
T | 入力 |
Const T | 入力 |
T & | 入出力 |
Const T & | 入力 |
Const T (&) [ ..] | 入力 |
T (&)[ ..] | 入出力 |
次の例では、simple_rtp
関数に 2 つのリアルタイム パラメーターが含まれます。関数引数 select
は値で渡され、引数 weight
は参照で渡されます。
#ifndef __RTP_KERNEL_H__
#define __RTP_KERNEL_H__
void simple_rtp(input_window_cint16 * in,output_window_cint16 * outw, int32 &weight, int32 select);
#endif //__RTP_KERNEL_H__
上記の関数用に AIE Kernel ブロックをインポートすると、AIE Kernel ブロックは次の図のように表示されます。Model Composer では、inout
ポートは AIE Kernel ブロックの output
ポートとして表示されます。
inout
RTP ポートはコード生成時には無視され、Simulink シミュレーションでのみ考慮されます。つまり、PS から読み出されません。RTP はウィンドウ ポートおよびストリーム ポートと共に使用されるので、カーネル関数のインポート手順は同じです。上記の RTP を含むカーネル関数をインポートすると、AIE Kernel ブロックは次の図に示すようになります。
AIE Kernel ブロック名 (simple_rtp
) は、AI エンジン カーネル関数名と同じです。
インポートすると、Function タブが表示されます。次の図に示すように、関数定義とランタイム パラメーターをすばやく確認できます。
ポートの同期性は、RTP 特定のパラメーターです。次の表に、ソース RTP 入出力ポートに対するデスティネーション RTP 入力ポートの有効な同期性を示します。デフォルトでは auto に設定されています。
ソース RTP 入出力ポート | デスティネーション RTP 入力ポート |
---|---|
auto | async |
sync | auto |
sync | sync |
async | async |
ソース RTP 入出力ポートが auto に設定されている場合、デスティネーション RTP 入力ポートは async に設定する必要があります。ほかの組み合わせも同様です。上記の表に示されていない組み合わせを使用しようとすると、Model Composer でエラーが表示されます。