oagTimer::CellData Class Reference

#include <oagTimerCellData.h>

Collaboration diagram for oagTimer::CellData:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CellData ()
 ~CellData ()
void initSizing (sizingSignal s)
void clearSizingSignals ()
void swap (oaString cellName)
void reverseSwap ()
void commitSwap ()
void commitSwap (oaModInst *new_inst)
void unsetSwapFlag ()
void resetLibListPtr ()
vector< oaString > getAllSizes ()
vector< oaString > getOtherSizes ()
vector< oaString > getGreaterThanCurrentSize ()
vector< oaString > getLessThanCurrentSize ()
oaString getMinSize ()
oaString getMaxSize ()
int getDownSizeCount ()
int getUpSizeCount ()
int getNumOfSizes ()
oaString getNextSize ()
bool hasMoreSize ()
bool hasMoreDownSize ()
bool hasMoreUpSize ()
bool isMaxSize ()
bool isMinSize ()
void mark (oaModInstTerm *i)
bool isAllInputMark ()
void setForwardWeight (oaModInstTerm *iTerm, double val, double d)
void setBackwardWeight (double val)
double getNetWeightSum ()
double getBackwardWeight (oaModInstTerm *iTerm)
bool isRootNode ()
void setRootNode ()
bool isFanoutNode ()
void setFanoutNode ()
bool validFanoutSensitivity (double sensitivity, double delta)
void setFanoutSensitivity (double sensitivity)
void printTimingData (oaDesign *top, Timer *t)

Public Attributes

oaOccInst * occInst
oaModInst * inst
oaString instName
CellMastermaster

Private Member Functions

void addOtherSizes ()
void updateLibSeekPtr ()
bool isDiffThanCurrSize ()
void unsetNode ()

Static Private Member Functions

bool increasing_strengths (oaString a, oaString b)
void initAppDefs ()
 Initialize the appDefs associated with CellDatas.
CellDatacreate (oaOccInst *oci)
CellDataget (oaModInst *inst)

Private Attributes

sizingSignal _signal
Lib_list::iterator lib_this_ptr
Lib_list::iterator lib_seek_ptr
Lib_list::iterator lib_temp_ptr
Lib_list cell_sizes
bool valid
bool isRoot
bool isFanout
bool isMark
double fanoutSensitivity
int dnCount
int upCount
int index
bool revTopFlag
bool isMultiFanin
map< oaModInstTerm *, int > inputTerms
map< oaModInstTerm *, int > outputTerms
map< oaModInstTerm *, netDatainputTermsNetMap

Static Private Attributes

oaVoidPointerAppDef< oaModInst > * _instAppDef = 0

Friends

class DuetSensitivity
class DesignTool
class Opt
class PeepHole
class Timer
class lpSA
class sensInfo
class Util
class kickMove
class LR
class DP
class OptMinDelay
class SubTimer

Constructor & Destructor Documentation

oagTimer::CellData::CellData  )  [inline]
 

oagTimer::CellData::~CellData  )  [inline]
 


Member Function Documentation

void oagTimer::CellData::addOtherSizes  )  [private]
 

Add other available drive strength lib cell for this CellMaster cell type

void oagTimer::CellData::clearSizingSignals  )  [inline]
 

Clear signals for sizing operations, do not remove list of cell sizes being initialize

void oagTimer::CellData::commitSwap oaModInst *  new_inst  ) 
 

Here is the call graph for this function:

void oagTimer::CellData::commitSwap  ) 
 

Commit the swap made earlier and update this cell data and masters

Here is the call graph for this function:

CellData * oagTimer::CellData::create oaOccInst *  oci  )  [static, private]
 

Create a CellData for the given ModInst.

It is a fatal error to try to create a CellData for a Mod which already has a CellData.

Parameters:
inst The OccInst for which to create CellData.
Returns:
The new CellData.

Here is the call graph for this function:

CellData * oagTimer::CellData::get oaModInst *  inst  )  [static, private]
 

Get the CellData for the given ModInst, or 0 if the ModInst has no CellData.

Parameters:
inst The ModInst to query.
Returns:
The corresponding CellData.

