oagTimer::Opt Class Reference

#include <oagTimerOpt.h>

Collaboration diagram for oagTimer::Opt:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 Opt (oaDesign *d, Timer *t)
 ~Opt ()
void run ()
void peepHoleOpt (int lvl, int i)
void doOneOPT ()

Private Member Functions

bool retry ()
bool isValidTiming (TimeType new_arr, TimeType new_slack, double curr_arr)
bool validComb (float val)
void initDesign ()
void querySensitivities ()
void markSwappedFanouts (instVector insts)
bool isAllVisited (vector< oaModInst * > insts)
bool isFanoutMarked (instVector insts)
bool scanPeepHoles (sensitivityData s)
void scanPeepHoles (oaModInst *)
void scanPeepHoles (oaModInst *root, instVector fo, int size)
bool setNewMaster (CellData *cell, oaString newMaster)
void doSizing ()
bool isVisited (oaModInst *inst)
bool doSwap (SizingData list)
bool doSwap (sensitivityData d)
void markVisited (vector< oaModInst * > f)
void genAllCombinations ()
bool genCombinations (vector< oaModInst * >::iterator &list_iter, SizingData &data_list)
void initDataStruct (SizingData &_data)
instVector Preprocess_Peepholes (oaModInst *root, instVector vec)
vector< combTimingDataPreprocessComb_Slack (vector< instVector > vec)
vector< combTimingDataPreprocessComb_Slew (vector< instVector > vec)
vector< combTimingDatarankFanoutWeight (vector< instVector > vec)
double getDownSizeDelaySensitivity (CellData *c)
double getUpSizeSensitivity (oaModInst *i)
double getDownSizeSensitivity (oaModInst *i)
void getUpSizeSensitivities (CellData *c)
double getDownSizeSensitivities (CellData *c)
double getInInstTermSlack (oaModInst *inst)
void clearContainers ()
void printVisitedCells ()
void printCombinations (SizingData _s)
void printAllFanouts (vector< InstsMap > vm)
void printKOptTable (oaModInst *h, vector< instVector > T)
void printRootNodeSorting (vector< instTimingData > data_vector, int type)
map< oaOccInstTerm *, double > getTimingInformation (vector< oaModInst * > insts)
void printTimingData (map< oaOccInstTerm *, double > list)
void printSensitivityList ()

Private Attributes

oaDesign * design
Timertiming
PeepHoleph
Util ut
int level
int currFanoutLevel
int currRankLevel
bool any_move_taken
bool currPHMoveTaken
Modes mode
vector< oaModInst * > currPH_list
int max_fo
int currNotTaken
instVector design_Insts
instVector takenSwapInstsChecklist
vector< instTimingDatadesign_Insts_type2
vector< rootDatamultiLevelRootInstances
vector< sensitivityDatasensitivity_sorted_Insts
vector< sensitivityDataupsized_sensitivity_Insts
vector< sensitivityDatadownsized_sensitivity_Insts
instVector PeepholeChecklist
int totalNumOfTrials
int numOfTrials
int numOfTaken
int totalNumOfTaken
int numOfZeroOPTMove
int numOfOneOPTMove
int numOfTwoOPTMove
map< oaModInst *, int > sizedRootNodeCount
int numOfOneTaken
int numOfTimingInfeasiblePH
int curr_counter
int numOfPeepholeTrials
int curr_ph_counter
int total_ph_counter
double numOfTakeninBucket
double numOfTrialinBucket
int numOfFanoutsTakenTwice
bool fo_taken
bool issueReturn
vector< int > takenFanoutCounter

Friends

class PeepHole

Constructor & Destructor Documentation

oagTimer::Opt::Opt oaDesign *  d,
Timer t
 

oagTimer::Opt::~Opt  ) 
 

Here is the call graph for this function:


Member Function Documentation

void oagTimer::Opt::clearContainers  )  [private]
 

void oagTimer::Opt::doOneOPT  ) 
 

Here is the call graph for this function:

void oagTimer::Opt::doSizing  )  [private]
 

