Abstract:
A method and system to improve the performance of an integrated circuit (IC) chip by removing timing violations detected by performing a statistical timing analysis, given distributions of process and environmental sources of variation. The distributions are quantized using a minimum distortion criterion into discrete values. For each timing node of the IC circuit, a discrete minimum and maximum operation is performed on the timing parameters using a subset of combinations of the discrete values. The results of the discrete minimum and maximum operation are then de-quantized and propagated to a subsequent timing node and edge thereof. The process continues until one or more primary inputs and outputs of the IC chip are reached. The design of the IC chip is modified by removing all the timing violations identified.

Description:
BACKGROUND 
       [0001]    This invention generally relates to design automation of Very Large Integrated Circuits (VLSI) chips, and more particularly to a Statistical Timing Analysis performing an efficient statistical N-way maximum/minimum operation for Gaussian, non-Gaussian, linear, and non-linear distributions. 
       RELATED ART 
       [0002]    It is known in the art that the electrical characteristics of devices and their respective interconnects vary from one integrated circuit (IC) chip to another as a function of semiconductor manufacturing process variations, changing environments, job lots, variations in the fabrication steps, and the like. The above considerations are exacerbated as the chip circuit density increases, as groundrules become tighter, making variations larger and more numerous. In order to harness the problems caused by the stated variations, the effects on chip timing of the actual statistical manufacturing characteristics of process parameters variations are taken into account during the actual design of the circuits. This approach is known in industry as a Statistical Static Timing Analysis (SSTA). 
         [0003]    The Statistical Static Timing Analysis represents an enhancement of a Static Timing Analysis (STA) which has been traditionally used to verify the timing correctness of VLSI chips. STA calculates the timing quantities, primarily switching times, starting from the primary input pins of the chip to determine the earliest and latest possible transition times at its primary output pins. As the Complementary Metal-Oxide Semiconductor (CMOS) process technologies scale down towards nanometer regimes, variability becomes a major concern for the design of VLSI circuits. Variability-aware design automation tools, such as SSTA are required in order to accurately predict the behavior of VLSI circuits. 
         [0004]    Statistical static timing analysis (SSTA) tools can be classified in two categorizes: 1) block-based and 2) path-based. In the parameterized block based statistical static timing analysis, the timing quantities are stored and propagated in canonical forms which express timing quantities as a function of process and environmental sources of variations. The dependency of the timing quantities on sources of variation is thus represented with either linear or non-linear functions, while the sources of variation can be correlated or independent. 
         [0005]    Two major operations for parameterized block-based statistical SSTA are statistical maximum and minimum operations. A statistical maximum (minimum) of two timing quantity distributions computes the best approximate distribution of the maximum (minimum). In this flavor of SSTA, all the distributions are represented in canonical form. Statistical maximum (minimum) for two canonical timing quantities are known and widely used in the art. However, for the case of an N-way (where N&gt;2), the statistical maximum (minimum) is based on applying successive 2-way maximum (minimum). As such, the result of successive 2-way methods are dependent on the order of pairings, and the accuracy of N-way maximum (minimum) is dependent on the order of pair-wise statistical maximum (minimum) operations. 
         [0006]    Referring to  FIG. 1(   a ), a circuit is illustrated consisting of gates,  100 ,  101 ,  102 , and interconnects  103  and  104 , connecting the gates together. To perform a timing analysis on this circuit, voltage signals  105  at primary input pins  106  of the circuit chip are propagated through gates and interconnects until they reach the primary output pins  107  of the chip. 
         [0007]    Initially, the STA tool creates a timing graph representation of the circuit, assigning an arrival time for every signal at the primary inputs of the circuit, and propagating the signals from the primary inputs of the circuit to its primary outputs.  FIG. 1(   b ) shows a timing graph representation corresponding to the circuit shown in  FIG. 1(   a ). The nodes in graph  108  and  109  represent the gates, and the edges  110  and  111  represent the circuit interconnects. The directed edges represent the direction of the voltage signal propagation. The nodes&#39; fan-in is equal to the number of incoming edges into the node, and the nodes&#39; fan-out is equal to the number of outgoing edges of the node. For instance, node  108  has a fan-in of 1 and a fan-out of 1, whereas node  109  has a fan-in of 3 and a fan-out  1 . During STA, numerical weights are usually assigned to every edge and every node. The edge weight typically represents the interconnect propagation delay and the node weight represents the gate propagation delay. 
         [0008]    To perform a timing analysis, STA computes and propagates timing quantities, such as voltage signals&#39; arrival timing, required arrival time, slew, and slack at every point of the timing graph. In order to compute the above-mentioned timing quantities, addition, subtraction, minimum and maximum operations are employed. For example, for a gate having more than one input, the arrival time at the output pin represents the maximum or minimum of the signal arrival times at each input plus the propagation delay within the gate itself. In the case of the static timing analysis, the timing quantity at the output of a node is simply obtained by computing the maximum or minimum of scalar values. Therefore, the result is unique. 
         [0009]    In contrast, SSTA performs the same operations on distributions represented by canonical forms. The minimum or maximum operations between canonical forms can only be performed approximately and, therefore, when an N-way maximum (minimum) is computed by successive applications of the 2-way maximum (minimum), the final approximation will depend on the order of the operations. 
         [0010]    The method introduced by one embodiment of the invention relies on approximating the continuous distributions of the timing quantities by discrete distributions. This process called quantization is widely employed in other fields, e.g., signal processing, for which well established methods exist, e.g., Lloyd&#39;s method. 
       SUMMARY 
       [0011]    These and other disadvantages of the prior art are addressed by an embodiment of the invention, which is directed to a method and a system for performing a Statistical Static Timing Analysis (SSTA) capable of handling Gaussian and non-Gaussian, linear and non-linear sources of variations. 
         [0012]    In one aspect of the present invention, an efficient order-independent statistical maximum (minimum) calculation of N timing quantities expressed in canonical form is performed. Sources of variation may be correlated or uncorrelated, Gaussian or non-Gaussian, and the dependency of the timing quantities to the sources of variations may be expressed as a linear or non-linear function. 
         [0013]    In another aspect of the invention, quantization and de-quantization based techniques make it possible to perform an N-way statistical maximum (minimum) operation. Sources of variations are quantized with minimum distortion using quantization techniques. A static maximum (minimum) operation on the quantized values is then performed. When carried on to full accuracy, the operation cost increases exponentially in the number of sources of variation and, therefore, it may become prohibitive. 
         [0014]    In still another aspect of the invention, an approximate way of computing the minimum maximum of distributions expressed in canonical form with discretized sources of random variations is introduced. The cost of computing this approximation to the minimum maximum operation is linear with respect to the number of quantization values. 
         [0015]    In yet another aspect of the invention, a de-quantization operation is performed on the results which return the output distribution to canonical form expressed in continuous variables, permitting the timing analysis to process every edge and node of the timing graph. 
         [0016]    In a further aspect of the invention, a method and a system of improving the performance of circuits forming an integrated circuit (IC) chip are provided by removing timing violations detected upon performing a statistical timing analysis given distributions of process and environmental sources of variation, the method including:
       a) quantizing the distributions using a minimum distortion criterion into discrete values;   b) for each timing node of the IC circuit, executing by way of a computer a discrete minimum and maximum operation on timing parameters using a subset of combinations of the discrete values;   c) de-quantizing results of the discrete minimum and maximum operation;   d) propagating the de-quantized results to a subsequent timing node thereof until primary inputs and outputs of the IC chip are reached.       
 
     
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         [0021]    The accompanying drawings, which are incorporated in and which constitute part of the specification, illustrate preferred embodiments of the invention which, together with the general description given above and the detailed description of the preferred embodiments given below, serve to explain the principles of the invention. 
           [0022]      FIG. 1 , shows an illustrative prior art circuit and a corresponding graph representation of its timing behavior. 
           [0023]      FIG. 2  shows a prior art ordered pair-wise statistical technique used to perform statistical N-way maximum/minimum analysis of N canonical timing quantities. 
           [0024]      FIG. 3  is a block diagram depicting a method for performing order-independent N-way maximum/minimum operation on N timing quantities described in canonical form, according to an embodiment of the present invention. 
           [0025]      FIG. 4  illustrated a normalized Gaussian distribution showing the quantization step of the invention on global sources of variation, assuming that X 1  and X 2  have similar distributions. 
           [0026]      FIG. 5  illustrates the process of 2-way max operation of two canonical timing quantities with quantized underlying global sources of variation and applying a static maximum/minimum operation on them and which assumes X 1  and X 2  quantized in three levels, according to an embodiment of the invention. 
           [0027]      FIG. 6  shows the percentage coverage for a selected subset as a function of a number of sources of variation: quantizing distributions with three points, choosing the central point for all the distributions, and selecting the central points for all but one. 
           [0028]      FIG. 7  shows a sample quantization of non-symmetric sources of variation, wherein de-quantization results in non-symmetric quantized points having non-symmetric weights. 
           [0029]      FIG. 8  is a flow diagram illustrating the improved statistical STA flow, according to an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0030]    The present invention uses a generalized version of a linear canonical form for representing gate delays. Described hereinafter is a preferred embodiment of the present invention that approximates all arrival times in the same generalized canonical form, matching the exact mean and standard deviation in a manner completely similar to the original statistical STA. Accordingly, the present invention is very convenient for implementation in a statistical timing analyzer. 
         [0031]    An embodiment of the invention adds several functions which compute, when required by the SSTA, the N-way maximum and minimum operations between generalized canonical forms according to the algorithm described in an embodiment of the invention. There is no other modification of the algorithmic flow of the SSTA process. Thus, the present invention can be implemented without affecting the majority of the existing code. The benefit of the proposed invention is a substantial increase in the accuracy of the SSTA, 
         [0032]    A description will now be given regarding a first-order approximation of the maximum of arrival times depending on a Gaussian distribution. 
         [0033]    In one embodiment, the present invention is directed to a general, statistical maximum/minimum technique that calculates the maximum/minimum of N timing quantity in canonical form as a function of a set of global and random sources of variation in a new canonical quantity. These quantities include linear or non-linear functions of environmental and manufacturing process sources of variation including power and ground voltage variations, where the sources of variation can be Gaussian, non-Gaussian, symmetric or non-symmetric. The dependency of the timing quantities to the sources of variation can be represented by linear or non-linear functions while the sources of variation can be correlated or independent. 
         [0034]    In a real circuit scenario, signal arrival times and transition times in the design depend on a variety of different factors, including technology, environment, and manufacturing process parameters. Due to the statistical nature of the technology, environment and manufacturing process parameters, modeling with random variables with determined probability distributions may be used. In a parameterized SSTA, the computed timing quantities (e.g., arrival times, delays, slews, slacks, and the like) are represented for, illustrative purposes, in first order canonical form as shown in EQ 1: 
         [0000]    
       
         
           
             
               
                 
                   
                     A 
                     k 
                   
                   = 
                   
                     
                       A 
                       
                         k 
                         , 
                         o 
                       
                     
                     + 
                     
                       
                         ∑ 
                         
                           j 
                           = 
                           1 
                         
                         N 
                       
                        
                       
                         
                           q 
                           
                             k 
                             , 
                             j 
                           
                         
                          
                         
                           x 
                           j 
                         
                       
                     
                     + 
                     
                       
                         c 
                         k 
                       
                        
                       
                         r 
                         k 
                       
                     
                   
                 
               
               
                 
                   EQ 
                    
                   
                       
                   
                    
                   1 
                 
               
             
           
         
       
     
         [0000]    where
 
