Page 439 - Engineering Digital Design
P. 439
9.3 DETECTION AND ELIMINATION HAZARDS 409
in the two enabling paths must not prevent the propagation of the coupled variable to the
output stage. To accomplish this, other noncoupled variable inputs to AND operators must
be active (logic 1), and other noncoupled variable inputs to OR operators must be inactive
(logic 0). All other paths to the output stage must be blocked by proper selection of input
activation levels. The use of a BDD is quite suitable for the purpose of finding hazard cover.
Moreover, the BDD can also be used to simplify separately static 1-hazard cover and static
0-hazard cover. Note that static 1 and static 0 covers must never be simplified together.
For NXOP, the LPDD (Fig. 9.13a) shows that C must be logic 1 so that the AND operator
does not block path A[l]. The output from the EQV operator, which becomes an input to
the AND operator in path A [2], must also be logic 1. Inputs B and D must therefore be
logically equivalent so as to enable path A [2] to the output. There are no other paths to
consider. Thus, the hazard cover is BCD for the static 1-hazard and BCD = (B + C + D).
Step III: Add the hazard cover to the original function by using an OR operator for
static 1-hazard cover and by using an AND operator for a static 0-hazard cover. The
1-hazard cover and the 0-hazard cover must be added separately but may be added in
either order. In Eq. (9.19) the static 1-hazard cover is added to N before the static 0-hazard
cover. If the 0-hazard cover were added to Eq. (9.19) before the 1-hazard cover, the result
would be
N = {[(A 0 fl)C] © [(B O D)A] • (B + C + D)} + BCD (9.20)
Hazard cover
Eqs. (9.19) and (9.20) have gate/input tallies of 9/20, excluding inverters. There is often
little advantage of one implementation over the other.
9.3.4 Detection of Dynamic Hazards in Complex Multilevel XOR-Type Functions
Up to this point the discussion has centered around the detection and elimination of static
hazards in multilevel XOR-type functions. As it turns out these functions also have a
propensity to form dynamic hazards, and there may or may not be a means of eliminating
these defects. One example is the five-variable, four-level function given by
K = [B + (A®X)]Q {[Y + (A 0 #)] O [A + Z]}. (9.21)
The LPDD for this function, presented in Fig. 9.16a, reveals both static and dynamic
hazards as indicated in Figs. 9.16b and 9.16c. The enabling path conditions for inputs A
and B required to produce the static 1 and static 0 hazards are found in the same manner as
for function N in Fig. 9.13. Obviously, static hazard analysis is considerably more involved
than the analysis for function N. Furthermore, the additional logic required to eliminate
all static hazards in function K is considerable. To eliminate both static 1 and 0 hazards
requires that four p-terms be ORed to function K in Eq. (9.21) and by the ORing of three
s-terms to that result, as required by Fig. 9.16b. The order in which the ORed and ANDed
terms are added is immaterial.
The input conditions required to produce dynamic hazards in function K are given in
Fig. 9.16c. Remember: Dynamic hazards can exist in a given function only if there are
three or more paths of an input to the output. This condition is satisfied for input A as
indicated. Notice that a dynamic hazard is identified in an LPDD when the enabling paths