xmcImportFunction コマンドの使用 - 2021.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2021-10-22
Version
2021.2 日本語
Model Composer には MATLAB コマンド ラインから使用可能な xmcImportFunction コマンドが含まれており、ソースおよびヘッダー ファイルで定義された関数を指定して、Model Composer ブロックまたはブロック ライブラリを作成できます。xmcImportFunction コマンドの構文は、次のとおりです。
xmcImportFunction('libName',{'funcNames'},'hdrFile',{'srcFiles'},
{'srchPaths'},'options')
説明:
  • libName: 新しいブロックを追加する Model Composer HLS ライブラリの名前を指定します。新しく作成するライブラリの名前または既存のライブラリ名を指定できます。
  • funcNames: ソースまたはヘッダー ファイルで定義されている関数で、Model Composer ブロックとしてインポートするものをリスト (セル配列) で指定します。{} のように空にすると、指定したヘッダー ファイル (hdrFile) で定義されているすべての関数がインポートされます。名前空間内の関数には、完全な名前空間接頭辞を指定する必要があります。たとえば、hls_math 内の 'sinf' 関数をインポートするには、完全な関数名 'hls::sinf' を指定する必要があります。
  • hdrFile: 関数宣言または定義を含むヘッダー ファイル (.h) を指定します。現在の作業ディレクトリに含まれていない場合は、ヘッダー ファイルへの完全パスを指定する必要があります。たとえば、hls_math.h から関数をインポートするには、完全な関数名 '$XILINX_VIVADO/include/hls_math.h' を指定する必要があります。
    重要: 関数シグネチャはヘッダー ファイルで定義する必要があり、Model Composer (XMC) プラグマはヘッダー ファイルの関数シグネチャの一部として指定する必要があります。
  • srcFiles: 関数定義を検索する 1 つまたは複数のソース ファイルのリストを指定します。モデルで使用すると、ヘッダーおよびソース ファイルはモデルのメイン ヘッダー ファイル (headerFile) と共にシミュレーション用の共有ライブラリにコンパイルされ、Model Composer Hub ブロックの追加 に説明するように、Model Composer Hub ブロックで出力を生成するのに指定したターゲット ディレクトリにコピーされます。
  • srchPaths: ヘッダーおよびソース ファイルの検索パスを 1 つまたは複数指定します。{} のように空にすると、検索パスがないことを示し、MATLAB の現在のフォルダーが検索されます。HLS ヘッダー ファイルを含めるには、'$XILINX_VIVADO/include' を使用します。
xmcImportFunction コマンドには次の options もあり、必須の引数の後に任意の順序で指定できます。
  • 'unlock': 既存のライブラリがロックされている場合にロックを解除します。xmcImportFunction コマンドで既存のライブラリにブロックを追加できますが、そのためにはまずロックを解除する必要があります。
  • 'override': 指定したライブラリ内に存在する同じ名前のブロックを上書きします。
ヒント: xmcImportFunction のヘルプを表示するには、MATLAB コマンド ラインで「help xmcImportFunction」と入力します。前述の情報が表示されます。

たとえば、次の simple.h ヘッダー ファイルでは、2 つの倍精度浮動小数点の入力とポインター出力を含む simple_add 関数が定義されています。この関数は、2 つの入力を加算し、その合計を出力として返します。

void simple_add(const double in1, const double in2, double *out) {
   *out = in1 + in2;
}
Model Composer HLS ライブラリに simple_add 関数をブロックとしてインポートするには、MATLAB コマンド プロンプトに次のコマンドを入力します。
xmcImportFunction('SimpleLib',{'simple_add'},'simple.h',{},{})
説明:
  • SimpleLib: ブロックを追加する Model Composer HLS ライブラリの名前を指定します。
  • simple_add: インポートする関数の名前を指定します。
  • simple.h: 検索するヘッダー ファイルを指定します。
  • C ソース ファイルおよび検索パスは指定されていません。この場合、関数定義が指定したヘッダー ファイルに含まれている必要があり、指定したファイルは MATLAB の現在のフォルダーのみで検索されます。
    ヒント: インポートするブロックと同じ関数名のブロックが指定したライブラリに既に存在する場合は、Model Composer で警告メッセージが表示されます。
xmcImportFunction が完了すると、作成された simple_add ブロックを含む SimpleLib ライブラリ モデルが開きます。
図 1. simple_add ブロック

シミュレーションでは、ライブラリ ブロックの C/C++ コードがコンパイルされ、ライブラリ ファイルが作成されて読み込まれます。ライブラリ ファイルは、その後の実行でシミュレーションの初期化にかかる時間を短縮するためにキャッシュされます。ライブラリ ブロックに含まれるソース コードは、ブロックをインポートし直したりライブラリを作成し直さなくても変更できますが、キャッシュされたライブラリ ファイルは C/C++ ソース コードを変更するとアップデートされます。

ただし、関数シグネチャまたは関数へのパラメーターを変更した場合は、xmcImportFunction を再実行してブロックを作成し直す必要があります。この場合、override オプションを使用して、ライブラリ内の既存のブロック定義を上書きする必要があります。

重要: インポートされた関数へのインターフェイスまたは関連の XMC プラグマを変更した場合は、xmcImportFunction コマンドを再実行する必要があります。この場合、デザインからブロックを削除し、新しく生成されたブロックをライブラリから追加してください。関数の内容を変更した場合は、xmcImportFunction を再実行する必要はありません。
ブロック シンボルが作成されたら、そのシンボルをダブルクリックすると、インポートしたブロックのパラメーターを確認できます。パラメーターを表示すると、関数ポートが正しく定義されたかどうかを確認できます。
図 2. simple_add の [Block Parameters] ダイアログ ボックス