A k  is the timing quantity in the canonical format;
 
A k,0  is the nominal value of the timing quantity in canonical form;
 
x k,j  is the variation of j th  source of variation from its nominal value;
 
q j  is the sensitivity of the timing quantity A k  to the source of variation x j ;
 
r k  is the uncorrelated variation in quantity A k , and
 
c k  is the sensitivity of the timing quantity A k  to the uncorrelated variation r k .
 
         [0035]    Sources of variation x j  and r k  may include Gaussian, non-Gaussian, symmetric or non-symmetric distributions. 
         [0036]    In one embodiment, the first order canonical form, such as in EQ 1, Gaussian sources of variation are employed to describe the invention. In another embodiment, the invention is extended to non-Gaussian sources of variation as well as a non-linear dependence of the timing quantities to the sources of variation. 
         [0037]    In the case of statistical STA (SSTA), the timing quantities at the N fan-in ports of a timing node are given in canonical form, as shown in EQ 1. Therefore, to determine the timing quantity at the output of the timing node, the maximum/minimum of N canonical forms needs to be computed and represented in canonical form. 
         [0038]    According to the present state of the art the maximum/minimum is computed by successive pair-wise maximum/minimum operations each using an approximate algorithm based on a method such as the one described by C. E. Clark, “The greatest of a finite set of random variables,” Operation Research, vol. 9, no. 2, pp. 145-162, March-April 1961. Pair-wise operations need to be performed in a predetermined order. There is no known efficient way to choose the order in a way to minimize the accumulation of errors. It is worth noting that the order of pair wise operations can significantly affect the accuracy and consistency of the computed timing quantities at the output of the timing nodes, thereby, contributing to the inaccuracy of the SSTA performed on the circuit. 
         [0039]    Referring now to  FIG. 2(   a ), showing an illustrative example of a 5-way maximum/minimum operation for five timing quantities A 1 , A 2 , . . . and A 5 , the results of which are represented in a new canonical form C. Using for illustrative purposes the previously stated pair-wise maximum/minimum technique, there are many ways to perform the N-way max/min, two of which are illustrated in  FIGS. 2(   b ) and  2 ( c ). Depending on the distribution of A 1 , . . . , A 5 , the results of  FIG. 2(   b ) and  FIG. 2(   c ) may differ from one another, and are, further, also different from the actual maximum/minimum of the 5-way max/min between them. 
         [0040]    Referring now to  FIG. 3 , a unique, consistently defined, order independent way to compute the maximum or minimum operation of N distributions of timing quantities expressed in canonical form, and producing the results, likewise in canonical form, according to one embodiment of the invention, will now be described. 
         [0041]      FIG. 3  illustrates three steps necessary for the order-independent N-way maximum/minimum computation:
   a) quantizing the continuous distribution of the sources of variation  301 , e.g., by Lloyd&#39;s method, producing a minimum distortion discrete distribution;   b) performing static maximum/minimum operation on the quantized discrete distributions  302 ; and   c) de-quantizing the resulting distribution of the maximum/minimum previously obtained, and restating the result in canonical form  303 .     
         [0045]    Since the static maximum/minimum operation in step ii) operates simultaneously on all N discrete distributions, it does not depend on any ordering of the inputs. Therefore, the result is consistent, unique and order independent. On the other hand, the operation is performed on quantized, and therefore approximated, distributions of the sources of variation. Thus, in order to ensure accurate results of the maximum/minimum operation, the quantization needs to generate a minimal distortion. An efficient quantization algorithm such as Lloyd&#39;s algorithm, known in the art, can be utilized to ensure the minimum distortion criteria. Another approach to reducing the distortion is by increasing the number of quantization levels of the continuous distribution. However, an unnecessarily high degree of quantization will adversely affect the efficiency of static maximum/minimum operation and of the de-quantization step that follows. 
         [0046]    A numerical example will now be described to further illustrate the previously mentioned three steps of an embodiment of the present invention. 
         [0047]    Assuming two arrival time distributions given in canonical form as a function of two normalized independent Gaussian sources of variation X 1  and X 2  (X 1  and X 2  having a mean of 0 and standard deviation of 1), as follows: 
         [0000]        A   1 =2.0+0.5 X   1 +1.5 X   2    A   2 =2.5+1.5 X   1 +0.5 X   2   EQ. 2 
         [0048]    The objective is to determine the distribution of the maximum C of A1 and A2 in first order canonical form as follows: 
         [0000]        C=c   0   +c   1   X   1   +c   2   X   2   EQ. 3 
         [0049]    In other words, c 0 , c 1 , and c 2  need to be computed such that they approximate the distribution of C=max (A 1 , A 2 ). 
         [0050]      FIG. 4  shows the quantization step of an embodiment of the present invention on global sources of variation (assuming that both X 1  and X 2  have a similar distribution). For the present example, the aforementioned Lloyd&#39;s technique is advantageously employed to quantize the continuous normalized Gaussian distribution  401  (having a mean=0 and a standard deviation=1) into three levels  402 , and five levels  403 . In the case of three-level quantization by Lloyd&#39;s method, the quantized distribution have three levels (−2.4768, 0, 2.4768) with corresponding weights of (0.0172, 0.9658, 0.0172). The least square distortion for the quantization is equal to 3e-5. In the case of the five-level quantization, Lloyd generates the quantized distribution with five levels (−3.2919, −2.1118, 0, 2.1118, 3.2919) with corresponding weights of (0.0013, 0.0391, 0.9193, 0.0391, 0.0013) having a least square distortion of 4e-6. As described in the present example, adding more quantization levels decreases the distortion. However, as described above, it can have a significant impact on the efficiency of the next two steps of the invention. 
         [0051]    In the next step, the quantized distributions are used and the static maximum/minimum operation is applied to them. For brevity, assume X 1  and X 2  being quantized in three levels, 
         [0000]        X   1 ˜{( x   1,1   ,w   1,1 ),( x   1,2   ,w   1,2 ),( x   1,3   ,w   1,3 )}={(−2.4768,0.0172),(0,0.9658),(2.4768,0.0172)} 
         [0000]      and 
         [0000]        X   2 ˜{( x   2,1   ,w   2,1 ),( x   2,2   ,w   2,2 ),( x   2,3   ,w   2,3 )}={(−2.4768,0.0172),(0,0.9658),(2.4768,0.0172)} 
         [0052]    In order to perform the static maximum operation, the most accurate approach is to consider all nine combinations of X 1  and X 2  quantized points. It is assumed that by selecting (x 1,i , x 2,j ) one can gain information equal to w 1,i *w 2,j . Therefore, as shown in  FIG. 5 , (x 1,1 , x 2,1 ) adds 0.0172*0.0172=3e-4 information out of 1. 
         [0053]    Table II that follows shows the amount of information that each combination of (x 1,i , x 2,j ) adds to the maximum/minimum operation: 
         [0000]    
       
         
               
               
               
               
             
               
               
               
               
             
           
               
                 TABLE I 
               
               
                   
               
               
                 Combination 
                 X1 
                 X2 
                 W1, 2 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 1 
                 −2.4768 
                 −2.4768 
                 0.0172 * 0.0172 = 3e−4 
               
               
                 2 
                 0 
                 −2.4768 
                 0.9658 * 0.0172 = 0.0166 
               
               
                 3 
                 2.4768 
                 −2.4768 
                 0.0172 * 0.0172 = 3e−4 
               
               
                 4 
                 −2.4768 
                 0 
                 0.0172 * 0.9658 = 0.0166 
               
               
                 5 
                 0 
                 0 
                 0.9658 * 0.9658 = 0.9328 
               
               
                 6 
                 2.4768 
                 0 
                 0.0172 * 0.9658 = 0.0166 
               
               
                 7 
                 −2.4768 
                 2.4768 
                 0.0172 * 0.0172 = 3e−4 
               
               
                 8 
                 0 
                 2.4768 
                 0.9658 * 0.0172 = 0.0166 
               
               
                 9 
                 2.4768 
                 2.4768 
                 0.0172 * 0.0172 = 3e−4 
               
               
                   
               
             
          
         
       
     
         [0054]    Referring to the above Table I, out of the nine combinations of quantized X 1  and X 2 , only five (i.e., combinations 2, 4, 5, 6, 8) are shown to provide significant information. If other combinations (i.e., 1, 3, 7, 9) are ignored, most of the information is captured during the static max operation. In other words, performing the static max operation on the other four combinations does not add too much information to the de-quantization step. For instance, if one were to neglect (−2.4768, −2.4768), then 0.0172*0.0172=0.03% of all the possible cases would be lost. Therefore, the aforementioned approach covers 0.9658(0.9658+4*0.0172)=99.9% of all possible cases. 
         [0055]    In general, a full computation of the discretized distribution of the N-way max with q quantization points will require analyzing q N  cases, thus making the process prohibitively expensive. The example above, however, indicates that an exhaustive analysis of all the cases is not required and the selection of a significantly smaller subset of cases yields acceptable accurate result. Such a subset selection includes:
   a) Quantizing distributions with 3 points,   b) Selecting a case containing the central point for all distribution: 1 point, and   c) Selecting cases containing central points for all but one distribution and either the extreme low or the extreme high of the remaining one: 2N points.   
 
         [0059]    Evidently, the set contains 2N+1 points for analysis and the cost of the minimum maximum computation increases linearly with the number of input distributions. 
         [0060]      FIG. 6  illustrates the loss of accuracy due to the subset choice above compared to processing all the points as a function of the number of sources of variation n. The subset selection strategy covers 0.9658 N-1  (0.9658+4n*0.0172) % of the information for the n sources of variation, while the complexity of static max operation is (2N+1) compared 3 N  relative to the fully accurate max/min operation. Even with 15 sources of variation, the above approach will cover about 90% of the information, while the complexity of the static max operation is 6 orders of magnitude faster relative to choosing all possible combinations. Additional combinations can be chosen to improve the coverage, while still maintaining the efficiency of the static max operation. 
         [0061]    The numbers above assume that the continuous distribution is quantized by 3 levels. In the general case, the p-level quantization extends to n sources of variation and the complexity of the fully accurate scheme is p N . Using a similar subset selection scheme, a subset of size (p−1)N+1 still returns reasonably accurate results. 
         [0062]    The second step of the embodiment of the invention uses selected combinations of the quantized sources of variation and evaluates the timing quantities in canonical forms for those combinations. The result is a canonical form expressed in terms of discrete random variables. For instance, for the above example, EQ. 4 shows the value of maximum of A 1  and A 2  for the selected combinations 
         [0000]      X 1 =0, X 2 =0         A 1 =2, A 2 =2.5         Max=2.5 
         [0000]      X 1 =2.4768, X 2 =0         A 1 =3.24, A 2 =6.22         Max=6.22 
         [0000]      X 1 =0, X 2 =2.4768         A 1 =5.72, A 2 =374         Max=5.72 
         [0000]      X 1 =−2.4768, X 2 =0         A 1 =0.02, A 2 =−1.22         Max=0.02 
         [0000]      X 1 =0, X 2 =−2.4768         A 1 =−1.72, A 2 =1.26         Max=1.26  EQ. 3 
         [0063]    The last step of the operation is the de-quantization step. During de-quantization, the output of the static max operation is used to compute the parameters of C in EQ. 3. The Last Square (LS) method or Weighted Least Square method can be utilized to calculate the coefficients of C. Computing these coefficients requires to solve over-determined, rectangular systems of the type shown in the following EQ. 4: 
         [0000]    
       
         
           
             
               
                 
                   [ 
                   
                     
                       
                         1 
                       
                       
                         0 
                       
                       
                         0 
                       
                     
                     
                       
                         1 
                       
                       
                         2.4768 
                       
                       
                         0 
                       
                     
                     
                       
                         1 
                       
                       
                         0 
                       
                       
                         2.4768 
                       
                     
                     
                       
                         1 
                       
                       
                         
                           - 
                           2.4768 
                         
                       
                       
                         0 
                       
                     
                     
                       
                         1 
                       
                       
                         0 
                       
                       
                         
                           - 
                           2.4768 
                         
                       
                     
                   
                   ] 
                 
                 
                    
                   A 
                 
               
                
               
                 
                   [ 
                   
                     
                       
                         
                           c 
                           0 
                         
                       
                     
                     
                       
                         
                           c 
                           1 
                         
                       
                     
                     
                       
                         
                           c 
                           2 
                         
                       
                     
                   
                   ] 
                 
                 
                    
                   c 
                 
               
             
             = 
             
               
                 [ 
                 
                   
                     
                       2.5 
                     
                   
                   
                     
                       6.22 
                     
                   
                   
                     
                       5.72 
                     
                   
                   
                     
                       0.02 
                     
                   
                   
                     
                       1.26 
                     
                   
                 
                 ] 
               
               
                  
                 b 
               
             
           
         
       
     
         [0000]    where
 
