ランタイムソフトウェアインターフェイス

VisualAppletsは、実行時にデザインパラメータにアクセスするためのさまざまなモデルをサポートしています。

  • HAPファイルベースのeVAランタイム環境の使用

  • 生成されたGenICam XMLコードに基づくGenICam APIの使用

  • VisualAppletsによって生成された汎用的なデザイン固有のC APIコードの使用

HAPベースのeVAランタイムインターフェイス

VisualAppletsは、FPGAデザインの合成および実装を制御します。生成されたデザインは、独自のBaslerファイル形式(*.hap)で保存されます。この形式には、FPGA用のコンフィギュレーションビットストリームと、デザイン固有のソフトウェアインターフェースを実現するための手段が含まれています。

一般に、VisualAppletsオペレーターには、実行時に変更できる動的パラメータが含まれています。HAPファイルには、デザイン固有のパラメータに簡単にアクセスするために必要なすべての情報が含まれています。

ユーザープラットフォーム上でランタイムソフトウェアを正しく機能させるには、以下の要件を満たす必要があります。

  • ユーザーはコンフィギュレーションを実行する必要があるため、FPGAビットストリームへのアクセスが必要です。そのために、ランタイムインターフェースは次の機能を提供します。 vaRt_GetConfig().

  • デザインレジスタのスレーブインターフェースにアクセスするには、ユーザーが次の機能を実装する必要があります。 WriteReg32(), ReadReg32()、またはオプションで WriteReg64() および ReadReg64()。機能が実行されると、ランタイムソフトウェアにこれらの機能が通知されます。 vaRt_InitParams() が呼び出されるまで取得モードのままになります。

その後、VisualAppletsビットストリームを設定し、ランタイムソフトウェアでデザインパラメータの読み書きを行うことができます。

レジスタアクセス関数は、次の関数タイプに準拠している必要があります。

         
      typedef int ReadReg32(void* device, const uintptr_t address, uint32_t *value)
      typedef int WriteReg32(void* device, const uintptr_t address, uint32_t value)
      typedef int ReadReg64(void* device, const uintptr_t address, uint64_t *value)
      typedef int WriteReg64(void* device, const uintptr_t address, uint64_t value)
         
      
    

ソフトウェアインターフェースライブラリには、VisualAppletsデザインを制御するための追加機能が用意されています。次の表に、アクセス関数の完全なセットを示します。

No.

機能

説明

1

vaRt_OpenHap()

ハードウェアアプレットを開き、 *.hap 今後のアクセスのハンドルとして機能するHAP構造体へのポインタを返します。

2

vaRt_CloseHap()

によって開かれたハードウェアアプレットを閉じます。 vaRt_OpenHap.

3

vaRt_GetConfig()

FPGAのコンフィギュレーションビットストリームへのポインタを返します。

4

vaRt_GetAppletProperty()

アプレットのクロックネット iDesignClk の最大周波数、ターゲットプラットフォームに関する情報、バージョン情報などのアプレットPropertyのクエリ関数。

5

vaRt_GetProcessCount()

デザインを構成するプロセスの数を返します。

6

vaRt_GetIoPortCount()

使用されている外部インターフェースポートの数を返します。すべての種類のインターフェースポートがリストにまとめられており、リスト内の位置がポートの論理番号になります。ポート名とPropertyは、以下で指定する関数によって取得できます。 vaRt_GetIoPort….

7

vaRt_GetIoPortName()

指定された論理ポート番号を持つインターフェースポートの名前を取得します。

8

vaRt_GetIoPortProperty()

接続されたオペレーターの名前、このポートを制御するプロセス、このポートの現在の画像フォーマット設定などのI/OポートPropertyのクエリ。

9

vaRt_GetParamCount()

デザインのパラメータ数を返します。

10

vaRt_GetParamName()

指定されたパラメータ番号に対応する名前が返されます。

11

vaRt_GetParamId()

指定されたパラメータ番号に対応するパラメータ ID が返されます。

12

vaRt_GetParamIdByName()

指定されたパラメータ名に対応するパラメータ ID が返されます。

13

vaRt_GetParamProperty()

パラメータ Property をクエリします。

14

vaRt_InitParams()

パラメータ インターフェイスを設定し、パラメータをデフォルト値に初期化します。

15

vaRt_GetParam()

パラメータ値をクエリします。

16

vaRt_GetParamArray()

