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

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

1.9. エリアの最小化およびオンチップ・メモリー・アーキテクチャーの制御

HLSコンパイラーは可能な場合は最大スループットを提供しようとします。場合によては、特にHLSコンパイラーがスループットのためにローカルメモリー・コンフィグレーションを最適化する場合は、より小さいエリアである程度のスループットを交換すると有益な場合があります。
属性をローカル変数に適用してローカルメモリー・システムのジオメトリーをカスタマイズし、回路のエリア使用率を節約できます。
これらの属性はhls.hヘッダーファイルで定義され、コード内に含めることができます。
注: これらの属性はプリミティブおよびオブジェクトに適用できますが、クラスメンバーには適用できません。
表 12.  オンチップ・メモリー・アーキテクチャーの制御における属性
HLS 属性 説明
hls_register コンパイラーがレジスターに実装する必要があるローカル変数を指定します。
hls_memory コンパイラーがエンベデッド・メモリーに実装する必要があるローカル変数を指定します。
hls_numbanks(n) ローカル変数を実装しているメモリーが、n が 0 より大きい 2 のべき乗定数であるnバンクを有することを指定します。
hls_bankwidth(n) ローカル変数を実装しているメモリーが、nが 0 より大きい 2 のべき乗定数であるnバイト幅のバンクを有することを指定します。 
hls_singlepump ローカル変数を実装しているメモリーがシングルポンピングする必要があることを指定します。
hls_doublepump ローカル変数を実装しているメモリーがダブルポンピングする必要があることを指定します。
hls_numports_readonly_writeonly(m,n) ローカル変数を実装しているメモリーに、mおよびnが 0 より大きい定数であるmリードポートおよびnライトポートを有することを指定します。
hls_simple_dual_port_memory 次の属性を指定することと同等のコンフィグレーションを指定します。
  • hls_singlepump
  • hls_numports_readonly_writeonly(1,1)
hls_merge("label", "direction") 2 つ以上の変数を同じメモリーシステムに実装するように強制します。

labelは任意の文字列です。マージするすべての変数に同じラベルを割り当てます。

メモリーを幅方向または深さ方向にそれぞれマージするかどうかを判断するために、directionwidthまたはdepthのいずれかとして指定します。

hls_bankbits(b 0 , b 1 , ..., b n ) バンク選択ビットを形成する{b 0 , b 1 , ..., b n } を使用して、2nバンク内を分割するようにメモリーシステムに強制します。
重要: b 0 , b 1 , ..., b n は連続的であり、正の整数です。

bank_bits属性なしでnumbanks(n)属性を指定する場合、バンク選択ビットはデフォルトで最下位ビット ( つまり、0, 1, ..., log2(numbanks)-1) になります。