# Patent

## Title
Power mode transition in multi-threshold complementary metal oxide semiconductor (MTCMOS) circuits

## Abstract

In one embodiment, a method for power mode transition in a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit includes clustering logic cells in the circuit to a number of logic clusters and optimizing wake-up times of the logic clusters to reduce a total turn-on time of the circuit while keeping below a predetermined threshold a sum of currents flowing from the circuit to ground, a sum of currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.

## Background
TECHNICAL FIELD OF THE INVENTION
This invention relates in general to integrated circuits and more particularly to power mode transition in MTCMOS circuits.
BACKGROUND OF THE INVENTION
The magnitude of supply/ground bounces, which arise from power mode transitions in power gating structures, may cause spurious transitions in a circuit. Such transitions may result in wrong values being latched in the circuit registers.
OVERVIEW
Particular embodiments of the present invention may reduce or eliminate problems and disadvantages associated with integrated circuits.
In one embodiment, a method for power mode transition in a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit includes clustering logic cells in the circuit to a number of logic clusters and optimizing wake-up times of the logic clusters to reduce a total turn-on time of the circuit while keeping below a predetermined threshold a sum of currents flowing from the circuit to ground, a sum of currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.
Particular embodiments of the present invention may provide one or more technical advantages. As an example and not by way of limitation, particular embodiments limit the maximum value of supply/ground currents to a user-specified threshold level while minimizing wake-up time, e.g., sleep-to-active-mode transition time. Particular embodiments reduce or eliminate short-circuit current and spurious switching activity during wake-up time. Particular embodiments provide an efficient spatio-temporal solution with its supporting power gating structure, e.g., with the ability to turn on different logic cells in the circuit block at different times, which facilitates reduction of the wake-up time subject to an upper bound constraint on total maximum current through sleep transistors.
Particular embodiments may provide all, some, or none of these technical advantages. Particular embodiments may provide one or more other technical advantages, one or more of which may be readily apparent to those skilled in the art from the figures, descriptions, and claims herein.



BRIEF DESCRIPTION OF THE DRAWINGS
To provide a more complete understanding of the present invention and features and advantages thereof, reference is made to the following description, taken in conjunction with the accompanying drawings, in which:
FIG. 1 illustrates an example inverter chain;
FIG. 2 illustrates example waveforms of nodes in the inverter chain illustrated in FIG. 1 when the inverter chain is in sleep mode;
FIG. 3 illustrates example waveforms of nodes in the inverter chain illustrated in FIG. 1 when the inverter chain transitions from sleep mode to active mode;
FIG. 4 illustrates example current flowing to ground in the inverter chain illustrated in FIG. 1 when the inverter chain is turned on;
FIG. 5 illustrates an example inverter chain with one sleep transistor per cell;
FIG. 6 illustrates example total current flowing to ground when the inverter chain illustrated in FIG. 5 is turned on according to a wake-up strategy;
FIG. 7 illustrates an example cyclic constraint graph;
FIG. 8 illustrates an example shifted waveform; and
FIG. 9 illustrates an example inverter chain with a PMOS sleep transistor disconnecting an output from Vdd.



