US7401307B2 - Slack sensitivity to parameter variation based timing analysis - Google Patents

Slack sensitivity to parameter variation based timing analysis Download PDF

Info

Publication number
US7401307B2
US7401307B2 US10/904,309 US90430904A US7401307B2 US 7401307 B2 US7401307 B2 US 7401307B2 US 90430904 A US90430904 A US 90430904A US 7401307 B2 US7401307 B2 US 7401307B2
Authority
US
United States
Prior art keywords
slack
timing
parameter
failure
endpoint
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US10/904,309
Other versions
US20060101361A1 (en
Inventor
Eric A. Foreman
Peter A. Habitz
David J. Hathaway
Jerry D. Hayes
Jeffrey H. Oppold
Anthony D. Polson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cavium International
Marvell Asia Pte Ltd
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US10/904,309 priority Critical patent/US7401307B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OPPOLD, JEFFREY H., POLSON, ANTHONY D., FOREMAN, ERIC A., HABITZ, PETER A., HATHAWAY, DAVID J., HAYES, JERRY D.
Publication of US20060101361A1 publication Critical patent/US20060101361A1/en
Priority to US11/930,924 priority patent/US7716616B2/en
Priority to US12/122,451 priority patent/US7870525B2/en
Application granted granted Critical
Publication of US7401307B2 publication Critical patent/US7401307B2/en
Assigned to GLOBALFOUNDRIES U.S. 2 LLC reassignment GLOBALFOUNDRIES U.S. 2 LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: INTERNATIONAL BUSINESS MACHINES CORPORATION
Assigned to GLOBALFOUNDRIES INC. reassignment GLOBALFOUNDRIES INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GLOBALFOUNDRIES U.S. 2 LLC, GLOBALFOUNDRIES U.S. INC.
Assigned to WILMINGTON TRUST, NATIONAL ASSOCIATION reassignment WILMINGTON TRUST, NATIONAL ASSOCIATION SECURITY AGREEMENT Assignors: GLOBALFOUNDRIES INC.
Assigned to GLOBALFOUNDRIES U.S. INC. reassignment GLOBALFOUNDRIES U.S. INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GLOBALFOUNDRIES INC.
Assigned to MARVELL INTERNATIONAL LTD. reassignment MARVELL INTERNATIONAL LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GLOBALFOUNDRIES U.S. INC.
Assigned to CAVIUM INTERNATIONAL reassignment CAVIUM INTERNATIONAL ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MARVELL INTERNATIONAL LTD.
Assigned to MARVELL ASIA PTE, LTD. reassignment MARVELL ASIA PTE, LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CAVIUM INTERNATIONAL
Assigned to GLOBALFOUNDRIES INC. reassignment GLOBALFOUNDRIES INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: WILMINGTON TRUST, NATIONAL ASSOCIATION
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • G06F30/3312Timing analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing analysis or timing optimisation

Definitions

  • the present invention relates generally to integrated circuit design, and more particularly, to a method, system and program product for improving IC design performance by analyzing IC timing based on a slack sensitivity to variations in parameters that affect timing.
  • a wide variety of methods are employed in the optimization of integrated circuit designs.
  • One of these methods includes evaluation of the static timing of parts of the circuit.
  • Methodologies used today for static timing analysis are based on different parameters that affect timing.
  • the parameter values used are typically based on nominal values of parameters or on extreme values of the range of values for a parameter, for example, a minimum and maximum value corresponding to +/ ⁇ 3 standard deviation units.
  • a timing run is performed with the parameter set to a minimum value, and then another timing run is performed with the parameter set to a maximum value.
  • the number of parameters that affect timing grows accordingly. For example, the number of parameters can easily exceed 10 or more in today's technologies.
  • conventional techniques to evaluate timing over all parameters requires 2 N timing runs, where N represents the number of parameters.
  • Each of the 2 N timing runs uses a different combination of minimum and maximum settings for different parameters. Any one combination is referred to herein as a “parameter/process permutation.” Where the number of parameters exceeds 10, timing analysis can require more than 1000 timing runs for a complete evaluation, which is extremely time and resource consuming.
  • FIG. 1 shows one illustrative conventional approach.
  • step S 1 a timing run is conducted using a single parameter/process permutation to determine endpoint slacks.
  • slacks are not necessarily bounding (i.e., extreme values) since other choices for parameter/process permutations could easily lead to more conservative slacks.
  • the conventional approach may yield circuit timing analysis results that fail to detect potential timing errors and lead to non-zero failure probabilities.
  • step S 2 these non-bounding slacks are then compared to a slack threshold.
  • S(threshold) is typically chosen as zero
  • timing endpoints with the largest negative slacks may not represent the most critical slacks in terms of maximizing product yield because their sensitivities to parameter variations may result in a smaller probability of failure as compared to other timing endpoints.
  • using a single parameter/process permutation does not adequately address the sensitivities to parameter variations that may lead to failure.
  • the conventional approach provides no insight relative to parameter non-tracking sensitivities, i.e., situations where two or more parameters that are normally expected to vary together in a particular manner do not vary together. Therefore, using slack values to prioritize timing endpoints for correction can lead to poor utilization of resources.
  • step S 3 the failing endpoints and corresponding slack values are targeted for correction. Since only the slack value from a timing analysis at a single parameter/process permutation is available to guide correction, the correction cannot improve design robustness against parameter variations or maximize chip performance under all variations. After correction, the conventional methodology returns to step S 1 for validation.
  • the invention includes a method, system and program product for improving an IC design that prioritize failure coefficients of slacks that lead to correction according to their probability of failure.
  • a sensitivity analysis is performed on each parameter by noting the difference in timing, typically on endpoint slacks, when the parameter is varied. This step is repeated for every independent parameter.
  • a failure coefficient is then calculated from the reference slack and the sensitivity of slack for each of the timing endpoints and a determination is made as to whether at least one timing endpoint fails a threshold test. Failing timing endpoints are then prioritized for modification according to their failure coefficients.
  • the total number of runs required is one run that is used as a reference run, plus one additional run for each parameter.
  • a first aspect of the invention is directed to a method of improving a probability of an integrated circuit (IC) design meeting timing requirements, the method comprising the steps of: a) determining a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) calculating a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) determining whether each timing endpoint fails a threshold test; d) prioritizing any timing endpoints that fail the threshold test according to respective failure coefficients; and e) modifying the design to improve a slack of at least one of the timing endpoints.
  • IC integrated circuit
  • a second aspect of the invention is directed to a system for improving a probability of an integrated circuit (IC) design meeting timing requirements, the system comprising: a) means for determining a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) means for calculating a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) means for determining whether each timing endpoint fails a threshold test; d) means for prioritizing any timing endpoints that fail the threshold test according to respective failure coefficients; and e) means for modifying the design to improve a slack of at least one of the timing endpoints.
  • IC integrated circuit
  • a third aspect of the invention is directed to a computer program product comprising a computer useable medium having computer readable program code embodied therein for improving a probability of an integrated circuit (IC) design meeting timing requirements, the program product comprising: a) program code configured to determine a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) program code configured to calculate a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) program code configured to determine whether each timing endpoint fails a threshold test; d) program code configured to prioritize any timing endpoints that fail the threshold test according to respective failure coefficients; and e) program code configured to modify the design to improve a slack of at least one of the timing endpoints.
  • IC integrated circuit
  • FIG. 1 shows a conventional approach to timing analysis.
  • FIG. 2 shows a block diagram of an IC design improvement system according to one embodiment of the invention.
  • FIG. 3 shows a flow diagram of operational methodology of the system of FIG. 2 according to one embodiment of the invention.
  • FIG. 4 shows a flow diagram of processing by a sensitivity determinator of FIG. 2 .
  • FIG. 5 shows a flow diagram of steps S 102 and S 103 from the flow diagram of FIG. 3 .
  • FIG. 2 is a block diagram of an integrated circuit (IC) design improvement system 100 according to one embodiment of the invention.
  • System 100 includes a memory 112 , a processing unit (PU) 114 , input/output devices (I/O) 116 and a bus 118 .
  • a database 120 may also be provided for storage of data relative to processing tasks.
  • Memory 112 includes a program product 122 that, when executed by PU 114 , comprises various functional capabilities described in further detail below.
  • Memory 112 (and database 120 ) may comprise any known type of data storage system and/or transmission media, including magnetic media, optical media, random access memory (RAM), read only memory (ROM), a data object, etc.
  • memory 112 may reside at a single physical location comprising one or more types of data storage, or be distributed across a plurality of physical systems.
  • PU 114 may likewise comprise a single processing unit, or a plurality of processing units distributed across one or more locations.
  • I/O 116 may comprise any known type of input/output device including a network system, modem, keyboard, mouse, scanner, voice recognition system, CRT, printer, disc drives, etc. Additional components, such as cache memory, communication systems, system software, etc., may also be incorporated into system 100 .
  • System 100 receives an IC design 200 to be legalized and outputs an improved IC design 202 . It should be recognized that system 100 may be incorporated as a part of a larger IC design system or be provided as a separate system.
  • program product 122 may include a sensitivity determinator 124 , a distribution determinator 125 , a failure coefficient calculator 126 , a threshold tester 128 , a prioritizer 130 , a modifier 132 , and other system components 134 .
  • Sensitivity determinator 124 may include a slack determinator 140 and a sensitivity calculator 142 .
  • Failure coefficient calculator 126 may include a failure probability (FP) calculator 144 and a worst-case slack determinator 146 .
  • Other system components 134 may include any other necessary functionality not expressly described herein.
  • system 100 has been illustrated as a standalone system, it may be included as part of a larger IC design system or a peripheral thereto.
  • An IC design 200 is input to system 100 , and an improved IC design 202 is output from system 100 .
  • the method includes the following steps: S 101 , determine a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; S 102 , calculate a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; S 103 , determine whether at least one timing endpoint has greater than a specified probability of failing at least one threshold test; S 104 , prioritize any timing endpoints that fail the at least one threshold test according to their respective failure coefficients; and S 105 , modify the design to improve a slack of at least one of the timing endpoints.
  • a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design are determined by sensitivity determinator 124 .
  • a “parameter” can be one or more factors that can be varied to change the timing of IC design 200 .
  • a parameter may be a voltage, a structural (metal) dimension, a material characteristic, a process step measurement, etc., or a combination of the above.
  • slack determinator 140 may include any now known or later developed software, along with hardware, necessary to obtain a slack value for a timing endpoint of IC design 200 ( FIG. 2 ).
  • a flow diagram of operational methodology of sensitivity calculator 142 is shown.
  • a first reference slack Sj(ref 1 ) is determined by sensitivity determinator 124 for each timing endpoint by using reference values for all parameters, where j ranges between 1 and the total number of endpoints of interest denoted as M.
  • Each reference slack Sj(ref 1 ) is calculated when all N independent parameters Xi, where i ranges between 1 and N, are set to their corresponding reference parameter value Xi(ref 1 ).
  • Each reference parameter value Xi(ref 1 ) may be equivalent to, for example, an extreme value from the range (distribution) of the parameter, a nominal value Xi(nom), or some other value.
  • sensitivity calculator 142 determines a second slack Sj(Xi) for all M timing endpoints of interest when one parameter, Xi, is substantially equivalent to a new, different parameter value Xi( 2 ).
  • the different parameter value Xi( 2 ) may be a value corresponding to an opposite, second extreme value from the range (distribution) of the parameter that was chosen for the reference parameter value during the reference slack calculation step S 101 A.
  • the value for a reference parameter used during sub-step S 101 A is Xi(nom)+Ki* ⁇ i and the value used for the different parameter value during sub-step S 101 B is Xi(nom) ⁇ Ki* ⁇ i, where Xi(nom) is the mean, ⁇ i is the standard deviation, and Ki is the standard deviation multiplier of the Xi parameter distribution.
  • Ki is the standard deviation multiplier of the Xi parameter distribution.
  • a value of 3 is chosen for Ki to represent +/ ⁇ 3 standard deviations from the mean, however, other values may be used.
  • sensitivity calculator 142 calculates the slack sensitivity ( ⁇ Sj/ ⁇ Xi) to parameter Xi variations for all M timing endpoints of interest.
  • the slack sensitivity for a given timing endpoint is calculated by dividing the difference in slack ⁇ Sj(i.e., Sj(ref 1 ) ⁇ Sj(Xi)) by the difference in the parameter's value ⁇ Xi(i.e., Xi(ref 1 ) ⁇ Xi( 2 )) in order to obtain ⁇ Sj/ ⁇ Xi, however other methods of calculating sensitivity of slack to parameter variation may be used.
  • step S 101 A and S 101 B may give different results due to different paths to endpoint j. Thus, they are not simply delay derivatives, but include effects due to the dominance of different paths under different parameter/process permutations.
  • the second step S 102 includes failure coefficient calculator 144 calculating a failure coefficient (FP) from the reference slack Sj(ref 1 ) and parameter sensitivities, i.e., ⁇ Sj/ ⁇ XI to ⁇ Sj/ ⁇ XN, for each of the timing endpoints.
  • a “failure coefficient” is a value indicative of a probability of failure for a timing endpoint, and can be embodied in a number of ways including actual numerical calculations of a failure probability and a worst case excess slack, as will be described below.
  • step S 103 a determination is made by threshold tester 128 as to whether each timing endpoint fails a threshold test. As will become clear below, the failure coefficient calculated and the threshold test evaluated, and the order of step S 102 and S 103 , depends on what data is available based on the parameter distributions obtained as part of step S 101 .
  • a worst-case (WC) slack determinator 146 calculates worst case (minimum or least positive) slack using the endpoint's reference slack Sj(ref 1 ) and parameter sensitivities ⁇ Sj/ ⁇ XI to ⁇ Sj/ ⁇ XN.
  • the worst case slack S(Y ⁇ ) is computed as the difference between nominal slack and a multiple (Y) of a sum over all parameters of an absolute value of standard deviation of the delay variation with respect to that parameter.
  • the worst-case slack for each timing endpoint can be calculated as a difference between a nominal slack and a multiple (Y) of a root sum square over all parameters of an absolute value of standard deviation.
  • This determination may include determining whether the distributions are Gaussian or can be readily modeled as Gaussian. If YES at sub-step S 202 , then processing proceeds to sub-steps S 203 -S 204 , otherwise, processing proceeds to sub-steps S 205 -S 206 .
  • Sub-Steps S 203 -S 204 Parameter Distributions Known: Gaussian or Modeled as Gaussian
  • a failure coefficient can be calculated as a failure probability by FP calculator at sub-step S 203 in one of three ways:
  • the failure coefficient can be calculated as a failure probability by FP calculator 144 based on a user-specified multiple (Y) of a standard deviation (sigma or ⁇ ) of the slack distribution, i.e., the +/ ⁇ Y sigma points of the slack distribution.
  • a failure probability could be calculated by FP calculator 144 by integrating the slack probability distribution from minus infinity ( ⁇ ) to Sj(nom) ⁇ Z*RSS over all N parameters ⁇ Sj/ ⁇ Xi* ⁇ i ⁇ using an error function of a Gaussian density (i.e., an erf function).
  • the sigma multiplier Z would be calculated as described above.
  • a failure coefficient threshold R may be selected by a user to balance performance for risk of loss of product yield. If NO at sub-step S 204 , then no IC design modification is necessary and processing ends. Otherwise, i.e., YES at sub-step S 204 , processing returns to step S 104 of FIG. 3 .
  • slack threshold is usually zero, but this is not necessary.
  • any worst-case slack S(Y ⁇ ) is more positive than slack threshold S(threshold), i.e., NO at sub-step S 205 , the probability of failure is considered to be zero and no IC design modification is necessary, so processing ends. That is, timing endpoints having a worst-case WC slack S(Y ⁇ ) value greater than some user-specified threshold S(threshold) (typically zero) are considered to have a zero failure probability and thus need no improvement.
  • any worst-case slack S(Y ⁇ ) is more negative than slack threshold S(threshold), i.e., YES at sub-step S 205 , the probability of failure is non-zero and processing proceeds to sub-step S 206 .
  • worst case WC slack S(Y ⁇ ) values greater than S(threshold) those with lower (e.g., more negative) values are considered to have higher failure probabilities and thus have a higher priority for improvement.
  • sub-step S 206 the worst case (WC) slack values S(Y ⁇ ) computed for each timing endpoint by worst case slack determinator 146 (sub-step S 201 ) are used by failure coefficient calculator 126 to generate a failure coefficient in the form of a worst case slack excess, which equals S(threshold) ⁇ S(Y ⁇ ). That is, the probability of failure for a timing endpoint can be derived from the worst case (minimum or least positive) slack value.
  • the types of thresholds can vary depending on how the failure coefficient is calculated.
  • Z the sigma multiple at which the slack becomes less than a slack threshold
  • S(Y ⁇ ) the slack at a particular sigma multiple ⁇ computed by either RSS or summing the individual parameter sigma contributions
  • an actual failure probability computed by integrating a Gaussian distribution
  • a sigma multiplier Z (at which a specified slack threshold S(threshold) is reached) is used as a failure coefficient
  • S(threshold) will be a sigma multiplier against which Z is compared. Accordingly, the failure coefficient used may be user selected, and an appropriate failure coefficient threshold used.
  • the results from sub-steps S 203 or S 206 are failure coefficients for each of the M timing endpoints.
  • any timing endpoints that fail at least one threshold test are prioritized by prioritizer 130 according to their respective failure coefficients, i.e., failure probability or worst case slack excess.
  • the timing endpoints are prioritized from a highest failure coefficient (i.e., those most likely requiring modification) to a lowest failure coefficient (i.e., those less likely to require modification). For example, a higher priority would be assigned to endpoints with higher WC slack excesses S(threshold) ⁇ S(Y ⁇ ), lower computed Z sigma multipliers at which a specified slack threshold is reached, or at higher actual computed failure probabilities.
  • the prioritization may also be based on the multiplicity of threshold testing pairs. For example, system 100 may choose to modify all timing endpoints whose WC slack is less than slack threshold S(threshold_ 0 ) with a failure coefficient greater than R 0 , and then modify remaining timing endpoints whose WC slack is less than slack threshold X S(threshold_ 1 ) with a failure coefficient greater than R 1 , and so on.
  • the prioritization may also include an estimation of the cost to implement a modification, e.g., increase in area, power, wiring required, etc., and implement modifications first for timing endpoints where the ratio between the failure coefficient and the cost of the modification is a maximum.
  • step S 105 the design is modified by modifier 132 to improve the slack of at least one of the timing endpoints.
  • An improved IC design 202 is output.
  • Modifier 132 may include any now known or later developed software mechanisms for correcting IC design 200 to address the timing issues.
  • the modifying step includes modifying the design by addressing the timing endpoints from a failure coefficient indicative of a highest probability of failure to a failure coefficient indicative of a lowest probability of failure. Timing margin is traditionally added to the endpoint by padding either the early or late path delay that converges at the endpoint.
  • Modifier 132 may also make modifications using parameter sensitivity for a respective timing endpoint by providing a sufficient timing margin for a respective timing endpoint in order to account for sensitivities to parameter variations.
  • a high value for ⁇ Sj/ ⁇ Xi indicates that timing endpoint Sj has a high sensitivity to variations in parameter Xi. This implies a large imbalance of parameter Xi between the early and late timing paths.
  • the sensitivity to parameter variations for a respective endpoint are used to guide parameter balancing and connectivity between paths that compose a timing test at the timing endpoint. That is, the layout between late and early paths are balanced or matched with similar parameter content and connectivity.
  • the timing endpoint associated with these paths will exhibit sensitivity to both metal layers C and D.
  • the magnitude of the sensitivity is proportional to the amount of wire in each path.
  • one approach is to balance the metal layer content and connectivity between the early and lath paths in order to facilitate path delay tracking, thereby reducing slack sensitivity to metal C and metal D variations.
  • step S 105 If all modifications in step S 105 were successful, the new failure coefficients for each timing endpoint calculated from substeps S 203 ( FIG. 5 ) and S 206 ( FIG. 5 ) will terminate the process. If additional fixes are required, the processing flow of FIG. 5 is repeated.
  • the above-described invention provides a way, based on the known sensitivities, to provide a number of advantageous functions. For example, when parameters are independent from each other the invention allows one to determine what point within the 2 N parameter space corresponds to the most conservative physical space. This allows one to quickly identify the process space for timing closure on each endpoint without doing 2 N timing runs. In addition, the invention allows using the sensitivities to calculate a slack adjustment on the reference timing run that would correspond to the slack that would be obtained at the most conservative physical process space. The sensitivities can also be used to guide modification methodologies. Parameters with the highest sensitivities illustrate an unbalanced content of parameter usage between the early and late paths, which can be used to direct correction. The probability of endpoint failures can be used to prioritize timing endpoints for modification or help guide hardware functional test on which endpoints to test.
  • a processor such as PU 114 of system 100 , executing instructions of program product 122 stored in memory.
  • the various devices, modules, mechanisms and systems described herein may be realized in hardware, software, or a combination of hardware and software, and may be compartmentalized other than as shown. They may be implemented by any type of computer system or other apparatus adapted for carrying out the methods described herein.
  • a typical combination of hardware and software could be a general-purpose computer system with a computer program that, when loaded and executed, controls the computer system such that it carries out the methods described herein.
  • a specific use computer containing specialized hardware for carrying out one or more of the functional tasks of the invention could be utilized.
  • the present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods and functions described herein, and which ⁇ when loaded in a computer system—is able to carry out these methods and functions.
  • Computer program, software program, program, program product, or software 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 the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.

