La metastabilità non può essere "curata", ma se aspetti abbastanza a lungo , la probabilità che si verifichi può essere arbitrariamente ridotta. Una volta che hai raggiunto una volta nell'età dell'universo, è probabilmente improbabile che ti causi problemi.
È come bilanciare una matita sul suo punto. È probabile che cada, e più a lungo aspetti, meno è probabile che rimanga in piedi.
Ci sono due problemi con l'attesa a lungo, e uno di questi è fondamentale.
Il problema fondamentale è che se si dispone di un singolo elemento di memoria (latch o flip-flop, entrambi soffrono di metastabilità) in un sistema con clock che riceve l'output da un sistema esterno asincrono, non è possibile definire fisicamente un limite inferiore al tempo di attesa , a volte il segnale esterno effettuerà una transizione vicino al bordo di controllo del blocco. Devi effettuare il pipeline del segnale ad un altro flip-flop per lasciarlo aspettare lì. Ciò garantisce un tempo di attesa minimo garantito di un ciclo di clock.
Il secondo problema è che spesso stai cercando di far funzionare un sistema il più velocemente possibile e la frequenza di clock del sistema non può essere rallentata per dare abbastanza tempo nel secondo flip-flop. L'unico modo per aumentare la latenza del segnale a ciò che è necessario, senza ridurre la velocità effettiva, è di eseguire il pipeline dell'attesa su più fasi.
Alcune persone hanno difficoltà a visualizzare ciò che sta accadendo tra le infradito. Esistono due modi per indurre la metastabilità ed entrambi implicano la violazione delle regole del flip-flop. Un modo è quello di violare l'impostazione dell'ingresso e i tempi di attesa, per effettuare una transizione quando il flip-flop prevede che l'input sia stabile. L'altro è quello di violare i livelli logici di ingresso, per far sì che l'ingresso di dati flip-flop sieda a un livello di tensione intermedio. Un flip-flop che è metastabile può produrre entrambi i tipi di violazione sul suo output, per passare al prossimo flip-flop.