fig1 shows a simplified representation of an illustrative integrated circuit design flow incorporating features of the technology . at a high level , the process starts with the product idea ( step 100 ) and is realized in an eda ( electronic design automation ) software design process ( step 110 ). when the design is finalized , it can be taped - out ( step 140 ). after tape out , the fabrication process ( step 150 ) and packaging and assembly processes ( step 160 ) occur resulting , ultimately , in finished integrated circuit chips ( result 170 ). the eda software design process ( step 110 ) is actually composed of a number of steps 112 - 130 , shown in linear fashion for simplicity . in an actual integrated circuit design process , the particular design might have to go back through steps until certain tests are passed . similarly , in any actual design process , these steps may occur in different orders and combinations . this description is therefore provided by way of context and general explanation rather than as a specific , or recommended , design flow for a particular integrated circuit . a brief description of the components steps of the eda software design process ( step 110 ) will now be provided . system design ( step 112 ): the designers describe the functionality that they want to implement , they can perform what - if planning to refine functionality , check costs , etc . hardware - software architecture partitioning can occur at this stage . example eda software products from synopsys , inc . that can be used at this step include model architect , saber , system studio , and designware ® products . logic design and functional verification ( step 114 ): at this stage , the vhdl or verilog code for modules in the system is written and the design is checked for functional accuracy . more specifically , the design is checked to ensure that produces the correct outputs in response to particular input stimuli . example eda software products from synopsys , inc . that can be used at this step include vcs , vera , designware ®, magellan , formality , esp and leda products . synthesis and design for test ( step 116 ): here , the vhdl / verilog is translated to a netlist . the netlist can be optimized for the target technology . additionally , the design and implementation of tests to permit checking of the finished chip occurs . example eda software products from synopsys , inc . that can be used at this step include design compiler ®, physical compiler , test compiler , power compiler , fpga compiler , tetramax , and designware ® products . netlist verification ( step 118 ): at this step , the netlist is checked for compliance with timing constraints and for correspondence with the vhdl / verilog source code . example eda software products from synopsys , inc . that can be used at this step include formality , primetime , and vcs products . design planning ( step 120 ): here , an overall floor plan for the chip is constructed and analyzed for timing and top - level routing . example eda software products from synopsys , inc . that can be used at this step include astro and ic compiler products . physical implementation ( step 122 ): the placement ( positioning of circuit elements ) and routing ( connection of the same ) occurs at this step . example eda software products from synopsys , inc . that can be used at this step include the astro and ic compiler products . analysis and extraction ( step 124 ): at this step , the circuit function is verified at a transistor level , this in turn permits what - if refinement . example eda software products from synopsys , inc . that can be used at this step include astrorail , primerail , primetime , and star rc / xt products . physical verification ( step 126 ): at this step various checking functions are performed to ensure correctness for : manufacturing , electrical issues , lithographic issues , and circuitry . example eda software products from synopsys , inc . that can be used at this step include the hercules product . tape - out ( step 127 ): this step provides the “ tape out ” data for production of masks for lithographic use to produce finished chips . example eda software products from synopsys , inc . that can be used at this step include the cats ® family of products . resolution enhancement ( step 128 ): this step involves geometric manipulations of the layout to improve manufacturability of the design . example eda software products from synopsys , inc . that can be used at this step include proteus , proteusaf , and psmgen products . mask data preparation ( step 130 ): this step provides the “ tape - out ” data for production of masks for lithographic use to produce finished chips . example eda software products from synopsys , inc . that can be used at this step include the cats ® family of products . this technology is in design compiler topographical ( dc - t ) and improves the qor at a very small runtime cost . dc - t enables a predictable flow resulting in faster time to results by eliminating the costly iteration between synthesis and layout . it accurately predicts post - layout results such as timing , power and area in synthesis while eliminating the need for wire - load model based approximations . it enables users to meet today &# 39 ; s design challenges such as fastest timing , smallest area , lowest power consumption and highest test coverage in the shortest design cycle time . it permits optimizations that no other technique at layout level can do . the example flow below is used in dc - t . decompose the cells into logic primitives such as and , xor , mux . optimize on primitives using algebraic and boolean transforms map the primitives to library gates , size , insert buffers place the primitives on layout change size , insert buffer to fix layout issues a physically aware rtl to gates flow performs the following steps in an example flow , which can be rearranged or otherwise changed in other embodiments : high level optimizations ( data path , logic structuring , fsm , etc .) technology mapping gate sizing using a wire load model coarse placement sizing , buffering on the coarse placed netlist the coarse placement is hidden to the user in one embodiment , but is used to estimate the interconnect delays . in other embodiments , the coarse placement is shown to the user . dc - t reports timing values that correlate as much as possible with the post placement numbers obtained after physical optimization tools that operate on legalized placed netlists . the performance of dc - t is measured by the quality of results ( qor ) results of the post placement tools . so the timing number needs to correlate , but also the optimization performed in dc - t needs to carry over ( an algorithm is effective if it gives an improvement in dc - t and the improvement can be measured post placement ) when the user improves as much as possible the timing at dc - t level , it will avoid having to do too many iterations with the layout tools . an algorithm that improves the timing in dc - t and that provides a solution that will eventually yield a better layout is a gain of productivity for users . accordingly , dc - t is preferable to users over dc - u . optimization algorithms such as sizing and buffering improve the timing at the dc - t level but improvements do not carry on to layout because placement aware tools can do sizing and buffering themselves . to have an added value dc - t performs algorithms that work on the structure of the netlist , but driven by the layout constraints . as the flow progresses , the timing context gets more accurate ( close to the final delay estimation ). moreover , coarse placement gives a more accurate estimation of the post layout timing . improvement or reversion of logic structuring choices that were done in the early steps of the flow , is preferable . these structural changes should have a positive impact on the final layout . a very simple example is to rebalance an n input and tree so that the delay at the root of the and tree is minimal . an embodiment includes the physical restructuring engine of dc - t . the approach had a delay gain post dc - t that carried forward to post placement netlists at a small runtime overhead . the approach also has better gains with more runtime . fig2 is a simplified block diagram of a computer system that can be used to implement software incorporating aspects of the technology . computer system 210 typically includes a processor subsystem 214 which communicates with a number of peripheral devices via bus subsystem 212 . these peripheral devices may include a storage subsystem 224 , comprising a memory subsystem 226 and a file storage subsystem 228 , user interface input devices 222 , user interface output devices 220 , and a network interface subsystem 216 . the input and output devices allow user interaction with computer system 210 . network interface subsystem 216 provides an interface to outside networks , including an interface to communication network 218 , and is coupled via communication network 218 to corresponding interface devices in other computer systems . communication network 218 may comprise many interconnected computer systems and communication links . these communication links may be wireline links , optical links , wireless links , or any other mechanisms for communication of information . while in one embodiment , communication network 218 is the internet , in other embodiments , communication network 218 may be any suitable computer network . the physical hardware component of network interfaces are sometimes referred to as network interface cards ( nics ), although they need not be in the form of cards : for instance they could be in the form of integrated circuits ( ics ) and connectors fitted directly onto a motherboard , or in the form of macrocells fabricated on a single integrated circuit chip with other components of the computer system . user interface input devices 222 may include a keyboard , pointing devices such as a mouse , trackball , touchpad , or graphics tablet , a scanner , a touch screen incorporated into the display , audio input devices such as voice recognition systems , microphones , and other types of input devices . in general , use of the term “ input device ” is intended to include all possible types of devices and ways to input information into computer system 210 or onto computer network 218 . user interface output devices 220 may include a display subsystem , a printer , a fax machine , or non visual displays such as audio output devices . the display subsystem may include a cathode ray tube ( crt ), a flat panel device such as a liquid crystal display ( lcd ), a projection device , or some other mechanism for creating a visible image . the display subsystem may also provide non visual display such as via audio output devices . in general , use of the term “ output device ” is intended to include all possible types of devices and ways to output information from computer system 210 to the user or to another machine or computer system . storage subsystem 224 stores the basic programming and data constructs that provide the functionality of certain aspects of the present invention . for example , the various modules implementing the functionality of a circuit simulator and computer - implemented steps in the present application may be stored in storage subsystem 224 . these software modules are generally executed by processor subsystem 214 . the data constructs stored in the storage subsystem 224 also can include any technology files , macrocell libraries , layout files , and other databases mentioned herein . note that in some embodiments , one or more of these can be stored elsewhere but accessibly to the computer system 210 , for example via the communication network 218 . memory subsystem 226 typically includes a number of memories including a main random access memory ( ram ) 230 for storage of instructions and data during program execution and a read only memory ( rom ) 232 in which fixed instructions are stored . file storage subsystem 228 provides persistent storage for program and data files , and may include a hard disk drive , a floppy disk drive along with associated removable media , a cd rom drive , an optical drive , or removable media cartridges . the cell partition , pin timing normalization and association , and optimization determination programs 280 implementing the functionality of certain embodiments of the invention may have been provided on a computer readable medium including transitory media , and nontransitory media 240 such as one or more cd - roms ( or may have been communicated to the computer system 210 via the communication network 218 ), and may be stored by file storage subsystem 228 . the host memory 226 contains , among other things , computer instructions which , when executed by the processor subsystem 210 , cause the computer system to operate or perform functions as described herein . as used herein , processes and software that are said to run in or on “ the host ” or “ the computer ”, execute on the processor subsystem 214 in response to computer instructions and data in the host memory subsystem 226 including any other local or remote storage for such instructions and data . bus subsystem 212 provides a mechanism for letting the various components and subsystems of computer system 210 communicate with each other as intended . although bus subsystem 212 is shown schematically as a single bus , alternative embodiments of the bus subsystem may use multiple busses . computer system 210 itself can be of varying types including a personal computer , a portable computer , a workstation , a computer terminal , a network computer , a television , a mainframe , or any other data processing system or user device . due to the ever changing nature of computers and networks , the description of computer system 210 depicted in fig2 is intended only as a specific example for purposes of illustrating the preferred embodiments of the present invention . many other configurations of computer system 210 are possible having more or less components than the computer system depicted in fig2 . fig3 is a simplified process flow of the technology for determining whether to continue or halt optimization based on comparison of normalized pin timing values . in step 302 the synthesized circuit design is received . in step 304 coarse placement is performed . this placement does not need to be 100 % legal ( some cells may overlap , routing resources may be over - used ), and can be performed by different computer processing resources as other steps , or the same computer processing resources . in step 306 the critical path ( s ) are determined . given the placed netlist , collects all the critical cells . critical paths are a function of constraints . a constraint is for example a clock period for a given clock . for this constraint , all the sequential elements that are synchronized on that clock are endpoints . a constraint may also be a maximum delay from an input to an output of the design . in that case , outputs will be endpoints . for each timing constraint , a tag ( or slot ) is defined . the constraint defines , explicitly or implicitly , start points and endpoints , as well as a maximum delay to go from the start points to the endpoints . each start point applicable for the constraint is given the arrival time the user defined value for the constraint . then arrival times are propagated forwards in the circuit . arrival time of each node is computed given the electrical characteristics of this node ( defined in a library ). required times are set at the endpoints given the maximum delay . they are propagated backwards . slack of each node is the difference between the required times and the arrival times . there &# 39 ; s potentially one tag per constraint and per node . in step 308 the design is divided into cell partitions . for example , the following of the critical cells are created : one partition contains sets of cells of maximal fanout free trees . one partition contains sets of cells of tree roots and one level of fanout . in step 310 pins of cells are associated with normalized pin timing values . the timing spares are computed . in step 312 a following comparison step is skipped due to differences in structure or critical paths . structural matching is a pre - requisite for the following comparison step . two sets of cells ( two “ zones ”) match if the cells are instances of the same library cells and are connected by the same library pins if connections exist between these cells . as a consequence , a set of cells always matches with itself in the structural sense . if an optimization changes a feature of some critical path , the slacks and spares have to be recalculated . since the spares are relative ( to the most critical pins ), they are much more stable . if a change is made to the arrival time of a cell close to the primary inputs , all the arrival times in its fanout will change , but the spares may stay the same , since all the slack will be equally shifted . skipping associated with step 312 is followed by further optimization of the design 316 . such further optimization may be performed by different computer processing resources as other steps , or the same computer processing resources . in step 314 pre - optimization and post - optimization normalized pin timing values are compared . for structural matching set a and set b , a one - to - one correspondence is made between the pins of set a and set b . for each of the matching pins , the spare is compared . if any spare of two matching pins are different , there &# 39 ; s no matching . if one pin has a spare and the other not ( one is critical and not the other ), there &# 39 ; s no matching . if both pins have no spare , there &# 39 ; s a match . if may happen that a set of cells does not match with itself in the timing sense when considered at two different steps of the optimization , s 0 and sp . indeed some changes performed in the intermediate steps in the netlist may have left the set of cells unchanged , but may have changed the values of the spares of its pins . this is the strength of the timing signature . if the timing signature at step “ sp ” matches the timing signature at step “ s 0 ”, there &# 39 ; s no need to redo the optimization at step “ sp ”, because the same result will be obtained as step “ s 0 ”. the timing signature can change , without requiring reoptimization , according to a user defined range . for example , a range of 0 . 01 means that any change of less than 0 . 01 will be ignored . the higher the range , the better the runtime gain , but at some qor loss . timing context includes all the timing related values around the subset of cells : slacks , net capacitances and net transitions . if there is a compare failure then further optimization of the design 316 follows , at least for cell partitions with a compare failure and cell partitions with a difference in structure or critical path . re - structuring of the cell partition . in sequence , logic factorization , mapping , sizing and rough placement . buffer insertion , such as on “ fanout ” cell partitions . incremental placement of the cells of the partition . check the timing signature of the set of cells . if it is recorded , skip the partition . create a timing zone around the set of cells . unmap the gates into 2 input and , xor , and mux primitives . compute the timing of the primitives using a timing estimator working on unmapped logic calibrated on the target library . a timing estimator is an engine that estimates the timing through generic logic gates used to describe a logic function . indeed , a technology library cell like a and2 has his timing defined in the library provided by the user . a logic function y = a * b does not have any library cell representation , but rather used a generic and gate . the timing estimator computes an estimate of the timing of this generic and gate . apply logic structuring moves until the timing in the zone is as good as possible . logic structuring is the process of transforming a multiple output boolean function into another logic function that is potentially better for delay or area . delay is estimated using the timing estimator . apply technology mapping . technology mapping is the process of transforming a multiple output boolean function into a circuit of library cells . do rough placement using locations of the original gates . apply sizing on the solution . sizing is the process of transforming a library cell into another library cell implementing the same boolean function , but with better timing characteristics . discard the solution if the area overhead is too large . area overhead is too large , according to user definition . area overhead is too large if the area increase ( expressed in % area of the design ) per unit delay is higher than the user defined threshold . remove the zone and cost the solution with the global cost vector . undo the changes if the global cost vector degrades . create the timing signature of the set of cells , including margin . the margin is used for spare . there &# 39 ; s no margin for net capacitance , but net capacitance is only recorded for nodes that have a spare . if there is a compare success then optimization “ ends ” at 318 , followed by more synthesis , and then a return to step 302 with persistent normalized pin timing values . the persistent normalized pin timing values are persistent in that a previous run &# 39 ; s normalized pin timing values are saved for a future run . the timing zone around the set of cells avoids propagation of timing updates all along the critical path . the timing zone defines a “ mini design ” around the cells , so the whole circuit isn &# 39 ; t updated while running passes . although the solution does not remove the need of four engines ( logic structuring , mapping , sizing and placement ) to talk together , they talk more smoothly . the timing values cannot this timing zone while the timing zone is active . the timing zone is active while applying the present technology on the subset of cells . the timing signature prevents optimizing the same set of cells twice in the same timing context . the optimization will be run again only if the timing context ( reflected in the timing signature ) changes significantly . incremental placement is very simple , due to re - use of the location of the original cells . if there are more cells , the new cells are stacked and the maximal stacking is minimized . runtime is saved by not requiring a legal placement . sets with a large number of cells are not accepted . the list of operations described above reproduce the complete flow on the set of cells and uses the optimization algorithms of the flow . other embodiments rearrange or otherwise modify the flow . some embodiments are directed to computation of timing spare to resolve multiple constraints conflicts or talks about timing signature . some embodiments are directed to the tool , and to physical restructuring existing in another tool with different approaches or runtime controls . fig4 is an example of partitioning a circuit into cell partitions with persistent topology characteristics . the input is a synthesized circuit design 402 . the synthesized circuit design 402 may or may not have undergone optimization already . the synthesized circuit design 402 is divided into cell partition 1 404 , cell partition 2 406 , cell partition 3 408 , and cell partition 4 410 , all with persistent topology characteristics . a persistent topology characteristic tends to be retained , despite further rounds of optimization . because of this persistence , processing the further optimized circuit design for a subsequent round of division into cell partitions is likely to result in the same cell partitions as before ( absent a structural change etc .) fig5 is another example of partitioning a circuit into cell partitions with persistent topology characteristics . the synthesized circuit design 502 may or may not have undergone optimization already . the synthesized circuit design 502 is divided into fanout free cell partition a 504 , fanout ( with 2 levels of cell depth ) cell partition b 506 , fanout free cell partition c 508 , and fanout ( with 2 levels of cell depth ) cell partition d 510 . fig6 is an example of associating normalized pin timing values to pins of the critical path and near - critical pins . in 602 , the circuit endpoints with worst negative slack ( wns ) are identified . in 604 , the normalized pin timing values are associated to wns pins . in 606 , the normalized pin timing values are associated to remaining critical and near - critical pins . introduction of runtime controls , such as timing signatures , is used in some embodiments . runtime controls do not degrade the qor , via timing signatures . given a set of cells ( the candidate region ), a timing signature is a set of integers that characterize the timing context of each critical pin in this set of cells . consider two pins g 1 and g 2 , both not critical , but with different arrival and required times . the pins will have the same signature ( uninit value ). this is better , despite the different arrival and required times , because these two pins will be considered as equal timingwise . this is desirable because they are non critical and their timing does not matter for timing optimization . such signatures maximize the matching between two signatures . non - critical points are ignored , although near - critical points are considered . near - critical pins may become critical as a side effect of changing something on the critical pins . on the other hand , it is optional to store spare at non - near critical pins , due to the added runtime cost and incremental benefit . if two signatures computed at step s 0 and step s 1 are equal , the set of cells does not need to be optimized again , because the signature guarantees the same timing context and the same logic functions . fig7 is another example of associating normalized pin timing values to pins of the critical path and near - critical pins . in 702 , the circuit endpoints with worst negative slack ( wns ) are identified . in 704 , the normalized pin timing values of zero are associated to wns pins . in 706 , the normalized pin timing values are associated to remaining critical and near - critical pins , equal to the difference between the slack of the particular pin and the wns pin . when doing delay optimization of a set of cells , two criteria are driving the optimization : the structure and the timing . if the pins that were optimized are tracked , only the structure is considered . by looking at the timing signature , the timing is considered as well . the “ spare ” of a non - worst violator endpoint is the difference between the slack of that non - worst violator endpoint , and the slack of the worst violator endpoint . the spare allows comparison of two different pathgroups , despite possible very different absolute arrival rimes or very different absolute required times . the slack of the critical endpoints of two different pathgroups may be different , so spare is a normalization which allows comparison . whatever the slack , the slack is subtracted from the slack of the critical endpoints rather than taking the absolute value . “ spare ” of this pin . the “ spare ” is 0 for a pure critical pin , and it &# 39 ; s a positive value for a non critical pin that corresponds to the maximum delay degradation at this pin that does not change the cost at the endpoints . “ spares ” are computed incrementally at each iteration . net capacitance of this pin number of pins of the net of this pin . all the numbers are originally floating point numbers , in one embodiment . they are transformed into positive integers , with a margin of discretization . the margin is expressed in unit delay . the unit delay is a number derived from the library . it &# 39 ; s the typical delay of a nand2 delay . the lower the margin , the fuzzier . the margin allows runtime / qor trade offs . storing the spare at each pin has the property that the spare is independent of the slack at the endpoints . it gives a relative number of the timing value that characterizes the context . this is an interesting property of using the spare . if all the slacks of the candidate region improves with the same magnitude ( for instance there was a delay gain in the fanout ), the spares stay the same . more description of the spare follows . the spare is computed by traversing the netlist backwards from the critical endpoints to the startpoints . a maximum range is chosen . for each pathgroup , all the endpoints that are critical within this range are put in a queue . at each endpoint is associated a slack number and a timing tag ( or timing slot ) that allows following of the most violating paths . for different pathgroups , the slacks may be different , but are equally violating the constraints . in one embodiment , computation of the spare backwards occurs only for pins that are on that particular critical path ( following the tag ) and that are within the range . fig8 is a simplified example of computing spares and timing signatures . first we identify the endpoints of the circuit that have the worst violations ( worst negative slack , see below ) for each pathgroup . a pathgroup corresponds to a user timing constraint ( it can be a clock definition with a clock frequency and edges or a false path definition ). these endpoints are given a spare value of “ 0 ”. any endpoint that is not a worst violator has a spare of x , where x is the difference between slack of the worst violator of the same pathgroup and this endpoint slack . in fig8 , we have 4 endpoints e 1 to e 4 , e 1 and e 4 belong to pathgroup g 2 and e 2 , e 3 to pathgroup g 1 . slacks are respectively − 4 , − 2 . 9 , − 3 and − 3 . 9 . e 1 and e 3 are the worst violators for their pathgroups . they are given a spare of 0 . e 2 and e 4 are not the worst violators and they are given spares of 0 . 1 because it &# 39 ; s the difference between their slack and the worst violator slack . for e 4 slack is − 3 . 9 and worst violator slack is the slack of e 1 , i . e − 4 . so the difference is − 0 . 1 . then we propagate the spares backwards in the circuit that is represented as a graph . for all the fanins of a node , the spare of the fanin is the spare of the node plus the difference between the slack of the node and the slack of the fanin . for example , c 1 has 3 fanins , the slack value of the fanout is − 2 . 9 , and of the fanins respectively − 2 . 8 , − 2 . 7 , and − 2 . 9 . spare of the fanout is 0 . 1 , hence , spare of the fanins are 0 . 2 , 0 . 3 , and 0 . 1 . we stop the recursion for the first two because we are working on a range of 0 . 1 the subgraph defined by nodes with spares is called the “ critical graph ”. once the spares computed , we identify a zone to be reoptimized . the zone is a connected subset of the critical graph , plus some non critical nodes ( not part of the critical graph ). the nodes are represented in dashed lines . no non critical node is represented here . the timing signature of the subset of nodes is the set of spare values of these nodes . in addition to spare , we may record some other electrical characteristics like net capacitance and transition to complete the timing signature . on the timing signature picture , there are two pathgroups g 1 and g 2 , but their worst violators e 1 and e 3 have different slack . e 1 and e 3 are to be consider as critical pins , no matter their slack value . by using the spare , and a normalized value for e 1 and e 3 of 0 , they are considered as equal . the same holds for e 2 and e 4 that are at a spare of 0 . 1 , which represent their distance from the worst violator of their pathgroup . in one example , a design with two clocks clk 1 and clk 2 has periods 5 and 6 . g 1 is the group for clk 1 ( e 2 and e 3 are the endpoints ). we compute the arrival times at e 2 and e 3 , they would be respectively 8 and 7 . 9 , so their slack would be − 3 and − 2 . 9 . worst slack for g 1 is − 3 and worst slack for g 2 is − 4 . only one spare number even if there are two critical constraints ( c 1 ) no spare : non critical ones ( their spare value does not matter for optimization ) if a zone with same structure and same timing signature has already been processed , we skip it . an average 0 . 48 % post placement worst negative slack ( wns ) improvement with an average 3 % runtime overhead on a set of 110 designs , as achieved . the improvements correlate better than any other algorithms , because the post dc - t improvement is 0 . 25 %. with a 20 % runtime budget , 0 . 86 % improvement post placement was achieved . the overhead in runtime was more the sizing passes between the physical restructuring passes rather than the physical restructuring pass which had a 5 % runtime overhead . fig9 is a simplified process flow showing multiple parallel processes of the present technology using multiple clocks . the process begins with a synthesized netlist 902 . in 904 , normalized pin timing values are associated . in 906 , the multiple clock optimization process begins . this example has 3 clocks , although in other examples more clocks are used . in 908 , clock a is optimized . in 910 , clock b is optimized . in 912 , clock c is optimized . in the shown embodiment , the multiple clock optimization process is shown as parallel . in other embodiments , the process is serial , or interleaved . a global cost vector is the “ cost ” of the circuit . it &# 39 ; s represented as a vector with different values including area , delay and design rules . an optimization algorithm typically works as follows : computes the cost do a change compute the cost if the cost improves , accepts the change , otherwise rejects the change a “ large number ” of cells can cause non acceptance of a set , according to the following considerations : empirically , not much improvement on a large number of cells . it takes times too long to optimize the timing estimate of the logic representation will be potentially less accurate placement is not trivial fig1 is a simplified process flow showing multiple parallel processes of the present technology using multiple scenarios . the process begins with a synthesized netlist 1002 . in 1004 , normalized pin timing values are associated . in 1006 , the multiple scenario optimization process begins . different scenarios are different voltages , different temperatures , and so on . this example has 3 scenarios , although in other examples more scenarios are used . in 1008 , clock a is optimized . in 1010 , scenario b is optimized . in 1012 , scenario c is optimized . in the shown embodiment , the multiple clock optimization process is shown as parallel . in other embodiments , the process is serial , or interleaved . while the present invention is disclosed by reference to the preferred embodiments and examples detailed above , it is to be understood that these examples are intended in an illustrative rather than in a limiting sense . it is contemplated that modifications and combinations will readily occur to those skilled in the art , which modifications and combinations will be within the spirit of the invention and the scope of the following claims .