hls::stream.capacity()
メソッドは、ストリームが保持できるエレメントの最大数、またはストリームの深さ合計を定義する符号なし整数を返します。これにより、書き込み前にチャネルに使用可能な容量を確認できます。
hls::stream<int> my_stream;
int var = 16;
if ((my_stream.capacity() - my_stream.size()) >= N) {
for (int=0; i<N;i++)
my_stream.write(...); // this will not block
}
ヒント: C シミュレーションでは、
hls::stream.capacity()
が理論上の限界値として MAXINT を返します。合成や C/RTL 協調シミュレーションでは、計算されたストリームの容量を返します。
hls::stream.capacity()
および
hls::stream.size()
メソッドでは、トランザクションに使用可能な特定の量のスペースまたはデータがある場合にのみ、ストリームの書き込みまたは読み出しをする高度なフロー制御ができます。たとえば、サイズ N の読み出しバーストを開始する前に、入力ストリームに N 個のデータ アイテムがあるかどうかを確認し、バーストがストールせずに完了できるようにできます。また、書き込みバーストの場合、バースト データをストールせずに保存するのに十分なスペースが出力ストリームにあるかどうかを確認することもできます。