AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
PlacementTimingOptimizer Class Reference

#include <PlacementTimingOptimizer.h>

Collaboration diagram for PlacementTimingOptimizer:

Public Member Functions

 PlacementTimingOptimizer (PlacementInfo *placementInfo, std::map< std::string, std::string > &JSONCfg)
 
 ~PlacementTimingOptimizer ()
 
void propogateArrivalTime ()
 
std::vector< int > findCriticalPath ()
 
std::vector< std::vector< int > > findCriticalPaths (float criticalRatio, bool checkOverlap=true, int pathNumThr=1000, int converThr=30)
 
std::vector< std::vector< int > > findCriticalPaths (float criticalRatio, std::vector< bool > &FFDirectlyDrivenButNotInOneSlot)
 
float getWorstSlackOfCell (DesignInfo::DesignCell *srcCell)
 
float conductStaticTimingAnalysis (bool enforeOptimisticTiming=false)
 
void incrementalStaticTimingAnalysis_forPUWithLocation (PlacementInfo::PlacementUnit *curPU, float targetX, float targetY)
 
void setPinsLocation ()
 
void clusterLongPathInOneClockRegion (int pathLenThr, float clusterThrRatio)
 
void dumpClockRegionClusters ()
 
void stretchClockRegionColumns ()
 
void initPois ()
 
float getPois (int v)
 
float getEffectFactor ()
 
void setEffectFactor (float _effectFactor)
 
float getDelayByModel (PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::TimingNode *node1, PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::TimingNode *node2, float X1, float Y1, float X2, float Y2)
 
float getDelayByModel (float X1, float Y1, float X2, float Y2)
 
float getDelayByModel_conservative (float X1, float Y1, float X2, float Y2)
 
void pauseCounter ()
 
float getSlackThr ()
 
std::map< PlacementInfo::PlacementNet *, int > & getNetActualSlackPinNum ()
 
std::vector< float > & getPUId2Slack (bool update=false)
 
std::vector< PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::TimingNode * > & getSortedTimingNodes ()
 

Public Attributes

const float timingC0 [10] = {95.05263521, -26.50563359, 77.42394117, 106.29195883, -14.975527}
 
const float timingC1 [10] = {123.05017047, -169.25614191, -117.28028144, 208.53573639, 174.2573465}
 
const float timingC2 [10] = {234.7694101, -433.99467294, -64.96319998, 373.78606257, 139.45226658}
 

Private Member Functions

float getDis (float x1, float y1, float x2, float y2)
 

Private Attributes

PlacementInfoplacementInfo = nullptr
 
PlacementTimingInfotimingInfo = nullptr
 
DesignInfodesignInfo
 
DeviceInfodeviceInfo
 
std::map< std::string, std::string > & JSONCfg
 
bool verbose = false
 
float y2xRatio = 1
 
bool DSPCritical = false
 
float xDelayUnit = 0.13
 
float yDelayUnit = 0.10
 
int poisN = 1000
 
float lambdaPois = 100
 
int STA_Cnt = 0
 
float effectFactor = 0
 
bool clockRegionClusterTooLarge = false
 
std::vector< float > pois
 
std::vector< std::vector< int > > clockRegionclusters
 
std::map< PlacementInfo::PlacementNet *, int > netActualSlackPinNum
 
std::vector< float > PUId2Slack
 
bool increaseLowDelayVal = false
 
bool enableCounter = true
 

Detailed Description

Definition at line 45 of file PlacementTimingOptimizer.h.

Constructor & Destructor Documentation

◆ PlacementTimingOptimizer()

PlacementTimingOptimizer::PlacementTimingOptimizer ( PlacementInfo placementInfo,
std::map< std::string, std::string > &  JSONCfg 
)

Definition at line 30 of file PlacementTimingOptimizer.cc.

Here is the call graph for this function:

◆ ~PlacementTimingOptimizer()

PlacementTimingOptimizer::~PlacementTimingOptimizer ( )
inline

Definition at line 49 of file PlacementTimingOptimizer.h.

Member Function Documentation

◆ clusterLongPathInOneClockRegion()

void PlacementTimingOptimizer::clusterLongPathInOneClockRegion ( int  pathLenThr,
float  clusterThrRatio 
)

Definition at line 526 of file PlacementTimingOptimizer.cc.

Referenced by AMFPlacer::run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ conductStaticTimingAnalysis()

float PlacementTimingOptimizer::conductStaticTimingAnalysis ( bool  enforeOptimisticTiming = false)

Definition at line 218 of file PlacementTimingOptimizer.cc.

Referenced by clusterLongPathInOneClockRegion(), ParallelCLBPacker::exceptionHandling(), GlobalPlacer::GlobalPlacement_CLBElements(), ParallelCLBPacker::packCLBs(), and AMFPlacer::run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dumpClockRegionClusters()