パラメータの配列をクエリします。

17

vaRt_SetParam()

パラメータ値を設定します。

18

vaRt_SetParamArray()

パラメータの配列を設定します。

19

vaRt_SetGlobalEnable()

Master Enable 信号を設定します。

20

vaRt_SetProcessEnable()

VisualApplets デザインのプロセスをアクティブ化します。

21

vaRt_ResetProcess()

VisualApplets デザインプロセスのリセットを実行します。

22

vaRt_GetErrorDescription()

指定されたエラーコードの説明をクエリします。

データの通信

情報をクエリしてパラメータを設定するには、ランタイム インターフェイスを介してデータを送受信する必要があります。インターフェイス関数をシンプルに保ちつつタイプセーフなインターフェイスを提供するために、データの抽象化メカニズムが実装されています。異なる型のデータをやり取りする必要がある場合はいつでも、 va_data というデータ構造が使用されます。これには、データへの参照と、基となるデータ型に関する情報が含まれています。このデータ構造はユーザーによって作成されますが、以下の専用関数によって設定されます。次の表は、このメソッドで処理されるデータ型を示しています。

データ型

説明

VA_ENUM

32 ビット整数として指定された Enum エントリ。

VA_INT32

32 ビット符号付き整数。

VA_UINT32

32 ビット符号なし整数。

VA_INT64

64 ビット符号付き整数。

VA_UINT64

64 ビット符号なし整数。

VA_DOUBLE

浮動小数点値、倍精度。

VA_INT32_ARRAY

32 ビット符号付き整数の配列。

VA_UINT32_ARRAY

32 ビット符号なし整数の配列。

VA_INT64_ARRAY

64 ビット符号付き整数の配列。

VA_UINT64_ARRAY

64ビット符号なし整数配列。

VA_DOUBLE_ARRAY

倍精度浮動小数点数配列。

VA_STRING

次のように指定された文字列: const char*.

以前に作成された va_data 構造体(vaData)を設定し、データ通信をセットアップするには、次の関数を使用します。

        
      va_data* va_data_enum(va_data* vaData, int32_t *data) 
      va_data* va_data_int32(va_data* vaData, int32_t *data) 
      va_data* va_data_uint32(va_data* vaData, uint32_t *data) 
      va_data* va_data_int64(va_data* vaData, int64_t *data) 
      va_data* va_data_uint64(va_data* vaData, uint64_t *data) 
      va_data* va_data_double(va_data* vaData, double *data) 
      va_data* va_data_int32_array(va_data* vaData, int32_t *data, size_t elementCount) 
      va_data* va_data_uint32_array (va_data* vaData, uint32_t *data, size_t elementCount) 
      va_data* va_data_int64_array (va_data* vaData, int64_t *data, size_t elementCount) 
      va_data* va_data_uint64_array (va_data* vaData, uint64_t *data, size_t elementCount) 
      va_data* va_data_double_array (va_data* vaData, double *data, size_t elementCount) 
      va_data* va_data_string(va_data* vaData, char *data, size_t strSize) 
      va_data* va_data_const_string(va_data* vaData, const char **data) 
        
        
      

文字列の通信には、次の2つの方法があります。

  • 次を介してchar配列を提供する: va_data_string()。これにより、クエリされた文字列データがその配列にコピーされます。

  • 次へのポインタを提供する: const char*。その後、次のようなタイプの情報をクエリすると、 VA_STRING 内部文字列列表現へのポインタが返されます。このアプローチを使用する場合は、返された文字列のライフタイムを確認してください。

サンプルコード:

次の例は、設定されたデザインの設計周波数をクエリするためのコードを示しています。

     
       double desFreq; 
       va_data va_desFreq; 
       va_data_double(&va_desFreq,&desFreq); 
         
       vaRt_GetAppletProperty(hapHandle, "DesignFreq",&va_desFreq); 
        
     
   

その後、変数 desFreq に要求された情報が含まれます。

インターフェース関数の詳細説明

次の表は、指定されたランタイムアクセス関数のパラメータと戻り値の詳細な説明を示しています。

機能

int vaRt_OpenHap (const char* hapFileName, va_hap_handle*hap)

パラメータ 1

開くhapファイルの名前。

パラメータ 2

hapハンドル用の戻り値ポインタ。

説明

指定された名前でハードウェアアプレットを開き、hap構造体へのポインタを返します。