This function try out various upsizes for root and downsizes for fanout cell succesively and select the first combination that decreases leakage power and is timing feasible none void

Here is the call graph for this function:

bool oagTimer::Opt::doSwap sensitivityData  d  )  [private]
 

bool oagTimer::Opt::doSwap SizingData  list  )  [private]
 

Here is the call graph for this function:

void oagTimer::Opt::genAllCombinations  )  [private]
 

Here is the call graph for this function:

bool oagTimer::Opt::genCombinations vector< oaModInst * >::iterator &  list_iter,
SizingData data_list
[private]
 

Here is the call graph for this function:

double oagTimer::Opt::getDownSizeDelaySensitivity CellData c  )  [private]
 

This function query the difference in delay for changing its master to the next avaiable downsize CellData: the cell instance to change it master double: the delay sensitivity of downsizing

Here is the call graph for this function:

double oagTimer::Opt::getDownSizeSensitivities CellData c  )  [private]
 

Here is the call graph for this function:

double oagTimer::Opt::getDownSizeSensitivity oaModInst *  i  )  [private]
 

double oagTimer::Opt::getInInstTermSlack oaModInst *  inst  )  [private]
 

Here is the call graph for this function:

map< oaOccInstTerm *, double > oagTimer::Opt::getTimingInformation vector< oaModInst * >  insts  )  [private]
 

Here is the call graph for this function:

void oagTimer::Opt::getUpSizeSensitivities CellData c  )  [private]
 

Here is the call graph for this function:

double oagTimer::Opt::getUpSizeSensitivity oaModInst *  i  )  [private]
 

void oagTimer::Opt::initDataStruct SizingData _data  )  [private]
 

void oagTimer::Opt::initDesign  )  [private]
 

bool oagTimer::Opt::isAllVisited vector< oaModInst * >  insts  )  [private]
 

bool oagTimer::Opt::isFanoutMarked instVector  insts  )  [private]
 

bool oagTimer::Opt::isValidTiming TimeType  new_arr,
TimeType  new_slack,
double  curr_arr
[private]
 

bool oagTimer::Opt::isVisited oaModInst *  inst  )  [private]
 

void oagTimer::Opt::markSwappedFanouts instVector  insts  )  [private]
 

void oagTimer::Opt::markVisited vector< oaModInst * >  f  )  [private]
 

void oagTimer::Opt::peepHoleOpt int  lvl,
int  i
 

Here is the call graph for this function:

instVector oagTimer::Opt::Preprocess_Peepholes oaModInst *  root,
instVector  vec
[private]
 

Prune peepholes that seems not feasible for sizing The processing occur after all possible enumeration of size n fanout are generated 1) Remove PH if root and all fanouts in the peephole are min size 2) Remove PH if all fanouts in the peephole does not contain other sizes 3) Remove PH if all fanouts in the peephole are critical vector of enumerated combinations vector of sorted enumeration

Here is the call graph for this function:

vector<combTimingData> oagTimer::Opt::PreprocessComb_Slack vector< instVector vec  )  [private]
 

Sort the fanout in decreasing order based on the min input slack value The processing occur after all possible enumeration of size n fanout are generated vector of enumerated combinations vector of sorted enumeration

vector<combTimingData> oagTimer::Opt::PreprocessComb_Slew vector< instVector vec  )  [private]
 

Sort the fanout in increasing order based on the max input slew value The processing occur after all possible enumeration of size n fanout are generated vector of enumerated combinations vector of sorted enumeration

void oagTimer::Opt::printAllFanouts vector< InstsMap vm  )  [private]
 

void oagTimer::Opt::printCombinations SizingData  _s  )  [private]
 

void oagTimer::Opt::printKOptTable oaModInst *  h,
vector< instVector T
[private]
 

void oagTimer::Opt::printRootNodeSorting vector< instTimingData data_vector,
int  type
[private]
 

void oagTimer::Opt::printSensitivityList  )  [private]
 

Here is the call graph for this function:

void oagTimer::Opt::printTimingData map< oaOccInstTerm *, double >  list  )  [private]
 

Here is the call graph for this function:

