STA & SI:: Chapter 1: Introduction | |||||
1.1a | 1.1b | 1.1c | 1.2a | 1.2b | |
INTRODUCTION | Timing Arc | Unate: Timing Arc | Unateness of Complex Circuit: Timing Arc | LIB File syntax for Logic Gates: Timing Sense | LIB File syntax for Complex Circuit: Timing Sense |
Previous Article is all about "What is Timing Arc?" and "How can you categorize them (Net Arc and Gate Arc; Delay Arc and Constraint Arc)?"
But still we need to understand how timing arc helps us to answer our questions related to any Standard Cell or any Flip-flop or any system (like Macros, IPs)...
- For a Particular Input (Rising or falling), what type of Output (output is rising or falling or no change) you get ?
- How much time (may be in the form of Delay) it will take to respond for a particular Input ?
- Is there any constraint on any pin and if yes, then what are those and on what pin ?
First Question can be answered if we know: How Input pin is logically connected with Output pin!
What is the meaning of Logically connection? It Means, what is going to happen “For Rising Input"...whether Output
- Fall or
- Rise or
- No Change
Timing Arc help us to identify this with a property known as Unate.
UNATE
Unate are of three types:
- Positive Unate:
- Rising Input – Rising Output OR No change in Output.
- If we apply Rising signal to the input of a Timing Arc, corresponding output signal is either Rising or there is "No change".
- Falling Input – Falling Output OR No change in Output
- If we apply Faling signal to the input of a Timing Arc, corresponding output signal is either Falling or there is "No change".
- E.g:
- BUFFER
- AND gate (will explain this in detail later below)
- OR gate (will explain this in detail later below)
- Negative Unate:
- Rising Input – Falling Output or No change in Output.
- If we apply rising signal to the input of a Timing Arc, corresponding output signal is either Falling or there is "No change".
- Falling Input – Rising Output or No change in Output
- If we apply Falling signal to the input of a Timing Arc, corresponding output signal is either Rising or there is "No change".
- E.g:
- Inverter (NOT gate)
- NAND gate (will explain this in detail later)
- NOR gate (will explain this in detail later)
- Non_Unate:
- The non-unate represents a function where change in output value cannot be determined from the direction of the change in the input value. Output pin value is not dependent on single Input Pin. It also depends on 2nd Input pin. Since Timing arc will be between the Single Input and Single Output pin, so it’s difficult to identify this relationship directly.
- E.g:
- XOR gate (will explain this in detail later)
- XNOR gate (will explain this in detail later)
Buffer:
In the Buffer there is one input pin and one output pin. We all know the Behavior of BUFFER gate as:-- Rising Input results Rising Output.
- Falling Input results Falling Output.
So, Timing Arc between Input and Output pin of Buffer are Positive Unate.
Remember, there are 2 Timing arcs in Buffer: One for Rising Edge and other for Falling edge.
Inverter:
In the NOT Gate (Inverter) there is one input pin and one output pin. Behavior of Inverter also we know very well.- Rising Input results Falling Output.
- Falling Input results Rising Output.
So, Timing Arc between Input and Output pin of Inverter are Negative Unate.
Remember, there are 2 Timing arcs in Inverter: One for Rising Edge and other for Falling edge.
AND Gate:
Above is the "Truth Table" of AND gate (for Input Pin A and B, Output Pin Y).From here, you can see that:
A = 0 , B (0-> 1) ; Y - No change (constant at 0)
A = 1 , B (0-> 1) ; Y - Changes from 0-> 1
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - No change (constant at 0)
B = 1 , A (0-> 1) ; Y - Changes from 0-> 1
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - No change (constant at 0)
A = 1 , B (1-> 0) ; Y - Change from 1-> 0
B = 0 , A (1-> 0) ; Y - No change (constant at 0)
B = 1 , A (1-> 0) ; Y - Change from 1-> 0
So, in both the cases - Timing arc between A-Y and B-Y is Positive Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in AND gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
OR Gate:
Above is the "Truth Table" of OR gate (for Input Pin A and B, Output Pin Y).
From here, you can see that:
A = 0 , B (0-> 1) ; Y - Changes from 0-> 1
A = 1 , B (0-> 1) ; Y - No change (constant at 1)
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - Changes from 0-> 1
B = 1 , A (0-> 1) ; Y - No change (constant at 1)
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - Change from 1-> 0
A = 1 , B (1-> 0) ; Y - No change (constant at 1)
B = 0 , A (1-> 0) ; Y - Change from 1-> 0
B = 1 , A (1-> 0) ; Y - No change (constant at 1)
So, in both the cases - Timing arc between A-Y and B-Y is Positive Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in OR gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
NAND Gate:
Above is the "Truth Table" of NAND gate (for Input Pin A and B, Output Pin Y).
From here, you can see that:
A = 0 , B (0-> 1) ; Y - No change (constant at 1)
A = 1 , B (0-> 1) ; Y - Changes from 1-> 0
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - No change (constant at 1)
B = 1 , A (0-> 1) ; Y - Changes from 1-> 0
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - No change (constant at 1)
A = 1 , B (1-> 0) ; Y - Change from 0-> 1
B = 0 , A (1-> 0) ; Y - No change (constant at 1)
B = 1 , A (1-> 0) ; Y - Change from 0-> 1
So, in both the cases - Timing arc between A-Y and B-Y is Negative Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in NAND gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
NOR Gate:
Above is the "Truth Table" of NOR gate (for Input Pin A and B, Output Pin Y).
From here, you can see that:
A = 0 , B (0-> 1) ; Y - Changes from 1-> 0
A = 1 , B (0-> 1) ; Y - No change (constant at 0)
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - Changes from 1-> 0
B = 1 , A (0-> 1) ; Y - No change (constant at 0)
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - Change from 0-> 1
A = 1 , B (1-> 0) ; Y - No change (constant at 0)
B = 0 , A (1-> 0) ; Y - Change from 0-> 1
B = 1 , A (1-> 0) ; Y - No change (constant at 0)
So, in both the cases - Timing arc between A-Y and B-Y is Negative Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in NOR gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
XOR Gate:
Above is the "Truth Table" of XOR gate (for Input Pin A and B, Output Pin Y).
From here, you can see that:
A = 0 , B (0-> 1) ; Y - Changes from 0-> 1
A = 1 , B (0-> 1) ; Y - Changes from 1-> 0
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - Changes from 0-> 1
B = 1 , A (0-> 1) ; Y - Changes from 1-> 0
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - Change from 1-> 0
A = 1 , B (1-> 0) ; Y - Change from 0-> 1
B = 0 , A (1-> 0) ; Y - Change from 1-> 0
B = 1 , A (1-> 0) ; Y - Change from 0-> 1
This one is a bit different from other gates (which we have reviewed till now).
You can see that change in the output can't be decided just by seeing/observing one input pin. For B changes from '0' to '1', output can change from '1' to '0' or '0' to '1' depends on the value at A. In other way, I can say that change in the output don't have any pre-defined pattern with respect to Pin B or Pin A indivisibly. It depends on collective behavior of A and B.
Such type of Timing Arcs neither fall in the category of positive_unate nor in negative_unate. These Timing Arcs are Non_Unate.
Timing arc between A-Y and B-Y is Non Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in XOR gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
XNOR Gate:
Above is the "Truth Table" of XNOR gate (for Input Pin A and B, Output Pin Y).
From here, you can see that:
A = 0 , B (0-> 1) ; Y - Changes from 1-> 0
A = 1 , B (0-> 1) ; Y - Changes from 0-> 1
Similarly, for A pin:
B = 0 , A (0-> 1) ; Y - Changes from 1-> 0
B = 1 , A (0-> 1) ; Y - Changes from 0-> 1
In the same way we can also summarize the falling edge:
A = 0 , B (1-> 0) ; Y - Change from 0-> 1
A = 1 , B (1-> 0) ; Y - Change from 1-> 0
B = 0 , A (1-> 0) ; Y - Change from 0-> 1
B = 1 , A (1-> 0) ; Y - Change from 1-> 0
Explanation is same as in case of XOR gate - copy paste the same paragraph here :).
You can see that change in the output can't be decided just by seeing/observing one input pin. For B changes from '0' to '1', output can change from '1' to '0' or '0' to '1' depends on the value at A. In other way, I can say that change in the output don't have any pre-defined pattern with respect to Pin B or Pin A indivisibly. It depends on collective behavior of A and B.
Such type of Timing Arcs neither fall in the category of positive_unate nor in negative_unate. These Timing Arcs are Non_Unate.
Timing arc between A-Y and B-Y is Non Unate for both "Negative Rising" and "Positive Rising" signal.
Capturing again:
There are 4 Timing arcs in XNOR gate:
- Input Pin A to Output Pin Y for Rising Edge
- Input Pin A to Output Pin Y for Falling Edge
- Input Pin B to Output Pin Y for Rising Edge
- Input Pin B to Output Pin Y for Falling Edge
I am sure, by now, you have developed or revised the concept of Unate in Timing Arc. With the help of Truth table, you can easily figure out the Unateness of any Timing arc. Even If you are going to design any circuit or system (which is not in the list of Standard gates), then you can yourself figure out the Unateness property of different Timing arcs in that system.
We will discuss about that in more detail in next few articles. Like how these (Timing Arc , Unateness ) represent in Timing Library, how different values are captured in Timing Library and a lot about the Timing Arcs. :)
Interview Questions
I have tried to capture few Interview questions here which can help you big time during your preparation.
- What are the different types of Timing Arc ?
- What is Unateness of a Timing Arc ?
- What do you mean by Positive_unate of a Timing Arc?
- What do you mean by Negative_unate of a Timing Arc?
- What is the difference between Non-unate Timing arc and Positive Timing Arc ?
- How many Timing Arcs are present in case of Buffer?
- How many Timing Arcs are present in a 2 input NAND gate?
- How to represent Timing Arcs in the Timing Library ?
- A timing arc is positive Unate, if we apply rising edge at the input of the Timing arc, corresponding output will change or not ?
- How many Timing arcs are present for a 3 input XOR gate?
- What's the Unateness of different Timing Arc for a 3 input XNOR gate ?
The newly launched product "Static Timing Analysis (STA) Papers" by VLSI Expert Pvt. Ltd., can help you in preparing for Interview & written test. These papers are designed after having discussion with by Industry people.