oagTimer::Timer Class Reference

The Timer class has all APIs for the user to use this timer package. More...

#include <oagTimerTimer.h>

Collaboration diagram for oagTimer::Timer:

Collaboration graph
[legend]
List of all members.

Public Member Functions

DelayType getWorstSlack ()
DelayType getWorstArr ()
double getSetupTime (oaOccInstTerm *iTerm)
bool isValidTiming ()
double getPeriod ()
void updateAll ()
void clearDesignTimingData ()
void printCell (oaOccInst *i)
void printDetailTiming ()
void printAll ()
void printAllPO ()
void checkRatFlags ()
Constructors and Destructors
 Timer ()
 Constructor.
 ~Timer ()
 Destructor.
Initialization Functions
void readLibrary (const char *filename, const char *libertyLibname=0, const char *libertyViewname=0)
void add (oaDesign *design)
void debug_TimingFlag (oaDesign *design)
void remove (oaDesign *design)
void readConstraints (const char *filename, oaDesign *design)
void setWireModel (WireModel *model)
void setWireModel (ElmoreWireModel *model)
void setSlewDegr ()
TimeType setWorstArr (oaDesign *design)
 Set the worst arrival time of this design.
Query Functions
DelayType getFullSlack (oaOccObject *oPtr)
DelayType getSlack (oaOccObject *oPtr)
TimeType getArr (oaOccObject *oPtr)
TimeType getReq (oaOccObject *oPtr)
TimeType getFallArr (oaOccObject *oPtr)
TimeType getRiseArr (oaOccObject *oPtr)
TimeType getFallReq (oaOccObject *oPtr)
TimeType getRiseReq (oaOccObject *oPtr)
DelayType getSlew (oaOccObject *oPtr)
DelayType getFallSlew (oaOccObject *oPtr)
DelayType getRiseSlew (oaOccObject *oPtr)
Timing analyisis on nets
DelayType getNetSlack (const oaOccNet *net)
Path query functions
void findWorstPath (nodesSlopeDir &path)
void fromPath (nodesSlopeDir &path, oaOccObject *block)
void toPath (nodesSlopeDir &path, oaOccObject *block)
void throughPath (nodesSlopeDir &path, oaOccObject *block)

Static Public Member Functions

void invalidateFanout (oaOccNet *net)
void invalidateFanin (oaOccNet *net)
oaOccObject * findOccObj (oaOccurrence *occ, std::string name)
oaOccInstTerm * getOccFromMod (oaOccInst *inst, oaModTerm *term)

Public Attributes

bool optIncrTimer

Private Member Functions

void fromPath (nodesSlopeDir &path, oaOccObject *block, bool isStartingClock)
void toPath (nodesSlopeDir &path, oaOccObject *block, bool isEndingClock)
void compareSlack (oaOccObject *block, bool currentRise, TPoint *tp, bool &isRise, DelayType &worstSlack, oaOccObject *&blockWithWorstSlack)
Incremental timing analyisis
Incrementally update the arrival time, required arrival time; do fan in and fan out cones propagation

