未定義のステート
ステート値を割り当てていくと、大抵は未定義の値が生じてしまう(例えば3ビットに値0から5を割り当てると6,7は未定義)。デジタル回路的には未定義値に遷移することはありえないので、合成ツールは未定義値になる場合を無視して論理合成する。ただし、中性子線やα線でFFが反転する場合を気にするなら、ステートが未定義値になった場合の遷移先も定義しておいた方がよい。このとき合成制約をかける必要がある(→FSMのエンコーディング)
(1) 初期状態に戻る (default: state_reg<=IDLE)
とりあえずステートマシンは止めずに無難な状態に遷移する。
(2) その状態にとどまる (default: state_reg<= state_reg)
デバッグするには発生時の状態を維持するのがよい。
(3) 異常時の状態を定義しておく (default: state_reg<=ERROR)
もし異常になったら外部に知らせるなどの動作をさせるとよい。