Three-dimensional power modeling table having dual output capacitance indices6195630Abstract A system and method for modeling power consumed by a logic cell in a estimation process over an integrated circuit, represented by logic cells and connections between cells, using a three dimensional power modeling table (3-D power table). The 3-D power table utilizes dual output capacitance indices and a single input transition time (which can be a weighted average input transition time) index. Each 3-D power table of the present invention includes a set of index reference points for the first output capacitance index, a set of index reference points for the second output capacitance index, a set of index reference points for the input transition time, and a set of power reference points that correspond to the above index reference points. For a given set of values input for: (1) the first output capacitance index; (2) the second output capacitance index; and (3) the input transition time index, linear interpolation is performed across the three indices to arrive at the given output power consumption value. The 3-D power tables are used to accurately model the power consumed by a cell having two outputs which are functionally equal or opposite, for instance, a flip-flop with Q and Q' outputs. A library developer can specify a 3-D power table having three indices, input transition time, output1 capacitance (e.g., for Q), and output2 capacitance (e.g., for Q'). The power value output is then an accurate measure of the total power consumed by the dual output cell during the output transition. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
cell(mycell) {
pin(A) {
direction : input;
internal_power( ) {
power(input_by_trans) {
values("1.5, 2.5, 4.7");
}
when : "B";
}
. . .
}
pin(B) {
direction : input;
internal_power( ) {
power(input_by_trans) {
values("1.5, 2.5, 4.7");
}
when : "A";
}
. . .
}
pin(C) {
direction : input;
. . .
}
pin(Z) { **default**
direction : output;
internal_power(output_by_cap) {
power(output_by_cap) {
values("2.0, 5.0, 9.0");
}
}
. . .
}
}
Output_by_Cap and Input_by_Trans LUTs
library(internal_power_example) {
power_lut_template(output_by_cap) {
variable_1 : total_output_net_capacitance;
index_1("0.0, 5.0, 20.0");
}
power_lut_template(input_by_trans) {
variable_1 : input_transition_time;
index_1("0.0, 1.0, 2.0");
}
}
As described above, the above reference index values associated with the structure of the LUTs are used in conjunction with the reference power values given within the internal power groups of a power model of the present invention during linear interpolation. During power analysis, particular input transition times or particular output capacitance values are linearly interpolated with the above reference values, using well known processes, to obtain the actual power consumed by the library cell for a given power event. As seen above and with reference to FIG. 5, pin A has one internal power group as does pin B; pin C has no internal power group and pin Z has one internal power group. Library cell 210 exhibits a particular power usage function ("1.5, 2.5, 4.7") for a transition on pin A contemporaneously when function B is true (e.g., state B exists). Otherwise, for all other power events causing a transition on A, the power consumed by cell 210 is 0. If state B exists, then a transition on A causes gate 212 to propagate the transition, otherwise gate 212 is not active and therefore consumes no power. A similar case exists for a transition on B if A is present, as shown by the above exemplary power model structure. The following are examples of the state dependent power modeling structure of the present invention for synchronous RAM library cells. FIG. 6A illustrates a logical block diagram of the exemplary synchronous RAM library cell 240, RAM1, having a data input bus (DATA_IN), a data output bus (DATA_OUT), a single read/write signal (R/W), a RAM enable signal (RAM_EN), and address bus (ADDR), and a clock input (CLK).
Synchronous RAM-State Dependent Power Model
Example One
library(internal_power_example) {
power_lut_template(input_by_trans) {
variable_1 : input_transition_time;
index_1("0.0, 1.0, 2.0");
}
type (bus16) {
base_type : array;
data_type : bit;
bit_width : 16;
bit_from : 0;
bit_to : 15;
}
type (bus8) {
base_type : array;
data_type : bit;
bit_width : 8;
bit_from : 0;
bit_to: 7;
}
. . .
cell(RAM1) {
bus(DATA_OUT){
bus_type: bus16;
direction : output;
. . .
}
bus(DATA_IN) {
bus_type: bus16;
direction : input;
. . .
}
bus(ADDR) {
bus_type: bus8;
direction : input;
}
pin(R_W) {
direction : input;
. . .
}
pin(RAM_EN) {
direction : input;
. . .
}
pin(CLK) {
direction : input;
internal_power( ) {
when: "R_W * RAM_EN'";
power(input_by_trans) {
values("1.5, 2.5, 4.7");
}
}
internal_power( ) {
when: R_W' & RAM_EN'"
power(input_by_trans) {
values("1.8, 2.8, 5.1");
}
}
internal_power( ) {
when : "RAM_EN"
power(input_by_trans) {
values("0.5, 0.8, 1.6");
}
}
}
}
}
In the above first exemplary power model structure of the synchronous RAM cell, three internal power groups are defined for a clock transition (designated signal CLK). These three internal power groups provide three when clauses. As shown by the second internal power group, RAM cell 240 consumes the most power during a write state when RAM_EN (asserted low) is enabled. This state is represented by the when clause function, (R_W'* RAM_EN'), where (') represents the inverse. During the read cycle, less power is consumed, as represented by the when clause, (R_W * RAM_EN') of the first internal power group. RAM cell 240 consumes the least power when it is not enabled, as shown by the when clause (RAM_EN) of the third internal power group. It is appreciated that no default internal power group is included in the above example because (1) the designated signal, CLK, is an input signal and also because (2) all input states are exhaustively included for the R_W, and RAM_EN signals. It is appreciated that the LUT, input_by_trans, is also defined in the above exemplary power model structure. In the following second RAM example, an asynchronous RAM cell is used. The RAM cell 240 of FIG. 6A is modeled except for the following modifications: (1) the single R_W line used in FIG. 6B is replaced by two individual signals, a read (R) signal and a separate write (W) signal; and (2) the clock signal, CLK, is removed. The resultant RAM cell 244, RAM2, is shown in FIG. 6B.
Asynchronous RAM - State Dependent Power Model
Example Two
library(internal_power_example) {
power_lut_template(input_by_trans) {
variable_1 : input_transition_time;
index_1("0.0, 1.0, 2.0");
}
type (bus16) {
base_type : array;
data_type : bit;
bit_width : 16;
bit_from : 0;
bit_to : 15;
}
type (bus8) {
base_type : array;
data_type : bit;
bit_width : 8;
bit_from : 0;
bit_to : 7;
}
. . .
cell(RAM1) {
bus(DATA_OUT) {
bus_type : bus16;
direction : output;
. . .
}
bus(DATA_IN) {
bus_type : bus16;
direction : input;
. . .
}
bus(ADDR) {
bus_type : bus8;
direction : input;
}
pin(R) {
direction : input;
internal_power() {
when : "RAM_EN"";
power(input_by_trans) {
values("1.51, 2.5, 4.7");
}
}
internal_power() {
when : "RAM_EN";
power(input_by_trans) {
values("0.5, 0.8, 1.6");
}
}
. . .
}
pin(W) {
direction : input:
internal_power() {
when : "RAM_EN"";
power(input_by_trans) {
values("1.8, 2.8, 5.1");
}
}
internal_power() {
when : "RAM_EN";
power(input_by_trans) {
values("0.5, 0.8, 1.6");
}
}
. . .
}
pin(RAM_EN) {
direction : Input;
. . .
}
}
}
In the above second exemplary asynchronous power model structure of RAM cell, two internal power groups are defined for a read signal transition (signal R), including two when clauses, one for the RAM cell 244 enabled and for when disabled. As shown, RAM cell 244 of FIG. 6B consumes most power during a read state when RAM_EN (asserted low) is enabled. This state, for the R pin transition, is represented by the when clause function, (RAM_EN') of the first internal power group for designated pin, R. Two internal power groups are also defined for a write signal transition (signal W), including two when clauses, one for RAM cell 244 being enabled and one for RAM cell 244 being disabled. As shown, RAM cell 244 of FIG. 6B consumes the most power during a write state when RAM_EN (asserted low) is enabled. This state, for the W pin transition, is represented by the when clause function, (RAM_EN') of the first internal power group of the signal, W. As between the power models for the read and write cycles, the most power is consumed by RAM cell 244 during the enabled write cycle. The power function for this case is (1.8, 2.8, 5.1). The least power dissipated during a read or write cycle is when RAM cell 244 is not enabled, as represented by the second internal power groups of signals R and W. Again, no default internal power groups are included in the above exemplary power model because the states are exhaustively listed by the when clauses. It is appreciated that the LUT, input_by_trans, is also defined in the above exemplary power model structure. State-Dependent Leakage Power The present invention allows the definition of leakage power values which are dependent upon the state of the library cell. The present invention includes an additional state-dependent leakage power group to represent the above leakage power. For cells with state-dependent leakage power, the designation "leakage_power ( )" is used. As is the case with state dependent internal power, the present invention requires a default which will be the cell_leakage_power designation. In one embodiment, library compilers require that the name of the leakage variable and state dependent leakage power group be different. An exemplary format for the state-dependent leakage power group is:
leakage_power() {
when : <logical condition>;
value: <value>;
}
This format is consistent with the state dependent internal power format shown above. Both use the when clause to specify state dependency and require that the when conditions are mutually exclusive. An example of the use of state dependent leakage power is as follows:
cell(mycell) {
. . .
leakage_power() {
when : "IA";
value : 2.0;
}
cell_leakage_power : 3.0;
}
III. PATH DEPENDENT POWER MODELING The present invention provides a path dependent library cell model for the power consumption of a particular pin of a library cell that depends on the path taken of an input pin signal causing the transition, e.g., power consumption is determined for a power event based on which library cell's pin transitioned (e.g., source pin) to cause another library cell's pin to transition (e.g., destination pin). This path dependent model of the present invention is particularly advantageous for library cells whose actual power consumption varies depending on which input signal transitioned to cause the power event. The source pins can be either an input, output, internal or bidirectional pin while the destination pin can be an output, internal, or bidirectional pin within the path dependent power model of the present invention. For instance, with reference to the exemplary library cell 300 of FIG. 7 having gates 302 to 308, a transition in input A causing the output Z to transition involves only gate 308. However, a transition in signals D and E causing output Z to transition involves gates 302 through 308, consuming much more power than the former event. The present invention path dependent power modeling allows a library developer to specify a power consumption model for a library cell, e.g., cell 300, based on transition of particular input signal pins. FIG. 8 illustrates a generic data structure 350 utilized within the context of the present invention path dependent model to represent power consumption within a logic cell. The structure 350 of the power model for path dependent power modeling is similar to the structure 250 (FIG. 4) of state dependent power modeling except that the when clause is replaced by a "related_pins" clause used for path dependent power modeling of the present invention. Data structure 350 resides within computer readable memory units of system 112 (FIG. 3) and is accessed by processor 101 during power analysis. The particular logic cell is identified by a cell name designation (data field) 352. A cell library includes many logic cell power models 350, one for each distinct cell supported by the technology specific library. For each pin of the designated cell whose transition causes a power consumption event, the present invention data structure 350 allows a library cell developer to specify (1) a set of certain library pins and (2) the power consumed by the logic cell when any pin of those set of certain library pins transitions causing a transition over the designated pin. FIG. 8 illustrates power consumption information for one pin of the designated cell; this designated pin is identified by the pin designation field 354. It is appreciated that one pin is shown for clarity only and that structure 350 can contain analogous definitions for multiple pins of the designated cell. The designated pin can be either an output, bi-directional, or internal pin of the designated cell. For each pin designation, structure 350 contains an identification of whether that pin is an output pin, an internal pin, or a bidirectional pin. Within the context of the path dependent power model of the present invention, the terms "input pin" and "output pin" each can encompass the definition of an "internal pin" and/or a "bidirectional pin" when used, respectively, to input a signal to a cell's element or used to output a signal from a cell's element. An element is any sub-partition of a library cell. This designation is shown as the output/internal/bidirectional designation 356. Typically with respect to path dependent power modeling, this designation 356 is "output" as output pins are generally path dependent modeled. For each pin designation 354, structure 350 contains one or more internal power headers indicating that power modeling information is to follow regarding the designated pin. The power modeling information for an internal power header is contained within an internal power group 365. Within each internal power group 365 of the structure 350 of FIG. 8, the present invention contains an identification designation 360 of a power look-up table used in determining the power consumption for the designated cell. Also within each internal power group 365 of structure 350, the present invention contains a list of power reference values 362 for use in conjunction with the designated power look-up table 360 for determining the power consumption for the designated cell. Also included within each internal power header 358 is a "related_pins" clause 364 indicating the set of pins relevant to this internal power group 365. The related pins clause 364 can contain input, output, bidirectional and internal pins. Within one embodiment of the present invention, the related_pins clause 364 typically contains a list of selected input pins. If a transition, regardless of its state, over one or more of the set of pins listed in 364 causes a transition over the designated pin 354 of this library cell 352, then the power consumed by the library cell is determined by the designated power reference values 362 of the relevant internal power group 365. Although shown as at the end of an internal power group, the related_pins clause 364 can be positioned at any place within the internal power group after the power header within the scope of the present invention. Within one embodiment of the path dependent power modeling, for a particular designated pin, each input of the designated library cell is required to be exhaustively specified within its internal power groups. During power analysis, if a transition is recorded over any of the pins identified at 364 causing a transition over the designated pin 354, then the power information designed within 360 and 362 is used to determine the power consumed by the logic cell designed by 352 based on a given input signal transition time and/or an input output capacitance value associated with the power event and the designated cell. As shown in FIG. 8, a particular pin can have more than one internal power group. The designated pin of FIG. 8 contains two internal power groups 365 and 366. The internal power group 366 contains a different "related_pins" clause for the designated pin. It is appreciated that the pin listings of each "related_pins" clause for a designated pin are typically mutually exclusive within the preferred embodiment the present invention. The present invention path dependent data structure 350 does not need to include a default internal power group for the designated pin because, for a given designated pin, a default condition can readily be represented by an additional related_pins clause including all pins not otherwise listed in a prior internal power group. Alternatively, the present invention can also include a specific default power consumption function (and power LUT) of an explicit default internal power group, as done in the state dependent power modeling. This default internal power group of this alternative embodiment would not include a related_pins designation and its reference power values would apply for all input pins not already defined for a particular pin designation. Although a number of different programming and data structure languages can be used to implement the specifics of the generic outline of FIG. 8, one exemplary power model structure of the path dependent power modeling of the present invention is described below. The exemplary power model is representative of the exemplary cell 300 shown in FIG. 7. The LUT, output_by_cap_and_trans is a two dimensional LUT because it contains two input indices, however, one or three dimensional LUTs are equally well suited for application with the path dependent structure shown below. The LUT contains reference index values and its structures are shown following the exemplary power model structure.
Exemplary Path Dependent Power Model Structure
cell(mycell) {
pin(A) {
direction : input;
. . .
}
pin(B) {
direction : input:
. . .
}
pin(C) {
direction : input;
. . .
}
pin(D) {
direction : input:
. . .
}
pin(E) {
direction : input:
. . .
}
pin(Z) {
direction : output;
internal_power( ) {
power(output_by_cap_and_trans) {
values("2.2, 3.7, 4.3", "1.7, 2.1, 3.5", "1.0, 1.5, 2.8");
}
related_pin : "D E";
}
internal_power( ) {
power(output_by_cap_and_trans) {
values("2.0, 3.5, 4.1", "1.5, 1.9, 3.3", "0.8, 1.3, 2.6");
}
related_pin : "C";
}
internal_power( ) {
power(output_by_cap_and_trans) {
values("1.8, 3.3, 3.9", "1.3, 1.7, 3.1", "0.6, 1.1, 2.4");
}
related_pin: "B";
}
internal_power( ) {
power(output_by_cap_and_trans) {
values("1.6, 3.1, 3.7", "1.1, 1.5, 2.9", "0.4, 0.9, 2.2");
}
related_pin : "A";
}
}
}
Output_by_Cap_and_Trans LUT
library(internal_power_example) {
power_lut_template(output_by_cap_and_trans) {
variable_1 : total_output_net_capacitance;
variable_2 : input_transition_time;
index_1("0.0, 5.0, 20.0");
index_2("0.0, 1.0, 2.0");
}
}
With reference to the above example and to FIG. 7, the designated pin, Z, contains four separate internal power groups. A transition over output pin Z can cause cell 300 to exhibit four different power consumption functions, represented by four internal power groups, depending on which input signal pin group caused the signal transition over pin Z. If a transition over pin D or E caused the power event, then the largest power consumption function, ("2.2, 3.7, 4.3", "1.7, 2.1, 3.5", "1.0, 1.5, 2.8"), is used by the first internal power group to compute the estimated power for cell 300. This represents the longest path between the input pins and pin Z, the output pin. If a transition over pin C caused the power event, then the second largest power consumption function, ("2.0, 3.5, 4.1", "1.5, 1.9, 3.3", "0.8, 1.3, 2.6"), is used by the second internal power group to compute the estimated power for cell 300. If a transition over pin B caused the power event, then the second smallest power consumption function, ("1.8, 3.3, 3.9", "1.3, 1.7, 3.1", "0.6, 1.1, 2.4"), is used by third internal power group to compute the estimated power for cell 300. Lastly, if a transition over pin A caused the power event, then the smallest power consumption function, ("1.6, 3.1, 3.7", "1.1, 1.5, 2.9", "0.4, 0.9, 2.2"), is used by the fourth internal power group to compute the estimated power for cell 300. This last function represents the shortest path between the input pin and the output, Z. It is appreciated since LUT, output_by_cap_and_trans, is a two dimensional LUT indexed by both input signal transition time and output pin capacitance and further that three reference values are given for each index, this LUT requires 3X3 or 9 reference power values to fill its power function. Path dependent power modeling definitions do not affect the other possible types of tables in an internal power group. Further, one, two, or three dimensional power tables can be used within path dependent power modeling. In one embodiment, when specifying path dependent power models, the library developer specifies a path between the output and each non-synchronous input to which it is functionally related. A library compiler checks this condition and the present invention issues an error if all paths are not specified. For a black box, the library compiler cannot determine which inputs are functionally related to a particular output, so it does not check that all paths are enumerated. State and Path Dependent Modeling Library models can be made within the present invention that include both a when clause and a related_pins clause to incorporate both path and state dependent modeling. The resulting structure is the same as shown in FIG. 8, but the related_pins clause 364 includes an associated when clause. In this case, the resulting internal power group's power reference values 362 and power lookup table 360 defines the designated cell's power consumption only: (1) provided the state defined in the when clause exists contemporaneously with a transition over the designated pin and; provided further (2) a pin of the set of particular pins defined in the related_pins clause transitions causing the designated pin to transition. Output-to-Output Path Dependent Power Modeling In the present invention path dependent power modeling, the related_pins field can also refer to output pins on which a particular output is dependent. This advantageously allows the specification of multiple output cells to be easier using the present invention. For example, with reference to FIG. 9A, the specification of multiple outputs Z and Y is made easier with reference to cell 370 by allowing output Z to be dependent on output Y. In this embodiment, the present invention can be used by a library developer to create a path dependent internal power table for the path from A and B to output Y. The developer can also use the present invention path dependent power model to create a path-dependent internal power table for the path from Y to Z. This procedure is typically more intuitive to the library developer and is consistent with path dependent timing. Within this aspect of the present invention, the library developer should specify output-to-output power using path dependent power tables only if both outputs are functionally equal or opposite.- In this case, a library compiler typically checks that the functions on the output pins are either functionally equivalent or have an inverse relationship. An error is issued if this is not the case. For this path dependent use, the present invention requires that both outputs of the path be functionally equal or opposite to reduce the complexity for simulators and power analysis. In FIG. 9A, Y and Z are functionally equal or opposite, so output-to-output path dependent power tables of the present invention can be used. However, for the circuit 380 of FIG. 9B it is not appropriate to use output-to-output path dependent power tables because O1 and O2 are independent, e.g., they are not functionally equal or opposite. In one embodiment of the present invention, output-to-output paths are not allowed for "black-box" library cells because the present invention cannot readily verify that the outputs are functionally equal or opposite. IV. THREE DIMENSIONAL POWER TABLE FOR POWER MODELING The present invention provides a power table having three indices for representing the power consumed within a library cell having two outputs that switch contemporaneously. Often this situation is seen in a library cell wherein the outputs are equal or opposite, e.g., Q and Q' (inverse) of a flip-flop circuit. FIG. 10 illustrates an exemplary library cell 410 having two outputs 412a and 412b that switch contemporaneously. Within the context of the three dimensional power table of the present invention, "contemporaneously" means simultaneously or as the result of a common signal or set of signals causing the transitions to occur close in time. The cell 410 receives input signal(s), I, 420 and also receives a clock signal, C, 430. General circuitry of cell 410 controls output 412a and other circuitry 440 controls the state of the other output 412b. It is often the case that library developers are not knowledgeable of the specific circuitry components within circuit 440, or the circuitry that controls output 412a, because in certain characterization procedures, the developers characterize their cells as "black boxes." This practice, in conjunction with the fact that the outputs 412a and 412b switch contemporaneously, make estimating the power consumption of cell 410 difficult within a prior art power model that requires: (1) power consumption characterization be related to an output pin; and (2) that only one power table is allowed for each output pin so characterized. For defining the power consumption of the library cell 410 as a whole, the present invention solves the above problem by allowing a library developer to define two output capacitance load values, one for each output 412a and 412b, in addition to the input transition time. By taking into consideration both of the output load capacitance values 420a and 420b, the present invention power table provides a very accurate and efficient method by which to estimate the power consumption for library cell 410 based on an output signal transition without requiring the library developer to be knowledgeable regarding the specific circuitry controlling each output. In order to represent both output load transitions, the present invention provides a three dimensional power table 510, as shown in FIG. 11. The power table 510 includes a three dimensional matrix of cells (one example cell is 520a). Although the matrix can be of a number of different sizes within the present invention, a matrix exemplary size of 4.times.4.times.5 or 100 entries is shown in FIG. 11. Multiple reference values for the first output load capacitance (e.g., 420a) associated with output 412a are placed along axis 512. Multiple reference values for the second output load capacitance (e.g., 420b) associated with output 412b are placed along axis 514. Lastly, multiple reference values for the input signal transition time of input 420 are placed along the third axis 518. Values within each of the matrix cells then represent reference power values associated with their respective coordinate position defined by the three indices, e.g., output1 load capacitance, output2 load capacitance, and input transition time. It is appreciated that the above three axis definitions can be re-arranged without departing from the scope of the present invention. In one embodiment, the present invention provides the matrix 510 in the form of a power look-up table having three indices and one output value. For a matrix power table size of N.times.M.times.P, there are N*M*P reference power values required to fill the three dimensional look-up table (3-D LUT). It is appreciated that the 3-D LUT of the present invention resides within computer readable memory of system 112 (FIG. 3) and is accessed by processor 101 in during power analysis. The reference power values placed within the cells of the matrix 510 represent amounts of physical power consumed by library cells which represent physical circuitry within an integrated circuit device. The present invention 3-D LUT is advantageous because library developers can readily supply the required reference power values since combinations of input transition times and first and second output capacitance values are straightforward to measure. In operation, the cells of the 3-D LUT 510 (FIG. 11) of the present invention are filled with N*M*P reference power values by a particular power model for a library cell, e.g. from the values of designation 262 (FIG. 4) or designation 362 (FIG. 8). Then, during power analysis, the 3-D LUT is presented with a particular input coordinate having: (1) a particular input transition time; (2) a particular output load capacitance value for output1; and (3) a particular output load capacitance value for output2. The input coordinate is supplied when both outputs switch contemporaneously. Using well known three dimensional linear (or non-linear) interpolation mechanisms, the present invention uses the above input coordinate and the reference index and power values to arrive at an output power value corresponding to the input coordinate. It is appreciated that the 3-D LUT of the present invention having dual reference indices, representing two different output load capacitance values, can be used in conjunction with the above state dependent power models and path dependent power models. An example of the above is presented herein. It is further appreciated that the present invention 3-D LUT is valid when two outputs are functionally equal or opposite. Within the present invention, if either of the outputs of a library cell can switch independently, library developers can also specify other power tables for the cases that the output switch independently (e.g., a 2-dimensional power table only based on input transition time and that output's load capacitance). In this case, the present invention allows a library developer to specify a when clause in the internal power group with the 3-D LUT if these outputs are not always functionally equal or opposite. The when clause is the Boolean expression for the condition that these outputs are functionally equal or opposite. If a user specifies only a 3-D LUT for outputs which are not equal or opposite, a library compiler issues an error. However, within the present invention, the library developer does not need to specify a when clause if both outputs are always functionally equal or opposite. The internal power group which holds the 3-D LUT is differentiated from other internal power groups by the field "equal_or_opposite_output," although other names can be used without departing from the present invention. An example of this data structure 540 (stored in computer readable memory units of system 112) for a single internal power group 542 is shown in FIG. 12A having an "equal_or_opposite_output" designation 543 and a 3-D power LUT designation 544. The internal power group 542 represents the total power consumption for the represented library cell for both modeled outputs. FIG. 12B illustrates an exemplary data structure 546 having an internal power group 548 including both a 3-D power LUT and a when clause for state dependent power modeling. FIG. 12C illustrates an exemplary data structure 550 having an internal power group 552 including both a 3-D power LUT and a related pins clause for path dependent power modeling. Lastly, FIG. 12D illustrates an exemplary data structure 560 having an internal power group 562 including a 3-D power LUT, a related pins clause for path dependent power modeling, and a when clause for state dependent power modeling. The present invention also checks that the equal_or_opposite_output designation contains an output, bidirectional, or internal pin. An error is issued if a 3-D LUT is specified without a when clause and the two outputs have neither a functionally equivalent nor a inverse relationship. The error indicates to the user that these outputs do not always switch contemporaneously, so the user needs to add a when clause in that internal power group and specify additional power lookup tables for each output for cases when these outputs switch independently. Although different syntax can be used without departing from the present invention, the names of the input values passed to the 3-D power table for the outputs' capacitive loads are total_output_net_capacitance and total_other_output_net_capacitance. An example of a library with 3-dimensional power lookup tables is given below. This example relates to a flip-flop library cell 530 shown in FIG. 13 having a set input (S), a reset input (R), a D input, a clock (CP) input and a Q output and a Q' or (ON) inverse output. The 3-D LUT 510 of this example is a N.times.N.times.N LUT wherein N=3. Therefore, 27 reference power cells are required to fill the 3-D power LUT.
Example of 3-D Power Table
library(internal_power_example) {
power_lut_template(output_by_cap1_cap2_and_trans) {
variable_1 : total_output_net_capacitance; *** inputs ***
variable_2 : total_other_output_net_capacitance;
variable_3 : input_transition_time;
index_1("0.0, 5.0, 20.0"); *** index
index_2("0.0, 5.0, 20.0"); reference
index_3("0.0, 1.0, 2.0"); values ***
}
power_lut_template(output_by_cap_and_trans) {
variable_1 : total output_net_capacitance;
variable_2 : input_transition_time;
index_1("0.0, 5.0, 20.0");
index_2("0.0, 1.0, 2.0");
}
power_lut_template(input_by_trans) {
variable_1 : input_transition_time;
index_1("0.0, 1.0, 2.0");
}
. . .
cell(FLOP1) {
pin(CP) {
direction : input;
internal_power(input_y_trans) {
power(input_by_trans) {
values("1.5, 2.5, 4.7");
}
}
. . .
}
pin(D) {
direction : input;
. . .
}
pin(S) {
direction : input;
. . .
}
pin(R) {
direction : input;
. . .
}
pin(Q) {
direction : output;
internal_power( ) {
power(output_by_cap1_cap2_and_trans) {
values("2.2, 3.7, 4.3", "1.7, 2.1, 3.5", "1.0, 1.5,
2.8",.backslash.
"2.1, 3.6, 4.2", "1.6, 2.0, 3.4", "0.9, 1.5,
2.7",.backslash.
"2.0, 3.5, 4.1", "1.5, 1.9, 3.3", "0.8, 1.4, 2.6");
}
when : "S' or R'";
equal_or_opposite_output : "QN"
related_pin : "CP";
}
internal_power( ) }
power(output_by_cap_and_trans) {
values("1.8, 3.4, 4.0", "1.5, 1.9, 3.3", "0.8, 1.3, 2.5");
}
related_pin : "S R";
}
. . .
pin(QN) {
direction : output;
internal_power( ) {
power(output_by_cap_and_trans) {
values("0.5, 0.9, 1.3", "0.3, 0.7, 1.1", "0.2, 0.5, 0.9");
}
related_pin : "S R";
}
. . .
}
. . .
}
The above example specifies a 3-dimensional power table 510 in accordance with the present invention for the outputs Q and QN of FIG. 13, which switch contemporaneously, as well as a 2-dimensional power table for each output when the outputs switch independently. This is necessary for accuracy because output Q and output QN can switch contemporaneously or independently. This example uses the 3-dimensional power table 510 of the present invention in conjunction with both state and path dependent power modeling. If this example did not have set (S) and reset (R) input pins, only a 3-dimensional table would be required. In the example, two internal power groups are defined for the Q output pin and one internal power group is defined for the QN output pin. If a library developer creates an internal power group with the field equal_or_opposite_output, that internal power group is required to contain a 3-dimensional power table in accordance with one embodiment of the present invention. A 2-dimensional power table which has as indices both outputs' capacitive loads should be avoided. Any definition of a LUT with only the indices total_output_net_capacitance and total_other_output_net_capacitance defined causes an error within the present invention. Library Separate Rise and Fall Power Modeling The present invention also allows rise and fall power to be separately modeled with reference to a library cell. The present invention uses rise_power and fall_power designations within internal power groups to represent this information. The present invention checks if a rising_power group is specified, then a falling_power group should also be specified in the same internal power group. An example of internal power groups where rise and fall power is specified separately is shown below.
internal_power( )
rise_power(output_by_cap_and_trans) {
values("2.2, 3.7, 4.3", "1.7, 2.1, 3.5", "1.0, 1.5, 2.8");
}
fall_power(output_by_cap_and_trans) {
values("2.0, 3.5, 4.1", "1.5, 2.3, 3.3", "1.2, 1.3, 2.6");
}
related_pin : "A";
}
V. POWER ESTIMATION PROCESS FIG. 14 illustrates an overall flow diagram 600 of steps and data files involved in a power estimation process in accordance with the present invention power modeling for an integrated circuit device. The steps of diagram 600 are implemented as program code stored in computer readable memory units of system 112 (FIG. 3) which are executed over processor 101. The data files used by process 600 are similarly stored in memory units of system 112. A library file 610 contains the power modeling structures of the present invention described above for various different library cells for the integrated circuit design. In the library file 610 are contained the state and path dependent power structures and any 3-D power tables (as described above) for specific library cells. This file 610 is read by a generate directive file process 615 which generates a directive file 620. The simulator process 625 needs to be informed of which library cells have state and/or path dependent modeling so it can output the necessary information used to perform power estimation for these library cells. The simulator process 625 uses the directive file 620 to obtain this information. The directive file 620 contains a listing of specific signal states and transition paths that the simulator 625 is to watch out for, during simulation, that have an impact on power estimation. These states and transitions are defined within the power modeling structures used in the library file 610 for state and/or path dependent modeling. The directive file 620 is needed in part because the number of possible conditions encountered by the simulator 625 is too great to monitor without information used to direct or focus the simulator's recording activity. For example, assuming a state dependent power model for library cell, mycell, has a particular power function defined when output O transitions and inputs A, B, and C are all 1 (e.g., state condition A AND B AND C). In this case, the directive file 620 contains information informing the simulation process 625 to record a count value each time mycell has an output O that transitions and A, B and C are 1. During simulation, this case is watched for and a record is made each time it happens. During simulation 625, a separate record or tally is made of each occurrence of each condition outlined in the directive file 620 and the totals are aggregated over the simulation interval. Simulation process 625 maintains this record in computer readable memory units of system 112 in a switching activity interchange format (SAIF) file 630 which indicates the number of times each event in the directive file 620 occurred over the time interval of the simulation for each library cell. This information includes input transition times for certain input signals. The power analysis process 635 inputs the SAIF file 630 and applies the recorded conditions to the power models of the library file 610 to obtain power estimates based on any state dependent power modeling, any path dependent power modeling and any 3-D power tables used within the library 610. For each library cell, the relevant counts recorded within the SAIF file 630 are applied to its power model to obtain an estimated power consumption for the library cell. An aggregation of all estimated power consumption amounts is reported in a power report 640. This power report 640 can then be used to determine if the integrated circuit design represented by the power models of the library file 610 meets prescribed power constraints. CONCLUSION The preferred embodiment of the present invention, a three dimensional power modeling table having dual output capacitance indices, is thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims.
|
Same subclass Same class Consider this |
||||||||||