void updateArr (oaOccObject *block)
void updateClockArr (oaOccObject *block)
oaOccNet * getOccNet (oaOccObject *block)
void updateNetPathReq (TPoint *p, TPoint *tp)
void initReq (oaOccObject *block)
void initPOReq (oaOccObject *block)
void initPIArr (oaOccObject *block)
void initClockPIArr (oaOccObject *block)
void updateNetLoadDelay (oaOccObject *block)
void updateNetArr (oaOccObject *block)
void updateClockNetArr (oaOccObject *block)
void updateCellArr (oaOccObject *block)
void updateClockCellArr (oaOccObject *block)
void updateNetReq (oaOccObject *block)
void updateCellReq (oaOccObject *block)
void takeWorstSlew (oaOccObject *block)
int getClockIndex (oaOccObject *block)
void setMultiCyclePaths (oaOccObject *block)
bool timingDataCompare (std::vector< timingData * > &v1, std::vector< timingData * > &v2)
void timingDataCopy (std::vector< timingData * > &v1, std::vector< timingData * > &v2)
void slewDataCopy (TPoint *p)
void insertTimingData (std::vector< timingData * > &timingDataVector, timingData *d)
int findTimingData (TPoint *p, int clockIndex)
void updateNetPathArr (TPoint *p, TPoint *tp)
void updateClockNetPathArr (TPoint *p, TPoint *tp)
void setMultiCycleConstraint (oaOccObject *block)
DelayType greatestCommonDivider (DelayType d1, DelayType d2)
std::string getBlockName (oaOccObject *block)
void setSlewTimingValidOpt (TPoint *p)
void clearVector (std::vector< timingData * > &v)
void initVector (std::vector< timingData * > &v)
void updateCellPathReq (TPointMaster::pathVector::iterator i, TPoint *p, oaOccInstTerm *other)
void updateCellPathArr (TPointMaster *tm, TPoint *p, TPointMaster::pathVector::iterator i, TPoint *tp)
bool updateClockCellPathArr (TPointMaster *tm, TPoint *p, TPointMaster::pathVector::iterator i, TPoint *tp)
void updateReq (oaOccObject *block)
void updateAllArr ()
void updateAllReq ()

Static Private Member Functions

void invalidateAllFanin (oaOccInst *inst)

Private Attributes

std::set< oaOccObject * > clockPins
TermObserver_termCB
InstTermObserver_instTermCB
oaScalarName stdLib
WireModel_wireModel
ElmoreWireModel_elmoreWireModel
bool elmoreAnalysis
std::set< oaDesign * > _watchedDesigns
bool slewDegr
TimeType worstArr
oaDesign * dsgn

Friends

class CellData
class DesignTool
class Opt
class TPoint
class Report
class TimerUnitTest
class Sensitivity
class DuetSensitivity
class Util
class TimerUtil
class KickMove
class SubTimer
class PowerSenseOpt

Detailed Description

The Timer class has all APIs for the user to use this timer package.

The Timer class provides the standardized APIs for the user to use this timer package, including .lib .sdc files parsers, create and destroy the timing points, full and incremental timing analyisis functions.


Constructor & Destructor Documentation

oagTimer::Timer::Timer  ) 
 

Constructor.

oagTimer::Timer::~Timer  ) 
 

Destructor.

Here is the call graph for this function:


Member Function Documentation

void oagTimer::Timer::add oaDesign *  design  ) 
 

Adds a design to the Timer. Designs must be registered to the Timer using this function before any timing operations can be done.

Parameters:
design Design to add.

Here is the call graph for this function:

void oagTimer::Timer::checkRatFlags  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::clearDesignTimingData  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::clearVector std::vector< timingData * > &  v  )  [private]
 

Clears a timing data vector.

Parameters:
v timing data vector

Here is the call graph for this function:

void oagTimer::Timer::compareSlack oaOccObject *  block,
bool  currentRise,
TPoint tp,
bool &  isRise,
DelayType worstSlack,
oaOccObject *&  blockWithWorstSlack
[private]
 

This function compares the worst slack with the slack of the current oaTerm or oaInstTerm. If the current slack is worse, update.

Parameters:
block the current oaTerm or oaInstTerm
currentRise it's the rising or the falling slack
tp the timing point of the current oaTerm or oaInstTerm
isRise the worst slack is risign or falling
worstSlack the worst slack
blockWithWorstSlack the oaTerm or oaInstTerm with the worst slack

Here is the call graph for this function:

void oagTimer::Timer::debug_TimingFlag oaDesign *  design  ) 
 

oaOccObject * oagTimer::Timer::findOccObj oaOccurrence *  occ,
std::string  name
[static]
 

Finds the oaOccObject by it's name. FIXME should move this out of Timer class

Parameters:
block pointer to the oaOccObject
the name of the oaOccObject

int oagTimer::Timer::findTimingData TPoint p,
int  clockIndex
[private]
 

Return the index to the timing data (by it's clock index) in the timing data vector of an TPoint.

Parameters:
p pointer to the TPoint
clockIndex the index of the clock

void oagTimer::Timer::findWorstPath nodesSlopeDir path  ) 
 

