Logic redundancy is, in general, not desired. Redundancy, by definition, requires extra parts (in this case: logical terms) which raises the cost of implementation (either actual cost of physical parts or CPU time to process). Logic redundancy can be removed by several well-known techniques, such as Karnaugh maps, the Quine–McCluskey algorithm, and the heuristic computer method.
Main article: Hazard (logic)
In some cases it may be desirable to add logic redundancy. One of those cases is to avoid race conditions whereby an output can fluctuate because different terms are "racing" to turn off and on. To explain this in more concrete terms the Karnaugh map to the right shows the minterms for the following function:
The boxes represent the minimal AND/OR terms needed to implement this function:
The k-map visually shows where race conditions occur in the minimal expression by having gaps between minterms, for example, the gap between the blue and green rectangles. If the input were to change from 1110 {\displaystyle 1110} 1 to 1010 {\displaystyle 1010} then a race will occur between B C D ¯ {\displaystyle BC{\overline {D}}} turning off and A B ¯ {\displaystyle A{\overline {B}}} turning on. If the blue term switches off before the green turns on then the output will fluctuate and may register as 0. Another race condition is between the blue and the red for transition from 1110 {\displaystyle 1110} to 1100 {\displaystyle 1100} .
The race condition is removed by adding in logic redundancy. Both minterm race conditions are covered by addition of the yellow term A D ¯ {\displaystyle A{\overline {D}}} .
In this case, the addition of logic redundancy has stabilized the output to avoid output fluctuations because terms are racing each other to change state.
this is usual short notation for A = 1 {\displaystyle A=1} , B = 1 {\displaystyle B=1} , C = 1 {\displaystyle C=1} , and D = 0 {\displaystyle D=0} ↩