DESCRIPTION OF EXAMPLE EMBODIMENTS
Multi-threshold CMOS (MTCMOS) technology provides low leakage and high performance operation by utilizing high speed, low Vt transistors for logic cells, and low leakage, high Vt devices as sleep transistors. Sleep transistors disconnect logic cells from the power supply and/or ground to reduce the leakage in sleep mode. In this technology, also called power gating, wake-up latency and power plane integrity are key concerns. Assuming a sleep/wake-up signal provided from a power management unit, an important issue is to minimize the time required to turn on the circuit upon receiving the wake-up signal, since the length of wake-up time can affect the overall performance of the VLSI circuit. Furthermore, the large current flowing to ground when sleep transistors are turned on can become a major source of noise on the power distribution network, which can in turn adversely impact the performance and/or functionality of the other parts of the circuit. There is often a trade-off between the amount of current flowing to ground and the transition time from the sleep mode to the active mode.
Particular embodiments reduce the transition time from sleep mode to active mode for a circuit part while assuring power integrity for the rest of the system by restricting the current that flows to ground during the transition. The problem is to minimize the wake-up time while constraining the current flowing to ground during the sleep to active mode transition. In particular embodiments, the discharge patterns of all logic cells are first obtained. Next, all cells in the circuit are clustered to a minimum number of clusters in such a way that the total discharge current of each cluster does not exceed a given threshold. Another constraint is imposed on clustering which will prevent flowing of short circuit current during wake-up time. This constraint is handled by introducing a constraint graph and not allowing two cells with an edge between them in the same cluster. Finally, for each cluster, a single sleep transistor is assigned which is associated with a limited performance penalty and for each sleep transistor, a sleep/wake-up signal is assigned. The wake-up times for the clusters are optimized to achieve minimum wake-up time while maintaining a given threshold on overall discharge current.
It is not necessary to have both NMOS and PMOS sleep transistors to encapsulate a logic cell. NMOS sleep transistors can be used to separate actual ground from virtual ground of the logic cell. When a circuit block enters sleep mode, the circuit block is disconnected from ground. This causes the voltage levels of some intermediate nodes in the circuit block to rise toward Vdd. When the circuit block is woken up, the nodes transition to zero. This transition in turn causes the logic cells in the immediate fanout of the node to carry a potentially large amount of short-circuit current as described below.
As an example and not by way of limitation, consider the inverter chain illustrated in FIG. 1. The inverter chain is connected to ground through an NMOS sleep transistor. If the input of the circuit is low, then in the active mode (e.g., SLEEP=0) VA=VC=VE=VG=0 and VB=VD=VDD. When entering the sleep mode, the voltages of B and D do not change, but the voltages of C, E, and G gradually increase and will be equal to VDD if the sleep period is long enough. (The driver of signal A is not controlled by the SLEEP signal.) This happens because the leakage through the PMOS transistors will charge up all the floating capacitances. FIG. 2 illustrates voltage waveforms of nodes C, E, and G generated by HSPICE simulation. While turning on the sleep transistor, nodes G, C, and E discharge as illustrated in FIG. 3. When the voltage of G reaches its final value, the voltages of C and E are still between zero and VDD. This results in a significant amount of short-circuit current in the logic cells driven by nodes C and E, since these nodes turn on both transistors of the inverters present in their fanout.
The current illustrated in FIG. 4 flowing through the sleep transistor is a result of not only discharging the accumulated charge in some intermediate nodes, e.g., C, E, and G in the inverter chain example, but also the short circuit current flowing through some logic cells of the circuit, e.g., the third inverter in the chain driven by signal C. When fewer nodes are discharged, less current flows to ground. Particular embodiments help avoid short-circuit currents and spurious transitions by appropriately clustering sleep transistors and turning on the sleep transistors at certain times. In particular embodiments, each cell is turned on only if the voltage levels of the logic cells in its fanin cell have already reached their final values.
FIG. 5 illustrates an example inverter chain with one sleep transistor per cell. If the sleep transistors are turned on one at a time starting from the first inverter on the left, the short-circuit current will be zero. When each cell is turned on, its fanout cell stays in sleep mode. Therefore, the possible transition of the output node of the logic cell does not result in short-circuit current in its fanout cell. Furthermore, there is no spurious transition in the circuit, since the inputs of the logic cells that have been turned on will not change at a later time. FIG. 6 illustrates example total current flowing to ground while turning on the circuit illustrated in FIG. 5 by employing this wake-up strategy. Compared with the data in FIG. 4, the maximum current in FIG. 6 is reduced from approximately 375 μA to approximately 280 μA.
There are several peaks in the current waveform illustrated in FIG. 6. This is due to the fact that the sleep transistors are turned on in four steps. This increases the wake-up time. The first and third inverters illustrated in FIG. 6 can be turned on simultaneously before turning on the second and forth inverters without producing short-circuit current, which reduces the wake-up delay of the circuit. In particular embodiments, a suitable algorithm applies this idea to a general combination circuit.
Let ITURNON be the waveform over time of the sum of currents flowing to ground during sleep to active mode transition. Particular embodiments cluster logic cells to a minimum number of clusters and also utilize a wake-up (turn-on) strategy, e.g., a scheduling of the sleep/wake-up signals to activate clusters of logic cells in the circuit, that minimizes turn-on time (TTURNON) subject to a constraint on the maximum total current flowing through the sleep transistors, e.g., MAX(ITURNON)<IMAX, where the maximum is taken over all time instances. After the clustering phase, a sleep transistor and a corresponding sleep/wake-up signal is assigned to each cluster. The size of sleep transistors may be determined using any suitable method. It is assumed that the circuit has been in the sleep mode for a sufficiently long period of time (about 100 μs as illustrated in FIG. 2) so the output voltages of all its logic cells have raised to their final steady state level. Also, the vector applied to the circuit's primary inputs upon entering and during the sleep mode is known and remains fixed during the wake-up time. This input vector is the sleep vector. With these assumptions, the problem statement may be made:

    
    
        Wake-up Signal Scheduling (WSS) Problem: Cluster the logic cells to minimum number of clusters and find the optimum wake-up times for logic clusters in the circuit so as to minimize the total turn-on time TTURNON while satisfying ITURNON<IMAX.
    
    