Abstract

A method, system and program product are disclosed for improving an IC design that prioritize failure coefficients of slacks that lead to correction according to their probability of failure. With an identified set of independent parameters, a sensitivity analysis is performed on each parameter by noting the difference in timing, typically on endpoint slacks, when the parameter is varied. This step is repeated for every independent parameter. A failure coefficient is then calculated from the reference slack and the sensitivity of slack for each of the timing endpoints and a determination is made as to whether at least one timing endpoint fails a threshold test. Failing timing endpoints are then prioritized for modification according to their failure coefficients. The total number of runs required is one run that is used as a reference run, plus one additional run for each parameter.

Description

BACKGROUND OF THE INVENTION
1. Technical Field
The present invention relates generally to integrated circuit design, and more particularly, to a method, system and program product for improving IC design performance by analyzing IC timing based on a slack sensitivity to variations in parameters that affect timing.
2. Related Art
A wide variety of methods are employed in the optimization of integrated circuit designs. One of these methods includes evaluation of the static timing of parts of the circuit. Methodologies used today for static timing analysis are based on different parameters that affect timing. The parameter values used are typically based on nominal values of parameters or on extreme values of the range of values for a parameter, for example, a minimum and maximum value corresponding to +/−3 standard deviation units. In order to evaluate the impact that a given parameter will have on timing, a timing run is performed with the parameter set to a minimum value, and then another timing run is performed with the parameter set to a maximum value.
As technology offerings become richer in terms of increased features (e.g., the number of devices offered, increased metal layers or increased number of voltage islands), the number of parameters that affect timing grows accordingly. For example, the number of parameters can easily exceed 10 or more in today's technologies. Unfortunately, conventional techniques to evaluate timing over all parameters, requires 2N timing runs, where N represents the number of parameters. Each of the 2N timing runs uses a different combination of minimum and maximum settings for different parameters. Any one combination is referred to herein as a “parameter/process permutation.” Where the number of parameters exceeds 10, timing analysis can require more than 1000 timing runs for a complete evaluation, which is extremely time and resource consuming.
In addition to the above problem, conventional timing analysis approaches also do not satisfactorily address timing errors because they typically focus exclusively on timing endpoint (latch) slack, i.e., the difference between a timing requirement and an actual timing caused by the circuit. FIG. 1 shows one illustrative conventional approach. In this approach, in step S1, a timing run is conducted using a single parameter/process permutation to determine endpoint slacks. These slacks are not necessarily bounding (i.e., extreme values) since other choices for parameter/process permutations could easily lead to more conservative slacks. As a result, the conventional approach may yield circuit timing analysis results that fail to detect potential timing errors and lead to non-zero failure probabilities.
In step S2, these non-bounding slacks are then compared to a slack threshold. Slacks less than slack threshold S(threshold), where S(threshold) is typically chosen as zero, are considered failures that require correction. Unfortunately, timing endpoints with the largest negative slacks may not represent the most critical slacks in terms of maximizing product yield because their sensitivities to parameter variations may result in a smaller probability of failure as compared to other timing endpoints. In other words, using a single parameter/process permutation does not adequately address the sensitivities to parameter variations that may lead to failure. In addition, the conventional approach provides no insight relative to parameter non-tracking sensitivities, i.e., situations where two or more parameters that are normally expected to vary together in a particular manner do not vary together. Therefore, using slack values to prioritize timing endpoints for correction can lead to poor utilization of resources.
In step S3, the failing endpoints and corresponding slack values are targeted for correction. Since only the slack value from a timing analysis at a single parameter/process permutation is available to guide correction, the correction cannot improve design robustness against parameter variations or maximize chip performance under all variations. After correction, the conventional methodology returns to step S1 for validation.
In view of the foregoing, there is a need in the art for a way to address the problems of the related art.
SUMMARY OF THE INVENTION
The invention includes a method, system and program product for improving an IC design that prioritize failure coefficients of slacks that lead to correction according to their probability of failure. With an identified set of independent parameters, a sensitivity analysis is performed on each parameter by noting the difference in timing, typically on endpoint slacks, when the parameter is varied. This step is repeated for every independent parameter. A failure coefficient is then calculated from the reference slack and the sensitivity of slack for each of the timing endpoints and a determination is made as to whether at least one timing endpoint fails a threshold test. Failing timing endpoints are then prioritized for modification according to their failure coefficients. The total number of runs required is one run that is used as a reference run, plus one additional run for each parameter.
A first aspect of the invention is directed to a method of improving a probability of an integrated circuit (IC) design meeting timing requirements, the method comprising the steps of: a) determining a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) calculating a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) determining whether each timing endpoint fails a threshold test; d) prioritizing any timing endpoints that fail the threshold test according to respective failure coefficients; and e) modifying the design to improve a slack of at least one of the timing endpoints.
A second aspect of the invention is directed to a system for improving a probability of an integrated circuit (IC) design meeting timing requirements, the system comprising: a) means for determining a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) means for calculating a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) means for determining whether each timing endpoint fails a threshold test; d) means for prioritizing any timing endpoints that fail the threshold test according to respective failure coefficients; and e) means for modifying the design to improve a slack of at least one of the timing endpoints.
A third aspect of the invention is directed to a computer program product comprising a computer useable medium having computer readable program code embodied therein for improving a probability of an integrated circuit (IC) design meeting timing requirements, the program product comprising: a) program code configured to determine a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; b) program code configured to calculate a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; c) program code configured to determine whether each timing endpoint fails a threshold test; d) program code configured to prioritize any timing endpoints that fail the threshold test according to respective failure coefficients; and e) program code configured to modify the design to improve a slack of at least one of the timing endpoints.
The foregoing and other features of the invention will be apparent from the following more particular description of embodiments of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The embodiments of this invention will be described in detail, with reference to the following figures, wherein like designations denote like elements, and wherein:
FIG. 1 shows a conventional approach to timing analysis.
FIG. 2 shows a block diagram of an IC design improvement system according to one embodiment of the invention.
FIG. 3 shows a flow diagram of operational methodology of the system of FIG. 2 according to one embodiment of the invention.
FIG. 4 shows a flow diagram of processing by a sensitivity determinator of FIG. 2.
FIG. 5 shows a flow diagram of steps S102 and S103 from the flow diagram of FIG. 3.
DETAILED DESCRIPTION OF THE INVENTION
For purposes of clarity only, the description includes the following sub-titles: 1. System Overview, II. Operational Methodology, and Ill. Conclusion.
I. System Overview
With reference to the accompanying drawings, FIG. 2 is a block diagram of an integrated circuit (IC) design improvement system 100 according to one embodiment of the invention. System 100 includes a memory 112, a processing unit (PU) 114, input/output devices (I/O) 116 and a bus 118. A database 120 may also be provided for storage of data relative to processing tasks. Memory 112 includes a program product 122 that, when executed by PU 114, comprises various functional capabilities described in further detail below. Memory 112 (and database 120) may comprise any known type of data storage system and/or transmission media, including magnetic media, optical media, random access memory (RAM), read only memory (ROM), a data object, etc. Moreover, memory 112 (and database 120) may reside at a single physical location comprising one or more types of data storage, or be distributed across a plurality of physical systems. PU 114 may likewise comprise a single processing unit, or a plurality of processing units distributed across one or more locations. I/O 116 may comprise any known type of input/output device including a network system, modem, keyboard, mouse, scanner, voice recognition system, CRT, printer, disc drives, etc. Additional components, such as cache memory, communication systems, system software, etc., may also be incorporated into system 100. System 100 receives an IC design 200 to be legalized and outputs an improved IC design 202. It should be recognized that system 100 may be incorporated as a part of a larger IC design system or be provided as a separate system.
As shown in FIG. 2, program product 122 may include a sensitivity determinator 124, a distribution determinator 125, a failure coefficient calculator 126, a threshold tester 128, a prioritizer 130, a modifier 132, and other system components 134. Sensitivity determinator 124 may include a slack determinator 140 and a sensitivity calculator 142. Failure coefficient calculator 126 may include a failure probability (FP) calculator 144 and a worst-case slack determinator 146. Other system components 134 may include any other necessary functionality not expressly described herein.
It should be recognized that while system 100 has been illustrated as a standalone system, it may be included as part of a larger IC design system or a peripheral thereto. An IC design 200 is input to system 100, and an improved IC design 202 is output from system 100.
II. Operational Methodology
Turning to FIG. 3 in conjunction with FIG. 2, an operational methodology of system 100 for improving a probability of an integrated circuit (IC) design meeting timing requirements according to one embodiment of the invention will now be described. As a brief overview, the method includes the following steps: S101, determine a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design; S102, calculate a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints; S103, determine whether at least one timing endpoint has greater than a specified probability of failing at least one threshold test; S104, prioritize any timing endpoints that fail the at least one threshold test according to their respective failure coefficients; and S105, modify the design to improve a slack of at least one of the timing endpoints.
Turning to the details of the method, in first step S101, a reference slack and a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design are determined by sensitivity determinator 124. As used herein, a “parameter” can be one or more factors that can be varied to change the timing of IC design 200. For example, a parameter may be a voltage, a structural (metal) dimension, a material characteristic, a process step measurement, etc., or a combination of the above. With regard to the reference slack determination, slack determinator 140 may include any now known or later developed software, along with hardware, necessary to obtain a slack value for a timing endpoint of IC design 200 (FIG. 2).
Referring to FIG. 4, a flow diagram of operational methodology of sensitivity calculator 142 according to one embodiment of the invention is shown. In this embodiment, in a first sub-step S101A, a first reference slack Sj(ref1) is determined by sensitivity determinator 124 for each timing endpoint by using reference values for all parameters, where j ranges between 1 and the total number of endpoints of interest denoted as M. Each reference slack Sj(ref1) is calculated when all N independent parameters Xi, where i ranges between 1 and N, are set to their corresponding reference parameter value Xi(ref1). Each reference parameter value Xi(ref1) may be equivalent to, for example, an extreme value from the range (distribution) of the parameter, a nominal value Xi(nom), or some other value. In a second sub-step S101B, sensitivity calculator 142 determines a second slack Sj(Xi) for all M timing endpoints of interest when one parameter, Xi, is substantially equivalent to a new, different parameter value Xi(2). In one embodiment, the different parameter value Xi(2) may be a value corresponding to an opposite, second extreme value from the range (distribution) of the parameter that was chosen for the reference parameter value during the reference slack calculation step S101A. During this step, only parameter Xi is changed while all other N−1 parameter values remain set to the values used in sub-step S101A. In one embodiment, the value for a reference parameter used during sub-step S101A is Xi(nom)+Ki*σi and the value used for the different parameter value during sub-step S101B is Xi(nom)−Ki*σi, where Xi(nom) is the mean, σi is the standard deviation, and Ki is the standard deviation multiplier of the Xi parameter distribution. Typically, a value of 3 is chosen for Ki to represent +/−3 standard deviations from the mean, however, other values may be used. In sub-step S101C, sensitivity calculator 142 calculates the slack sensitivity (∂Sj/∂Xi) to parameter Xi variations for all M timing endpoints of interest. In one embodiment, the slack sensitivity for a given timing endpoint is calculated by dividing the difference in slack ∂Sj(i.e., Sj(ref1)−Sj(Xi)) by the difference in the parameter's value ∂Xi(i.e., Xi(ref1)−Xi(2)) in order to obtain ∂Sj/∂Xi, however other methods of calculating sensitivity of slack to parameter variation may be used. It should be recognized that the two slack computations (step S101A and S101B) used to determine each slack sensitivity ∂Sj/∂Xi(step S101C) may give different results due to different paths to endpoint j. Thus, they are not simply delay derivatives, but include effects due to the dominance of different paths under different parameter/process permutations. Once the slack sensitivities for all M timing endpoints are calculated for parameter Xi, steps S101B and S101C are repeated for each of the remaining N−1 parameters.
Returning to FIG. 3, the second step S102 includes failure coefficient calculator 144 calculating a failure coefficient (FP) from the reference slack Sj(ref1) and parameter sensitivities, i.e., ∂Sj/∂XI to ∂Sj/∂XN, for each of the timing endpoints. As used herein, a “failure coefficient” is a value indicative of a probability of failure for a timing endpoint, and can be embodied in a number of ways including actual numerical calculations of a failure probability and a worst case excess slack, as will be described below. In step S103, a determination is made by threshold tester 128 as to whether each timing endpoint fails a threshold test. As will become clear below, the failure coefficient calculated and the threshold test evaluated, and the order of step S102 and S103, depends on what data is available based on the parameter distributions obtained as part of step S101.
Turning to FIG. 5, details of steps S102 and S103 will now be described.
In a first sub-step S201, a worst-case (WC) slack determinator 146 calculates worst case (minimum or least positive) slack using the endpoint's reference slack Sj(ref1) and parameter sensitivities ∂Sj/∂XI to ∂Sj/∂XN. In one embodiment, a worst case (minimal) slack value as computed by WC slack determinator 146 as: S(Yσ)=Sj(nom)−Y*Sum over all N parameters of ABS {∂Sj/∂Xi*σi}, where ABS is the absolute value and Y is a user definable multiple. The nominal slack for the slack distribution can be calculated as: Sj(nom)=Sj(ref1)−sum over all N parameters {∂Sj/∂Xi*Ki*σi}, where Ki*σi is the difference between values Xi(nom) and Xi(ref) of parameter i. The worst case slack S(Yσ) is computed as the difference between nominal slack and a multiple (Y) of a sum over all parameters of an absolute value of standard deviation of the delay variation with respect to that parameter. In an alternative embodiment, the worst-case slack for each timing endpoint can be calculated as a difference between a nominal slack and a multiple (Y) of a root sum square over all parameters of an absolute value of standard deviation.
Next in sub-step S202, a determination is made as to whether all parameter distributions are defined in such a way that a failure probability can be determined (step S205) by distribution determinator 125. This determination may include determining whether the distributions are Gaussian or can be readily modeled as Gaussian. If YES at sub-step S202, then processing proceeds to sub-steps S203-S204, otherwise, processing proceeds to sub-steps S205-S206.
1. Sub-Steps S203-S204: Parameter Distributions Known: Gaussian or Modeled as Gaussian
If all parameter distributions are Gaussian or modeled as Gaussian, a failure coefficient can be calculated as a failure probability by FP calculator at sub-step S203 in one of three ways:
First, the failure coefficient can be calculated as a failure probability by FP calculator 144 based on a user-specified multiple (Y) of a standard deviation (sigma or σ) of the slack distribution, i.e., the +/−Y sigma points of the slack distribution. This step may be completed by first determining the nominal slack for the slack distribution as: Sj(nom)=Sj(ref1)−sum over all N parameters {∂Sj/∂Xi*Ki*σi}, where Ki*σi is the difference between values Xi(nom) and Xi(ref) of parameter i. The failure coefficient S(Yσ) can then be computed by determining an endpoint slack at a specified Y sigma multiplier as: S(Yσ)=Sj(nom)−Y*RSS over all N parameters {∂Sj/∂Xi*σi}, where RSS is the root sum square. Typically, Y will be 3, but other sigma multipliers could be used.
Second, the failure probability can be calculated by FP calculator 144 by determining a sigma multiplier Z that would result in the slack of that endpoint equaling a specified slack threshold S(threshold). Specifically, Z would be computed as: Z=(Sj(nom)−S(threshold))/(RSS over all N parameters {∂Sj/∂Xi*σi}), where RSS is the root sum square. Sj(nom) would be calculated as described above. A larger value of Z would indicate a larger probability of failure.
Third, a failure probability could be calculated by FP calculator 144 by integrating the slack probability distribution from minus infinity (−∞) to Sj(nom)−Z*RSS over all N parameters {∂Sj/∂Xi*σi} using an error function of a Gaussian density (i.e., an erf function). The sigma multiplier Z would be calculated as described above.
Once the failure probability is known, at sub-step S204, a determination is made by threshold tester 128 as to whether a failure probability of any timing endpoint exceeds a failure coefficient threshold R. In general, a failure coefficient threshold R may be selected by a user to balance performance for risk of loss of product yield. If NO at sub-step S204, then no IC design modification is necessary and processing ends. Otherwise, i.e., YES at sub-step S204, processing returns to step S104 of FIG. 3.
2. Sub-Steps S205-S206: Parameter Distributions Undefined
If the distributions are undefined, i.e., NO at sub-step S202, in sub-step S205, a determination is made by threshold tester 128 as to whether a worst-case WC slack S(Yσ) (computed for each timing endpoint by worst case slack determinator 146 (sub-step S201)) of any timing endpoint is less positive than a slack threshold S(threshold). For typical timing applications, slack threshold is usually zero, but this is not necessary. If any worst-case slack S(Yσ) is more positive than slack threshold S(threshold), i.e., NO at sub-step S205, the probability of failure is considered to be zero and no IC design modification is necessary, so processing ends. That is, timing endpoints having a worst-case WC slack S(Yσ) value greater than some user-specified threshold S(threshold) (typically zero) are considered to have a zero failure probability and thus need no improvement. If any worst-case slack S(Yσ) is more negative than slack threshold S(threshold), i.e., YES at sub-step S205, the probability of failure is non-zero and processing proceeds to sub-step S206. Among timing endpoints with worst case WC slack S(Yσ) values greater than S(threshold), those with lower (e.g., more negative) values are considered to have higher failure probabilities and thus have a higher priority for improvement.
In sub-step S206, the worst case (WC) slack values S(Yσ) computed for each timing endpoint by worst case slack determinator 146 (sub-step S201) are used by failure coefficient calculator 126 to generate a failure coefficient in the form of a worst case slack excess, which equals S(threshold) −S(Yσ). That is, the probability of failure for a timing endpoint can be derived from the worst case (minimum or least positive) slack value.
With regard to sub-steps S203 and S206, it should be recognized that the types of thresholds can vary depending on how the failure coefficient is calculated. In particular, since Z (the sigma multiple at which the slack becomes less than a slack threshold), S(Yσ) (the slack at a particular sigma multiple−computed by either RSS or summing the individual parameter sigma contributions) and an actual failure probability (computed by integrating a Gaussian distribution), are different numbers with different dimensions and ranges, the thresholds against which each should be compared may be different. For example, in the event that a sigma multiplier Z (at which a specified slack threshold S(threshold) is reached) is used as a failure coefficient, S(threshold) will be a sigma multiplier against which Z is compared. Accordingly, the failure coefficient used may be user selected, and an appropriate failure coefficient threshold used.
The results from sub-steps S203 or S206 are failure coefficients for each of the M timing endpoints. With further regard to sub-steps S203 and S206, it is also possible to introduce multiple pairs of slack thresholds S(threshold_i) and failure coefficient thresholds Ri, so that system 100 could analyze using stepped slack thresholds S(threshold_i) and failure coefficient thresholds Ri. In this fashion, modification requirement decisions can be made based on the various points of the slack distribution, rather than on just a single point.
Returning to FIG. 3, in fourth step S104, any timing endpoints that fail at least one threshold test are prioritized by prioritizer 130 according to their respective failure coefficients, i.e., failure probability or worst case slack excess. In one embodiment, the timing endpoints are prioritized from a highest failure coefficient (i.e., those most likely requiring modification) to a lowest failure coefficient (i.e., those less likely to require modification). For example, a higher priority would be assigned to endpoints with higher WC slack excesses S(threshold)−S(Yσ), lower computed Z sigma multipliers at which a specified slack threshold is reached, or at higher actual computed failure probabilities. Where multiple pairs of slack/failure coefficient thresholds (S(threshold_i)/Ri) are used, the prioritization may also be based on the multiplicity of threshold testing pairs. For example, system 100 may choose to modify all timing endpoints whose WC slack is less than slack threshold S(threshold_0) with a failure coefficient greater than R0, and then modify remaining timing endpoints whose WC slack is less than slack threshold X S(threshold_1) with a failure coefficient greater than R1, and so on. The prioritization may also include an estimation of the cost to implement a modification, e.g., increase in area, power, wiring required, etc., and implement modifications first for timing endpoints where the ratio between the failure coefficient and the cost of the modification is a maximum.
Next in step S105, the design is modified by modifier 132 to improve the slack of at least one of the timing endpoints. An improved IC design 202 is output. Modifier 132 may include any now known or later developed software mechanisms for correcting IC design 200 to address the timing issues. Where the prioritization is from highest to lowest failure coefficient, the modifying step includes modifying the design by addressing the timing endpoints from a failure coefficient indicative of a highest probability of failure to a failure coefficient indicative of a lowest probability of failure. Timing margin is traditionally added to the endpoint by padding either the early or late path delay that converges at the endpoint. Modifier 132 may also make modifications using parameter sensitivity for a respective timing endpoint by providing a sufficient timing margin for a respective timing endpoint in order to account for sensitivities to parameter variations. In addition, a high value for ∂Sj/∂Xi indicates that timing endpoint Sj has a high sensitivity to variations in parameter Xi. This implies a large imbalance of parameter Xi between the early and late timing paths. To correct for this imbalance, the sensitivity to parameter variations for a respective endpoint are used to guide parameter balancing and connectivity between paths that compose a timing test at the timing endpoint. That is, the layout between late and early paths are balanced or matched with similar parameter content and connectivity. For example, if a late path is routed primarily on metal layer C and the early path is routed primary on metal layer D, the timing endpoint associated with these paths will exhibit sensitivity to both metal layers C and D. The magnitude of the sensitivity is proportional to the amount of wire in each path. To reduce this sensitivity, one approach is to balance the metal layer content and connectivity between the early and lath paths in order to facilitate path delay tracking, thereby reducing slack sensitivity to metal C and metal D variations. Once modifications are made to the design to correct for timing violations, either by delay padding or by parameter-connectivity matching between the early and late paths, the process is repeated by returning to step S101 in FIG. 3. If all modifications in step S105 were successful, the new failure coefficients for each timing endpoint calculated from substeps S203 (FIG. 5) and S206 (FIG. 5) will terminate the process. If additional fixes are required, the processing flow of FIG. 5 is repeated.
III. Conclusion
The above-described invention provides a way, based on the known sensitivities, to provide a number of advantageous functions. For example, when parameters are independent from each other the invention allows one to determine what point within the 2N parameter space corresponds to the most conservative physical space. This allows one to quickly identify the process space for timing closure on each endpoint without doing 2N timing runs. In addition, the invention allows using the sensitivities to calculate a slack adjustment on the reference timing run that would correspond to the slack that would be obtained at the most conservative physical process space. The sensitivities can also be used to guide modification methodologies. Parameters with the highest sensitivities illustrate an unbalanced content of parameter usage between the early and late paths, which can be used to direct correction. The probability of endpoint failures can be used to prioritize timing endpoints for modification or help guide hardware functional test on which endpoints to test.
In the previous discussion, it will be understood that the method steps discussed are performed by a processor, such as PU 114 of system 100, executing instructions of program product 122 stored in memory. It is understood that the various devices, modules, mechanisms and systems described herein may be realized in hardware, software, or a combination of hardware and software, and may be compartmentalized other than as shown. They may be implemented by any type of computer system or other apparatus adapted for carrying out the methods described herein. A typical combination of hardware and software could be a general-purpose computer system with a computer program that, when loaded and executed, controls the computer system such that it carries out the methods described herein. Alternatively, a specific use computer, containing specialized hardware for carrying out one or more of the functional tasks of the invention could be utilized. The present invention can also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods and functions described herein, and which−when loaded in a computer system—is able to carry out these methods and functions. Computer program, software program, program, program product, or software, 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 the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
While this invention has been described in conjunction with the specific embodiments outlined above, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, the embodiments of the invention as set forth above are intended to be illustrative, not limiting. Various changes may be made without departing from the spirit and scope of the invention as defined in the following claims.

