インテル® HLS コンパイラー: リファレンス・マニュアル

ID 683349
日付 6/23/2017
Public
ドキュメント目次

1.4.2.1. スカラー・パラメーターおよび Avalon Streaming インターフェイス

コンポーネントのすべてのスカラー・パラメーター関数引数には、生成した Verilog モジュール内に入力ポートがあります。 これらのポートは、Avalon® Streaming (Avalon®-ST) インターフェイス仕様で示すように、startbusy入力に関連するパイプラインされた入力で、startは valid 信号、busyは反転したready信号です。

スカラー引数入力に加えて、コンポーネントは、Avalon-ST インターフェイス仕様に準拠する明示的な入力ストリームおよび出力ストリームを有することができます。各ストリームは、コンポーネント内部に 1 つのリードまたはライトのみを有する場合があります。これらの入力ストリームおよび出力ストリームは、提供されたihc::stream_in<>ihc::stream_out<> テンプレート・クラスをコンポーネントへの関数引数として使用することで、C ソースで表されます。これらのクラスをコンポーネント・シグネチャーの参照パラメーターとして定義する必要があります。これらのクラスは他のクラスの基本クラスとして使用したり、構造体や配列などのその他の形式でカプセル化したりすることはできません。ただし、他のクラス内部の参照として使用することができ、つまり、データメンバーとしてストリームへの参照を持つクラスが構築できるということを意味しています。

ストリーミング・インターフェイスについて詳しくは、Avalon Interface Specificationsを参照してください。

表 4.  Avalon-ST インターフェイスで使用可能なスカラー・パラメーター
テンプレート引数 デフォルト 説明
ihc::type 任意の有効な C++ 型 N/A ストリームにより実行されるデータ型。
ihc::buffer 正の整数値 0 ストリームに関連するデータ上のワード単位での FIFO バッファーの容量。

このパラメーターは入力ストリームでのみ有効です。

ihc::readyLatency 正の整数値

値の範囲は 0 ~ 8

0 ready 信号がディアサートされてから、ストリームシンクが新しい入力を受け入れられなるまでの間のサイクル数。概念的には、このパラメーターはストリームに関連するデータの入力 FIFO バッファーでの almost ready レイテンシーとして確認できます。
ihc::bitsPerSymbol 正の整数値

値はデータ型サイズにより均等に分割される必要があります。

データ型のサイズ データがどのようにデータバスのシンボル内で分割されるかを記述します。データは常にリトル・エンディアンの順序で分割されます。
ihc::usesPackets trueまたはfalse false ストリーム・インターフェイスのstartofpacketendofpacketのサイドバンド信号を抽出します。信号はパケットベースのリード / ライトによりアクセス可能です。
ihc::usesReady trueまたはfalse true

stream_out<> インターフェイスでのみサポートされます。

ready 信号が存在するかどうかを制御します。true の場合、ダウンストリーム・シンクは valid がアサートされるサイクルごとにデータを受け入れます。

これは、ストリーム書き込みコールをtryWriteに変更し、successが常にtrueであることと同じことです。

falseに設定すると、readyLatency0になります。
ihc::usesValid trueまたはfalse true stream_in<>インターフェイスでのみサポートされます。

valid 信号がストリーム・インターフェイスに存在しているかどうかを制御します。false の場合、アップストリーム・ソースは ready 信号がアサートされるサイクルごとに有効データを提供します。

これは、ストリーム書き込みコールをtryReadに変更し、success が常に true であることと同じことです。

falseに設定すると、bufferreadyLatency0になります。
表 5.  テストベンチとコンポーネント・コードの両方でストリームとインタラクトする使用可能な関数
注: 入力および出力ストリームとしてコンポーネント内で使用できるストリーム・アプリケーション・プログラミング・インターフェイス ( API ) には制限があります。
API ブロックキング サイドバンド信号 コンポーネントstream_inによる使用 コンポーネントのstream_outによる使用 説明
T read() 可能 不可能 可能 不可能 この関数は、ストリームから次の使用可能なデータ項目を読み込みます。コンポーネント内に使用可能なデータがない場合、関数は有効なデータが存在するまでデータパスをストールします。
T read(bool& sop, bool& eop) 可能 可能 可能 不可能 この関数はusesPacketstrueに設定されている場合のみ使用可能です。

この関数は、ストリームから次の使用可能なデータ項目を読み込みます。コンポーネント内に使用可能なデータがない場合、関数は有効なデータが存在するまでデータパスをストールします。

T tryRead(bool& success) 不可能 不可能 可能 不可能 この関数は、使用可能な場合にストリームから次の使用可能なデータ項目を読み込みます。この関数コールはストールを引き起こしません。bool引数はデータが有効かどうかを表示します。
T tryRead(bool& success, bool& sop, bool& eop) 不可能 可能 可能 不可能 この関数は、usesPacketstrueに設定されている場合のみ使用可能です。

この関数は、次のデータが使用可能な場合にストリームからそのデータを読み込みます。この関数コールはストールを引き起こしません。bool引数はデータが有効かどうかを表示します。

void write(T arg) 可能 不可能 不可能 可能 この関数はデータをストリームに書き込みます。ストリームが新しいデータを受け入れられない場合 ( 例えば、ストリームの他のエンドからのストールのため )、この関数はストリームにデータを書き込めるまでデータパスをストールします。
void write(T data, bool sop, bool eop) 可能 可能 不可能 可能 この関数は、usesPacketstrueに設定されている場合のみ使用可能です。

この関数はデータをストリームに書き込みます。ストリームが新しいデータを受け入れられない場合、この関数はストリームにデータを書き込めるまでデータパスをストールします。

bool tryWrite(T data) 不可能 不可能 不可能 可能 この関数は、新しいデータを受け入れられる場合、ストリームにデータを書き込みます。この関数コールはストールを引き起こしません。bool戻り値はライト命令が実行されたかどうかを表示します。
bool tryWrite(T data, bool sop, bool eop) 不可能 可能 不可能 可能 この関数は、usesPacketstrueに設定されている場合のみ使用可能です。

この関数は、新しいデータを受け入れられる場合にストリームにデータを書き込みます。この関数コールはストールを引き起こしません。bool戻り値はライト命令が実行されたかどうかを表示します。

注: コンポーネント内では、ストリーム間に存在するデータの依存関係を除き、異なるストリームの実行順序の保証はありません。