スタティック型 (static) - 2023.2 日本語

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

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

関数内の static 型は、関数呼び出し間の値を保持します。ハードウェア デザインの同等のビヘイビアーは、レジスタ付きの変数 (フリップフロップまたはメモリ) です。正しく実行されるために変数を C/C++ 関数の static 型にする必要がある場合、最終 RTL デザインでは確実にレジスタになります。値は、関数およびデザインの起動中維持されている必要があります。

static 型だけが合成後にレジスタになるというわけではありません。 RTL デザインでどの変数がレジスタとしてインプリメントされる必要があるかは、Vitis HLS で判断されます。たとえば、変数引数が複数サイクル間保持される必要がある場合、C/C++ 関数の元の変数が static 型でなくても、Vitis HLS ではその値を保持するためにレジスタが作成されます。

Vitis HLS は static の初期化動作に従って、初期化中にレジスタへ値 0 を割り当てるか、指定された初期化値に割り当てます。つまり、static 変数は RTL コードと FPGA ビットストリームで初期化されます。リセット信号がアサートされるたびに変数が初期化し直されるわけではありません。

static 初期化値をシステム リセット時にインプリメントする方法については、RTL のコンフィギュレーション を参照してください。