Синхронный автомат меняет состояние только по фронту общего тактового сигнала. Это даёт предсказуемость: между фронтами все переходные процессы успевают завершиться, и к следующему такту сигналы стабильны.
Проблема возникает, когда на вход синхронной схемы приходит сигнал, не связанный с её тактом (асинхронный — например, нажатие кнопки или данные из другого тактового домена). Если такой сигнал изменится именно в окне setup/hold триггера, триггер может попасть в метастабильное состояние: его выход надолго зависает между 0 и 1, не будучи ни тем, ни другим.
Метастабильность опасна тем, что разные части схемы могут «прочитать» зависший выход по-разному, и автомат уйдёт в неверное состояние. Полностью исключить её нельзя, но вероятность резко снижают синхронизатором — цепочкой из двух (или более) последовательных триггеров на входе. Первый может зависнуть, но за такт обычно успевает «разрешиться», и второй получает уже стабильный уровень.
Правило проектирования: любой асинхронный вход обязательно пропускают через синхронизатор, прежде чем подавать в логику автомата.