void PlacementTimingOptimizer::dumpClockRegionClusters ( )

Definition at line 848 of file PlacementTimingOptimizer.cc.

Referenced by clusterLongPathInOneClockRegion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ findCriticalPath()

std::vector< int > PlacementTimingOptimizer::findCriticalPath ( )

Definition at line 97 of file PlacementTimingOptimizer.cc.

Here is the call graph for this function:

◆ findCriticalPaths() [1/2]

std::vector< std::vector< int > > PlacementTimingOptimizer::findCriticalPaths ( float  criticalRatio,
bool  checkOverlap = true,
int  pathNumThr = 1000,
int  converThr = 30 
)

◆ findCriticalPaths() [2/2]

std::vector< std::vector< int > > PlacementTimingOptimizer::findCriticalPaths ( float  criticalRatio,
std::vector< bool > &  FFDirectlyDrivenButNotInOneSlot 
)

Definition at line 172 of file PlacementTimingOptimizer.cc.

Here is the call graph for this function:

◆ getDelayByModel() [1/2]

float PlacementTimingOptimizer::getDelayByModel ( float  X1,
float  Y1,
float  X2,
float  Y2 
)
inline

Definition at line 114 of file PlacementTimingOptimizer.h.

Here is the call graph for this function:

◆ getDelayByModel() [2/2]

◆ getDelayByModel_conservative()

float PlacementTimingOptimizer::getDelayByModel_conservative ( float  X1,
float  Y1,
float  X2,
float  Y2 
)
inline

Definition at line 123 of file PlacementTimingOptimizer.h.

Referenced by getDelayByModel().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getDis()

float PlacementTimingOptimizer::getDis ( float  x1,
float  y1,
float  x2,
float  y2 
)
inlineprivate

Definition at line 208 of file PlacementTimingOptimizer.h.

◆ getEffectFactor()

float PlacementTimingOptimizer::getEffectFactor ( )
inline

◆ getNetActualSlackPinNum()

std::map<PlacementInfo::PlacementNet *, int>& PlacementTimingOptimizer::getNetActualSlackPinNum ( )
inline

Definition at line 180 of file PlacementTimingOptimizer.h.

Referenced by WirelengthOptimizer::addPseudoNet_SlackBased().

Here is the caller graph for this function:

◆ getPois()

float PlacementTimingOptimizer::getPois ( int  v)
inline

Definition at line 81 of file PlacementTimingOptimizer.h.

◆ getPUId2Slack()

std::vector< float > & PlacementTimingOptimizer::getPUId2Slack ( bool  update = false)

Definition at line 892 of file PlacementTimingOptimizer.cc.

Referenced by ParallelCLBPacker::exceptionHandling(), and ParallelCLBPacker::ripUpAndLegalizae().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSlackThr()

float PlacementTimingOptimizer::getSlackThr ( )

Definition at line 370 of file PlacementTimingOptimizer.cc.

Referenced by WirelengthOptimizer::GlobalPlacementQPSolve().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getSortedTimingNodes()

std::vector<PlacementTimingInfo::TimingGraph<DesignInfo::DesignCell>::TimingNode *>& PlacementTimingOptimizer::getSortedTimingNodes ( )
inline

Definition at line 187 of file PlacementTimingOptimizer.h.

Here is the call graph for this function:

◆ getWorstSlackOfCell()

float PlacementTimingOptimizer::getWorstSlackOfCell ( DesignInfo::DesignCell srcCell)

Definition at line 66 of file PlacementTimingOptimizer.cc.

Referenced by ParallelCLBPacker::timingDrivenDetailedPlacement_swap().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ incrementalStaticTimingAnalysis_forPUWithLocation()

void PlacementTimingOptimizer::incrementalStaticTimingAnalysis_forPUWithLocation ( PlacementInfo::PlacementUnit curPU,
float  targetX,
float  targetY 
)

Definition at line 474 of file PlacementTimingOptimizer.cc.

Here is the call graph for this function:

◆ initPois()

void PlacementTimingOptimizer::initPois ( )
inline

Definition at line 68 of file PlacementTimingOptimizer.h.

Referenced by PlacementTimingOptimizer().

Here is the caller graph for this function:

◆ pauseCounter()

void PlacementTimingOptimizer::pauseCounter ( )
inline

Definition at line 174 of file PlacementTimingOptimizer.h.

Referenced by ParallelCLBPacker::packCLBs().

Here is the caller graph for this function:

◆ propogateArrivalTime()

void PlacementTimingOptimizer::propogateArrivalTime ( )

Definition at line 886 of file PlacementTimingOptimizer.cc.

◆ setEffectFactor()

void PlacementTimingOptimizer::setEffectFactor ( float  _effectFactor)
inline