An algorithm, called wake-up scheduler (WS), may solve the problem stated above. In particular embodiments, WS includes the following steps:

    
    
        1. Logic Cell Cluster Generator: Partition logic cells in the target circuit into a number of disjoint clusters C1, C2, . . . , CM and assign one sleep transistor with one sleep/wake-up signal to all the cells in each cluster. A goal of clustering is to minimize the number of clusters M such that the total turn-on current flowing through the sleep transistors associated with each cluster ITURNON(Ci) does not exceed IMAX.
        2. Inter-Cluster Sleep Signal Scheduler: Consider a single sleep signal that drives the sleep transistor of a cluster. A goal of wake-up signal scheduling is to provide the ordering and relative timing of the activation signals for the M sleep signals in the circuit to minimize the overall wake-up time while limiting the total current flowing to ground to IMAX.
    
    


Particular embodiments solve the WSS problem by solving each of the clustering and scheduling problems separately and sequentially. Since short-circuit currents can be avoided by an appropriate turn-on strategy which in turn reduces the total ITURNON, clustering and scheduling may be carried out in a way that reduces or eliminates short-circuit currents. A constraint graph may be constructed to capture this requirement and used during clustering and scheduling steps. The constraint graph captures the zero short-circuit current requirement and may be used during the logic-cell clustering and sleep-signal scheduling steps.
The constraint graph G(V, E) is a Weighted Directed Acyclic Graph. Each vertex vi in the graph corresponds to a logic cell in the circuit. There is a directed edge e(vi, vj) from vi to vj if and only if vj is in the fanout of vi and the output of vi transitions from 1 to 0 during the circuit turn-on time under the specified sleep vector. In addition, there is a positive weight, w(i, j)=TSETTLE(vi), associated with each edge e(vi, vj), where TSETTLE(vi) is the time required for the output of cell vi to settle to its final value when its sleep transistor is turned on. TSETTLE(vi) values are calculated by circuit simulation as follows. If the primary sleep vector is known and each logic cell is turned on only after all its fanin cells are turned on, the input values of the logic cell will be known at the time it is turned on. Therefore, the cell can be simulated under the specific sleep-vector value to find TSETTLE(vi) and the current profile of the cell, e.g., ITURNON(vi), after its sleep transistor is turned on, e.g., SLEEP=0. To ensure that there will be no short circuit current, the following constraint on graph G is enforced: if nodes vi and vj are in the same cluster Ck, there should be no directed path between vi and vj, and vice versa.
If there is an edge e(vi, vj) where both vi and vj are in the same cluster, their corresponding cells will be turned on at the same time. However, the output of node vi will be making a downward transition. Hence, short-circuit current will flow through cell vj. This constraint implies that there should not be a path between two nodes in a cluster going through nodes outside the cluster, as described below. The constraint on the sleep signal scheduling step can be described more clearly if a new directed graph GC, called the cluster constraint graph, is defined. The vertices of this graph correspond to the clusters C1, C2, . . . , CM. There is an edge from Ci to Cj in GC if and only if there is at least one edge from some node of Ci to some node of Cj in the original constraint graph G. There is a positive weight associated with each edge in GC. The edge weight may be calculated as follows: w(CK, CL)=max{w(vi, vj)|viεCK, vjεCL}.
Although G is acyclic (assuming combinational logic circuits) there is no guarantee that a clustering solution will result in an acyclic GC. FIG. 7 illustrates an example cyclic constraint graph, where there is a cycle between clusters CK and CL. CK and CL cannot be scheduled to avoid short-circuit current. If CL is turned on after CK, a cell vdεCL will drive another cell vbεCK which is already on. Therefore, cell vb will consume short-circuit current. A similar problem arises if CL is turned on first. Hence the cluster constraint graph should be acyclic.
The constraint imposed on the sleep-signal scheduling by the presence of edge e(CK, CL) in GC is TON (CK)+W(CK, CL)≦TON (CL), where TON (CK) and TON (CL) are the turn-on times of clusters CK and CL, respectively. Using the above information, the clustering problem may be defined as follows.

    
    
        Logic Cell Clustering (LCC) Problem: Partition logic cells vi, v2, . . . , vN into a minimum number M of clusters C1, C2, . . . , CM such that there is no cycle in GC and MAX(ITURNON (CK))≦IMAX for all k, where
    
    






  
    
      I
      TURNON
    
    ⁡
    
      (
      
        C
        K
      
      )
    
  
  =
  
    
      ∑
      
        
          v
          i
        
        ∈
        
          C
          k
        
      
    
    ⁢
    
      
        
          I
          TURNON
        
        ⁡
        
          (
          
            v
            i
          
          )
        
      
      .
    
  




