Patent Publication Number: US-9424381-B2

Title: Contributor-based power modeling of microprocessor components

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates generally to power modeling for microprocessors and relates more specifically to contributor-based power modeling. 
     Power consumption is a key factor in the design of electronic products, since it directly affects thermal margins, cost, and reliability. At the same time, increasing process variation in the nanometer era complicates both power analysis and optimization. Power-aware design flows have been developed to address the challenges arising from increased design complexity and the need to control power consumption. 
     The increase in design complexity, and the need for accurate models, has necessitated complex power-aware design flows. The challenges in delivering accurate models are due at least in part to variations at the device level and variations at the block/function level. Variation occurs at the device level as a result of increases in process corners and of an exponential dependence of leakage on temperature and voltage. Variation at the block/function level occurs as a result of power saving features (e.g., clock gating, power gating) and widely varying workload characteristics). 
     For instance, a typical cell library includes hundreds of cells, each having multiple states and transistors. Cell library characterization usually generates power data for several process corners. However, when power analysis is being performed at the block level, library characterization may not be available at a requested process corner. In this case, one must interpolate between process corners for which library characterization data is available. This interpolation increases the run time of and may decrease the accuracy of the power analysis. 
     The above challenges are magnified when attempting to analyze a chip that comprises multiple blocks, particularly when the analysis must be performed under several different corner conditions and with several different workloads. Conventional power-aware design flows based on PVT (process, voltage, and temperature)-specific power models are not able to efficiently perform the necessary hierarchical analysis at the chip level. 
     SUMMARY OF THE INVENTION 
     A method for generating a power model for a device includes identifying a device-level set of power contributors for a state of the device, wherein each power contributor in the device-level set of power contributors contributes to power dissipation in the device, and generating the power model for the device based on the device-level set of power contributors, wherein the power model is independent of process, voltage, and temperature. 
     A system for generating a power model for a device includes a processor and a computer readable storage medium that stores instructions which, when executed, cause the processor to perform operations including identifying a device-level set of power contributors for a given state of the device, wherein each power contributor in the device-level set of power contributors contributes to power dissipation when the device is in the given state, and generating the power model for the device based on the device-level set of power contributors, wherein the power model is independent of process, voltage, and temperature 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
         FIG. 1  is a flow diagram illustrating one embodiment of a method for generating contributor-based abstracts, according to the present invention; and 
         FIG. 2  is a high-level block diagram of the power modeling method that is implemented using a general purpose computing device. 
     
    
    
     DETAILED DESCRIPTION 
     In one embodiment, the invention is a method and apparatus for contributor-based power modeling of microprocessor components. Embodiments of the invention employ a contributor-based power modeling technique that exploits the inherent separability of the components that consume power and provides a generalized modeling methodology for defining contributor-based power abstracts. In particular, the present invention achieves power modeling through use of contributor-based power models, an abstraction definition, and a technique for generating contributor-based power abstracts for complex blocks of an electronic device. Contributor-based modeling of the disclosed type facilitates generation of PVT-independent power models for the high-level blocks of an electronic device. 
     Within the context of the present invention, a “power contributor” or “contributor” is understood to refer to a condition that contributes to power dissipation in a device; the total power dissipated is the sum of these contributors. For instance, simple power contributors include the channel or gate leakage of a single field effect transistor (FET), the leakage of a FET stack, or the charging of a single node capacitance. Each contributor generally behaves the same regardless of the cell, and the same power contributors will generally apply in many library cell states. Different contributor types encapsulate different physics, and different contributor instances will reflect different parameter dependencies. 
     A “power contributor model” or “power model” contains all instance-independent information needed to model the power consumed by an instance of a particular cell, along with additional information that may be used to differentiate and identify different portions of the power consumption (e.g., contact-to-device diffusion area, gate contact for power grid analysis, latch versus data power, etc.). However, evaluation of the model requires application of instance-specific information (e.g., switching activities, voltages applied to power pins, switching frequency of clock pins, temperature, field effect transistor threshold variations, process sigma, etc.). 
     A fundamental component of a power contributor model according to the present invention is a “power element.” A power element does not store power or energy numbers, but instead stores the physical parameters (e.g., switching capacitance, resistances, current sources, effective leaking device width) that can be used to compute power at any PVT condition. Thus, the power model is independent of switching activity, frequency, process, temperature, and voltage. Moreover, a power element does not model the total power of a cell under a given condition. Instead, each power element of a model for a given cell type is evaluated for the process, voltage, temperature, and operating conditions (state and activity) of each design instance of that cell type, and the contributions of all power elements are summed to determine the total power of the design instance. In addition to power elements, the contributor model for a cell type may contain information such as the power supply pins of the cell that provide power to each of the output nets, or the load capacitances of each of the inputs. In one embodiment, the power contributor model of the present invention considers two primary power elements: alternating current (AC) elements and transistor leakage elements. 
     AC elements represent power dissipated while charging and discharging capacitances during switching events. AC elements include a reference pin parameter that specifies the pin from which a frequency is obtained. This frequency is used to convert the energy per event for a power element to a power value. In some cases, the reference pin is a clock pin; however, for macros that lack clocks, another type of pin could be specified. Each AC power element includes energy, an effective capacitance value from which energy can be computed, or other parameters from which an energy or an effective capacitance can be determined. Since the power contributor model of the present invention is an abstraction of the cell whose power is being modeled, the effective capacitance will typically encapsulate the effects of many physical capacitances and power dissipation due to short circuit currents. These physical capacitances typically will not switch at the same rate as the reference pin, and hence the effective capacitance may or may not be equal to the sum of the physical capacitances whose power impact is modeled by the effective capacitance. 
     AC elements may include an activity list, which is used to parameterize the AC power in terms of one or more switching signals. The activity list is similar to the weight list common to all power elements. Each element of the activity list will specify a pin, net, pin group, or net group whose “activity” is to be used to parameterize the AC power element. The activity list is thus a list of activity factors whose values will be multiplied together to compute a weighting factor for the AC element. The numeric value of a parameter in an activity factor is the switching frequency of the specified pin, net, pin group, or net group, divided by the cycle frequency of the reference pin. Activity factors may be boundary weight factors (i.e., a value on a pin of the block) or internal weight factors (i.e., modeling a value for some internal net or set of nets of the block). 
     Each activity factor X in the activity list may be included in the product as X, (1−x), or X 2  (i.e., the true, complement, or squared values, respectively). These modifiers are not strictly needed, since a squared term can be represented by including the same weight parameter twice, and a complement term can be represented by two elements: one element without the weight parameter and one element with the weight parameter and a negated scaling value. A product term of multiple activities is also possible in the abstraction, such as X*Y^2, (1−X)*Y*Z. Any polynomial on N different activity factors is possible in the present model. 
     The other primary power elements—transistor leakage elements—represent static leakage of a transistor. The various modes of leakage include channel leakage (i.e., modeling drain to source leakage), gate_off leakage (i.e., modeling gate leakage when the gate is off), and gate_on leakage (i.e., modeling gate leakage when the gate is on). A transistor leakage power element includes a leakage type, a device type, a channel length, a device width (the primary value that can be summed), and a finger count (a secondary value that can be summed). In one embodiment, a technology leakage application programming interface (API) encapsulates leakage equations used to compute the leakage for an instance at a particular temperature, process sigma, and voltage. 
     Realistically, some devices may spend some time in leakage states with only a fraction of the full supply voltage across them or in a state with a back bias between gate and source. However, in one embodiment, the leakage states represented in the leakage elements assume full rail voltages on all pins and zero gate bias. Therefore, leakage weights are computed and used to generate a power abstract such that the evaluation of the power abstract results in the same leakage current for each device as it would be when computed by averaging the instantaneous leakage current over the simulation cycles. The product of the device width and the leakage weight factor is referred to herein as the “effective leaking width.” Similarly, the product of the device count and the leakage weight is referred to herein as the “effective leaking device count.” Table 1 illustrates the values that are applied to the device terminals for various leakage types. 
     
       
         
           
               
             
               
                 TABLE 1 
               
             
            
               
                   
               
               
                 Values for Various Leakage Types 
               
            
           
           
               
               
               
               
               
               
            
               
                   
                 Device 
                 Leakage Type 
                 Gate 
                 Source 
                 Drain 
               
               
                   
                   
               
               
                   
                 PFET 
                 channel 
                 Vdd 
                 Vdd 
                 Gnd 
               
               
                   
                 PFET 
                 gate_on 
                 Gnd 
                 Vdd 
                 Vdd 
               
               
                   
                 PFET 
                 gate_off 
                 Vdd 
                 Vdd 
                 Gnd 
               
               
                   
                 NFET 
                 channel 
                 Gnd 
                 Gnd 
                 Vdd 
               
               
                   
                 NFET 
                 gate_on 
                 Vdd 
                 Gnd 
                 Gnd 
               
               
                   
                 NFET 
                 gate_off 
                 Gnd 
                 Gnd 
                 Vdd 
               
               
                   
                   
               
            
           
         
       
     
     As discussed above, power contributor modeling facilitates generation of PVT-independent power models for high level blocks of a device. In one embodiment, the power contributors for a particular state of interest of a high level block of a device are identified by determining the states of the block&#39;s constituent cells and the cells&#39; power contributors in those states. For incompletely specified states of the block, state probabilities may be determined for various possible states of the constituent cells (e.g., using probabilistic propagation or random simulation). The contributors for each of the cell states are then determined, weighted by cell state probabilities (if needed) with power rail specifications mapped to the power rail specifications of the block. Finally, all compatible contributor instances are summed to form an aggregate list of power contributors for the block. 
     Further embodiments of the invention disclose abstractions for leakage and dynamic power modeling. In the case of leakage power, the simplest form of power contributor summation merely accumulates a count of the instances of each power contributor. To satisfy contributor compatibility, all parameters (e.g., device type, length, width, and power rail references) are identical in the contributor instances being summed. Alternatively, some parameter (e.g., device width) can be treated as a “size” parameter for the contributor, and this parameter can be summed for each set of compatible contributors instead of simply summing contributor counts. Summing the size parameter works well when the power is proportional to the chosen size parameter, but narrow channel effect causes a deviation from this leakage. Typical leakage curves as a function of device width are roughly linear with width and, for physical reasons, must be near-linear for large width but have a non-zero intercept. For a linear leakage function, one can determine the total leakage of the set of contributors by summing both the count (N) and the device width (W). This does not require that the intercept (I 0 ) and the slope (I W ) of the linear current function be known, but only that f(W) be linear in width, for example as expressed below: 
     
       
         
           
             
               
                 
                   
                     
                       
                         
                           I 
                           total 
                         
                         = 
                           
                         ⁢ 
                         
                           
                             ∑ 
                             i 
                           
                           ⁢ 
                           
                             f 
                             ⁡ 
                             
                               ( 
                               
                                 W 
                                 i 
                               
                               ) 
                             
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                         ⁢ 
                         
                           
                             ∑ 
                             i 
                           
                           ⁢ 
                           
                             ( 
                             
                               
                                 I 
                                 0 
                               
                               + 
                               
                                 
                                   I 
                                   W 
                                 
                                 ⁢ 
                                 
                                   W 
                                   i 
                                 
                               
                             
                             ) 
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                         ⁢ 
                         
                           N 
                           ⁡ 
                           
                             ( 
                             
                               
                                 I 
                                 0 
                               
                               + 
                               
                                 
                                   I 
                                   W 
                                 
                                 ⁡ 
                                 
                                   ( 
                                   
                                     
                                       W 
                                       total 
                                     
                                     / 
                                     N 
                                   
                                   ) 
                                 
                               
                             
                             ) 
                           
                         
                       
                     
                   
                   
                     
                       
                         = 
                           
                         ⁢ 
                         
                           N 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           
                             f 
                             ⁡ 
                             
                               ( 
                               
                                 
                                   W 
                                   total 
                                 
                                 / 
                                 N 
                               
                               ) 
                             
                           
                         
                       
                     
                   
                 
               
               
                 
                   ( 
                   
                     EQN 
                     . 
                     
                         
                     
                     ⁢ 
                     1 
                   
                   ) 
                 
               
             
           
         
       
     
     If leakage is insufficiently linear with width, but can be approximated as piecewise linear, one can determine breakpoints between linear segments (common across all PVT values) and restrict compatibility of contributors for summation to those within the same width range. 
     The abstraction for dynamic power characterizes power as a function of a clock gating weight factor and input switch rate and latch output switching activity factors. Table 2, below, lists the abstraction for dynamic power in terms of the major AC power contributors (each with its own effective capacitance (C eff ) value) with the applicable weight and activity factor(s). Names are given to the major power contributors solely for descriptive purposes. 
     
       
         
           
               
             
               
                 TABLE 2 
               
             
            
               
                   
               
               
                 Dynamic Power Abstraction Contributors 
               
            
           
           
               
               
               
               
            
               
                   
                 Name 
                 Weight Factor 
                 Activity Factor(s) 
               
               
                   
                   
               
               
                   
                 AlwaysCeff 
                   
                   
               
               
                   
                 GatableCeff 
                 complement 
               
               
                   
                   
                 (clock gating) 
               
               
                   
                 PiSfDepCeff 
                   
                 true (input switch rate) 
               
               
                   
                 LoSfDepCeff 
                   
                 true (latch output switch rate) 
               
               
                   
                 PiLoXPCeff 
                   
                 true (input switch rate) 
               
               
                   
                   
                   
                 true (latch output switch rate) 
               
               
                   
                   
               
            
           
         
       
     
     The AlwaysCeff component models the base power when clock gating is true and both activity factors are zero. The GatableCeff component models the additional power when clock gating is turned off, but does not include any impact of the switching of the latches clocked by the ungated clock. The PiSfDepCeff and LoSfDepCeff components model the separate power adders due to primary input and latch output switching, respectively. The PiLoXPCeff component models the synergistic delta in power (generally small and often negative) due to the combined switching or primary inputs and latch outputs. In one embodiment, a set of random simulations are performed in order to compute these different effective capacitance values. Each of the random simulations computes all or part of the macro C eff  under particular settings of the three macro power parameters. These computations are then combined to produce the C eff  values for the AC power contributors listed in Table 2. 
     Table 3, below, lists the conditions under which the random simulations are performed. 
     
       
         
           
               
             
               
                 TABLE 3 
               
             
            
               
                   
               
               
                 Simulation Cases for C eff   
               
            
           
           
               
               
            
               
                   
                 Weight factor and activity factor settings 
               
            
           
           
               
               
               
               
            
               
                 Case 
                 Clock gating 
                 Input switch rate 
                 Latch output switch rate 
               
               
                   
               
               
                 1 
                 0 
                 0.0 
                 0.0 
               
               
                 2 
                 1 
                 0.0 
                 0.0 
               
               
                 3 
                 1 
                 Kpi 
                 0.0 
               
               
                 4 
                 1 
                 0.0 
                 Klo 
               
               
                 5 
                 1 
                 Kpi 
                 Klo 
               
               
                   
               
            
           
         
       
     
     Each random simulation is referred to herein as a “case.” Some cases with no input or latch output switching are split to apply zero and one values to the held (non-switching) points, to reduce possible bias due to data switching gating by these values. Some of the cases are non-physical, in the sense that clock gating is performed, but latches are still forced to switch. Such cases are acceptable from an abstraction standpoint, since the power contributor model treats them as separable contributors and latch output activity is forced to be independent of the latch clock and input conditions. 
     A total C eff  is generated using random simulation for each of the cases listed in Table 3. The simulations are then combined to generate the power contributor AC power element C eff  values, such that the appropriately scaled sum of the power contributor C eff  values results in each of case C eff  values for the cases listed in Table 3. In one embodiment, the C eff  values for each of the cases are expressed as:
 
 C   eff   _   1 =Always C eff+(1−0)*Gatable C eff+0.0*PiSfDef C eff+0.0*LoSfDep C eff+0.0*0.0*PiLoXP C eff
 
 C   eff   _   2 =Always C eff+(0−0)*Gatable C eff+0.0*PiSfDef C eff+0.0*LoSfDep C eff+0.0*0.0*PiLoXP C eff
 
 C   eff   _   3 =Always C eff+(0−0)*Gatable C eff+Kpi*PiSfDef C eff+0.0*LoSfDep C eff+Kpi*0.0*PiLoXP C eff
 
 C   eff   _   4 =Always C eff+(0−0)*Gatable C eff+0.0*PiSfDef C eff+Klo*LoSfDep C eff+0.0*Klo*PiLoXP C eff
 
 C   eff   _   5 Always C eff+(0−0)*Gatable C eff+Kpi*PiSfDef C eff+Klo*LoSfDep C eff+Kpi*Klo*PiLoXP C eff  (EQN. 2)
 
