初期化およびリセット動作の制御 - 2023.2 日本語

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

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

リセット ポートは、リセット信号が適用されたときにリセット ポートに接続されたレジスタおよびブロック RAM を初期値に戻すためにデバイスで使用されます。RTL コンフィギュレーションで最も重要なのは、通常リセット動作の選択です。

注記: リセット動作について説明する前に、初期化とリセットの違いを理解しておくことが重要です。詳細は、初期化動作 を参照してください。

RTL リセット ポートの有無と動作は、次の図に示すようにコンフィギュレーション コマンドで制御されます (RTL のコンフィギュレーション を参照)。

図 1. RTL コンフィギュレーション

リセット設定では、リセットの極性および同期か非同期かを設定できますが、重要なのは、reset オプションを使用してリセット信号が適用されたときにリセットするレジスタを指定できるということです。

重要: AXI4 インターフェイスがデザインで使用される場合は、config_rtl コンフィギュレーションの設定に関係なく、リセット極性は自動的にアクティブ Low に変更されます。これは、AXI4 規格の要件です。

reset オプションには、次の 4 つの設定があります。

none
デザインにリセットを追加しません。
control
すべての制御レジスタにリセットを追加します (デフォルト)。制御レジスタは、ステート マシンに使用されるレジスタで、I/O プロトコル信号を生成するために使用されます。この設定により、デザインはその動作ステートを即座に開始できるようになります。
state
制御レジスタ (control 設定と同様) と、C/C++ コードのスタティックおよびグローバル変数から派生されるレジスタまたはメモリにリセットを追加します。この設定により、リセットを適用したときに、C/C++ コードで初期化されるスタティックおよびグローバル変数が初期化値に確実にリセットされるようになります。
all
デザインのすべてのレジスタおよびメモリにリセットを追加します。

RESET プラグマまたは指示子を使用すると、さらに詳細にリセットを制御できます (syn.directive.reset を参照)。スタティックおよびグローバル変数には、RESET 指示子を使用してリセットを追加できます。変数のリセットを削除するには、RESET 指示子を off に設定します。

重要: リセットに state または all オプションを使用する際には、配列のリセットへの影響に注意するようにしてください。