In the above definition, summation is pointwise and MAX is taken over time. ITURNON(CK) and ITURNON(vi) represent the turn-on current waveforms, not scalar current values.

Particular embodiments apply the following algorithm to the LCC problem:













1
For all cells vi in the circuit do {








2
For all clusters CK created so far do {








3
If adding vi to cluster CK creates a cycle in GC or violates









the IMAX threshold for CK








4
Then continue with the next cluster (goto 2);


5
Else {add vi to cluster Ck; update GC;









continue with the next cell (goto 1);} }








6
Create a new cluster and add vi to it; Update GC; }









One goal is to minimize the number of clusters in order to reduce the number of sleep signals that are required in the power-gating structure, which will simplify the power management circuitry. While one sleep signal per cluster may seem costly, a sleep-signal tree (which is an inverter tree) similar to a clock tree may drive large sleep transistors used in power gating structures. It is therefore possible to generate different timing for sleep signals going to different clusters by simply inserting delay elements (buffers) into the sleep-signal tree.

    
    
        Sleep-Signal Scheduling (SSS) Problem: Determine TON(CK) values to minimize the total turn-on time subject to MAX(ITURNON(CK))≦IMAX and TON (CK)+e(CK, CL)≦TON (CL) constraints.
    
    


For a given ordering of clusters, TON(C1)< . . . <TON(CK)<TON(CK+1)< . . . <TON (CM), it may be possible to shift the current waveforms of two clusters ITURNON(CK) and ITURNON(CK+1) to overlap one another without violating the constraint ITURNON<IMAX. The question is how close TON (CK) and TON (CK+1) can be scheduled without violating the IMAX constraint. To address this problem, GC can be augmented with a new set of weighted directed edges d(CK, CK+1) as follows:

d(CK,CK+1)=min{ΔT}s.t.

max{ITURNON(CK)+shift[ITURNON(CK+1),ΔT]}<IMAX 

Above, shift[ITURNON(CK+1),ΔT] is the waveform ITURNON(CK+1) shifted right on the time axis by the amount ΔT, as illustrated in FIG. 8.

Next, edge weights w(CK, CL) and d(CK, CL) are combined with each other to construct new edge weights, which capture both constraints: f(CK, CL)=max{w(CK, CL), d(CK, CL)}. For the given ordering of clusters, the minimum turn-on time can be described as




  
    
      
        ∑
        
          k
          =
          1
        
        
          M
          -
          1
        
      
      ⁢
      
        f
        ⁡
        
          (
          
            
              C
              K
            
            ,
            
              C
              
                k
                +
                1
              
            
          
          )
        
      
    
    +
    
      
        T
        SETTLE
      
      ⁡
      
        (
        
          C
          M
        
        )
      
    
  
  ,




