グローバル変数 - 2023.2 日本語

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

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

グローバル変数はコード内で自由に使用でき、完全に合成可能です。ただし、グローバル変数を最上位関数の引数として推論することはできませんが、RTL デザインのポートの引数として明示的に指定する必要があります。

次のコード例では、グローバル変数のデフォルトの合成ビヘイビアーが示され、3 つのグローバル変数 (idxAinAout) が使用されています。この例では配列が使用されますが、Vitis HLS ではすべてのタイプのグローバル変数タイプがサポートされています。

  • 値は配列 Ain から読み出されます。
  • 配列 AintAin からの値を変換して Aout に渡すために使用されます。
  • 出力は配列 Aout に書き込まれます。
重要: グローバル変数 Ain および Aout にアクセスするには、引数リストに明示的にリストされている必要があります。
#include "top.h"

void top(const int idx, const int Ain[N], int Aout[Nhalf]) {

	int Aint[N];

	// Move elements in the input array

	ILOOP: for (int i = 0; i < N; i++) {

		int iadj = (i + idx) % N;

		Aint[i] = Ain[i] + Ain[iadj];

	} // end ILOOP

	// sum the 1st and 2nd halves
	OLOOP: for (int i = 0; i < Nhalf; i++) {

		Aout[i] = (Aint[i] + Aint[Nhalf + i]);

	} // end OLOOP

} // end top()