A is the matrix of the quantization combinations associated with the choice of point subset
 
b is the vector of probabilities associated with each point combination
 
c=[c 0 ,c 1 ,c 2 ] is the coefficient vector such that
 
C=max(A 1 ,A 2 )=c 0 +c 1 X 1 +c 2 X 2  
 
         [0064]    The system could be solved using standard linear algebra techniques such as the orthogonal-triangular QR factorization, as described in the textbook by G. H. Golub &amp; C. F. van Loan, “Matrix Computations”, 3 rd  Edition, John Hopkins Studies in Mathematical Sciences, 1996, as follows: 
         [0000]      Ac=b 
         [0000]      A=QR where 
         [0065]    Q orthogonal: Q T Q=U 
         [0066]    R upper-triangular 
         [0000]      Rc=Q T b 
         [0000]        c=R   −1   Q   T   b=A   +   b   EQ5 
         [0000]    where
 
Q is the orthogonal component of the QR factorization and Q T  it&#39;s transpose
 
R is the triangular part of the above factorization
 
U is the appropriately sized unit matrix unit matrix
 
A +  is also called the pseudo-inverse of A
 
         [0067]    Assuming that the distribution of the process variation is given, the matrix 
         [0068]    A is fixed. Therefore, only the right hand side, i.e., the b matrix, changes with each N-way max computation. Thus, the factorization and even the full pseudo-inverse matrix A+ can be pre-computed and stored before performing SSAT, thus making the de-quantization process even more efficient. 
         [0069]    The following example shows how the accuracy of a three-way max operation performed using the above algorithm compared to the aforementioned Clark-based pair-wise max operation. Using a costly Monte-Carlo based max operation as the golden standard, and assuming that A 1 , A 2 , and A 3  are three arrival times given in canonical forms as a function of three normalized Gaussian sources of variation X 1 , X 2  and X 3  and three independently random normalized Gaussian sources of variations R 1 , R 2  and R 3 . then 
         [0000]        A   1 =47.84+8.33 X   1 +0.63 X   2 +1.44 X   3 +5.95 R   1    
         [0000]        A   2 =51.64+0.87 X   1 +0.93 X   2 +3.63 X   3 +0.68 R   2    
         [0000]        A   3 =55.33+0.30 X   1 +0.48 X   2 +4.16 X   3 +0.84 R   3    
         [0000]    The application of our algorithm produces the following expression for the 3-way max 
         [0000]      C=Max(A 1 ,A 2 ,A 3 )=56.73+2.79 X 1 +0.48X 2 +4.16X 3 +1.46 R 1 +0.00 R 2 +0.84 R 3   EQ 7 
         [0000]    
       
         
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 Algorithm 
                 Mean 
                 Variance 
               
               
                   
                   
               
             
             
               
                   
                 Monte Carlo 
                 56.75 
                 5.1179 
               
               
                   
                 Clark-based pair-wise max method 
                 56.70 
                 4.5156 
               
               
                   
                 Inventive method 
                 56.73 
                 5.3063 
               
               
                   
                   
               
             
          
         
       
     
         [0070]    Clearly, the results achieved by the present invention show that the mean and variance of the distribution of the max are closer to the Monte-Carlo prediction than the pair-wise method. Moreover, the pair-wise method predicts a different distribution if the operations were paired differently. 
         [0071]      FIG. 7  shows an embodiment of the invention being extended to support non-symmetric sources of variation. In the case of non-symmetric sources of variation, the de-quantization technique, such as Lloyd&#39;s method, results in non-symmetric quantized points with non-symmetric weights. However, the remainder of the algorithm can be applied, as described earlier. 
         [0072]      FIG. 8  summarizes the entire algorithmic flow of one embodiment the present invention. 
         [0073]    In step  810 , a statistical STA obtains the number of quantization levels of sources of variation as an input from the user. Depending on the required level of accuracy and efficiency, a designer chooses the number of levels of quantization, e.g. 3, 5 . . . . Different quantization levels can be selected for performing SSTA at different stages of the design flow, e.g., starting with smaller quantization levels but choosing larger ones as the design proceeds from earlier stages toward the sign-off stage. 
         [0074]    In step  820 , SSTA performs the quantization of the random variable distributions of the sources of variation by, e.g., Lloyd method, into the previously user-defined number of levels. For instance,  FIG. 4  shows the result of three and five level quantization on a normalized Gaussian distribution. 
         [0075]    In step  830 , the statistical SSTA starts by propagating the timing quantities from the circuit primary inputs toward the circuit primary outputs using the asserted voltage waveforms at the primary input of the circuit. 
         [0076]    In step  840 , while performing SSTA, once the distribution of the arrival times for every fan-in edge of a timing node is calculated, SSTA needs to compute the maximum/minimum of the fan-in canonical arrival times, representing the obtained distribution in canonical form. SSTA selects the minimum subset of combinations of quantized values of sources of variation which covers the maximum amount of information given predetermined efficiency constraints. Next, SSTA evaluates the fan-in timing quantities at the selected combinations of the quantized sources of variation. 
         [0077]    In step  850 , SSTA performs the maximum/minimum operation on the evaluated scalar timing quantities determined in step  840 . Finally, SSTA de-quantizes the maximum/minimum fan-in timing quantities in canonical forms using techniques such as the least square fitting (Step  860 ). 
         [0078]    In step  870 , SSTA determines if every timing node and edge in the timing graph was visited. If not, it branches back to step  840 . If yes, the statistical timing analysis is complete (Step  880 ). 
         [0079]    Through the use of the described N-way maximum procedure, the distributions of arrival times and other statistical quantities were computed with increased accuracy and in a consistent repeatable manner. In contrast, the traditional pair-wise maximum computation method accumulates errors much faster, resulting in more uncertainty in the computed distributions. As a result of the enhanced accuracy of the proposed algorithm, designers can produce more complex designs that utilize fewer resources, such as chip area and/or power. 
         [0080]    The present invention can be realized in hardware, software, or a combination of hardware and software. The present invention can be realized in a centralized fashion in one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system—or other apparatus adapted for carrying out the methods described herein—is suitable. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein. 
         [0081]    The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out the methods. 
         [0082]    Computer program means or computer program in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after conversion to another language, code or notation and/or reproduction in a different material form. 
         [0083]    While the present invention has been particularly described in conjunction of a simple illustrative embodiment, it is to be understood that one of ordinary skill in the art can extend and apply the invention in many obvious ways. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiments were chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.