1. Field of the Invention
The present invention relates to computer-aided design (CAD) of integrated circuits, and more specifically to a method and apparatus to perform accurate timing analysis of integrated circuits when combinatorial logic offers a load to other components of an IC
2. Related Art
Integrated circuits (ICs) generally contain various components (flip-flops, pins, logic gates, multiplexers, etc) connected in a desired topology. Components such as logic gates and multiplexers, which do not store bit values or state information in general, are generally referred to as combinatorial logic. On the other hand, components such as flip-flops, which store state information, are referred to as sequential elements.
Timing analysis is often performed during the design phase of an IC. Typically, digital data representing the IC design is analyzed using various design tools. Timing analysis is generally performed to ensure that the signals are propagated by combinatorial logic and captured by sequential elements in a time duration permitted by the period of a clock signal used to drive the IC. In general, it is desirable to use a clock signal of short period to the extent timing violations are not experienced in the operation of an IC, and timing analysis is performed to detect any potential timing violations.
One factor considered in timing analysis is the load offered at the output of each component (“present component”) by a subsequent component (connected to the output). A higher load (offered by the subsequent component(s)) generally requires greater propagation time for a signal generated (as an output) by the present component. In general, the propagation times need to be considered in timing analysis since the clock frequency/period driving an IC is determined by the propagation times.
At least for such a reason it is desirable to perform timing analysis, which takes into consideration accurate load offered by combinatorial logic.
The present invention will be described with reference to the following accompanying drawings.
In the drawings, like reference numbers generally indicate identical, functionally similar, and/or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) in the corresponding reference number.
1. Overview
An aspect of the present invention improves the accuracy of timing analysis of an integrated circuit based on a recognition that the capacitance (and thus the load) offered at an input pin of a combinatorial element is higher when the output of the combinatorial element switches state compared to a scenario in which the output does not change. A combinatorial element generally refers to components such as logic gates.
In an embodiment described below, a first capacitance value offered at an input pin of a combinatorial element is determined when the output path (of the combinatorial element) is switching. Similarly, a second capacitance value at the input pin is determined when the output path is not switching. The first capacitance value is associated to the input pin of the combinatorial element while performing timing analysis of the integrated circuit for setup time errors. Similarly, the second capacitance value is associated to the input pin of the combinatorial element while performing timing analysis of the integrated circuit for hold time errors.
Such a determination and association of different value of capacitance to the input pin of the combinatorial element for different analysis conditions generally results in accurate representation of propagation delays in the operation of the combinatorial logic and hence may result in accurate timing analysis.
Several aspects of the invention are described below with reference to examples for illustration. It should be understood that numerous specific details, relationships, and methods are set forth to provide a full understanding of the invention. One skilled in the relevant art, however, will readily recognize that the invention can be practiced without one or more of the specific details, or with other methods, etc. In other instances, well structures or operations are not shown in detail to avoid obscuring the invention.
2. Example Circuit
The output (path 112) of flip-flop 110 is shown connected to pin B of NAND gate 120 and pin C of inverter 130 and hence the load on output path 112 is affected by capacitance at pin B of NAND gate and capacitance at pin C of inverter 130. When a higher load is offered on path 112, flip-flop 110 may generate output signals with a corresponding delay.
Flip-flop 160 is shown clocked by CLK signal and receiving the output of inverter 130 on D-input. As may be appreciated, for accurate latching of data received on D-input, the D-input and CLK input need to be received with appropriate timing relationship (as described in further detail below with reference to
NAND gate 120 represents an example combinatorial element, which offers a higher load at pin B (path 112) when the output at path 122 switches, in comparison to a situation in which path 122 does not switch. As may be appreciated, the output of a 2-input NAND gate switches in response to a bit change on one pin, when the other pin is at logic high (1). As may be readily observed, NAND gate 120 is driven by flip-flop 160.
An aspect of the present invention takes advantage of the observation that the offered load is different depending on whether the output of a combinatorial element switches or not, and enables accurate timing analysis of integrated circuits, as described below with examples. Example problems that would be presented if difference of load is not taken into account, is first described below.
3. Example Problems
The timing of waveforms 210 and 230 needs to be such that duration (236) between rising edge 235 of D input and clock edge 215 needs to be greater than or equal to a setup time required by the implementation of D-flip flop. Similarly, the duration (237) between clock edge 215 and falling edge 238 of D input also needs to be greater than or equal to a hold time specification.
Waveform 250 illustrates the failure of setup time requirement if the load offered by NAND gate 120 on path 112 is substantially more than an expected value. As may be appreciated, in case of such underestimation, D-input would be received later than expected. Thus, the D-input of flip-flop 160 would be received later than waveform 230, as depicted by waveform 250. Assuming that time duration 256 between clock edge 215 and rising edge 255 (of waveform 250) is less than the corresponding setup time,OLE_LINK1 flip-flop 160 may not latch the data value on D-input accurately (which is undesirable).
OLE_LINK1Waveform 260 represents the D-input if the load offered by NAND gate 120 on path 112 is substantially overestimated. In comparison to waveform 250, waveform 260 occurs sooner in time. Assuming that time duration 267 between clock edge 215 and falling edge 268 (of waveform 260) is less than the corresponding hold time, flip-flop 160 may not latch the data value on D-input accurately (which is undesirable).
While the circuit of
It is therefore desirable that the timing analysis takes into account the difference of offered loads (by combinatorial elements). A cell library may be accurately characterized using various aspects of the present invention, as described below in further detail with reference to
4. Characterizing Cell Libraries for Accurate Timing Analysis
In addition, each cell may be designed using one or more logic gates or custom designed. A combinatorial element refers to each of such logic gates or a portion of the custom circuit which behaves as a logic gate in terms of switching the value on a path (either internal to the cell or providing as an external output) when appropriate input vectors are applied.
Continuing with reference to
In step 310, a first set of input vectors that would cause the combinatorial element connected to the pin of interest to switch. In the example circuit of NAND gate 120 of
In step 320, a second set of input vectors that would not cause the stage connected to the pin of interest may be determined. With respect to NAND gate 120, the input vectors may equal 00 and 01.
In step 330, a determination is made as to whether a cell of interest needs to be characterized to check setup time or hold time violations. In an embodiment, if the cell is from a library designed for a strong process corner (and/or high temperatures), the signals in the data path are assumed to be propagating faster, and thus hold time violation is of particular concern. On the other hand, if the cell is from a library intended for a weak process corner, setup time violation is of particular concern. Using such considerations, a determination may be made as to whether the cell needs to be characterized for setup time or hold time violation. The data in a library may provide the corresponding information (as to whether the library is designed for strong or weak processor corner, etc.).
In step 340, the capacitance of the pin(s) of interest is measured when the second set of input vectors are applied to the combinatorial element. With reference to the example circuit of
In step 350, the capacitance of the pin of interest is measured when the first set of input vectors are applied to the stage. The capacitance may be measured similar to as in step 340. The capacitance thus measured may represent a maximum capacitance (Cmax), and thus maximum load offered by NAND gate 120. Control then passes to step 360.
In step 360, the capacitance thus measured may be associated to the pin in the library. In general, such association is performed by storing the corresponding value in a pre-determined location/data structure, depending on the implementation of the design tools. In step 370, timing analysis of the integrated circuit is performed taking into consideration the capacitance values thus stored in step 360.
Due to the use of one of the two capacitance values as described above, the actual capacitance offered at each pin during production/application use may equal the values associates in step 360. Accordingly, the timing analysis may be accurate. The flow chart ends at step 399.
Even though the description above is provided with reference to a cell containing a single logic gate, it should be appreciated that the technique can be applied to cells containing multiple logic gates as well. In such a scenario, the behavior/operation of the combinatorial element directly connected to the input pin sought to be characterized is of particular interest. For example, with reference to the cell of
5. Determining Capacitance Values
With reference to
With reference to
The charge at pin B may be computed by integrating the curve of
The capacitance value at any point may be determined by dividing the corresponding charge value on curves of
While the description above is provided with reference to characterizing cell libraries, it should be appreciated that the approaches can be used in general for determining whether an integrated circuit can be operated at a desired clock speed. The load offered with and without switching is considered in performing timing analysis. The description is continued with a illustration of implementing various aspects of the present invention as a software program.
6. Software Implementation
Computer system 600 may contain one or more processors such as central processing unit (CPU) 610, random access memory (RAM) 620, secondary memory 630, graphics controller 660, network interface 680, and input interface 690. All the components except display unit 670 may communicate with each other over communication path 650, which may contain several buses as is well known in the relevant arts. The components of
CPU 610 may execute instructions stored in RAM 620 to provide several features of the present invention. CPU 610 may contain multiple processing units, with each processing unit potentially being designed for a specific task. Alternatively, CPU 610 may contain only a single processing unit. RAM 620 may receive instructions from secondary memory 630 using communication path 650. Data representing cell libraries and associated data values computed above may be stored and retrieved from secondary memory 630 (and/or RAM 620) during the execution of the instructions.
Graphics controller 660 generates display signals (e.g., in RGB format) to display unit 670 based on data/instructions received from CPU 610. Display unit 670 contains a display screen to display results from timing analysis. Input interface 690 may correspond to a key and/or mouse, and generally enables a user to interact and provide inputs while performing timing analysis.
Secondary memory 630 may contain hard drive 635, flash memory 636 and removable storage drive 637. Secondary storage 630 may store the software instructions and data, which enable computer system 600 to provide several features in accordance with the present invention. Some or all of the data and instructions may be provided on removable storage unit 640, and the data and instructions may be read and provided by removable storage drive 637 to CPU 610. Floppy drive, magnetic tape drive, CD drive, DVD Drive, Flash memory, removable memory chip (PCMCIA Card, EPROM) are examples of such removable storage drive 637.
Removable storage unit 640 may be implemented using medium and storage format compatible with removable storage drive 637 such that removable storage drive 637 can read the data and instructions. Thus, removable storage unit 640 includes a computer readable storage medium having stored therein computer software and/or data. An embodiment of the present invention is implemented using software running (that is, executing) in computer system 600.
In this document, the term A computer program product@ is used to generally refer to removable storage unit 640 or hard disk installed in hard drive 635. These computer program products are means for providing software to computer system 600. As noted above, CPU 610 may retrieve the software instructions, and execute the instructions to provide various features of the present invention described above in detail.
7. Conclusion
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the present invention should not be limited by any of the above described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.