This function finds the worst path of the current cell view.

Parameters:
path the worst path of the current design

Here is the call graph for this function:

void oagTimer::Timer::fromPath nodesSlopeDir path,
oaOccObject *  block,
bool  isStartingClock
[private]
 

This function finds the worst path from the current oaTerm or oaInstTerm, and stores it into the vector path.

Parameters:
path the worst path of the current design
block the current oaTerm or oaInstTerm
isStartingClock whether it's the starting clock pin or not

Here is the call graph for this function:

void oagTimer::Timer::fromPath nodesSlopeDir path,
oaOccObject *  block
 

This function finds the worst path from an oaTerm or an oaInstTerm.

Parameters:
path the worst path from the oaTerm or oaInstTerm
block the starting oaTerm or oaInstTerm

Here is the call graph for this function:

TimeType oagTimer::Timer::getArr oaOccObject *  oPtr  ) 
 

Returns the arrival time of an OccTerm/OccInstTerm. This function uses incremental timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Arrival time for the queried object.

Here is the call graph for this function:

std::string oagTimer::Timer::getBlockName oaOccObject *  oPtr  )  [private]
 

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

Parameters:
block either an oaTerm or an oaInstTerm

int oagTimer::Timer::getClockIndex oaOccObject *  block  )  [private]
 

returns the clock index of a block object.

Parameters:
block the pointer to the block object

TimeType oagTimer::Timer::getFallArr oaOccObject *  oPtr  ) 
 

Returns the fall arrival time of an OccTerm/OccInstTerm. This function uses incremental timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Fall arrival time for the queried object.

Here is the call graph for this function:

TimeType oagTimer::Timer::getFallReq oaOccObject *  oPtr  ) 
 

Returns the fall required arrival time of a OccTerm/OccInstTerm. This function updates the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Fall required arrival time for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getFallSlew oaOccObject *  oPtr  ) 
 

Returns the fall transition time of an OccTerm/OccInstTerm. This function does not perform timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Fall transition time for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getFullSlack oaOccObject *  oPtr  ) 
 

Returns the slack of an OccTerm/OccInstTerm. This function run full timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Slack for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getNetSlack const oaOccNet *  net  ) 
 

This function returns the slack of a certain net. This function should be used in incremental timing analysis, the function first checks if the current data is valid, if yes, returns the value, if not, it updates the timing information and then returns the value.

Parameters:
net the net we want to know its slack value

Here is the call graph for this function:

oaOccInstTerm * oagTimer::Timer::getOccFromMod oaOccInst *  inst,
oaModTerm *  term
[static]
 

oaOccNet * oagTimer::Timer::getOccNet oaOccObject *  block  )  [private]
 

Returns the net of a block object FIXME should move out of Timer class???

Parameters:
block the pointer to the block object

Here is the call graph for this function:

double oagTimer::Timer::getPeriod  ) 
 

Get the period define in the timing constraint file (sdc)

TimeType oagTimer::Timer::getReq oaOccObject *  oPtr  ) 
 

Returns the required arrival time of an OccTerm/OccInstTerm. This function uses incremental timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Rquired arrival time for the queried object.

Here is the call graph for this function:

TimeType oagTimer::Timer::getRiseArr oaOccObject *  oPtr  ) 
 

Returns the rise arrival time of an OccTerm/OccInstTerm. This function uses incremental timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Rise arrival time for the queried object.

Here is the call graph for this function:

TimeType oagTimer::Timer::getRiseReq oaOccObject *  oPtr  ) 
 

Returns the rise required arrival time of a OccTerm/OccInstTerm. This function updates the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Rise required arrival time for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getRiseSlew oaOccObject *  oPtr  ) 
 

Returns the rise transition time of an OccTerm/OccInstTerm. This function does not perform timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Rise transition time for the queried object.

Here is the call graph for this function:

double oagTimer::Timer::getSetupTime oaOccInstTerm *  iTerm  ) 
 

DelayType oagTimer::Timer::getSlack oaOccObject *  oPtr  ) 
 