which is the weight of a path in graph GC with edges f(CK, CL) going through each vertex exactly once plus TSETTLE(CM)=max{TSETTLE(vi)|viεCM}, where TSETTLE(Vi) is the time required for the output of cell vi to settle during the turn on time. To consider the settling time of the last cluster, a dummy vertex CD is added to the graph with no outgoing edges and the following incoming edges, f(CK, CD)=TSETTLE(CK) for all K. The WSS problem is restated, “Find the minimum weighted directed Hamiltonian path on graph GC with edges f(CK, CL).”

A Hamiltonian path is a path including all vertices of a graph once. A Hamiltonian path of the graph with a dummy node CD should end at CD, which has no outgoing edges. There are many heuristics for solving the minimum Hamiltonian path problem, which is an NP-complete problem. However, because the number of clusters is usually small even for a large circuit, using an exhaustive search for solving the minimum Hamiltonian path is feasible. The scheduling step results in the optimal turn-on times, TTURNON(CK) for a given ordering of clusters. If the number of clusters is small, it is possible to exhaustively try all possible orderings, and thereby find the best ordering. Otherwise, an ordering of clusters can be arbitrarily or heuristically selected. One heuristic may be as follows: Select an arbitrary cluster C1 as the first cluster to be scheduled to wake-up. Next, find the next cluster C2 that minimizes d(C1, Ci), e.g., d(C1, C2)≦d(C1, Ci) for every i, and continue in the same way, e.g., at step k: d(Ck, Ck+1)≦d(Ck, Ci). In particular embodiments, the shape of current profile of clusters is very similar and, therefore, the initial ordering used in the algorithm is not important. In particular embodiments, by changing the value of the maximum current bound, the wake-up time may be reduced.
As described above, short-circuit current may be avoided when turning on a circuit. Another approach to reducing or eliminating short-circuit current during the wake-up is to judiciously use an NMOS or a PMOS sleep transistor for each logic cell in the circuit. This technique may be called Input-driven Sleep Transistor Typing (ISTT). For the given sleep vector, if the output of a logic cell in the circuit is logic 1, an NMOS sleep transistor will be used to disconnect that cell from the ground; otherwise, a PMOS sleep transistor will be used to disconnect the output from Vdd, as illustrated in FIG. 9.
This ISST algorithm may ensure that every logic cell uses the type of the sleep transistor that minimizes leakage current through the off-path of the logic cell through a sleep transistor induced stack effect. As a result, the output of every logic cell under the given sleep vector is driven to a hard zero or one logic level. Therefore, no logic cell will have a floating output node, which would have resulted in intermediate signal values changing during the sleep mode thereby causing a potentially large short-circuit current during transition to the wake-up mode. Furthermore, in this case, the only floating nodes in the circuit are some of the internal nodes of logic cells, e.g., the shared diffusion area between source of the NMOS driver transistor and drain of the NMOS sleep transistor in the first stage of the inverter chain illustrated in FIG. 9. These internal floating nodes may change during the sleep mode and therefore there will be some current dissipation on wake-up time to recover their correct values. However, this current is significantly less than the current that will flow through the circuit when only NMOS sleep transistors are used. In the latter case, not only some of the internal nodes of logic gates are floating, but also, on average, approximately half of the output nodes of the logic cells (which typically drive larger capacitances) will be floating. Therefore, the peak current on circuit wake-up tends to be significantly larger than the case with ISST.
A shortcoming of using NMOS sleep transistors for some gates and PMOS for others is that the delay overhead in the active mode is potentially twice that of the case with only NMOS sleep transistors. In ISTT, the delays of all logic cells on the critical path of a circuit are degraded, whereas the delays of only half of the logic cells are degraded when all sleep transistors are NMOS type. It is possible to combine the ISST technique with the WS technique to achieve even better results by scattering in time the current that must flow to the ground, thereby, reducing the peak current: ISST+WS.
Particular embodiments reduce wake-up time and maximum current flowing to ground for power gating structures. In particular embodiments, one technique for reducing wake-up time and maximum current flowing to ground for power gating structures is based on effectively clustering logic cells and scheduling wake-up signals for the clusters to achieve the mentioned objectives. Particular embodiments have been used to describe the present invention. A person having skill in the art may comprehend one or more changes, substitutions, variations, alterations, or modifications to the particular embodiments used to describe the present invention that are within the scope of the appended claims. The present invention encompasses all such changes, substitutions, variations, alterations, and modifications.

