set_directive_alias - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

[Description]

2 つ以上の M_AXI ポインター引数が、メモリ内の同じ基盤バッファー (DDR または HBM) をポイントし、ポインター間の距離またはオフセットを設定して、そのポインター間のエイリアスを示すように指定します。

重要: ALIAS プラグマは、M_AXI インターフェイスにマップされた最上位の関数引数に適用します。

Vitis HLS は、異なるポインターを独立したチャネルと判断し、通常は依存解析を実行しません。ただし、ホストが複数のポインターに単一のバッファーを割り当てる場合は、ALIAS プラグマまたは指示子でこの関係を伝達し、依存解析を維持できます。ALIAS プラグマを使用すると、バッファー内のポインター間の距離を定義することで、Vitis HLS でデータ依存解析が有効になります。

ALIAS の要件:

  • 次の例に示すように、ALIAS プラグマに割り当てられたすべてのポートは、M_AXI インターフェイスに割り当てられ、異なるバンドルに割り当てられている必要があります。
  • 各ポートは、1 つの ALIAS プラグマまたは指示子でのみ使用できます。
  • ALIAS プラグマに割り当てられたすべてのポートの depth が同じである必要があります。
  • オフセットを指定する場合、指定するポート数とオフセット数は同じ (ポートごとに 1 つのオフセット) である必要があります。
  • INTERFACE のオフセットは、slave または direct に指定する必要があります。offset=off はサポートされていません。

構文

set_directive_alias [OPTIONS] <location> <ports>
  • <location> は、ALIAS プラグマが適用される function[/label] 形式の場所を示す文字列です。
  • <ports> はそのポートをエイリアスに指定します。

オプション

-distance <integer>
リスト内のポートに渡されるポインター値の差を指定します。
-offset <string>
配列の原点を基準にして、ports リストで各ポートに渡されるポインターのオフセットを指定します。

次の top 関数の場合:

void top(int *arr0, int *arr1, int *arr2, int *arr3, ...) {
  #pragma HLS interface M_AXI port=arr0 bundle=hbm0 depth=0x40000000
  #pragma HLS interface M_AXI port=arr1 bundle=hbm1 depth=0x40000000
  #pragma HLS interface M_AXI port=arr2 bundle=hbm2 depth=0x40000000
  #pragma HLS interface M_AXI port=arr3 bundle=hbm3 depth=0x40000000
次のコマンドは、指定された配列ポインターのエイリアスを定義し、その間の distance を定義します。
set_directive_alias "top" arr0,arr1,arr2,arr3 -distance 10000000
または、次のコマンドでポインター間の offset を指定して、同じ設定にします。
set_directive_alias top arr0,arr1,arr2,arr3 -offset 00000000,10000000,20000000,30000000