Returns the slack of an OccTerm/OccInstTerm. This function uses incremental timing analysis to update the value if it is not valid.

Parameters:
oPtr OccTerm/OccInstTerm to query.
Returns:
Slack for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getSlew oaOccObject *  oPtr  ) 
 

Returns the transition time of an OccInstTerm. This function does not perform timing analysis to update the value if it is not valid.

Parameters:
oPtr OccInstTerm to query.
Returns:
tranistion time for the queried object.

Here is the call graph for this function:

DelayType oagTimer::Timer::getWorstArr  ) 
 

This function returns the worst arrival value. This function should be used in incremental timing analysis, the function first checks if the current data is valid, if yes, returns the value, if not, it updates the timing information and then returns the value.

Here is the call graph for this function:

DelayType oagTimer::Timer::getWorstSlack  ) 
 

This function returns the worst slack value. This function should be used in incremental timing analysis, the function first checks if the current data is valid, if yes, returns the value, if not, it updates the timing information and then returns the value.

Here is the call graph for this function:

DelayType oagTimer::Timer::greatestCommonDivider DelayType  d1,
DelayType  d2
[private]
 

Returns the greatest common divider of two numbers FIXME should move out of Timer class

Parameters:
d1 first number
d2 second number

void oagTimer::Timer::initClockPIArr oaOccObject *  block  )  [private]
 

This function initializes arrival times for a primary input (in the fanin cone of a clock pin).

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::initPIArr oaOccObject *  block  )  [private]
 

This function initializes arrival times for a block object which is a primary inputs or a clock pin. It also considers possible external delay and driver.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::initPOReq oaOccObject *  block  )  [private]
 

Initializes the required times of a block object based on the clock periods and also considers the external delays.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::initReq oaOccObject *  block  )  [private]
 

Initializes the required times of a block object.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::initVector std::vector< timingData * > &  v  )  [private]
 

Initializes a timing data vector for update arrival time.

Parameters:
v timing data vector

void oagTimer::Timer::insertTimingData std::vector< timingData * > &  timingDataVector,
timingData d
[private]
 

Insert a timing data in timing data vector. Insertion is done so the timing data vector is sorted in increasing order of the clock index of the timing data.

Parameters:
timingDataVector the timing data vector
d the pointer to the timing data

void oagTimer::Timer::invalidateAllFanin oaOccInst *  inst  )  [static, private]
 

This function marks all the points in the fanin cone to be required time invalid for each input term.

Parameters:
inst the instance to start propagation for each of it input

Here is the call graph for this function:

void oagTimer::Timer::invalidateFanin oaOccNet *  net  )  [static]
 

This function marks all the points in the fanin cone to be required time invalid.

Parameters:
net the net to start propagation

Here is the call graph for this function:

void oagTimer::Timer::invalidateFanout oaOccNet *  net  )  [static]
 

This function marks all the points in the fanout cone to be arrival time invalid.

Parameters:
net the net to start propagation

Here is the call graph for this function:

bool oagTimer::Timer::isValidTiming  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::printAll  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::printAllPO  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::printCell oaOccInst *  i  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::printDetailTiming  ) 
 

Here is the call graph for this function:

void oagTimer::Timer::readConstraints const char *  filename,
oaDesign *  design
 

Read an SDC file and annotate the given design with the timing constraints from that file.

Parameters:
filename The SDC contraint filename.
design The design to annotate.

Here is the call graph for this function:

void oagTimer::Timer::readLibrary const char *  filename,
const char *  libertyLibname = 0,
const char *  libertyViewname = 0
 

Read in the timing library file.

Parameters:
filename The timing library filename.
libertyLibname The name of the lib containing the standard library cells to annotate with the timing data from the specified timing library file. If NULL, use the name specified withinn the library file itself.
libertyViewname The name for the view to be annotated with the timing data. If NULL, use the default viewname "abstract".

Here is the call graph for this function:

void oagTimer::Timer::remove oaDesign *  design  ) 
 

Removes a design from the Timer. Designs must be unregistered from the Timer using this function before they are purged.

Parameters:
design Design to remove.

