Abstract:
A method of designing a clock distribution network in an integrated circuit, the method including: creating a clock distribution network with all cells having a maximum drive strength; supplying parameters of the clock distribution network to a timing analysis tool; in the timing analysis tool, analyzing the timing of the clock distribution network in an iterative process including manipulating the drive strength of at least one cell in the clock distribution network and assessing whether there is an improvement in the timing, wherein the iterative process ceases where there is no improvement in the timing; and outputting a list of cells for which the drive strength was changed.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention relates to designing and manufacturing a clock distribution network in an integrated circuit. 
     2. Discussion of the Related Art 
     In high speed digital design, distributing and managing a system clock presents real challenges. The term “clock skew” is used to denote the tolerance or uncertainty in the arrival time of the active clock edge at state devices due to variation in the propagation delay in the paths of the clock distribution network. Tiny differences in propagation delay over clock traces in a complex digital product often lead to unacceptable degradations in overall system timing margins. This is controlled in current systems using clock drivers or buffers (referred to herein as clock tree cells) which provide one common clock input and a plurality of ganged outputs, These clock tree cells are arranged in a “tree” clock distribution topology, where each cell feeds cells at the next level of the tree or a set of loads at the end of the tree. Loads can be registers implemented as flip-flops (herein flops) or gates. To minimize skew-related issues, delays of all clock traces should be balanced. In system-on-chip (SOC) designs using multi-level clock trees, the worst case skew needs to be controlled between any of the branch nodes. Wherever the path between two branch nodes traverses a clock tree cell input, the input-to-output skew specification for that cell enters the overall skew equation for the chip. The concept of active use of clock skew, or useful skew, has been used to allow overall timing on the chip to be controlled by appropriately selecting clock tree cells, for example to maximize performance of the system or assist in timing closure. For example, where a flop driven by a clock has tight timing to one side and relaxed timing on the other, a tool can try to move the clock edge toward the relaxed side by altering the size of clock tree cells and changing clock branching points. However, it can be a complex issue to optimize system behavior by adjusting skew behavior due to the limitation of existing tools. 
     One existing technique for using active clock skew is integrated with a clock tree synthesis (CTS) tool. That is, as the clock tree is synthesized, the drive strength of clock tree cells and the location of branch points are adjusted to improve the overall timing of the integrated circuit. However, because the technique is applied before the detailed routing of the design is established, the results can be sub-optimal. 
     Another technique is to manually adjust clock skew after routing of the design has been completed. This has the advantage that it is based on accurate data from the integrated circuit because it uses the results of a timing analysis tool including parasitic data. However, it is a manually intensive process. Moreover, changes which would require clock tree cells to be upsized may not be possible without disturbing other circuits within the integrated circuit. 
     SUMMARY OF THE INVENTION 
     According to one aspect of the present invention there is provided a method of designing a clock distribution network in an integrated circuit, the method comprising: creating a clock distribution network with all cells having a maximum drive strength; supplying parameters of the clock distribution network to a timing analysis tool; in the timing analysis tool, analyzing the timing of the clock distribution network in an iterative process including manipulating the drive strength of at least one cell in the clock distribution network and assessing whether there is an improvement in the timing, wherein the interactive process ceases where there is no improvement in the timing; and outputting a list of cells for which the drive strength was changed. 
     Where the footprint of a cell increases with its drive strength, it can be useful to first reduce the drive strength of the cells to an intermediate drive strength. This step can be carried out in the timing analysis tool. 
     Another aspect provides a timing analysis tool for analyzing a clock distribution network of an integrated circuit, the tool comprising program code means which when executed in a computer carries out: analyzing the timing of the clock distribution network in an iterative process including manipulating the drive strength of at least one cell in a clock distribution network and assessing whether there is an improvement in the timing, wherein the iterative process ceases when there is no improvement in the timing; and outputting a list of cells for which the drive strength was changed. 
     A further aspect provides a method of manufacturing an integrated circuit using the design method hereinabove defined and using the list of cells in the manufacturing process of the integrated circuit. 
     A further aspect of the invention provides an integrated circuit when manufactured by this method. 
     A further aspect of the invention provides a computer system for designing a clock distribution network in an integrated circuit, the computer system comprising: a database holding data defining a clock distribution network with all cells in the network having a maximum drive strength; a processor adapted to execute a timing analysis tool which, when executed, analyses the timing of the clock distribution network in an iterative process including manipulating the drive strength of at least one cell in the clock distribution network and assessing whether there is an improvement in the timing, the iterative process ceasing when there is no improvement in the timing; and a storage device for holding a list of cells output from the timing analysis tool for which the drive strength was changed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a better understanding of the present invention and to show how the same may be carried into effect, reference will now be made to the accompanying drawings, in which: 
         FIG. 1  is a schematic diagram showing relevant components of an integrated circuit; 
         FIG. 2  is a flow chart illustrating a method according to one embodiment of the present invention; 
         FIG. 3  is a flow chart illustrating the clock tree cell manipulation process; and 
         FIG. 4  is a schematic block diagram illustrating a computer system for implementing one embodiment of the invention. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  illustrates an integrated circuit  2  having a clock input  4  which receives a clock signal CLK. A clock distribution network  6  comprises a set of clock traces or paths, each path including one or more clock tree cells  8 . In  FIG. 1 , a common clock path  10  is shown including cells  8   a ,  8   b ,  8   c . A common clock path  10  branches at a branch node  12  into clock branch paths  14 ,  16 . The clock branch path  14  is shown including clock tree cells  8   d ,  8   e ,  8   f  and the clock tree path  16  is shown including clock tree cells  8   g ,  8   h ,  8   i . Each of the branch clock paths terminates at the clock input of a respective flop  18 ,  20 . The Q output of the first flop  18  is connected via critical path logic  22  to the D input of the second flop  20 . 
     It will readily be appreciated that these components are illustrative only, and that in a real integrated circuit the clock distribution network and the layout of flops and logic will be considerably more complex. For example, the number of flops could be around 50,000, with around 4,000 clock tree cells. Thus, while it may appear simple to apply active use of clock skewing to optimize operation of the flops in  FIG. 1 , in real life the sheer number of flops and clock tree cells, together with the complexity of the clock distribution network, make such a task very difficult. In  FIG. 1 , it can be seen that the clock tree path  14  supplies the clock CLK to the start point of the logic path, the start point being the flop  18 . Conversely, the clock tree path  16  supplies the clock CLK to the end point of the logic path, being the second flop  20 . Data is transferred from the queue output of the first flop  18  via the critical path logic  22  to the D input of the second flop  20 . The delay in the clock tree paths  14 ,  16  can be adjusted by adjusting the drive strength of the clock tree cells  8   d  . . .  8   i . By increasing the drive strength of the clock tree cells, the delay in a particular clock tree path can be decreased. Conversely, by reducing the drive strength of the clock tree cells, the delay can be increased. 
     In order to make useful use of clock skew, normally the aim is to experiment with increasing the drive strength of the clock tree cells in the clock tree path  14  to speed up the clock going to the start point of the logic path, and decreasing the drive strength to slow down the clock in the clock tree path  16  going to the end point of the logic path. In this way, it is possible to speed up the launch of data at the beginning of the critical logic path and simultaneously slow down the clock to receive the data at the end point of a logical path, thereby decreasing the effect of the critical logic path on the overall timing. 
     The drive strength of clock tree cells can be adjusted by using cells of differing sizes from a digital cell library. A difficulty that has arisen in the past, is that, if a design is implemented with certain optimized clock tree cells for overall performance, and then an attempt is made to make active use of clock skew which would involve upsizing clock tree cells, this can impact the overall layout of the design, and effectively mean that another design iteration is required. A method which avoids this problem will now be described with reference to  FIG. 2 . 
     In the first step of the method, S 1 , an integrated circuit is designed in a conventional way, apart from the fact that all clock tree cells are included with the maximum allowed drive strength in the cell library, and hence the largest allowed clock tree cell in the cell library. Data from this design is contained in a physical design database  30 . At step S 2 , a net-list comprising cell types/sizes and their connectivity and parasitic is extracted from the physical design database  30  and supplied to a static timing analysis tool  32 . At step S 3 , the net-list and parasitic data is loaded into the timing analysis tool. At step S 4 , all clock tree cells are replaced with a medium drive strength cell. The timing analysis tool reports at step S 5  the worst case timing path in the integrated circuit and at step S 6  a manipulation process is executed to manipulate the clock distribution network to upsize and/or downsize cells to adjust the timing. The manipulation process is achieved within the static timing analysis environment using a tcl script, an example of which is appended as Appendix A. The manipulation process works its way through the clock distribution network, adjusting cell sizes dependent on branch nodes, start points, end points and timing parameters. After the manipulation process at S 6  has been completed, the new worst case path is reported at step S 7  and an assessment is made at step S 8  as to whether or not there has been an improvement in timing. If there has, the manipulation process S 6  is run again. If there has not, at step S 9  a list of clock tree cell changes is written out and output from the static timing analysis tool  32 . At step S 10 , this list is supplied as an ECO (Engineering Change Order) to the physical database. At step S 11 , the database is repaired following the ECO and the repaired data become a new physical database  34 . At step S 12 , stream out data is supplied from the new physical database to a memory  36  holding data for chip fabrication. Additionally, at step S 13  a net-list and parasitic can be extracted from the new physical database  34  to be returned to the static timing analysis tool  32  to validate timing improvements and check that no disturbances occurred in the repair step. 
       FIG. 3  shows in more detail the steps of the manipulation process S 6 . The worst case path is reported at step S 0 . At step S 20  the process obtains a list of clock tree cells from the clock node  4  to the start point  18  of the worst case critical path. Assume for this description that the worst case path is that represented by logic  22  in  FIG. 1 . Thus, the clock tree cells identified in this case would be  8   a  to  8   f . At step S 21  a list is obtained of clock tree cells to the endpoint of a critical path. In this case, the cells would be  8   a  to  8   i.    
     At step S 22 , the branch point or divergence point  12  is identified by skipping along the common part of the clock tree to compare common cells in the list obtained in steps S 20  and S 21 . This identifies the branch point at the first divergent level (n=1) of the clock tree. At step S 23 , the cell at the current divergent level between the branch point and the start point of the path (e.g. One of cells  8   d  to  8   f ) is then upsized. At step S 24  the timing is checked. If there is an improvement, the new size is stored at step S 24   a  and the process loops back to step S 0 . If there is no improvement, the process moves to step S 24   b  which reverts the cell to its previous size. Next, at step S 25 , the equivalent cell (e.g. One of cells  8   g  to  8   i ) on the divergent part of the clock path to the end point  20  is downsized. The timing is checked at step S 26 , and again if there is an improvement, the process stores the new size at step S 24   a  and goes back to step S 0 . If there is no improvement, the process reverts the cell to its previous size at step S 27 . Step S 28  checks to see if the process has reached the final level of the clock tree. If so, the process ends. If not, it loops back to step S 23  for the next level (n+1). 
     In the above-described method, since the largest size of clock tree cells is used for initial placement, after the global downsizing of clock tree cells to a medium or intermediate size, there is space to re-upsize clock tree cells if necessary. The upsizing/downsizing can cause some repairs needed to the layout to reconnect the pins on the clock tree cells, but this could be easily fixed by physical design tools and does not disturb routing (and by implication timing) to any significant extent. 
     The same technique may be implemented using multi-threshold voltage (Vt) versions of the same drive clock tree cells if mixing Vt cells in one clock tree is allowed in the design flow. The Vt options affect cell performance by adjusting the transistor switching threshold rather than transistor size. Lower Vt cells are faster and more leaky (larger static current) but have the same physical footprint as their high Vt equivalent. In this case, the initial global downsizing step can be omitted and no repair to the routing is required. 
       FIG. 4  is a schematic block diagram of a computer system for implementing an embodiment of the invention. A processor  50  is arranged to execute various tools and process flows. The processor  50  is connected to the database  30  and is connected also to a storage device  52  which holds a file providing the list of clock tree cell changes produced by step S 9  of the static timing analysis tool. It will be clear that the static timing analysis tool  32  is one of the tools which can be executed by the processor  50 . The processor  50  is also connected to the physical database  34  which holds the final information for streaming out for chip fabrication. 
     Having thus described at least one illustrative embodiment of the invention, various alterations, modifications, and improvements will readily occur to those skilled in the art. Such alterations, modifications, and improvements are intended to be within the spirit and scope of the invention. Accordingly, the foregoing description is by way of example only and is not intended as limiting. The invention is limited only as defined in the following claims and the equivalents thereto.