説明
プロトコル領域と呼ばれるコード範囲を指定します。この領域では、コードで明示的に指定されない限り、Vitis HLS はクロック操作を挿入しません。関数引数からの読み出しおよび関数引数への書き込みも含め、操作間にクロックが挿入されることはありません。合成された RTL は、読み出しと書き込み順序を厳密に遵守します。
C/C++ コードでコードの領域を作成するには、コードで領域を波かっこ { } で囲み、名前を付けます。次の例は、
io_section という名前の領域を定義します。io_section:{
...
lines of code
...
}
C コードでは、ap_wait() ステートメントを使用してクロック操作を指定できます。C++ コードでは、wait() ステートメントを使用してクロック操作を指定できます。
ヒント:
ap_wait および wait 文は、デザインのシミュレーションには影響しません。構文
syn.directive.protocol=[OPTIONS] <location>
<location> は、プロトコル領域を定義する場所を function[/label] 形式で指定します。
オプション
-
mode=[floating | fixed] -
-
floating: プロトコル領域外のコード文を最終的な RTL のプロトコル領域内の文と重複して並列実行できるようにします。プロトコル領域はサイクル精度のままですが、領域外の演算は同時に実行できます。これがデフォルト モードです。 -
fixed: プロトコル領域外の文がプロトコル領域内の文と並列実行されないようにします。
-
例
次のコード例は、関数
foo に io_section という名前のプロトコル領域を定義します。次の指示子は、領域を fixed プロトコル領域として定義します。syn.directive.protocol=mode=fixed foo/io_section