void oagTimer::Timer::setMultiCycleConstraint oaOccObject *  block  )  [private]
 

Sets a block object as a multi-cycle constraint point if it is in the list of multi-cycle constraints parsed from the sdc file.

Parameters:
block pointer to the oaOccObject

Here is the call graph for this function:

void oagTimer::Timer::setMultiCyclePaths oaOccObject *  block  )  [private]
 

updating the timing data of a block object that is a multi-cycle constraint.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::setSlewDegr  )  [inline]
 

Set Slew degradation computation to on

void oagTimer::Timer::setSlewTimingValidOpt TPoint p  )  [private]
 

Compare old and new slews for the fanout cone if slew differ by less than certain percentage, then a flag is set at the output cone to enabled to speedup incremental timing propagation

Parameters:
fanout cone

void oagTimer::Timer::setWireModel ElmoreWireModel model  )  [inline]
 

Set Elmore Wire Model

Parameters:
model The Elmore wire model to use

void oagTimer::Timer::setWireModel WireModel model  )  [inline]
 

Set the wire model.

Parameters:
model The WireModel to use.

TimeType oagTimer::Timer::setWorstArr oaDesign *  design  ) 
 

Set the worst arrival time of this design.

Here is the call graph for this function:

void oagTimer::Timer::slewDataCopy TPoint p  )  [private]
 

Copies the slews of a timing data vector to another one.

Parameters:
v1 first timing data vector
v2 second timing data vector

void oagTimer::Timer::takeWorstSlew oaOccObject *  block  )  [private]
 

Assigning the worst slew of all rows of the multiClockData vector to all rows of the vector.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::throughPath nodesSlopeDir path,
oaOccObject *  block
 

This function finds the critical path through an oaTerm or an oaInstTerm.

Parameters:
path the worst path through that oaTerm or oaInstTerm
block the oaTerm or oaInstTerm

Here is the call graph for this function:

bool oagTimer::Timer::timingDataCompare std::vector< timingData * > &  v1,
std::vector< timingData * > &  v2
[private]
 

Compares the slews of two timing data vectors. Returns false if they match.

Parameters:
first timing data vector
second timing data vector

void oagTimer::Timer::timingDataCopy std::vector< timingData * > &  v1,
std::vector< timingData * > &  v2
[private]
 

Copies the slews of a timing data vector to another one.

Parameters:
v1 first timing data vector
v2 second timing data vector

Here is the call graph for this function:

void oagTimer::Timer::toPath nodesSlopeDir path,
oaOccObject *  block,
bool  isEndingClock
[private]
 

This function finds the worst path to the current oaTerm or oaInstTerm, and stores it into the vector path.

Parameters:
path the worst path to the oaTerm or oaInstTerm
block the current oaTerm or oaInstTerm
isEndingClock whether it's the ending clock pin or not

Here is the call graph for this function:

void oagTimer::Timer::toPath nodesSlopeDir path,
oaOccObject *  block
 

This function finds the critical path to an oaTerm or an oaInstTerm.

Parameters:
path the worst path to the oaTerm or oaInstTerm
block the ending oaTerm or oaInstTerm

Here is the call graph for this function:

void oagTimer::Timer::updateAll  )  [inline]
 

void oagTimer::Timer::updateAllArr  )  [private]
 

This function updates all arrival time in the current cell view.

Here is the call graph for this function:

void oagTimer::Timer::updateAllReq  )  [private]
 

This function updates all required arrival time in the current cell view.

Here is the call graph for this function:

void oagTimer::Timer::updateArr oaOccObject *  block  )  [private]
 

This function updates the arrival time for a block object recursively. This function should be used in incremental timing analysis, the function first checks if the current data is valid, if not, it updates the timing information by recursively compute the timing information.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateCellArr oaOccObject *  block  )  [private]
 