void oagTimer::Opt::printVisitedCells  )  [private]
 

void oagTimer::Opt::querySensitivities  )  [private]
 

Here is the call graph for this function:

vector<combTimingData> oagTimer::Opt::rankFanoutWeight vector< instVector vec  )  [private]
 

bool oagTimer::Opt::retry  )  [private]
 

void oagTimer::Opt::run  ) 
 

Here is the call graph for this function:

void oagTimer::Opt::scanPeepHoles oaModInst *  root,
instVector  fo,
int  size
[private]
 

Here is the call graph for this function:

void oagTimer::Opt::scanPeepHoles oaModInst *   )  [private]
 

Here is the call graph for this function:

bool oagTimer::Opt::scanPeepHoles sensitivityData  s  )  [private]
 

Here is the call graph for this function:

bool oagTimer::Opt::setNewMaster CellData cell,
oaString  newMaster
[private]
 

This function set the given new master of the given CellData inst and check if the new swapping is timing feasible CellData: cell instance to be swap oaString: new master lib cell name bool: wether the new master is timing feasible

Here is the call graph for this function:

bool oagTimer::Opt::validComb float  val  )  [private]
 

Here is the call graph for this function:


Friends And Related Function Documentation

friend class PeepHole [friend]
 


Member Data Documentation

bool oagTimer::Opt::any_move_taken [private]
 

int oagTimer::Opt::curr_counter [private]
 

int oagTimer::Opt::curr_ph_counter [private]
 

int oagTimer::Opt::currFanoutLevel [private]
 

int oagTimer::Opt::currNotTaken [private]
 

vector<oaModInst*> oagTimer::Opt::currPH_list [private]
 

bool oagTimer::Opt::currPHMoveTaken [private]
 

int oagTimer::Opt::currRankLevel [private]
 

oaDesign* oagTimer::Opt::design [private]
 

instVector oagTimer::Opt::design_Insts [private]
 

vector<instTimingData> oagTimer::Opt::design_Insts_type2 [private]
 

vector<sensitivityData> oagTimer::Opt::downsized_sensitivity_Insts [private]
 

bool oagTimer::Opt::fo_taken [private]
 

bool oagTimer::Opt::issueReturn [private]
 

int oagTimer::Opt::level [private]
 

int oagTimer::Opt::max_fo [private]
 

Modes oagTimer::Opt::mode [private]
 

vector<rootData> oagTimer::Opt::multiLevelRootInstances [private]
 

int oagTimer::Opt::numOfFanoutsTakenTwice [private]
 

int oagTimer::Opt::numOfOneOPTMove [private]
 

int oagTimer::Opt::numOfOneTaken [private]
 

int oagTimer::Opt::numOfPeepholeTrials [private]
 

int oagTimer::Opt::numOfTaken [private]
 

double oagTimer::Opt::numOfTakeninBucket [private]
 

int oagTimer::Opt::numOfTimingInfeasiblePH [private]
 

double oagTimer::Opt::numOfTrialinBucket [private]
 

int oagTimer::Opt::numOfTrials [private]
 

int oagTimer::Opt::numOfTwoOPTMove [private]
 

int oagTimer::Opt::numOfZeroOPTMove [private]
 

instVector oagTimer::Opt::PeepholeChecklist [private]
 

PeepHole* oagTimer::Opt::ph [private]
 

vector<sensitivityData> oagTimer::Opt::sensitivity_sorted_Insts [private]
 

map<oaModInst*,int> oagTimer::Opt::sizedRootNodeCount [private]
 

vector<int> oagTimer::Opt::takenFanoutCounter [private]
 

instVector oagTimer::Opt::takenSwapInstsChecklist [private]
 

Timer* oagTimer::Opt::timing [private]
 

int oagTimer::Opt::total_ph_counter [private]
 

int oagTimer::Opt::totalNumOfTaken [private]
 

int oagTimer::Opt::totalNumOfTrials [private]
 

vector<sensitivityData> oagTimer::Opt::upsized_sensitivity_Insts [private]
 

Util oagTimer::Opt::ut [private]
 


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