oagTimer::Util Class Reference

#include <oagTimerUtil.h>

Collaboration diagram for oagTimer::Util:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Util ()
 ~Util ()
void add (oaDesign *d, Timer *t)
double getCellArea (oaInst *inst)
oaString getCellName (oaModInst *i)
oaString getCellName (oaOccInst *i)
oaOccInstTerm * findOccInTerms (oaDesign *design, oaModScalarInst *m)
oaOccInstTerm * findOccOutTerm (oaDesign *design, oaModScalarInst *m)
oaModInstTerm * getOutInstTerm (oaModNet *net)
TimeType getIOArr (oaModInst *i, oaDesign *design, Timer *timing, io_Type io)
TimeType getIOArr (oaOccInst *i, oaDesign *design, Timer *timing, io_Type io)
DelayType getIOSlack (oaModInst *i, oaDesign *design, Timer *timing, io_Type io)
void updateFanIOTiming (oaDesign *design, Timer *t, oaModInst *m)
void invalidateFanIOTiming (oaDesign *design, Timer *t, oaModInst *m)
vector< oaModInst * > getOtherFanin (oaModInst *currFanin, oaModInst *currCell)
void getMatchCells (vector< oaString > &list, int sizes)
bool isGreaterThan (oaString current, oaString other)
bool isLessThan (oaString current, oaString other)
int swapCell (oaString cellName, oaModInst *currModInst)

Static Public Member Functions

void getCellFootprint (oaString cellName, oaString &footprint)
double getCellLeakagePower (oaModInst *modInst)
double getCellLeakagePower (oaOccInst *occInst)
double getCellLeakagePower (oaInst *inst)
double getCellLeakagePower (oaModule *m)
double getCellLeakagePower (const char *s)
double getCellLeakagePower (oaString cellName)
double getTotalLeakPower (const oaDesign *design)
double getPowerSensitivity (const char *curr, const char *other)
double getCellInputCap (oaOccInstTerm *i, oaString s, Timer *timer)
double getCellDelayEstimate (oaOccInstTerm *inpTerm, oaString otherSize, double load, Timer *timer)
DelayType getCellRiseDelay (oaOccInstTerm *inPin)
DelayType getCellFallDelay (oaOccInstTerm *inPin)
DelayType getCellDelay (oaOccInstTerm *inPin)
DelayType getDeltaDelay (oaDesign *design, Timer *timing, CellData *c, oaString newSize)
DelayType getDeltaDelay (oaOccObject *block, TPointMaster *otherTM, Timer *timer)
double getUpSizeDeltaDelay (oaDesign *design, Timer *timing, CellData *c)
DelayType getWorstInputSlack (Timer *t, oaOccInst *inst)
double getDownSizeDeltaDelay (oaDesign *design, Timer *timing, CellData *c)
bool hasValidArrTime (Timer *timer, CellData *cell)
double getMaxNetDelay (oaOccInstTerm *t)
oaString getInstName (oaModInst *i)
oaString getInstName (oaOccInst *i)
void parseLibCellName (oaString &name, oaString &basename, double &size)
void parseVtSTLibCellName (oaString name, oaString &basename, double &size)
void parseSTLibCellName (oaString name, oaString &basename, double &size)
void parseNangateLibCellName (oaString name, oaString &basename, double &size)
void parseFootprintLibCellName (oaString name, oaString &basename, double &size)
vector< instVectorgetCombinations (instVector insts, int k)
void genComb (instVector L, int k, vector< instVector > &T, instVector &C)
void Util::downSizeAll (oaDesign *design, Timer *timer)
void Util::changeToMinCellSize (oaDesign *design, Timer *timer)
void reportSlacks (oaDesign *design, Timer *timer)
void reportGates (oaDesign *design)
void reportTimingInfo (oaDesign *design, Timer *t)
void reportCellTiming (CellData *cell, Timer *t)
void reportAllCellTiming (oaDesign *design, Timer *t)
void reportTimingFlag (oaDesign *des)
void printAllNetData (oaDesign *design)
std::string getBlockName (oaOccObject *oPtr)
void linear_fit (double &a, double &b, double *x, double *y, int N)

Private Attributes

oaDesign * topDesign
Timertimer

Constructor & Destructor Documentation

oagTimer::Util::Util  ) 
 

oagTimer::Util::~Util  ) 
 


Member Function Documentation

void oagTimer::Util::add oaDesign *  d,
Timer t
[inline]
 

oaOccInstTerm * oagTimer::Util::findOccInTerms oaDesign *  design,
oaModScalarInst *  m
 

oaOccInstTerm * oagTimer::Util::findOccOutTerm oaDesign *  design,
oaModScalarInst *  m
 

void oagTimer::Util::genComb instVector  L,
int  k,
vector< instVector > &  T,
instVector C
[inline, static]
 

std::string oagTimer::Util::getBlockName oaOccObject *  oPtr  )  [static]
 

returns the name of block object FIXME should move out of the timer class

Parameters:
block either an oaTerm or an oaInstTerm

double oagTimer::Util::getCellArea oaInst *  inst  ) 
 

DelayType oagTimer::Util::getCellDelay oaOccInstTerm *  inPin  )  [static]
 

double oagTimer::Util::getCellDelayEstimate oaOccInstTerm *  inpTerm,
oaString  otherSize,
double  load,
Timer timer
[static]
 

This function estimate the cell delay for the given new size (otherSize) with respect to the given input arc (inpTerm) * The estimate is based on slew and load of current design configuration

Parameters:
oaOccInstTerm*: input arc for which delay is computed
oaString: the cell size to compute delay for
Timer: the timer object

Here is the call graph for this function:

DelayType oagTimer::Util::getCellFallDelay oaOccInstTerm *  inPin  )  [static]
 

void oagTimer::Util::getCellFootprint oaString  cellName,
oaString &  footprint
[static]
 

double oagTimer::Util::getCellInputCap oaOccInstTerm *  i,
oaString  s,
Timer timer
[static]
 

double oagTimer::Util::getCellLeakagePower oaString  cellName  )  [static]
 

double oagTimer::Util::getCellLeakagePower const char *  s  )  [static]
 

double oagTimer::Util::getCellLeakagePower oaModule *  m  )  [static]
 

double oagTimer::Util::getCellLeakagePower oaInst *  inst  )  [static]
 

double oagTimer::Util::getCellLeakagePower oaOccInst *  occInst  )  [static]
 

double oagTimer::Util::getCellLeakagePower oaModInst *  modInst  )  [static]
 

oaString oagTimer::Util::getCellName oaOccInst *  i  ) 
 

Here is the call graph for this function:

oaString oagTimer::Util::getCellName oaModInst *  i  ) 
 

DelayType oagTimer::Util::getCellRiseDelay oaOccInstTerm *  inPin  )  [static]
 

This function queries the worst (R/F) delay (from input to output) with respect to the given input pin. t: the current timer object inPin: the input from delay propagates cell delay

vector<instVector> oagTimer::Util::getCombinations instVector  insts,
int  k
[inline, static]
 

double oagTimer::Util::getDeltaDelay oaOccObject *  block,
TPointMaster otherTM,
Timer timer
[static]
 

This function queries the difference in delay between the current OccObject and the same OccObject with the other TPointMaster *otherTM. OccObject: current cell block TPointMaster: timing point master for the other lib cell Timer: current timer object Arrival Time Sensitivity (newAT - currAT)

Here is the call graph for this function:

DelayType oagTimer::Util::getDeltaDelay oaDesign *  design,
Timer timing,
CellData c,
oaString  newSize
[static]
 

This function queries the difference in arrival time between the current CellData and the same CellData with the new library size. oaDesign*: current top design Timer: current timer object CellData*: current cell data object to query deltaAT oaString: the new lib size to query AT for on the given CellData object Arrival Time Sensitivity (newAT - currAT)

double oagTimer::Util::getDownSizeDeltaDelay oaDesign *  design,
Timer timing,
CellData c
[static]
 

This function queries the change in delay if the next smaller cell size was used while keeping current input slew and output load cap oaDesign: the current top design hierarchy CellData: the cell to query its delta delay double: delta delay (DownSized Delay - Current Delay) *DBL_MAX is returned if no next size found

Here is the call graph for this function:

oaString oagTimer::Util::getInstName oaOccInst *  i  )  [inline, static]
 

oaString oagTimer::Util::getInstName oaModInst *  i  )  [inline, static]
 

TimeType oagTimer::Util::getIOArr oaOccInst *  i,
oaDesign *  design,
Timer timing,
io_Type  io
 

Here is the call graph for this function:

TimeType oagTimer::Util::getIOArr oaModInst *  i,
oaDesign *  design,
Timer timing,
io_Type  io
 

Here is the call graph for this function:

DelayType oagTimer::Util::getIOSlack oaModInst *  i,
oaDesign *  design,
Timer timing,
io_Type  io
 