Claims (9)

1. A method of improving a probability of an integrated circuit (IC) design meeting timing requirements, the method comprising the steps of:
a) determining a reference slack using a reference run, and determining a sensitivity of slack to a variation in at least one parameter for each of a plurality of timing endpoints of the design, including:
determining a first slack at each timing endpoint for a reference parameter value for each parameter,
wherein the reference parameter value is substantially equivalent to one of:
a first extreme value of a value range of the parameter, and
a nominal value plus a multiple of a standard deviation of the parameter;
determining a second slack at each timing endpoint for a different parameter value than the reference parameter value for each parameter; and
calculating the sensitivity of the slack to the variation in the at least one parameter,
including dividing a difference between the first slack and the second slack by a difference between the reference parameter value and the different parameter value;
b) calculating a failure coefficient from the reference slack and the sensitivity of slack for each of the timing endpoints;
c) determining whether each timing endpoint fails a threshold test;
d) prioritizing any timing endpoints that fail the threshold test according to respective failure coefficients; and
e) modifying the design to improve a slack of at least one of the timing endpoints.
2. The method of claim 1, wherein in the case that the first extreme value is used, the different parameter value is substantially equivalent to an opposite, second extreme value of the value range of the parameter.
3. The method of claim 1, wherein the failure coefficient calculating and the threshold test determining steps include:
calculating a worst case slack for each timing endpoint; and
determining whether a parameter distribution is Gaussian or non-Gaussian.
4. The method of claim 3, wherein the worst case slack calculating step includes one of:
determining a difference between a nominal slack and a multiple (Y) of a sum over all parameters of an absolute value of standard deviation; and
determining a difference between a nominal slack and a multiple (Y) of a root sum square over all parameters of an absolute value of standard deviation.
5. The method of claim 3, wherein in the case that the parameter distribution is Gaussian, the failure coefficient calculating step includes calculating the failure coefficient for each timing endpoint by one of:
a) integrating a slack distribution from minus infinity to a failure threshold;
b) determining a sigma multiplier at which an endpoint slack equals a slack threshold; and
c) calculating a multiple of a standard deviation of a slack distribution; and
the threshold test includes the failure probability exceeding a failure probability threshold.
6. The method of claim 3, wherein in the case that the parameter distribution is non-Gaussian, the threshold test includes the worst-case slack of any timing endpoint exceeding a slack threshold, and
the failure coefficient calculating step includes calculating a worst case slack excess for any timing endpoint exceeding the slack threshold.
7. The method of claim 1, wherein the modifying step includes modifying the design by addressing the timing endpoints from a failure coefficient indicative of a highest probability of failure to a failure coefficient indicative of a lowest probability of failure.
8. The method of claim 1, wherein the modifying step includes using the sensitivity to parameter variations for a respective timing endpoint to guide parameter balancing and connectivity between paths that compose a timing test at the timing endpoint.
9. The method of claim 1, wherein the modifying step includes providing a sufficient timing margin for a respective timing endpoint in order to account for sensitivities to parameter variations.
US10/904,309 2004-11-03 2004-11-03 Slack sensitivity to parameter variation based timing analysis Active 2025-12-21 US7401307B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US10/904,309 US7401307B2 (en) 2004-11-03 2004-11-03 Slack sensitivity to parameter variation based timing analysis
US11/930,924 US7716616B2 (en) 2004-11-03 2007-10-31 Slack sensitivity to parameter variation based timing analysis
US12/122,451 US7870525B2 (en) 2004-11-03 2008-05-16 Slack sensitivity to parameter variation based timing analysis

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/904,309 US7401307B2 (en) 2004-11-03 2004-11-03 Slack sensitivity to parameter variation based timing analysis

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/930,924 Continuation US7716616B2 (en) 2004-11-03 2007-10-31 Slack sensitivity to parameter variation based timing analysis
US12/122,451 Continuation US7870525B2 (en) 2004-11-03 2008-05-16 Slack sensitivity to parameter variation based timing analysis

