スクリプトでの指示子の使用 vs. コードでのプラグマの使用 - 2023.2 日本語

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

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

HLS Directive エディターの Destination セクションでは、次のデスティネーション設定のいずれかを選択できます。

Source File
Vitis Unified IDE は、指示子をプラグマとして C ソース ファイルに直接挿入します。
Config File
IDE は、この指示子を HLS コンフィギュレーション ファイルに挿入します。

次の表に、これら 2 つの方法の利点と欠点を示します。

表 1. コンフィギュレーション ファイル指示子 vs HLS プラグマ
指示子の形式 利点 欠点
HLS コンフィギュレーション ファイル

ソース コードは変更されないまま、デザインはコンフィギュレーション ファイルのエントリから確認できます。デザインでさまざまな指示子を試す場合に最適です。

C ソース ファイルをサードパーティに送付またはアーカイブする場合は、directives.tcl ファイルも含める必要があります。

結果を再作成するには directives.tcl ファイルが必要です。

ソース コード プラグマ

最適化指示子は C ソース コードに埋め込まれます。

C ソース ファイルをサードパーティに C IP として送付する場合に最適です。同じ結果を再作成するのにほかのファイルは必要ありません。

TRIPCOUNT および INTERFACE などの変更されるる可能性が低い指示子に便利な方法です。

最適化指示子がコードに埋め込まれていると、そのソース コードを参照する HLS コンポーネントすべてに自動的に適用されます。
ヒント: 指示子を使用すると、さまざまなデザインの可能性を開発できますが、最終的な指示子が完成したら、HLS プラグマに変換することをお勧めします。これにより、最適化プラグマはデザインのソース コードの一部として持ち運べるようになります。

プラグマ属性の値を指定する際、リテラル値 (1、55、3.14 など) を使用するか、#define を使用してマクロを渡すことができます。次の例では、プラグマをリテラル値で指定しています。

#pragma HLS ARRAY_PARTITION variable=k_matrix_val  type=cyclic factor=5

次の例では、定義されているマクロを使用しています。

#define E 5
#pragma HLS ARRAY_PARTITION variable=k_matrix_val  type=cyclic factor=E