La métastabilité ne peut pas être «guérie», mais si vous attendez assez longtemps , la probabilité qu'elle se produise peut être arbitrairement réduite. Une fois que vous l'avez réduit à une fois à l'ère de l'univers, il est peu probable qu'il vous cause des ennuis.
C'est comme équilibrer un crayon sur sa pointe. Il est probable qu'il tombe, et plus vous attendez, moins il est probable qu'il reste debout.
Il y a deux problèmes à attendre longtemps, et l'un d'eux est fondamental.
Le problème fondamental est que si vous avez un seul élément de mémoire (verrou ou bascule, ils souffrent tous deux de métastabilité) dans un système cadencé recevant la sortie d'un système externe asynchrone, vous ne pouvez pas physiquement définir une limite inférieure au temps d'attente , il arrive que le signal externe effectue une transition près du bord de contrôle de verrouillage. Vous devez acheminer le signal vers une autre bascule pour le laisser y attendre. Cela vous donne un temps d'attente minimum garanti d'un cycle d'horloge.
Le deuxième problème est que vous essayez souvent d'exécuter un système aussi vite que possible, et la fréquence d'horloge du système ne peut pas être ralentie pour donner suffisamment de temps dans la deuxième bascule. La seule façon d'augmenter la latence du signal à ce qui est nécessaire, sans diminuer le débit, est de canaliser l'attente vers plus d'étapes.
Certaines personnes ont du mal à visualiser ce qui se passe entre les tongs. Il existe deux façons d'induire la métastabilité, et elles impliquent toutes deux de violer les règles de bascule. Une façon consiste à violer la configuration d'entrée et les temps de maintien, pour effectuer une transition lorsque la bascule s'attend à ce que l'entrée soit stable. L'autre consiste à violer les niveaux logiques d'entrée, à faire en sorte que l'entrée de données de bascule se trouve à un niveau de tension intermédiaire. Une bascule métastable peut produire l'un ou l'autre type de violation sur sa sortie, pour se répercuter sur la prochaine bascule.