oagTimer::ElmoreWireModel Class Reference

#include <oagTimerElmoreWireModel.h>

Inheritance diagram for oagTimer::ElmoreWireModel:

Inheritance graph
[legend]
Collaboration diagram for oagTimer::ElmoreWireModel:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ElmoreWireModel ()
 ~ElmoreWireModel ()
double ElmoreWireModel::getWireCapEff (double netLoad, double netRes, DelayType Td, DelayType Tx)
double ElmoreWireModel::getWireRes (oaNet *net)
void setUnit (const char *time, const char *cap)
DelayType getWireCap (oaNet *net)
DelayType getWireDelay (oaNet *net)
DelayType getWireDelay (oaNet *net, _outputMap &outputPin, _inputMap &inputPin)

Public Attributes

oaNode * parentNode

Private Member Functions

bool isPinNode (oaNode *node)
double getInputPinCap (oaNode *n)
void storeTopPath (oaNode *currentNode, oaFloat _res, oaFloat _elm)
void storeInpPin (oaNode *currNode, oaFloat _res, oaFloat _elm)
void updateTopPathElmoreValue (oaFloat _currCap)
bool isTopPathNode (oaNode *node)
void clearCurrentPath ()
void clearPathCap ()
void clearAll ()
void findNext (nodeData &node, oaNode *previousNode)
void oaTraversePath (oaNode *parentNode, oaNode *previousNode)
oaTerm * getTerm (oaNode *n)
oaInstTerm * getInstTerm (oaNode *n)

Private Attributes

oaFloat _currPathRes
oaFloat _currNodeCap
oaFloat _currPathCap
oaFloat _retPathCap
oaFloat _currElmorePath
oaAnalysisPoint * _currentAP
vector< oaNode * > _currNodeVector
inputPinMap inputPinCap
_PathMap topPath
_PathMap luMap
_inputPinMap inputTerm
termMap _terms
instTermMap _instTerms
bool branch
bool pinBranch
double time_factor
double cap_factor

Constructor & Destructor Documentation

oagTimer::ElmoreWireModel::ElmoreWireModel  ) 
 

oagTimer::ElmoreWireModel::~ElmoreWireModel  ) 
 

Here is the call graph for this function:


Member Function Documentation

void oagTimer::ElmoreWireModel::clearAll  )  [private]
 

Here is the call graph for this function:

void oagTimer::ElmoreWireModel::clearCurrentPath  )  [private]
 

void oagTimer::ElmoreWireModel::clearPathCap  )  [private]
 

double oagTimer::ElmoreWireModel::ElmoreWireModel::getWireCapEff double  netLoad,
double  netRes,
DelayType  Td,
DelayType  Tx
 

Calculate and return effective capacitance

double oagTimer::ElmoreWireModel::ElmoreWireModel::getWireRes oaNet *  net  ) 
 

Get total resistor values in the wire network

void oagTimer::ElmoreWireModel::findNext nodeData node,
oaNode *  previousNode
[private]
 

Search for left and right groundedNode and store it in the structure

Parameters:
node struct that hold current node data
prevsNode pointer to previous node

Here is the call graph for this function:

double oagTimer::ElmoreWireModel::getInputPinCap oaNode *  n  )  [private]
 

Get the gate input capacitance for elmore delay calculations

Parameters:
n The node of the input pin
Returns:
the gate input pin capacitance

oaInstTerm * oagTimer::ElmoreWireModel::getInstTerm oaNode *  n  )  [private]
 

Return the corresponding input instTerm to the given node

Parameters:
n node of the input instTerm

oaTerm * oagTimer::ElmoreWireModel::getTerm oaNode *  n  )  [private]
 

Return the corresponding output term to the given node

Parameters:
n node of the output term

double oagTimer::ElmoreWireModel::getWireCap oaNet *  net  )  [virtual]
 

Todo:
We need more sophisticated methods here (i.e. caps depend on exact source and sink pins).

Implements oagTimer::WireModel.

Here is the call graph for this function:

DelayType oagTimer::ElmoreWireModel::getWireDelay oaNet *  net,
_outputMap outputPin,
_inputMap inputPin
 

Here is the call graph for this function:

DelayType oagTimer::ElmoreWireModel::getWireDelay oaNet *  net  )  [virtual]
 

Todo:
We need more sophisticated methods here (i.e. delays depend on exact source and sink pins).

Implements oagTimer::WireModel.

bool oagTimer::ElmoreWireModel::isPinNode oaNode *  node  )  [private]
 

bool oagTimer::ElmoreWireModel::isTopPathNode oaNode *  node  )  [private]
 

Check if it has reached all downstream nodes

void oagTimer::ElmoreWireModel::oaTraversePath oaNode *  parentNode,
oaNode *  previousNode
[private]
 

Recursive function that start from the input of a Term or output of an instTerm, tranverses the wire to get the parasitics(resistance and capacitance) value for elmore delay calculations, and end until all the wire terminals are reached (output of a Term or input of an instTerm)

Parameters:
parentNode pointer to current node
prevs pointer to previous node

Here is the call graph for this function:

void oagTimer::ElmoreWireModel::setUnit const char *  time,
const char *  cap
 

Set the unit factor for cap_unit and time unit according to the specification in the .lib library

Parameters:
time The time unit
cap The cap unit

void oagTimer::ElmoreWireModel::storeInpPin oaNode *  currNode,
oaFloat  _res,
oaFloat  _elm
[private]
 

Save the current input pin elmore value

Parameters:
currNode current input pin node
_res current path resistor
_elm current path elmore value

void oagTimer::ElmoreWireModel::storeTopPath oaNode *  currentNode,
oaFloat  _res,
oaFloat  _elm
[private]
 

If node branches or Input Pin follow down, save the current path values

Parameters:
_node current branching node
_res current path resistor
_elm current path elmore value

void oagTimer::ElmoreWireModel::updateTopPathElmoreValue oaFloat  _currCap  )  [private]
 

Update and sum Top Path existing elmore Delay Value

Parameters:
_currCap Current Path capacitor value to update the elmore value of the top path


Member Data Documentation

oaFloat oagTimer::ElmoreWireModel::_currElmorePath [private]
 

oaAnalysisPoint* oagTimer::ElmoreWireModel::_currentAP [private]
 

oaFloat oagTimer::ElmoreWireModel::_currNodeCap [private]
 

vector<oaNode*> oagTimer::ElmoreWireModel::_currNodeVector [private]
 

oaFloat oagTimer::ElmoreWireModel::_currPathCap [private]
 

oaFloat oagTimer::ElmoreWireModel::_currPathRes [private]
 

instTermMap oagTimer::ElmoreWireModel::_instTerms [private]
 

oaFloat oagTimer::ElmoreWireModel::_retPathCap [private]
 

termMap oagTimer::ElmoreWireModel::_terms [private]
 

bool oagTimer::ElmoreWireModel::branch [private]
 

double oagTimer::ElmoreWireModel::cap_factor [private]
 

inputPinMap oagTimer::ElmoreWireModel::inputPinCap [private]
 

_inputPinMap oagTimer::ElmoreWireModel::inputTerm [private]
 

_PathMap oagTimer::ElmoreWireModel::luMap [private]
 

oaNode* oagTimer::ElmoreWireModel::parentNode
 

bool oagTimer::ElmoreWireModel::pinBranch [private]
 

double oagTimer::ElmoreWireModel::time_factor [private]
 

_PathMap oagTimer::ElmoreWireModel::topPath [private]
 


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