Solving the above set of equations stated in EQN. 2 for the model C eff  values yields the following:
 
Always C eff= C   eff   _   2  
 
Gatable C eff= C   eff   _   1   −C   eff   _   2  
 
PiSfDep C eff=( C   eff   _   3   =C   eff   _   2 )/Kpi
 
LoSfDep C eff=( C   eff   _   4   −C   eff   _   2 )/Klo
 
PiLoXP C eff=( C   eff   _   5   −C   eff   _   3   −C   eff   _   4   +C   eff   _   2 )/(Kpi*Klo)  (EQN. 3)
 
     To compute the case Ceff values that are needed to solve the set of equations stated in EQN. 3, embodiments of the present invention determine, for each physical capacitance in the macro (e.g., for each net), the average switch rate for the case (i.e., the average number of transitions per clock cycle) multiplied by the physical capacitance value. This product is then summed over all capacitances in the macro. This switch rate is the number of transitions of the net over one half the number of simulation cycles. 
       FIG. 1  is a flow diagram illustrating one embodiment of a method  100  for generating contributor-based abstracts, according to the present invention. At a high level, the method  100  includes three major steps: (1) generation of power contributor abstracts for standard cell libraries (e.g., by a transistor-level tool or processor); (2) reading in a gate-level description of a block, along with the necessary logic and timing rules (e.g., by a block power abstraction generation tool or processor); and (3) evaluating the power of a block contributor-based abstract to generate a power report (e.g., by a report generating tool or processor). 
     The method  100  begins in step  102 . In step  104 , a transistor-level tool or processor reads in a transistor-level net-list for each standard cell in library. In step  106 , the transistor-level tool or processor traces, for each standard cell, all nets and devices to the positive supply voltage (Vdd) and ground (Gnd) contacts. In one embodiment, all effective capacitance (Ceff) and leakage data will be associated with the contacts as well. 
     In step  108 , the transistor-level tool or processor allocates, for each standard cell, all non-primary input internal net caps to boundary pins. In one embodiment, if a non-primary input internal net cap is traceable to a clock input, the non-primary input internal net cap is assigned to the clock input. If not traceable to a clock input, the non-primary input internal net cap is apportioned over the outputs. In one embodiment, cap switching is assumed to track allocated pins. 
     In step  110 , the transistor-level tool or processor creates, for each of the standard cells, the Ceff power elements, based on the allocations of the non-primary input internal net caps. 
     In step  112 , the transistor-level tool or processor obtains leakage duty cycles for all devices in each of the standard cells. In one embodiment, the leakage duty cycles are obtained from a random simulation. In step  114 , the transistor-level tool or processor creates leakage power contributor model elements from the leakage duty cycle data. 
     In step  116 , the transistor-level tool or processor creates power contributor input pin records for each primary input net in each of the standard cells. In step  118 , the transistor-level tool or processor creates power contributor pin supply records for each primary output net in each of the standard cells. 
     Thus, steps  102 - 118  constitute a first phase of the method  100  that results in the generation of power contributor models (i.e., Ceff elements and leakage elements) for the standard cells of a transistor-level netlist. In a second phase of the method  100 , a block power abstraction generation tool or processor obtains the power contributor models for the standard cells and generates a block power abstract by simulating the cases illustrated in Table 3 (above) in accordance with the leakage and dynamic power abstractions discussed above. 
     In step  120 , the block power abstraction generation tool or processor sets, for each of the cases, the primary input net switching frequency to the product of the clock frequency and the input switch rate. In step  122 , the block power abstraction generation tool or processor sets, for each of the cases, the scan latch output switch to zero. 
     In step  124 , the block power abstraction generation tool or processor sets, for each of the cases, the non-scan latch output net frequency to the product of the clock frequency and the latch output switch rate. In step  126 , the block power abstraction generation tool or processor sets the clock gates for each case. In one embodiment, the block power abstraction generation tool sets all clock gates to free running for Case 1, but sets all clock gates to gated for Cases 2-5. 
     In step  128 , the block power abstraction generation tool or processor simulates all of the cases in accordance with the above-described settings in order to obtain the output switching and compute the Ceff values. In one embodiment, a logic function aware switch simulation method is used in step  128  to compute the output activities. 
     In step  130 , the block power abstraction generation tool or processor combines the Ceff values for all of the cases, as described above, in order to produce a contributor-based, parameterized power abstract for a block of the device. The method  100  then ends in step  132 . 
     The power abstract can be output in a report and/or used in a chip-level power rollup flow, where the power abstract is specialized under activity and PVT conditions for the chip. The power abstract may also be evaluated under specific conditions to generate a report. A power abstract generated in accordance with the method  100  is precise at least for any single-gate AND, OR, or XOR logic macros or mix of latches and single-gate logic. The resultant power abstract is also accurate for more complex logic blocks, but may be modified to address certain sources of accuracy loss in specific situations (e.g., methods for extracting effective capacitances, presence of latches not switching during execution of workload-driven switching patterns. 
     Although the method  100  is described above as being performed by specific and/or discrete tools or processors, it will be appreciated that a single processor could be used to implement the entirety of the method  100 . Alternatively, tools or processors in addition to those described may be employed. 
       FIG. 2  is a high-level block diagram of the power modeling method that is implemented using a general purpose computing device  200 . In one embodiment, a general purpose computing device  200  comprises a processor  202 , a memory  204 , a power modeling module  205  and various input/output (I/O) devices  206  such as a display, a keyboard, a mouse, a sensor, a stylus, a microphone or transducer, a wireless network access card, an Ethernet interface, and the like. In one embodiment, at least one I/O device is a storage device (e.g., a disk drive, an optical disk drive, a floppy disk drive). It should be understood that the power modeling module  205  can be implemented as a physical device or subsystem that is coupled to a processor through a communication channel. 
     Alternatively, the power modeling module  205  can be represented by one or more software applications (or even a combination of software and hardware, e.g., using Application Specific Integrated Circuits (ASIC)), where the software is loaded from a storage medium (e.g., I/O devices  206 ) and operated by the processor  202  in the memory  204  of the general purpose computing device  200 . Thus, in one embodiment, the power modeling module  205  for generating a power abstract for a microprocessor component, as described herein with reference to the preceding figures, can be stored on a tangible computer readable storage medium or device (e.g., RAM, magnetic or optical drive or diskette, and the like). 
     It should be noted that although not explicitly specified, one or more steps of the methods described herein may include a storing, displaying and/or outputting step as required for a particular application. In other words, any data, records, fields, and/or intermediate results discussed in the methods can be stored, displayed, and/or outputted to another device as required for a particular application. Furthermore, steps or blocks in the accompanying figures that recite a determining operation or involve a decision, do not necessarily require that both branches of the determining operation be practiced. In other words, one of the branches of the determining operation can be deemed as an optional step. 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof. Various embodiments presented herein, or portions thereof, may be combined to create further embodiments. Furthermore, terms such as top, side, bottom, front, back, and the like are relative or positional terms and are used with respect to the exemplary embodiments illustrated in the figures, and as such these terms may be interchangeable.