返されたポインタは、他のすべてのインターフェイス関数でハンドルとして使用されます。

戻り値

0 : OK

<0: Error opening applet

機能

int vaRt_CloseHap (va_hap_handle handle)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

説明

VAハードウェアアプレットを閉じます。

戻り値

0 = OK

<0 = Error closing HAP

機能

int vaRt_GetConfig (va_hap_handle handle, int fpgaID, char**data, size_t *sizeInBytes)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

ターゲットプラットフォーム内のFPGAのID。シングルコンフィギュレーションのHAPファイル(現在は唯一のオプション)の場合、このパラメータは-1に固定される場合があります。それ以外の場合、このパラメータは、VisualAppletsプラットフォームの作成に使用されたハードウェア定義ファイルで指定された(オプションの)FPGA IDに対応している必要があります。

パラメータ 3

コンフィギュレーションビットストリームのバッファへのポインタ。

パラメータ 4

コンフィギュレーションビットストリームのサイズをバイト単位で通知します。

説明

FPGAデザインのコンフィギュレーションビットストリームを取得します。この関数には2つの動作モードがあります。

戻り値

0: OK

<0:  Error acquiring the bitstream

機能

int vaRt_GetAppletProperty (va_hap_handle handle, const char* propName,va_data * data)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

クエリするPropertyの名前。

パラメータ 3

通信に使用されるデータ構造へのポインタ。

説明

アプレットのPropertyを取得します。以下のPropertyをクエリできます。

  • VVisualAppletsVersion: このアプレットの作成に使用されたVisualAppletsフレームワークのバージョンを取得します(型 VA_STRING)

  • IPCoreVersion: VA IPコアのバージョンを取得します(型 VA_STRING)

  • AppletVersion: アプレットのバージョンを取得します(型 VA_STRING)

  • DesignFreq: デザインクロックの周波数をMHz単位で取得します(型 VA_DOUBLE)

  • PlatformVendor: プラットフォームのベンダー(型 VA_STRING)

  • PlatformType: ハードウェアプラットフォームの名前(型 VA_STRING)

  • PlatformID: プラットフォームデバイスの識別番号(型 VA_STRING)

  • PlatformVersion: アプレットの作成に使用されたハードウェア記述で定義されているプラットフォームデバイスバージョン(型 VA_STRING)

プロパティは上記の文字列のいずれかによって識別され(パラメータ2を介して提供)、パラメータ3を介して指定されたデータ構造を介して通信されます。型のプロパティの場合 VA_STRING 返された文字列は、この関数の次の呼び出しによって上書きされる可能性があります。

戻り値

0 : OK

<0 : Can’t retrieve applet property

機能

int vaRt_GetProcessCount (va_hap_handle handle, unsigned int* count)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

プロセス数の戻り値。

説明

デザインが構成されているプロセスの数を取得します。

戻り値

0: OK

<0 : Can’t retrieve information

機能

int vaRt_GetIoPortCount (va_hap_handle handle, unsigned int*count)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

ポート数の戻り値。

説明

VA IP Coreの使用されているI/Oポートの数を取得します。返された数値は、すべてのインターフェースポートが登録され、リスト内の位置がI/Oポートの論理番号となる、内部で管理されるポートリストのサイズを表します。

戻り値

0: OK

<0 : Can’t retrieve information

 

機能

int vaRt_GetIoPortName (va_hap_handle handle, unsigned int index, const char** name)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

論理インターフェースポート番号。これは、Zeroと、 vaRt_GetIoPortCount() から1を引いた値の間の整数です。

説明

指定された論理番号を持つインターフェースポートの名前を取得します。同じ種類のポートが複数ある場合、これらのポートはサフィックス _X(X はポートインデックス、例: DmaRd_0)によって区別されます。

戻り値

0: OK; *name 要求された名前を保持する静的バッファへのポインタを返します(0終端)。バッファは、この関数の次の呼び出しによって上書きされる場合があることに注意してください。

<0 : No port with given index found

機能

int vaRt_GetIoPortProperty (va_hap_handle handle, const char* portName, const char* propName, va_data* data)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

I/Oポートの名前。

パラメータ 3

クエリするPropertyの名前。

パラメータ 4

通信に使用されるデータ構造へのポインタ。

説明

