In a previous lecture, we discussed how circuits have delays, and that these delays must be considered during circuit design. One common problem that is created by these delays is a static hazard. A static hazard is an error in circuit operation that is caused by different delay paths through a circuit. If a single input variable changes this value and the output should stay a zero before and after the change, that is called a static zero hazard. We'll demonstrate a static one hazard with a multiplexer circuit. As we have previously shown, a 2 to 1 multiplexer can be specified with this K-MAP, a minimal Boolean expression. When we implement this Boolean expression, the circuit will look like this. We'll see how the circuit works. We'll see how the circuit works. We'll see how the circuit works. We'll see how the circuit works. Let's suppose that AND and OR gates incur a 1 nanosecond delay in propagation, and that NOT gates incur a half nanosecond delay in propagation. We can determine the propagation delay of a change in an input, by tracing the path of the signal from input to output. For example, this top path of propagation for S is 2 and a half nanoseconds. In contrast, this bottom path of propagation for S is 2 nanoseconds. This difference in propagation delays in our circuit creates a static one hazard. To better understand how a change in S propagates the circuit, we will define three intermediate test outputs. These test outputs will help us to bug the problem in the circuit. On this timing diagram, we have a test input where the data inputs of the multiplexer are held at a constant 1. We change only the selection input at 3 nanoseconds and 5 nanoseconds. It does a multiplexer should simply choose whether to output either data output. The data output should always be 1. Except maybe that will be undefined for the first 2 nanoseconds as the initial inputs propagate to the output. The complement of S waveform will be an inverted and delayed version of the S waveform. It will also be undefined for a half nanoseconds. The output of the AND gate from the top path will be 1, 1 nanosecond after both S prime and I 0 are 1. It will be 0 undefined at all other times. The output of the AND gate from the bottom path will be 1, 1 nanosecond after the selection input and I 1 are 1. It will be 0 or undefined at all other times as well. Finally, the output will be 1, 1 nanosecond after K 0 and ORK 1 are 1. As you can see, the output dips down to 0 for 1, 1, half an nanosecond here because of the difference of propagation delay from between the top and bottom paths to the OR gate. This dip is a static 1 hazard. Not all static hazards can be or even need to be fixed. But this one can be. If we look at the prime applicants that created our Boolean expression, we can see that when we change the selection input from 1 to 0, the output of 1 was created by different prime applicants with different propagation delays. If we add a non-essential prime applicant to our expression, the change in S will not propagate through that branch of the circuit because S is not an input to that product term. The implementation of the circuit confirms that S does not propagate through this new data path. If we look at the timing diagram of this new circuit, our previous waveforms from our previous were going to remain the same, so we'll just copy and paste those and we will analyze only our new propagation path in output. The new path will be 1 at all times because the inputs are always 1, except for maybe during the first nanosecond when it is undefined. Because the output is 1, when any of the K test variables are 1, the output will always be 1 because K2 is always 1. Our new output matches our desired output. In this lecture, we demonstrated how differences in propagation delays can create static hazards. Some static hazards can be fixed, but not all can be fixed, nor do we necessarily need to fix all static hazards. Sometimes these are not detrimental to the function of the circuit.