Before Understanding the Timing Arc, you have to consider the design from the "END USER" point of view. "END USER" doesn't mean only person who are using the End Product (Like mobile Phone or Laptop etc), "END USER" can be anyone. It can be a user of any CHIP , or may be user of a particular IP/Macro or may be a user of a Standard Cell Library.
Lets take an example of Standard Cell (assume NAND GATE). Ask yourself ... What all information you require, If you want to use NAND gate in your design ?
You may be interested to know -
- How much time (may be in the form of Delay) it will take to respond for a particular Input ?
- For a Particular Input (Rising or falling), What type of Output (output is rising or falling or no change) you will get ?
These questions are about the Normal Standard Cell (NAND Gate). But what about more complex circuit/CELL like Flip-Flop ( There will be more questions because it has more input and outputs in comparison to Normal NAND GATE.)
E.g For D Flip-Flop : There are
- 2 Input Pin (D and CLK) and
- 2 output Pin (Q and Q') and
- 2 asynchronous Pin (RESET and SET).
It means the number of Timing/Delay information are large in this case. Because there are so many input and output pins and their corresponding combinations are also large in number. Apart of this there are so many dependency of output of one pin on other pin that it's not consider as simple as NAND gate. In general, we are not interested what's going on inside the FlipFlop (Like how many NAND gates are there and how they are connected), we are only interested to know
- How and when we will get the Output after applying a certain input.
- Is there any constraint and if yes, then what are those and on what pin.
So basically, in every case (normal combinational gate or a complex sequential circuit) "END USER" has only concern about the relationship between different Pins/Port of a Product (like GATE, FLIP-FLOP, IP).
Note: They may have other concern also, but right now we are talking about Concerns only related to Timing. :)
To answer these questions, we do a lot of experiment (Technical Terminology : Characterization or say Simulation) and come up with a relationship between different Pins in terms of Timing numbers (which is more commonly known as Timing arcs).
Timing Arc represent the timing relationship between 2 Pins of any element or Block or any boundaries. Basically it represent the timing characteristic of the element or block or Boundaries.
Timing arc has a Start-point and an Endpoint.
- The start-point can be an Input, output or inout.
- The End is always an output pin or an inout pin (with few exception).
- Most of the Time arc Endpoint is always an output pin. But there are few cases where it can be input pin.
- These are constraint timing arc. Like Setup, Hold, Recovery or Removal constraint. These are between input to input pins
On the basis of above understanding, I can say that Timing Arc can be
- Delay Arc
- Constraint Arc
Lets consider the Below System, where there are 4 input X1- X4 and 1 output Y1. You can see that there are 4 Arcs between Input pins and output pin. For better understanding we named these as "Input to output Timing Arcs".
Now this is just a small block and End user don't want to know anything about this (what's inside this), if we provide the information about these Input-to-output Timing Arcs. But if we will see what's inside, then it may have Nets and Gates or Cells.
From above figure, you can easily realized that Timing arc can be for NETS also. Now, I can say very easily that Timing arcs can be divided into
- Net Arc
- Cell Arc
- Combinational Cells
- Sequential Cells
Note: Macro / Custom Blocks also designed using the cells and Nets. So these custom Blocks are again similar to the system/blocks as shown in above figures. Only difference will be that it’s small in size.
In the Next Article, we will discuss how Timing Arc will help you to Answer your questions. We will also discuss more about the Cell Arc and Net Arc. We will also try to capture, how these information is captured in Timing Library.