Publications (2)

Publication Number Publication Date
US20060101361A1 US20060101361A1 (en) 2006-05-11
US7401307B2 true US7401307B2 (en) 2008-07-15

Family

ID=36317785

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/904,309 Active 2025-12-21 US7401307B2 (en) 2004-11-03 2004-11-03 Slack sensitivity to parameter variation based timing analysis
US11/930,924 Expired - Fee Related US7716616B2 (en) 2004-11-03 2007-10-31 Slack sensitivity to parameter variation based timing analysis
US12/122,451 Expired - Fee Related US7870525B2 (en) 2004-11-03 2008-05-16 Slack sensitivity to parameter variation based timing analysis

Family Applications After (2)

Application Number Title Priority Date Filing Date
US11/930,924 Expired - Fee Related US7716616B2 (en) 2004-11-03 2007-10-31 Slack sensitivity to parameter variation based timing analysis
US12/122,451 Expired - Fee Related US7870525B2 (en) 2004-11-03 2008-05-16 Slack sensitivity to parameter variation based timing analysis

Country Status (1)

Country Link
US (3) US7401307B2 (en)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226669A1 (en) * 2006-03-23 2007-09-27 Fujitsu Limited Method and apparatus for repeat execution of delay analysis in circuit design
US20080104562A1 (en) * 2006-10-31 2008-05-01 Fujitsu Limited Method and program for designing semiconductor integrated circuit
US20080209365A1 (en) * 2007-02-28 2008-08-28 Riviere-Cazaux Lionel J Yield analysis and improvement using electrical sensitivity extraction
US20080216036A1 (en) * 2004-11-03 2008-09-04 Foreman Eric A Slack sensitivity to parameter variation based timing analysis
US20090235217A1 (en) * 2008-03-11 2009-09-17 International Business Machines Corporation Method to identify timing violations outside of manufacturing specification limits
US20090265674A1 (en) * 2008-04-16 2009-10-22 International Business Machines Corporation Methods for identifying failing timing requirements in a digital design
US20110126163A1 (en) * 2009-11-24 2011-05-26 International Business Machines Corporation Method to reduce delay variation by sensitivity cancellation
US8082535B1 (en) * 2009-02-03 2011-12-20 Xilinx, Inc. Method and apparatus for testing programmable integrated circuits
US8560994B1 (en) 2012-04-24 2013-10-15 International Business Machines Corporation Enabling statistical testing using deterministic multi-corner timing analysis
US9939880B1 (en) 2016-10-06 2018-04-10 International Business Machines Corporation Voltage and frequency balancing at nominal point
US10216875B2 (en) 2017-02-23 2019-02-26 International Business Machines Corporation Leverage cycle stealing within optimization flows

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005197558A (en) * 2004-01-09 2005-07-21 Matsushita Electric Ind Co Ltd Automatic layout method of semiconductor integrated circuit
US7484194B2 (en) * 2005-07-18 2009-01-27 Synopsys, Inc. Automation method and system for assessing timing based on Gaussian slack
JP4536647B2 (en) * 2005-11-29 2010-09-01 富士通セミコンダクター株式会社 Timing analysis apparatus and program thereof
US7900165B2 (en) * 2007-03-30 2011-03-01 Synopsys, Inc. Determining a design attribute by estimation and by calibration of estimated value
US8201011B1 (en) 2007-09-26 2012-06-12 Oracle America, Inc. Timing optimization for paths in a processor
US8122409B2 (en) 2007-10-09 2012-02-21 International Business Machines Corporation Method and device for selectively adding timing margin in an integrated circuit
US7873926B2 (en) * 2008-03-31 2011-01-18 International Business Machines Corporation Methods for practical worst test definition and debug during block based statistical static timing analysis
US7913213B2 (en) * 2008-04-10 2011-03-22 Oracle America, Inc. Tool and method for automatically identifying minimum timing violation corrections in an integrated circuit design
JP5380933B2 (en) * 2008-07-17 2014-01-08 富士通株式会社 MONITOR POSITION DETERMINING DEVICE AND MONITOR POSITION DETERMINING METHOD
US8239800B2 (en) * 2010-01-29 2012-08-07 Synopsys, Inc. Method and apparatus for determining a robustness metric for a circuit design
JP5614297B2 (en) * 2011-01-18 2014-10-29 富士通株式会社 Index calculation program and method, and design support apparatus
US8413095B1 (en) 2012-02-21 2013-04-02 International Business Machines Corporation Statistical single library including on chip variation for rapid timing and power analysis
US8640075B2 (en) 2012-06-01 2014-01-28 International Business Machines Corporation Early design cycle optimzation
US9330216B2 (en) 2014-06-30 2016-05-03 Freescale Semiconductor, Inc. Integrated circuit design synthesis using slack diagrams
US11023634B1 (en) 2020-01-14 2021-06-01 International Business Machines Corporation Downstream slack creation in integrated circuit development
CN112417803B (en) * 2020-12-02 2024-02-06 苏州复鹄电子科技有限公司 Automatic optimization method for design parameters of analog integrated circuit based on artificial intelligence algorithm
US11803686B2 (en) * 2021-08-16 2023-10-31 International Business Machines Corporation Selective exposure of standard cell output nets for improved routing solutions

Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4924430A (en) 1988-01-28 1990-05-08 Teradyne, Inc. Static timing analysis of semiconductor digital circuits
US5544071A (en) 1993-12-29 1996-08-06 Intel Corporation Critical path prediction for design of circuits
US5640429A (en) * 1995-01-20 1997-06-17 The United States Of America As Represented By The Secretary Of The Air Force Multichannel non-gaussian receiver and method
US5694342A (en) * 1996-10-24 1997-12-02 The United States Of America As Represented By The Secretary Of The Navy Method for detecting signals in non-Gaussian background clutter
US6397371B1 (en) 2000-04-20 2002-05-28 Cadence Design Systems, Inc. Procedure for worst-case analysis of discrete systems
US6425110B1 (en) 1998-12-17 2002-07-23 International Business Machines Corporation Incremental design tuning and decision mediator
US6487705B1 (en) 2001-09-05 2002-11-26 Nec Electronics, Inc. Timing optimization and timing closure for integrated circuit models
US6507938B1 (en) 1999-11-12 2003-01-14 Intel Corporation Methods for improving the performance of VLSI layouts designed by a timing driven physical design tool
US20030192020A1 (en) 2002-04-05 2003-10-09 Mentor Graphics Corporation Slack time analysis through latches on a circuit design
US6637014B2 (en) 2001-03-06 2003-10-21 Nec Corporation Crosstalk mitigation method and system
US20030226122A1 (en) 2002-05-30 2003-12-04 International Business Machines Corporation Parameter variation tolerant method for circuit design optimization
US20030229871A1 (en) 2002-06-10 2003-12-11 Fujitsu Limited Of Kawasaki, Japan Method of generating timing constraint model of logic circuit, program for generating timing constraint model of logic circuit, and timing-driven layout method of using the timing constraint model
US6701505B1 (en) 2001-11-30 2004-03-02 Sequence Design, Inc. Circuit optimization for minimum path timing violations
US6708139B2 (en) 2002-04-30 2004-03-16 Agilent Technologies, Inc. Method and apparatus for measuring the quality of delay test patterns
US20040167756A1 (en) * 2003-02-21 2004-08-26 Matsushita Electric Industrial Co., Ltd. Apparatus and method for statistical LSI delay simulation
US20040230921A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Method of optimizing and analyzing selected portions of a digital integrated circuit
US20040243964A1 (en) * 2003-05-30 2004-12-02 Mcelvain Kenneth S. Method and apparatus for automated circuit design
US20050081175A1 (en) * 2003-10-10 2005-04-14 Scott William Franson Method for discrete gate sizing in a netlist
US20050246117A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation System and method of analyzing timing effects of spatial distribution in circuits
US20050246116A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Method and system for evaluating timing in an integrated circuit
US20050283748A1 (en) * 2004-06-18 2005-12-22 Fujitsu Limited Slack value setting method, slack value setting device, and recording medium recording a computer-readable slack value setting program
US20060010415A1 (en) * 2004-07-12 2006-01-12 International Business Machines Corporation Method, system and storage medium for determining circuit placement
US20060015836A1 (en) * 2004-07-12 2006-01-19 International Business Machines Corporation Negative slack recoverability factor - a net weight to enhance timing closure behavior
US20060048084A1 (en) * 2004-08-27 2006-03-02 Barney C A System and method for repairing timing violations
US20060059446A1 (en) * 2004-09-14 2006-03-16 Chen Thomas W Sensitivity based statistical timing analysis
US20060085775A1 (en) * 2004-10-19 2006-04-20 Hongliang Chang System and method for accommodating non-gaussian and non-linear sources of variation in statistical static timing analysis
US20070016881A1 (en) * 2005-07-18 2007-01-18 Synopsys, Inc. Automation method and system for assessing timing based on Gaussian slack
US20070019887A1 (en) * 2004-06-30 2007-01-25 Oscar Nestares Computing a higher resolution image from multiple lower resolution images using model-base, robust bayesian estimation
US7263150B2 (en) * 2001-03-20 2007-08-28 Advantest Corp. Probability estimating apparatus and method for peak-to-peak clock skews
US20080034338A1 (en) * 2005-12-09 2008-02-07 Fujitsu Limited Timing analysis method and device
US20080072198A1 (en) * 2004-06-17 2008-03-20 Mustafa Celik Defining Statistical Sensitivity for Timing Optimization of Logic Circuits with Large-Scale Process and Environmental Variations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453446B1 (en) * 1997-12-24 2002-09-17 Magma Design Automation, Inc. Timing closure methodology
ATE452641T1 (en) * 2002-09-05 2010-01-15 Pantarhei Bioscience Bv ORAL PHARMACEUTICAL COMPOSITION CONTAINING 15-HYDROXYTESTOSTERONE AND ITS DERIVATIVES
US6904585B2 (en) * 2003-04-04 2005-06-07 International Business Machines Corporation Method for identification and removal of non-timing critical wire routes from congestion region
US7178118B2 (en) * 2003-05-30 2007-02-13 Synplicity, Inc. Method and apparatus for automated circuit design
US7356793B2 (en) * 2004-07-12 2008-04-08 International Business Machines Corporation Genie: a method for classification and graphical display of negative slack timing test failures
US7401307B2 (en) * 2004-11-03 2008-07-15 International Business Machines Corporation Slack sensitivity to parameter variation based timing analysis
US7213223B2 (en) * 2004-11-19 2007-05-01 Lsi Logic Corporation Method of estimating a total path delay in an integrated circuit design with stochastically weighted conservatism

Patent Citations (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4924430A (en) 1988-01-28 1990-05-08 Teradyne, Inc. Static timing analysis of semiconductor digital circuits
US5544071A (en) 1993-12-29 1996-08-06 Intel Corporation Critical path prediction for design of circuits
US5640429A (en) * 1995-01-20 1997-06-17 The United States Of America As Represented By The Secretary Of The Air Force Multichannel non-gaussian receiver and method
US5694342A (en) * 1996-10-24 1997-12-02 The United States Of America As Represented By The Secretary Of The Navy Method for detecting signals in non-Gaussian background clutter
US6425110B1 (en) 1998-12-17 2002-07-23 International Business Machines Corporation Incremental design tuning and decision mediator
US6507938B1 (en) 1999-11-12 2003-01-14 Intel Corporation Methods for improving the performance of VLSI layouts designed by a timing driven physical design tool
US6397371B1 (en) 2000-04-20 2002-05-28 Cadence Design Systems, Inc. Procedure for worst-case analysis of discrete systems
US6637014B2 (en) 2001-03-06 2003-10-21 Nec Corporation Crosstalk mitigation method and system
US7263150B2 (en) * 2001-03-20 2007-08-28 Advantest Corp. Probability estimating apparatus and method for peak-to-peak clock skews
US6487705B1 (en) 2001-09-05 2002-11-26 Nec Electronics, Inc. Timing optimization and timing closure for integrated circuit models
US6701505B1 (en) 2001-11-30 2004-03-02 Sequence Design, Inc. Circuit optimization for minimum path timing violations
US20030192020A1 (en) 2002-04-05 2003-10-09 Mentor Graphics Corporation Slack time analysis through latches on a circuit design
US6708139B2 (en) 2002-04-30 2004-03-16 Agilent Technologies, Inc. Method and apparatus for measuring the quality of delay test patterns
US20030226122A1 (en) 2002-05-30 2003-12-04 International Business Machines Corporation Parameter variation tolerant method for circuit design optimization
US20030229871A1 (en) 2002-06-10 2003-12-11 Fujitsu Limited Of Kawasaki, Japan Method of generating timing constraint model of logic circuit, program for generating timing constraint model of logic circuit, and timing-driven layout method of using the timing constraint model
US20040167756A1 (en) * 2003-02-21 2004-08-26 Matsushita Electric Industrial Co., Ltd. Apparatus and method for statistical LSI delay simulation
US20040230921A1 (en) * 2003-05-12 2004-11-18 International Business Machines Corporation Method of optimizing and analyzing selected portions of a digital integrated circuit
US20040243964A1 (en) * 2003-05-30 2004-12-02 Mcelvain Kenneth S. Method and apparatus for automated circuit design
US20050081175A1 (en) * 2003-10-10 2005-04-14 Scott William Franson Method for discrete gate sizing in a netlist
US20050246116A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation Method and system for evaluating timing in an integrated circuit
US20050246117A1 (en) * 2004-04-29 2005-11-03 International Business Machines Corporation System and method of analyzing timing effects of spatial distribution in circuits
US20060195807A1 (en) * 2004-04-29 2006-08-31 International Business Machines Corporation Method and system for evaluating timing in an integated circuit
US20070220345A1 (en) * 2004-04-29 2007-09-20 International Business Machines Corporation System and method of analyzing timing effects of spatial distribution in circuits
US20080072198A1 (en) * 2004-06-17 2008-03-20 Mustafa Celik Defining Statistical Sensitivity for Timing Optimization of Logic Circuits with Large-Scale Process and Environmental Variations
US20050283748A1 (en) * 2004-06-18 2005-12-22 Fujitsu Limited Slack value setting method, slack value setting device, and recording medium recording a computer-readable slack value setting program
US20070019887A1 (en) * 2004-06-30 2007-01-25 Oscar Nestares Computing a higher resolution image from multiple lower resolution images using model-base, robust bayesian estimation
US20060010415A1 (en) * 2004-07-12 2006-01-12 International Business Machines Corporation Method, system and storage medium for determining circuit placement
US20060015836A1 (en) * 2004-07-12 2006-01-19 International Business Machines Corporation Negative slack recoverability factor - a net weight to enhance timing closure behavior
US20060048084A1 (en) * 2004-08-27 2006-03-02 Barney C A System and method for repairing timing violations
US20060059446A1 (en) * 2004-09-14 2006-03-16 Chen Thomas W Sensitivity based statistical timing analysis
US20060085775A1 (en) * 2004-10-19 2006-04-20 Hongliang Chang System and method for accommodating non-gaussian and non-linear sources of variation in statistical static timing analysis
US20070016881A1 (en) * 2005-07-18 2007-01-18 Synopsys, Inc. Automation method and system for assessing timing based on Gaussian slack
US20080034338A1 (en) * 2005-12-09 2008-02-07 Fujitsu Limited Timing analysis method and device

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Timing Verification Algorithm for Clock Design with Slack Stealing," IBM Technical Disclosure Bulletin, vol. 36, No. 10, Oct. 1993, pp. 249-253.
Agarwal, A. et al., "Statistical Timing Analysis for Intra-Die Process Variations with Spatial Correlations," ICCAD, Nov. 2003, pp. 900-907.
Chang, H. et al., "Statistical Timing Analysis Considering Spatial Correlations Using a Single Pert-Like Traversal," ICCAD, Nov. 2003, pp. 621-625.
Chen, H.-C et al., "A Path Sensitization Approach to Area Reduction," Computer Design: VLSI in Computers and Processors, 1993. ICCD 1993 Proceedings, IEEE International Conference, Oct. 1993, pp. 73-76.

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7870525B2 (en) * 2004-11-03 2011-01-11 International Business Machines Corporation Slack sensitivity to parameter variation based timing analysis
US20080216036A1 (en) * 2004-11-03 2008-09-04 Foreman Eric A Slack sensitivity to parameter variation based timing analysis
US7653889B2 (en) * 2006-03-23 2010-01-26 Fujitsu Limited Method and apparatus for repeat execution of delay analysis in circuit design
US20070226669A1 (en) * 2006-03-23 2007-09-27 Fujitsu Limited Method and apparatus for repeat execution of delay analysis in circuit design
US20080104562A1 (en) * 2006-10-31 2008-05-01 Fujitsu Limited Method and program for designing semiconductor integrated circuit
US7930665B2 (en) * 2006-10-31 2011-04-19 Fujitsu Semiconductor Limited Method and program for designing semiconductor integrated circuit
US20080209365A1 (en) * 2007-02-28 2008-08-28 Riviere-Cazaux Lionel J Yield analysis and improvement using electrical sensitivity extraction
US7574682B2 (en) * 2007-02-28 2009-08-11 Freescale Semiconductor, Inc. Yield analysis and improvement using electrical sensitivity extraction
US20090235217A1 (en) * 2008-03-11 2009-09-17 International Business Machines Corporation Method to identify timing violations outside of manufacturing specification limits
US7844932B2 (en) * 2008-03-11 2010-11-30 International Business Machines Corporation Method to identify timing violations outside of manufacturing specification limits
US20090265674A1 (en) * 2008-04-16 2009-10-22 International Business Machines Corporation Methods for identifying failing timing requirements in a digital design
US7886246B2 (en) * 2008-04-16 2011-02-08 International Business Machines Corporation Methods for identifying failing timing requirements in a digital design
US8082535B1 (en) * 2009-02-03 2011-12-20 Xilinx, Inc. Method and apparatus for testing programmable integrated circuits
US20110126163A1 (en) * 2009-11-24 2011-05-26 International Business Machines Corporation Method to reduce delay variation by sensitivity cancellation
US8448110B2 (en) * 2009-11-24 2013-05-21 International Business Machines Corporation Method to reduce delay variation by sensitivity cancellation
US8560994B1 (en) 2012-04-24 2013-10-15 International Business Machines Corporation Enabling statistical testing using deterministic multi-corner timing analysis
US9939880B1 (en) 2016-10-06 2018-04-10 International Business Machines Corporation Voltage and frequency balancing at nominal point
US10216252B2 (en) 2016-10-06 2019-02-26 International Business Machines Corporation Voltage and frequency balancing at nominal point
US10222852B2 (en) 2016-10-06 2019-03-05 International Business Machines Corporation Voltage and frequency balancing at nominal point
US10222850B2 (en) 2016-10-06 2019-03-05 International Business Machines Corporation Voltage and frequency balancing at nominal point
US10216875B2 (en) 2017-02-23 2019-02-26 International Business Machines Corporation Leverage cycle stealing within optimization flows
US10540465B2 (en) 2017-02-23 2020-01-21 International Business Machines Corporation Leverage cycle stealing within optimization flows
US10552562B2 (en) 2017-02-23 2020-02-04 International Business Machines Corporation Leverage cycle stealing within optimization flows
US10970447B2 (en) 2017-02-23 2021-04-06 International Business Machines Corporation Leverage cycle stealing within optimization flows

Also Published As

Publication number Publication date
US20080052656A1 (en) 2008-02-28
US7870525B2 (en) 2011-01-11
US20060101361A1 (en) 2006-05-11
US7716616B2 (en) 2010-05-11
US20080216036A1 (en) 2008-09-04

Similar Documents

Publication Publication Date Title
US7870525B2 (en) Slack sensitivity to parameter variation based timing analysis
US8112649B2 (en) Energy optimization through intentional errors
US6026228A (en) Integrated circuit design method, database apparatus for designing integrated circuit and integrated circuit design support apparatus
US7484194B2 (en) Automation method and system for assessing timing based on Gaussian slack
US8397204B2 (en) System and methodology for development of a system architecture using optimization parameters
JPH0713974A (en) Method and apparatus for simulation of performance of digital machine
US8452439B2 (en) Device performance parmeter tuning method and system
CN112364584A (en) Static time sequence analysis method based on distribution
US10140399B2 (en) Corner database generator
US20230038579A1 (en) Classification model training method, system, electronic device and strorage medium
CN110059068A (en) Data verification method and data verification system in a kind of distributed memory system
He et al. A hierarchical scrubbing technique for SEU mitigation on SRAM-based FPGAs
Saluja et al. Optimized approach for antipattern detection in service computing architecture
US20120303560A1 (en) System and method for development of a system architecture
Aloysius et al. A review on component based software metrics
US7403884B2 (en) Transient simulation using adaptive piecewise constant model
US7257789B2 (en) LSI design method
US6470476B2 (en) Substitution of non-minimum groundrule cells for non-critical minimum groundrule cells to increase yield
CN115248783A (en) Software testing method, system, readable storage medium and computer equipment
US11556685B1 (en) Time-based power analysis
CN117094275B (en) Chip port layout method, storage medium, electronic device and chip
US10839128B2 (en) Error detection technique based on identifying data trend issues
CN116431474B (en) Security configuration item constraint extraction method of program source code based on static analysis
US11567741B2 (en) Memory compiler techniques
CN115545191B (en) Current noise reduction network model training method and fault current limiter current noise reduction method

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FOREMAN, ERIC A.;HABITZ, PETER A.;HATHAWAY, DAVID J.;AND OTHERS;REEL/FRAME:015324/0982;SIGNING DATES FROM 20041028 TO 20041102

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: GLOBALFOUNDRIES U.S. 2 LLC, NEW YORK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:INTERNATIONAL BUSINESS MACHINES CORPORATION;REEL/FRAME:036550/0001

Effective date: 20150629

AS Assignment

Owner name: GLOBALFOUNDRIES INC., CAYMAN ISLANDS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GLOBALFOUNDRIES U.S. 2 LLC;GLOBALFOUNDRIES U.S. INC.;REEL/FRAME:036779/0001

Effective date: 20150910

FPAY Fee payment

Year of fee payment: 8

AS Assignment

Owner name: WILMINGTON TRUST, NATIONAL ASSOCIATION, DELAWARE

Free format text: SECURITY AGREEMENT;ASSIGNOR:GLOBALFOUNDRIES INC.;REEL/FRAME:049490/0001

Effective date: 20181127

AS Assignment

Owner name: GLOBALFOUNDRIES U.S. INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GLOBALFOUNDRIES INC.;REEL/FRAME:050122/0001

Effective date: 20190821

AS Assignment

Owner name: MARVELL INTERNATIONAL LTD., BERMUDA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GLOBALFOUNDRIES U.S. INC.;REEL/FRAME:051070/0625

Effective date: 20191105

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12

AS Assignment

Owner name: CAVIUM INTERNATIONAL, CAYMAN ISLANDS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MARVELL INTERNATIONAL LTD.;REEL/FRAME:052918/0001

Effective date: 20191231

AS Assignment

Owner name: MARVELL ASIA PTE, LTD., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CAVIUM INTERNATIONAL;REEL/FRAME:053475/0001

Effective date: 20191231

AS Assignment

Owner name: GLOBALFOUNDRIES INC., CAYMAN ISLANDS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:WILMINGTON TRUST, NATIONAL ASSOCIATION;REEL/FRAME:054636/0001

Effective date: 20201117