## Claims

1. A method comprising:
constructing a first weighted directed acyclic graph representing a zero short-circuit current requirement of a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit comprising a plurality of logic cells, the first weighted directed acyclic graph comprising one or more first vertices and one or more first edges, each first vertex corresponding to one of the logic cells, each first edge linking two first vertices to each other;
assigning to each of one or more of the first edges one or more first weights based on a settling time of a logic cell corresponding to a vertex linked by the first edge;
constructing a second weighted directed acyclic graph comprising one or more second vertices and one or more second edges, each second vertex corresponding to a logic cluster comprising one or more of the logic cells;
assigning to each of one or more of the second edges second weights based on the first weights;
determining third weights based at least in part on the second weights;
applying the third weights to the second edges;
determining a minimum weighted directed Hamiltonian path on the second directed acyclic graph with the third weights applied to the second edges;
based at least in part on the determined minimum weighted directed Hamiltonian path:
clustering the logic cells into a new clustering; and
setting wake-up times of logic clusters in the new clustering to reduce a total turn-on time of the circuit while keeping below a predetermined threshold a first sum of first currents flowing from the circuit to ground, a second sum of second currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.

2. The method of claim 1, wherein clustering the logic cells in the circuit comprises partitioning the logic cells into a number of disjoint logic clusters and assigning one sleep transistor to all logic cells in each cluster.

3. The method of claim 2, wherein one or more first ones of the sleep transistors are N-channel metal oxide semiconductor (NMOS) sleep transistors and one or more second ones of the sleep transistors are positive-channel metal oxide semiconductor (PMOS) sleep transistors.

4. The method of claim 3, wherein the NMOS sleep transistors are assigned to gates having output equal to one in sleep mode and the PMOS sleep transistors are assigned to gates having output equal to zero.

5. The method of claim 1, wherein clustering logic cells in the circuit comprises, for each logic cell:
adding the logic cell to a previously generated logic cluster if adding the logic cell to the previously generated logic cluster does not create a cycle in a cluster constraint graph corresponding to the circuit and does not cause a current flowing from the generated logic cluster to ground when the generated logic cluster is turned on;
otherwise generating a new logic cluster and adding the logic cell to the new logic cluster.

6. The method of claim 1, wherein optimizing wake-up times of the logic clusters comprises determining a sleep-signal schedule for the logic clusters.

7. The method of claim 6, wherein the sleep-signal schedule shifts current waveforms of logic clusters to overlap without causing the sum of currents flowing from the circuit to ground during a transition by the circuit from sleep mode to active mode to exceed the predetermined threshold.

8. The method of claim 1, wherein clustering the logic cells in the circuit and optimizing the wake-up times of the logic clusters substantially eliminates short-circuit currents from the circuit.

9. Logic encoded in one or more computer-readable tangible media for execution and when executed operable to:
construct a first weighted directed acyclic graph representing a zero short-circuit current requirement of a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit comprising a plurality of logic cells, the first weighted directed acyclic graph comprising one or more first vertices and one or more first edges, each first vertex corresponding to one of the logic cells, each first edge linking two first vertices to each other;
assign to each of one or more of the first edges one or more first weights based on a settling time of a logic cell corresponding to a vertex linked by the first edge;
construct a second weighted directed acyclic graph comprising one or more second vertices and one or more second edges, each second vertex corresponding to a logic cluster comprising one or more of the logic cells;
assign to each of one or more of the second edges second weights based on the first weights;
determine third weights based at least in part on the second weights;
apply the third weights to the second edges;
determine a minimum weighted directed Hamiltonian path on the second directed acyclic graph with the third weights applied to the second edges;
based at least in part on the determined minimum weighted directed Hamiltonian path:
cluster the logic cells into a new clustering; and
set wake-up times of logic clusters in the new clustering to reduce a total turn-on time of the circuit while keeping below a predetermined threshold a first sum of first currents flowing from the circuit to ground, a second sum of second currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.

10. The logic of claim 9, operable to cluster the logic cells in the circuit by partitioning the logic cells into a number of disjoint logic clusters and assigning one sleep transistor to all logic cells in each cluster.