This function updates the arrival time for a block object which is an instTerm which is the output or clock port of a cell based on arrival times of other instTerms which are inputs or clock ports of the cell.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateCellPathArr TPointMaster tm,
TPoint p,
TPointMaster::pathVector::iterator  i,
TPoint tp
[private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateCellPathReq TPointMaster::pathVector::iterator  i,
TPoint p,
oaOccInstTerm *  other
[private]
 

This function updates the required time for an instTerm which is the input of a path based on required times of the other instTerm which is the output of the path.

Parameters:
i path iterator
p pointer to the TPoint of the input of the path
other pointer to the other instTerm

Here is the call graph for this function:

void oagTimer::Timer::updateCellReq oaOccObject *  block  )  [private]
 

This function updates the required time for a block object which is an instTerm which is the input or clock port of a cell based on required times of other instTerms which are outputs or clock ports of the cell.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateClockArr oaOccObject *  block  )  [private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateClockCellArr oaOccObject *  block  )  [private]
 

This function updates the arrival time for an instTerm which is the output or clock port of a cell (in the fanin cone of a clock pin) based on arrival times of other instTerms which are inputs or clock ports of the cell.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

bool oagTimer::Timer::updateClockCellPathArr TPointMaster tm,
TPoint p,
TPointMaster::pathVector::iterator  i,
TPoint tp
[private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateClockNetArr oaOccObject *  block  )  [private]
 

This function updates the arrival time for a primary output or an instTerm which is the input of a cell (in the fanin cone of a clock pin) based on arrival times of other instTerms or Terms on its net

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateClockNetPathArr TPoint p,
TPoint tp
[private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateNetArr oaOccObject *  block  )  [private]
 

This function updates the arrival time for a block object which is a primary output or an instTerm which is the input of a cell based on arrival times of other instTerms or Terms on its net.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateNetLoadDelay oaOccObject *  block  )  [private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateNetPathArr TPoint p,
TPoint tp
[private]
 

Here is the call graph for this function:

void oagTimer::Timer::updateNetPathReq TPoint p,
TPoint tp
[private]
 

Updating the required time of the driver node of a net based on the required time of another node on the net.

Parameters:
p pointer to the timer point of the driver of the net
tp pointer to the timer point of the other node

Here is the call graph for this function:

void oagTimer::Timer::updateNetReq oaOccObject *  block  )  [private]
 

This function updates the required time for a block object which is a primary input or an instTerm which is the output of a cell based on required times of other instTerms or Terms on its net.

Parameters:
block the pointer to the block object

Here is the call graph for this function:

void oagTimer::Timer::updateReq oaOccObject *  block  )  [private]
 

This function updates the required arrival time recursively. This function should be used in incremental timing analysis, the function first checks if the current data is valid, if not, it updates the timing information by recursively compute the timing information.

Parameters:
block either an oaTerm or an oaInstTerm

Here is the call graph for this function:


Friends And Related Function Documentation

friend class CellData [friend]
 

friend class DesignTool [friend]
 

friend class DuetSensitivity [friend]
 

friend class KickMove [friend]
 

friend class Opt [friend]
 

friend class PowerSenseOpt [friend]
 

friend class Report [friend]
 

friend class Sensitivity [friend]
 

friend class SubTimer [friend]
 

friend class TimerUnitTest [friend]
 

friend class TimerUtil [friend]
 

friend class TPoint [friend]
 

friend class Util [friend]
 


Member Data Documentation

ElmoreWireModel* oagTimer::Timer::_elmoreWireModel [private]
 

InstTermObserver* oagTimer::Timer::_instTermCB [private]
 

an callback pointer for oaInstTerm

TermObserver* oagTimer::Timer::_termCB [private]
 

an callback pointer for oaTerm

std::set<oaDesign *> oagTimer::Timer::_watchedDesigns [private]
 

WireModel* oagTimer::Timer::_wireModel [private]
 

std::set<oaOccObject *> oagTimer::Timer::clockPins [private]
 

the vector of all clocks

oaDesign* oagTimer::Timer::dsgn [private]
 

bool oagTimer::Timer::elmoreAnalysis [private]
 

bool oagTimer::Timer::optIncrTimer
 

bool oagTimer::Timer::slewDegr [private]
 

oaScalarName oagTimer::Timer::stdLib [private]
 

the standard cell library name

TimeType oagTimer::Timer::worstArr [private]
 


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