vector< oaString > oagTimer::CellData::getAllSizes  ) 
 

Return vector of all avaialable cell sizes in library

Here is the call graph for this function:

double oagTimer::CellData::getBackwardWeight oaModInstTerm *  iTerm  ) 
 

Get the input term backward weight of this instance

int oagTimer::CellData::getDownSizeCount  ) 
 

Return the count of size smaller than current.

vector< oaString > oagTimer::CellData::getGreaterThanCurrentSize  ) 
 

Return vector of sizes greater than current size

vector< oaString > oagTimer::CellData::getLessThanCurrentSize  ) 
 

Return vector of sizes less than current size

oaString oagTimer::CellData::getMaxSize  ) 
 

Return the maximum drive strength for the current cell type

Here is the call graph for this function:

oaString oagTimer::CellData::getMinSize  ) 
 

Return the minimum drive strength for the current cell type

Here is the call graph for this function:

double oagTimer::CellData::getNetWeightSum  ) 
 

Get the input term forward weight SUM of this instance

oaString oagTimer::CellData::getNextSize  ) 
 

Return the next sizing in the list depending the current signal.

Here is the call graph for this function:

int oagTimer::CellData::getNumOfSizes  ) 
 

Return the total number of sizes available in the .lib for the current cell (excluding current cell size)

Here is the call graph for this function:

vector< oaString > oagTimer::CellData::getOtherSizes  ) 
 

Return vector of other sizes

Here is the call graph for this function:

int oagTimer::CellData::getUpSizeCount  ) 
 

Return the count of size larger than current.

bool oagTimer::CellData::hasMoreDownSize  ) 
 

Check whether there are more sizes in the lib list

bool oagTimer::CellData::hasMoreSize  ) 
 

Check whether there are more sizes in the lib list

bool oagTimer::CellData::hasMoreUpSize  ) 
 

bool oagTimer::CellData::increasing_strengths oaString  a,
oaString  b
[inline, static, private]
 

Comparison of drive strengths to sort in increasing order.

void oagTimer::CellData::initAppDefs  )  [static, private]
 

Initialize the appDefs associated with CellDatas.

void oagTimer::CellData::initSizing sizingSignal  s  ) 
 

Initialize list of .lib cell sizes for sizing operations.

Here is the call graph for this function:

bool oagTimer::CellData::isAllInputMark  ) 
 

Check whether all input terms of this instance is all marked

bool oagTimer::CellData::isDiffThanCurrSize  )  [private]
 

Check whether the cell size I am trying to swap is it different from what it was

bool oagTimer::CellData::isFanoutNode  ) 
 

For Peephole OPT, check if current cell is a fanout node

bool oagTimer::CellData::isMaxSize  ) 
 

Check whether current cell size is currently maximum size

Here is the call graph for this function:

bool oagTimer::CellData::isMinSize  ) 
 

Check whether current cell size is currently minimum size

Here is the call graph for this function:

bool oagTimer::CellData::isRootNode  ) 
 

For Peephole OPT, check if current cell is a root node

void oagTimer::CellData::mark oaModInstTerm *  i  ) 
 

Mark a 1 to the input instTerm of this cell instace

void oagTimer::CellData::printTimingData oaDesign *  top,
Timer t
 

DEBUG: print timing information on all the pins of this cell

Here is the call graph for this function:

void oagTimer::CellData::resetLibListPtr  ) 
 

Reset lib_seek_ptr to the list.end position

void oagTimer::CellData::reverseSwap  ) 
 

Reverse swap changes made earlier to original cell data contained within this cell

void oagTimer::CellData::setBackwardWeight double  val  ) 
 

Assign the input term backward weight of this instance

void oagTimer::CellData::setFanoutNode  ) 
 

For Peephole OPT, set current cell as a fanout node

void oagTimer::CellData::setFanoutSensitivity double  sensitivity  ) 
 

For Peephole OPT, this function set the current highest fanout sensitivity that was rejected with this cell as root double: current sensitivity none

void oagTimer::CellData::setForwardWeight oaModInstTerm *  iTerm,
double  val,
double  d
 

