Un facteur non encore mentionné est la métastabilité. Si un circuit de verrouillage est heurté avec une séquence d'entrées / transitions telle que l'état résultant dépend de retards de propagation ou d'autres facteurs imprévisibles, rien ne garantit que l'état résultant sera propre "haut" ou "bas". Prenons, par exemple, une bascule à déclenchement sur le bord qui émet actuellement un "bas" et dont l’entrée passe de bas à haut presque au même moment qu’un front d’horloge arrive. Si le front d'horloge survient suffisamment longtemps avant le changement d'entrée, la sortie restera simplement basse jusqu'au prochain front d'horloge. Si le front d'horloge survient suffisamment longtemps après le changement d'entrée, la sortie bascule rapidement une fois de bas en haut et y reste jusqu'au prochain front d'horloge. Si aucune de ces conditions ne s'applique,. Il peut rester bas ou changer rapidement une fois et rester haut, mais il peut rester bas pendant un moment, puis basculer ou basculer puis revenir plus tard, ou basculer plusieurs fois, etc.
Si une conception est entièrement synchrone et que toutes les entrées sont synchronisées deux fois, il est très peu probable qu'une impulsion de synchronisation frappe le premier verrou d'un synchroniseur de manière à le faire basculer au moment idéal pour confondre le second. loquet. En général, il est prudent de considérer des choses telles que "ne se produira tout simplement pas". Dans une conception asynchrone, cependant, il est souvent beaucoup plus difficile de raisonner sur de telles choses. Si une contrainte de synchronisation sur un circuit de verrouillage (pas seulement des bascules, mais toute combinaison de logique qui agirait comme un verrou) est violée, rien ne permet de savoir ce que la sortie fera jusqu'à la prochaine fois qu'une condition d'entrée valide forcera le verrouillage à un état connu. Il est tout à fait possible que des sorties retardées fassent violer les contraintes de synchronisation des entrées aval, ce qui entraînera des situations inattendues.
Le moyen le plus sûr de modéliser un circuit asynchrone serait que presque chaque circuit de sortie produise une sortie "X" pendant quelques instants chaque fois qu'il bascule entre "0" et "1". Malheureusement, cette approche aboutit souvent à ce que presque tous les nœuds affichent "X", même dans les cas où, en réalité, ils auraient presque certainement abouti à un comportement stable. Si un système peut fonctionner alors que toutes les sorties sont simulées, toutes les sorties deviennent "X" immédiatement après la modification d'une entrée et restent "X" jusqu'à ce que les entrées soient stables. C'est un bon signe que le circuit fonctionnera, mais que les circuits asynchrones fonctionneront sous de telles contraintes. est souvent difficile.