Here is the call graph for this function:

void oagTimer::Util::getMatchCells vector< oaString > &  list,
int  sizes
 

double oagTimer::Util::getMaxNetDelay oaOccInstTerm *  t  )  [static]
 

This function query for the max net delay in the fanout of the given output pin

Parameters:
oaOccInstTerm*: output pin

vector< oaModInst * > oagTimer::Util::getOtherFanin oaModInst *  currFanin,
oaModInst *  currCell
 

oaModInstTerm * oagTimer::Util::getOutInstTerm oaModNet *  net  ) 
 

double oagTimer::Util::getPowerSensitivity const char *  curr,
const char *  other
[static]
 

double oagTimer::Util::getTotalLeakPower const oaDesign *  design  )  [static]
 

double oagTimer::Util::getUpSizeDeltaDelay oaDesign *  design,
Timer timing,
CellData c
[static]
 

This function queries the change in delay if the next larger cell size was used while keeping current input slew and output load cap oaDesign: the current top design hierarchy CellData: the cell to query its delta delay double: delta delay (UpSized Delay - Current Delay) *DBL_MAX is returned if no next size found

Here is the call graph for this function:

DelayType oagTimer::Util::getWorstInputSlack Timer t,
oaOccInst *  inst
[static]
 

This function queries the worst slack at the input pins of the given instance t: the current timer object inst: the current occ instance object worst slack of all inputs

Here is the call graph for this function:

bool oagTimer::Util::hasValidArrTime Timer timer,
CellData cell
[static]
 

This function perform slack time check two level fanout(s) downstream of the current instance and two level fanin(s) upstream

Here is the call graph for this function:

void oagTimer::Util::invalidateFanIOTiming oaDesign *  design,
Timer t,
oaModInst *  m
 

Here is the call graph for this function:

bool oagTimer::Util::isGreaterThan oaString  current,
oaString  other
 

bool oagTimer::Util::isLessThan oaString  current,
oaString  other
 

void oagTimer::Util::linear_fit double &  a,
double &  b,
double *  x,
double *  y,
int  N
[static]
 

A linear fitting routine by John Lee (y=ax+b) double: a is the coefficient double: b is y-intercept double*: x is the independent variable double*: y is the dependent variable int: N is the number of data points

void oagTimer::Util::parseFootprintLibCellName oaString  name,
oaString &  basename,
double &  size
[inline, static]
 

void oagTimer::Util::parseLibCellName oaString &  name,
oaString &  basename,
double &  size
[inline, static]
 

void oagTimer::Util::parseNangateLibCellName oaString  name,
oaString &  basename,
double &  size
[inline, static]
 

void oagTimer::Util::parseSTLibCellName oaString  name,
oaString &  basename,
double &  size
[inline, static]
 

void oagTimer::Util::parseVtSTLibCellName oaString  name,
oaString &  basename,
double &  size
[inline, static]
 

void oagTimer::Util::printAllNetData oaDesign *  design  )  [static]
 

Debug statement that print all net information Net load for PI and Output arc of cell Net Delay for PO and Input arc of cell

Parameters:
oaDesign*: the top design object

void oagTimer::Util::reportAllCellTiming oaDesign *  design,
Timer t
[static]
 

Here is the call graph for this function:

void oagTimer::Util::reportCellTiming CellData cell,
Timer t
[static]
 

Here is the call graph for this function:

void oagTimer::Util::reportGates oaDesign *  design  )  [static]
 

Here is the call graph for this function:

void oagTimer::Util::reportSlacks oaDesign *  design,
Timer timer
[static]
 

Here is the call graph for this function:

void oagTimer::Util::reportTimingFlag oaDesign *  des  )  [static]
 

void oagTimer::Util::reportTimingInfo oaDesign *  design,
Timer t
[static]
 

Here is the call graph for this function:

int oagTimer::Util::swapCell oaString  cellName,
oaModInst *  currModInst
 

void oagTimer::Util::updateFanIOTiming oaDesign *  design,
Timer t,
oaModInst *  m
 

Here is the call graph for this function:

void oagTimer::Util::Util::changeToMinCellSize oaDesign *  design,
Timer timer
[static]
 

void oagTimer::Util::Util::downSizeAll oaDesign *  design,
Timer timer
[static]
 


Member Data Documentation

Timer* oagTimer::Util::timer [private]
 

oaDesign* oagTimer::Util::topDesign [private]
 


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