Assign the input term forward weight of this instance

void oagTimer::CellData::setRootNode  ) 
 

For Peephole OPT, set current cell as a root node

void oagTimer::CellData::swap oaString  cellName  ) 
 

Change the current lib cell module to another lib cell module and mark current cell data as invalid

void oagTimer::CellData::unsetNode  )  [private]
 

Set all root/fanout/mark signal for PH as false

void oagTimer::CellData::unsetSwapFlag  ) 
 

void oagTimer::CellData::updateLibSeekPtr  )  [private]
 

bool oagTimer::CellData::validFanoutSensitivity double  sensitivity,
double  delta
 

For Peephole OPT, this function verifies the current highest fanout sensitivity that was rejected with this cell as root

  • if current sensitivity is lower than the current highest minus certain percentage delta -> reject it double: current sensitivity double: delta changes (i.e. 1.3) bool


Friends And Related Function Documentation

friend class DesignTool [friend]
 

friend class DP [friend]
 

friend class DuetSensitivity [friend]
 

friend class kickMove [friend]
 

friend class lpSA [friend]
 

friend class LR [friend]
 

friend class Opt [friend]
 

friend class OptMinDelay [friend]
 

friend class PeepHole [friend]
 

friend class sensInfo [friend]
 

friend class SubTimer [friend]
 

friend class Timer [friend]
 

friend class Util [friend]
 


Member Data Documentation

oaVoidPointerAppDef< oaModInst > * oagTimer::CellData::_instAppDef = 0 [static, private]
 

AppDefs Definitions

sizingSignal oagTimer::CellData::_signal [private]
 

Optimization sizing signal of this cellmaster.

Lib_list oagTimer::CellData::cell_sizes [private]
 

Vector of other drive strength in relation to current cell type.

int oagTimer::CellData::dnCount [private]
 

Indicate the number of downsizes that this cell possesses

double oagTimer::CellData::fanoutSensitivity [private]
 

Us in Peephole OPT to store highest fanout sensitivity so far known

int oagTimer::CellData::index [private]
 

Used in lpSA to assign gate index in the circuit

map<oaModInstTerm*,int> oagTimer::CellData::inputTerms [private]
 

Use as bookmark for topological sort in DesignTool

map<oaModInstTerm*,netData> oagTimer::CellData::inputTermsNetMap [private]
 

Use as bottleneck net weighting in DesignTool

oaModInst* oagTimer::CellData::inst
 

The design cell module instance for this cell.

oaString oagTimer::CellData::instName
 

The design cell instance name for this cell.

bool oagTimer::CellData::isFanout [private]
 

Use in Peephole OPT to indicate a fanout node

bool oagTimer::CellData::isMark [private]
 

Use in Peephole OPT to mark the cell as sized

bool oagTimer::CellData::isMultiFanin [private]
 

Used in DP opt to check whether this cell has multi fanin

bool oagTimer::CellData::isRoot [private]
 

Use in Peephole OPT to indicate a root node

Lib_list::iterator oagTimer::CellData::lib_seek_ptr [private]
 

Current lib_list search pointer for optimizaiton. Used in the peephole optimization.

Lib_list::iterator oagTimer::CellData::lib_temp_ptr [private]
 

A temporary pointer pointing to the current cell size taken by Opt Class

Lib_list::iterator oagTimer::CellData::lib_this_ptr [private]
 

This CellMaster pointer in the cell_sizes list.

CellMaster* oagTimer::CellData::master
 

The master lib cell for this cell instance.

oaOccInst* oagTimer::CellData::occInst
 

The design cell occurrence instance for this cell.

map<oaModInstTerm*,int> oagTimer::CellData::outputTerms [private]
 

bool oagTimer::CellData::revTopFlag [private]
 

Used in getReverseTopological() for not double counting gates in recovergence from FF

int oagTimer::CellData::upCount [private]
 

Indicate the number of upsizes that this cell possesses

bool oagTimer::CellData::valid [private]
 

This flag indicate if the current cell data is valid


The documentation for this class was generated from the following files:
Generated on Thu Aug 25 14:24:48 2011 by  doxygen 1.3.9.1