Logic Race Conditions
Race condition: defines a condition when a device's output depends
on two [or more] nearly simultaneous events to occur at the input(s) of a
device and cause the device's output to switch. Which input occurred
first causes the device to change, the arrival of the other input may
cause the output to switch back or simply be ignored. Each IC will have a
different propagation delay which will be some number between it's
minimum and maximum delay provided in the data sheet. The problem is that
the fixed propagation delay will vary each time the circuit is built. So
it may work the first time because of the propagation delay, but with
different chips it may not work the second time the circuit is
constructed. Or if the race condition is so close in time, the output may
be unpredictable even with a single circuit.
One way to design in a race
condition is to use the same signal to perform two [opposing] functions.
In some cases a race condition could also be a logic Hazard. Another case for a race condition could be caused from
floating inputs. Multiple floating inputs which perform the same
function could rise to a logic one at random times. So as two floating
inputs rise from a logic 0 to a logic 1, they will race against each
other. Floating inputs rise based on the pins leakage current, and pin
capacitance. Once the wrong input rise to a valid logic level first, the
resultant output of the IC becomes permanent.