FSM_SAFE_STATE
属性を使用すると、Vivado 合成では、無効なステートを検出したときに、次のクロック サイクルでそれを既知の良いステートにするステート マシンにロジックが挿入されます。
たとえば、one_hot
エンコードに設定されたステート マシンが 0101
ステート (one_hot
の場合は無効) になった場合、そのステート マシンが回復できるようになります。FSM_SAFE_STATE
属性は、ステート マシン レジスタに設定できます。RTL または XDC で設定できます。
FSM_SAFE_STATE
の有効な値は、次のとおりです。
- auto_safe_state
- 1 ビット/フリップの自動訂正にハミング 3 エンコードを使用します。
- reset_state
- 1 ビット/フリップのハミング 2 エンコード検出を使用して、ステートマシンを強制的にリセット ステートにします。
- power_on_state
- 1 ビット/フリップのハミング 2 エンコー ド検出を使用して、ステート マシンを強制的にパワーオン ステートにします。
- default_state
- ステート マシンを RTL で指定されたデフォルトのステート (Verilog では
case
文のdefault
分岐で指定されたステート、VHDL ではcase
文のothers
分岐で指定されたステート) にします。これを機能させるためには、RTL にdefault
またはothers
ステートを含める必要があります。