Definition at line 98 of file PlacementTimingOptimizer.h.

◆ setPinsLocation()

void PlacementTimingOptimizer::setPinsLocation ( )

Definition at line 46 of file PlacementTimingOptimizer.cc.

Referenced by conductStaticTimingAnalysis(), and incrementalStaticTimingAnalysis_forPUWithLocation().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ stretchClockRegionColumns()

void PlacementTimingOptimizer::stretchClockRegionColumns ( )

Definition at line 733 of file PlacementTimingOptimizer.cc.

Referenced by clusterLongPathInOneClockRegion().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ clockRegionclusters

std::vector<std::vector<int> > PlacementTimingOptimizer::clockRegionclusters
private

◆ clockRegionClusterTooLarge

bool PlacementTimingOptimizer::clockRegionClusterTooLarge = false
private

Definition at line 220 of file PlacementTimingOptimizer.h.

Referenced by clusterLongPathInOneClockRegion().

◆ designInfo

◆ deviceInfo

DeviceInfo* PlacementTimingOptimizer::deviceInfo
private

◆ DSPCritical

bool PlacementTimingOptimizer::DSPCritical = false
private

Definition at line 206 of file PlacementTimingOptimizer.h.

Referenced by PlacementTimingOptimizer().

◆ effectFactor

float PlacementTimingOptimizer::effectFactor = 0
private

◆ enableCounter

bool PlacementTimingOptimizer::enableCounter = true
private

Definition at line 226 of file PlacementTimingOptimizer.h.

Referenced by conductStaticTimingAnalysis(), and pauseCounter().

◆ increaseLowDelayVal

bool PlacementTimingOptimizer::increaseLowDelayVal = false
private

Definition at line 225 of file PlacementTimingOptimizer.h.

Referenced by conductStaticTimingAnalysis().

◆ JSONCfg

std::map<std::string, std::string>& PlacementTimingOptimizer::JSONCfg
private

◆ lambdaPois

float PlacementTimingOptimizer::lambdaPois = 100
private

Definition at line 217 of file PlacementTimingOptimizer.h.

Referenced by initPois().

◆ netActualSlackPinNum

std::map<PlacementInfo::PlacementNet *, int> PlacementTimingOptimizer::netActualSlackPinNum
private

Definition at line 223 of file PlacementTimingOptimizer.h.

Referenced by getNetActualSlackPinNum(), and getSlackThr().

◆ placementInfo

◆ pois

std::vector<float> PlacementTimingOptimizer::pois
private

Definition at line 221 of file PlacementTimingOptimizer.h.

Referenced by getPois(), and initPois().

◆ poisN

int PlacementTimingOptimizer::poisN = 1000
private

Definition at line 216 of file PlacementTimingOptimizer.h.

Referenced by initPois().

◆ PUId2Slack

std::vector<float> PlacementTimingOptimizer::PUId2Slack
private

Definition at line 224 of file PlacementTimingOptimizer.h.

Referenced by getPUId2Slack().

◆ STA_Cnt

int PlacementTimingOptimizer::STA_Cnt = 0
private

Definition at line 218 of file PlacementTimingOptimizer.h.

Referenced by conductStaticTimingAnalysis().

◆ timingC0

const float PlacementTimingOptimizer::timingC0[10] = {95.05263521, -26.50563359, 77.42394117, 106.29195883, -14.975527}

Definition at line 119 of file PlacementTimingOptimizer.h.

Referenced by getDelayByModel_conservative().

◆ timingC1

const float PlacementTimingOptimizer::timingC1[10] = {123.05017047, -169.25614191, -117.28028144, 208.53573639, 174.2573465}

Definition at line 120 of file PlacementTimingOptimizer.h.

Referenced by getDelayByModel_conservative().

◆ timingC2

const float PlacementTimingOptimizer::timingC2[10] = {234.7694101, -433.99467294, -64.96319998, 373.78606257, 139.45226658}

Definition at line 121 of file PlacementTimingOptimizer.h.

Referenced by getDelayByModel_conservative().

◆ timingInfo

◆ verbose

bool PlacementTimingOptimizer::verbose = false
private

Definition at line 204 of file PlacementTimingOptimizer.h.

Referenced by PlacementTimingOptimizer().

◆ xDelayUnit

float PlacementTimingOptimizer::xDelayUnit = 0.13
private

Definition at line 213 of file PlacementTimingOptimizer.h.

◆ y2xRatio

float PlacementTimingOptimizer::y2xRatio = 1
private

Definition at line 205 of file PlacementTimingOptimizer.h.

Referenced by getDis(), and PlacementTimingOptimizer().

◆ yDelayUnit

float PlacementTimingOptimizer::yDelayUnit = 0.10
private

Definition at line 214 of file PlacementTimingOptimizer.h.


The documentation for this class was generated from the following files: