Одним из факторов, еще не упомянутых, является метастабильность. Если в защелкивающуюся цепь входит последовательность входов / переходов, так что результирующее состояние будет зависеть от задержек распространения или других непредсказуемых факторов, нет гарантии, что результирующее состояние будет чистым «высоким» или «низким». Рассмотрим, например, триггер, запускаемый по фронту, который в настоящее время выдает «низкий» уровень, и его входной сигнал меняется с низкого на высокий почти в то же время, когда наступает фронт тактового сигнала. Если фронт тактового сигнала происходит достаточно долго до изменения входа, выход будет просто сидеть низко до следующего фронта тактового сигнала. Если после смены входа частота фронта тактового сигнала достаточно велика, выход быстро переключится с низкого уровня на высокий и останется там до следующего фронта тактового сигнала. Если ни одно из этих условий не применяется,, Он может оставаться низким или быстро переключаться один раз и оставаться высоким, но он может оставаться низким некоторое время, а затем переключаться, или переключаться, а затем через некоторое время переключаться назад или переключаться назад и вперед несколько раз и т. Д.
Если конструкция полностью синхронизирована, а все входы синхронизированы с двойной синхронизацией, очень маловероятно, что синхронизирующий импульс попадет в первую защелку синхронизатора таким образом, что он переключится в идеальное время, чтобы запутать вторую. защелки. В целом, можно считать такие вещи «просто не произойдет». В асинхронном дизайне, однако, часто гораздо сложнее рассуждать о таких вещах. Если ограничение синхронизации для схемы с защелкой (не только триггеры, но любая комбинация логики, которая будет действовать как защелка) нарушается, невозможно сказать, что будет делать выход, пока в следующий раз не появится действительное условие ввода, которое вызывает защелку в известное состояние. Вполне возможно, что задержанные выходы приведут к нарушению временных ограничений входных сигналов, что приведет к неожиданным ситуациям,
Самый безопасный способ смоделировать асинхронную схему состоял бы в том, чтобы почти каждая выходная цепь вырабатывала выход «X» на некоторое время, когда он переключается между «0» и «1». К сожалению, такой подход часто приводит к тому, что почти все узлы показывают «X», даже в тех случаях, которые в действительности почти наверняка привели бы к стабильному поведению. Если система может работать при моделировании, когда все выходы становятся «X» сразу после изменения входа и остаются «X» до тех пор, пока входы не будут стабильными, это хороший признак того, что схема будет работать, но при этом асинхронные схемы будут работать при таких ограничениях. часто сложно.