# Difference between revisions of "Meta-stability"

Meta-stability refers to a situation in which a digital circuit element (usually one involving feedback - i.e. outputs are connected back to inputs) which is theoretically binary is actually in a state which is neither '0' nor '1'. (This is an instance of Vonada's Maxim that 'digital circuits are made from analog parts'.)

Generally, if the output is 'toward' one of those two values, the circuit moves quickly (through feedback) all the way to that value. However, if it is balanced precisely in the middle, it may take a while before it fluctuates to one side or the other, and then rapidly moves to that value.

This situation may resolve itself quickly (i.e. considerably faster than the speed of the overall circuit), in which case it is generally not an issue; or it may persist for some time (in theory, for an un-bounded period), in which case it can be a significant problem.

Note that there is no way to avoid this situation (and considerable theoretical work has gone into studying it, and 'proves' that there is no solution). The best one can do is create circits that ask 'is it still trying to decide', and if so, wait.

## Latches and arbiters

The most common circuit to display this issue is the latch, which is a circuit with feedback. In line with the axiom above, this feedback is not digital (i.e. restricted to '0' or '1'), but may be any intermediate voltage.

As long as only one input to a latch changes at a time, there is no problem; the output will change as expected, after the usual propagation delay. However, if several inputs change at the same time (i.e. a race condition), if the timing in the race is perfect (sic), it can cause meta-stability.

One class of circuit in which meta-stability issues are a particular concern are synchronizers of all kinds, particularly arbiters. These are often constructed using latches, and their inputs may contain races (indeed, the function of an arbiter is precisely to resolve races). Unfortunately, it is precisely races which can cause a latch to go meta-stable.

A designer cannot avoid all races (some are inherent in what a particular circuit is trying to do), but they can try and move them to places (in time and/or the logic) where the meta-stability which may ensue isn't harmful.

## History

The problem was independently re-discovered several times, without gathering significant attention, before the LINC group at WUSTL came across it, and after studying it intensively, was able to interest the rest of the electrical engineering profession in it.

It is thought that meta-stability issues may have caused many computer 'crashes' early on, but since meta-stability failures are very hard to reproduce outside of carefully controlled laboratory situations, likely most such crashes went un-recognized for what they were.