11. The logic of claim 10, wherein one or more first ones of the sleep transistors are N-channel metal oxide semiconductor (NMOS) sleep transistors and one or more second ones of the sleep transistors are positive-channel metal oxide semiconductor (PMOS) sleep transistors.

12. The logic of claim 11, wherein the NMOS sleep transistors are assigned to gates having output equal to one in sleep mode and the PMOS sleep transistors are assigned to gates having output equal to zero

13. The logic of claim 9, operable to clustering logic cells in the circuit comprises by, for each logic cell:
adding the logic cell to a previously generated logic cluster if adding the logic cell to the previously generated logic cluster does not create a cycle in a cluster constraint graph corresponding to the circuit and does not cause a current flowing from the generated logic cluster to ground when the generated logic cluster is turned on;
otherwise generating a new logic cluster and adding the logic cell to the new logic cluster.

14. The logic of claim 9, operable to optimize wake-up times of the logic clusters by determining a sleep-signal schedule for the logic clusters.

15. The logic of claim 14, wherein the sleep-signal schedule shifts current waveforms of logic clusters to overlap without causing the sum of currents flowing from the circuit to ground during a transition by the circuit from sleep mode to active mode to exceed the predetermined threshold.

16. The logic of claim 9, operable to substantially eliminates short-circuit currents from the circuit by clustering the logic cells in the circuit and optimizing the wake-up times of the logic clusters.

17. A multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit comprising:
a number of logic clusters, each logic cluster comprising one or more logic cells of the circuit;
the logic clusters having optimized wake-up times that reduce a total turn-on time of the circuit while keeping below a predetermined threshold a sum of currents flowing from the circuit to ground, a sum of currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode;
the clustering of the logic cells in the circuit and the optimization of the wake-up times of the logic clusters substantially eliminating short-circuit currents from the circuit, the clustering and optimization comprising:
constructing a first weighted directed acyclic graph representing a zero short-circuit current requirement of a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit comprising a plurality of logic cells, the first weighted directed acyclic graph comprising one or more first vertices and one or more first edges, each first vertex corresponding to one of the logic cells, each first edge linking two first vertices to each other;
assigning to each of one or more of the first edges one or more first weights based on a settling time of a logic cell corresponding to a vertex linked by the first edge;
constructing a second weighted directed acyclic graph comprising one or more second vertices and one or more second edges, each second vertex corresponding to a logic cluster comprising one or more of the logic cells;
assigning to each of one or more of the second edges second weights based on the first weights;
determining third weights based at least in part on the second weights;
applying the third weights to the second edges;
determining a minimum weighted directed Hamiltonian path on the second directed acyclic graph with the third weights applied to the second edges;
based at least in part on the determined minimum weighted directed Hamiltonian path:
clustering the logic cells into a new clustering; and
setting wake-up times of logic clusters in the new clustering to reduce a total turn-on time of the circuit while keeping below a predetermined threshold a first sum of first currents flowing from the circuit to ground, a second sum of second currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.

18. A system comprising:
means for constructing a first weighted directed acyclic graph representing a zero short-circuit current requirement of a multi-threshold complementary metal oxide semiconductor (MTCMOS) circuit comprising a plurality of logic cells, the first weighted directed acyclic graph comprising one or more first vertices and one or more first edges, each first vertex corresponding to one of the logic cells, each first edge linking two first vertices to each other;
means for assigning to each of one or more of the first edges one or more first weights based on a settling time of a logic cell corresponding to a vertex linked by the first edge;
means for constructing a second weighted directed acyclic graph comprising one or more second vertices and one or more second edges, each second vertex corresponding to a logic cluster comprising one or more of the logic cells;
means for assigning to each of one or more of the second edges second weights based on the first weights;
means for determining third weights based at least in part on the second weights;
means for applying the third weights to the second edges;
means for determining a minimum weighted directed Hamiltonian path on the second directed acyclic graph with the third weights applied to the second edges;
means for, based at least in part on the determined minimum weighted directed Hamiltonian path:
clustering the logic cells into a new clustering; and
setting wake-up times of logic clusters in the new clustering to reduce a total turn- on time of the circuit while keeping below a predetermined threshold a first sum of first currents flowing from the circuit to ground, a second sum of second currents flowing from a supply voltage to the circuit, or both during a transition by the circuit from sleep mode to active mode.