指定された名前を持つI/Oポートのプロパティを取得します。次のプロパティを照会できます:

  • OperatorName: 接続されたオペレータのユーザー定義名(型 VA_STRINGを使用します。

  • OperatorType: 接続されたオペレータのオペレータタイプ名(型 VA_STRINGを使用します。

  • Process: 接続されたオペレータが動作するプロセスの論理番号(型 VA_UINT32を使用します。

  • FormatID: I/O オペレーターのフォーマット ID(型: VA_UINT32、ポートの種類が ImgIn または ImgOutを使用します。

の場合のみ利用可能です)。Property は上記の文字列のいずれかによって特定され( VA_STRING 返された文字列は、この関数の次の呼び出しによって上書きされる可能性があります。

戻り値

0: OK

<0 : Can’t retrieve the requested property

 

機能

int vaRt_InitParams (va_hap_handle handle, struct va_device *device, ReadReg32 *read32, WriteReg32 *write32, ReadReg64 *read64, WriteReg64 *write64)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap(を使用します。

パラメータ 2

ローレベルアクセス関数に提供されるデバイスハンドルへのポインタ、および WriteReg32(), ReadReg32(), WriteReg64を通じて提供され)、 ReadReg64() 任意のレジスタアクセスに使用されます。

パラメータ 3

32 ビットレジスタ読み取り関数の関数ポインタ。

パラメータ 4

32 ビットレジスタ書き込み関数の関数ポインタ。

パラメータ 5

64 ビットレジスタ読み取り関数の関数ポインタ。

パラメータ 6

64 ビットレジスタ書き込み関数の関数ポインタ。

説明

ローレベルレジスタアクセス関数を提供し、ボードインターフェイスポインタをそれらに関連付けることによって、パラメータインターフェイスを初期化します。初期化手順には、初期値の設定が含まれます。その他のすべての関数 vaRt_*Param* およびリセットと有効化を制御する関数は、この関数が正常に実行された後でのみ呼び出すことができます。

レジスタアクセス関数に関しては、次のオプションを利用できます。

戻り値

0: パラメータインターフェイスが正常に初期化されました

<0 : Error during initialization

 

機能

int vaRt_GetParamCount (va_hap_handle handle, unsigned int*count)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ数の戻り値。

説明

パラメータインターフェイスを介してアクセスできるアプレットのパラメータ数を取得します。返される数は、利用可能なすべてのパラメータが登録されている内部管理されるパラメータリストのサイズを表し、リスト内の位置がパラメータの論理番号を定義します。

戻り値

0: OK

<0 : Can’t retrieve information

 

機能

int vaRt_GetParamName (va_hap_handle handle, unsigned int index, const char** name)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

論理パラメータ番号。ゼロから vaRt_GetParamCount() から1を引いた値の間の整数です。

パラメータ 3

名前文字列へのポインタを返します。

説明

指定された論理パラメータ番号に対応するアプレットパラメータの名前を取得します。

戻り値

0: OK。*name は、パラメータ名(0で終端)を保持する静的バッファへのポインタを返します。このバッファは、本関数の次回呼び出しによって上書きされる場合があることに注意してください。

<0  : Can’t retrieve information

 

機能

int vaRt_GetParamId (const struct va_hap_handle* handle, unsigned int index, int* paramId)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

論理パラメータ番号。0から以下の戻り値までの間の整数です。 vaRt_GetParamCount() から1を引いた値の間の整数です。

パラメータ 3

パラメータ ID の返却用ポインタ。

説明

アプレットのパラメータの ID を取得します。この ID は、そのパラメータにアクセスするために使用されます。

戻り値

0: OK

<0 : No parameter with given index found

 

機能

int vaRt_GetParamIdByName (const struct va_hap_handle* handle, const char* name, int* paramId)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータの名前。以下によって提供される値のいずれかになります。 vaRt_GetParamName().

パラメータ 3

パラメータ ID の返却用ポインタ。

説明

指定された名前を持つパラメータの ID を取得します。この ID は、そのパラメータにアクセスするために使用されます。

戻り値

0: OK

<0 : No parameter with given name found

 

機能

int vaRt_GetParamProperty (va_hap_handle handle, int paramID, const char* propName, va_data* data)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ名。

パラメータ 3

クエリするPropertyの名前。

パラメータ 4

通信に使用されるデータ構造へのポインタ。

説明

アプレットパラメータの Property をクエリします。パラメータの種類によって、異なる Property が存在します。利用可能なパラメータ Property のリストについては、VA Engine の仕様書を参照してください。Property は、パラメータ 3 で指定される文字列によって識別され、パラメータ 4 で提供されるデータ構造を介して通信されます。以下の型の Property については、 VA_STRING 返される文字列は、少なくともパラメータが変更されるまでの間は安定しています。

戻り値

0 : OK

<0 : Can’t retrieve parameter property

 

機能

int vaRt_GetParam (va_hap_handle handle, int paramID, va_data * value)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ ID。

パラメータ 3

通信に使用されるデータ構造へのポインタ。関連するデータ要素は、取得された値によって上書きされます。

説明

パラメータ ID でアプレットパラメータをクエリします。データは、パラメータ 3 で指定されたデータ構造を使用して通信されます。フィールドパラメータをクエリするには、以下を使用します。 vaRt_GetParamArray()。以下の型の Property については、 VA_STRING 返される文字列は、少なくともパラメータが変更されるまでの間は安定しています。

戻り値

0: OK。

<0 : Error querying the parameter.

 

機能

int vaRt_GetParamArray (va_hap_handle handle, int paramID, va_data* values, size_t startIndex, size_t elementCount)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ ID。

パラメータ 3

通信に使用されるデータ構造へのポインタ。関連するデータ要素は、取得された値によって上書きされます。

パラメータ 4

パラメータフィールド内の開始インデックス

パラメータ 5

クエリする要素の数

説明

データ要素の配列を埋め込みながら、パラメータ ID によってアプレットのフィールドパラメータをクエリします。データは、パラメータ 4 で指定されたデータ構造を介して通信されます。

戻り値

0: OK。

<0 : Error querying the array.

 

機能

int vaRt_SetParam (va_hap_handle handle, int paramID, const va_data * value)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ ID。

パラメータ 3

Applet にデータを送信するために使用されるデータ構造へのポインタ。

説明

指定された名前でアプレットパラメータを設定します。データはデータ構造(パラメータ 4)によって提供されます。フィールドパラメータを設定するには、以下を使用します。 vaRt_SetParamArray().

戻り値

0: OK。

<0 : Error setting the parameter.

 

機能

int vaRt_SetParamArray (va_hap_handle handle, int paramID, const va_data * values, size_t startIndex, size_t elementCount)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

パラメータ ID。

パラメータ 3

アプレットに値を送信するために使用されるデータ構造へのポインタ。

パラメータ 4

パラメータフィールド内の開始インデックス。

パラメータ 5

設定する要素の数。

説明

データ要素の配列を送信して、指定された名前のアプレットのフィールドパラメータを設定します。データはデータ構造(パラメータ 3)を介して提供されます。

戻り値

0: OK。

<0 : Error setting the parameter field.

 

機能

int vaRt_SetGlobalEnable (va_hap_handle handle, int active)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

グローバルイネーブルを設定する状態(1または0)。

説明

グローバルイネーブルを1(アクティブ=1)または0(アクティブ=0)に設定します。

戻り値

0: OK

<0 : Error setting the global enable state.

 

機能

int vaRt_SetProcessEnable (va_hap_handle handle, unsigned int procNr, int active)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

プロセス番号、またはすべてのプロセスを一度に指定する場合は ((unsigned int)-1)。

パラメータ 3

イネーブルを設定する状態(1または0)。

説明

プロセス(またはすべてのプロセス)のイネーブルを1(アクティブ=1)または0 (アクティブ=0)に設定します。

戻り値

0: OK。

<0 : Error setting the process enable state.

 

機能

int vaRt_ResetProcess (va_hap_handle handle, unsigned  int procNr)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

パラメータ 2

プロセス番号、またはすべてのプロセスを一度に指定する場合は ((unsigned int)-1)。

説明

指定された論理プロセス番号のプロセス(またはすべてのプロセス)をリセットします。 対応するプロセスリセット信号がアサートされてから、再びネゲートされます。対応するプロセスの イネーブル信号は変更されません。次を使用します: vaRt_SetProcessEnable() そして、アプレットを制御するためにこの関数を使用します。

戻り値

0: OK。

<0 : Cannot reset the process.

 

機能

const char* vaRt_GetErrorDescription (va_hap_handle handle, int errorCode)

パラメータ 1

次からのhapハンドル: vaRt_OpenHap().

Parameter2

次のコード: vaRt_GetLastError().

説明

指定されたエラーコードのエラーメッセージ文字列をクエリします。

戻り値

NULL以外:エラーの説明(0で終了するC文字列)

NULL:利用可能な説明はありません

GenICam APIバージョン2.0に基づくランタイムインターフェイス

指定されたデザインに対して、VisualAppletsはGenICam XMLコードを生成できます。ターゲットプラットフォームがGenICam互換インターフェースを介してソフトウェアに接続されている場合、このオプションにより、画像処理パラメータをGenICam APIにシームレスに統合できます。追加のソフトウェアコンポーネントは必要ありません。

パラメータアクセスの統合を既存のマスターGenICam XMLファイルに行う必要がある場合は、いくつかのポストプロセッシングを実行する必要があります。これは通常、VA IPコアを埋め込む前に、プラットフォームがすでにGenICamを介して制御されている場合に発生します。

パラメータアクセスを既存のマスターGenICam XMLファイルに統合するには:

  1. VisualAppletsによって生成されたXMLファイルのヘッダーをカットします。

  2. カテゴリ、変数、およびレジスタ用の残りのコードをマスター XMLファイルにコピーします。

VisualAppletsはカスタムのポストプロセッシングタスクを呼び出すことができるため、このステップを自動化できます。

生成されたAPIコードに基づくランタイムインターフェイス

指定されたデザインに対して、VisualAppletsは汎用C APIコードを生成できます。このコードはプラットフォーム非依存のANSI-Cコードです。このアプローチは、組み込みシステム(Zynq7000など)でのソフトウェア統合に最適です。

生成されたコードは次のインターフェースを提供します:

    
    #include <stdint.h> 
        
    typedef int (*write_func_t)(void* boardHandle,int address, uint64_t value, size_t sizeInBytes);
    int (*read_func_t)(void* boardHandle,int address, uint64_t *value, size_t sizeInBytes);
      
    enum VariableTypes_enum{
    
    TYPE_UNKNOWN = 0, 
    
    TYPE_INT = 1, 
    
    TYPE_FLOAT = 2, 
    
    TYPE_STRING = 3 
    
    }; 
      
    typedef enum VariableTypes_enum VariableType_t; 
      
    enum AccessMode_enum{ 
    RO, 
    WO, 
    RW 
    }; 
      
    typedef enum AccessMode_enum AccessMode_t; 
      
    int va_init(void* boardHandle, write_func_t wrFunc, read_func_t rdFunc); 
    
    int va_set_property(const char* propName, const char* propValue); 
    
    int va_get_int_value(const char* varName, int64_t *retValue); 
    
    int va_set_int_value(const char* varName, int64_t value); 
    
    int va_get_float_value(const char* varName, double *retValue); 
    
    int va_set_float_value(const char* varName, double value); 
    
    int va_get_string_value(const char* varName, const char **retValue); 
    
    int va_get_enum_value(const char* varName, const char** retValue); 
    
    int va_set_enum_value(const char* varName, const char* value); 
    
    int va_get_enum_item_count(const char* varName, int64_t *itemCount); 
    
    int va_get_enum_item_info(const char* varName, int64_t index, const char** itemName, int64_t *itemValue); 
    
    int va_query_variables_count(int32_t *retCount);     
    
    int va_query_variable_name(int32_t index, const char** retName); 
    
    int va_query_variable_type(const char* varName, VariableType_t *type); 
    
    int va_query_int_variable_properties(const char* varName, 
    
    int64_t *from, 
    
    int64_t *to, 
    
    int64_t *inc, 
    
    AccessMode_t *access); 
    
    int va_query_float_variable_properties(const char* varName, 
    
    double *from, 
    
    double *to, 
    
    double *inc, 
    
    AccessMode_t *access);
    
  

次を呼び出してインターフェースを初期化します: va_init().

VA IPコアのレジスタスレーブインターフェースへの書き込みおよび読み取りアクセスのコールバック関数が登録されます。指定された boardHandle は保存され、これらのおよび読み取り関数のトリガーされた呼び出しごとに提供されます。一連のクエリ関数は、汎用ランタイムインターフェースを実装するためのベースラインメカニズムを提供します。特定のデザインに対して、セット関数とゲット関数は、パラメータが名前で指定されるパラメータアクセスを提供します。これらの関数は、レジスタアクセスのコールバック関数を介して、デザインパラメータへのアクセスからハードウェア上のレジスタへのアクセスへの変換を実行します。