デフォルト コンストラクターを含むカーネル クラス - 2023.2 日本語

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

Document ID
UG1483
Release Date
2023-11-15
Version
2023.2 日本語

デフォルト コンストラクターを含む C++ クラス カーネルをインポートする例として、デフォルト コンストラクターを含むカーネル クラス simple_class を定義する次の simple.h ヘッダー ファイルがあるとします。

simple.h:


#include "adf.h"

using namespace adf;

class simple_class
{
private:
 int16 val;
 int16 numSamples;

public:
 simple_class();
 void mulBytwo(input_buffer<int16> & in, output_buffer<int16> & out);

 static void registerKernelClass()
 {
    REGISTER_FUNCTION(simple_class::mulBytwo);
 }
};

registerKernelClass() メソッドを使用して、カーネル関数を登録する必要があります。ヘッダー ファイルでは複数のクラス カーネルを宣言でき、各クラスには個別に registerKernelClass() メソッドを含める必要があります。クラスごとに登録できる関数は 1 つのみです。Vitis Model Composer では、REGISTER_FUNCTION() を使用して登録した関数のみをインポートできます。

カーネル関数は、simple.cpp で次のように定義されます。

simple.cpp:

#include "simple.h"

simple_class::Simple_class()
{
 val = 24;
 numSamples = 8;
}

void simple_class::mulBytwo(input_buffer<int16> & in, output_buffer<int16> & out)
{
    auto pIn  = aie::begin(in);
    auto pOut = aie::begin(out);
        
    for (int i=0; i<numSamples; i++)
    {
        *pOut++ = 2*(*pIn++) + val;
    }
}

Vitis Model Composer デザインに mulBytwo 関数をブロックとしてインポートするには、AIE Class Kernel ブロックをダブルクリックし、パラメーターを次のようにアップデートします。

Kernel header file
simple.h:
Kernel class
simple_class
Kernel function
mulBytwo
Kernel source file
simple.cpp:
Kernel search path
空のまま
Preprocessor options
空のまま

Block Parameters ダイアログ ボックスで Import ボタンをクリックします。正しくインポートされると、Function タブが表示されます。次の図に示すように、ユーザーが編集可能な設定パラメーターが表示されます。

図 1. AIE Class Kernel ブロックの [Block Parameters] ダイアログ ボックス

Function タブに適切な値を入力したら、Apply をクリックします。AIE Class Kernel ブロックが次の図に示すようにアップデートされます。

図 2. アップデート後の AIE Class Kernel ブロック

Function タブで、インポートされたカーネル関数の関数宣言と、ポート名および方向をすばやく確認できます。

Kernel Class タブをクリックして、クラス宣言を確認します。

図 3. Kernel Class タブのクラス宣言