AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
#include <PlacementTimingOptimizer.h>
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 | |
PlacementInfo * | placementInfo = nullptr |
PlacementTimingInfo * | timingInfo = nullptr |
DesignInfo * | designInfo |
DeviceInfo * | deviceInfo |
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 |
Definition at line 45 of file PlacementTimingOptimizer.h.
PlacementTimingOptimizer::PlacementTimingOptimizer | ( | PlacementInfo * | placementInfo, |
std::map< std::string, std::string > & | JSONCfg | ||
) |
Definition at line 30 of file PlacementTimingOptimizer.cc.
|
inline |
Definition at line 49 of file PlacementTimingOptimizer.h.
void PlacementTimingOptimizer::clusterLongPathInOneClockRegion | ( | int | pathLenThr, |
float | clusterThrRatio | ||
) |
Definition at line 526 of file PlacementTimingOptimizer.cc.
Referenced by AMFPlacer::run().
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().
void PlacementTimingOptimizer::dumpClockRegionClusters | ( | ) |
Definition at line 848 of file PlacementTimingOptimizer.cc.
Referenced by clusterLongPathInOneClockRegion().
std::vector< int > PlacementTimingOptimizer::findCriticalPath | ( | ) |
Definition at line 97 of file PlacementTimingOptimizer.cc.
std::vector< std::vector< int > > PlacementTimingOptimizer::findCriticalPaths | ( | float | criticalRatio, |
bool | checkOverlap = true , |
||
int | pathNumThr = 1000 , |
||
int | converThr = 30 |
||
) |
Definition at line 119 of file PlacementTimingOptimizer.cc.
Referenced by ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath(), GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath_intermediate(), and ParallelCLBPacker::timingDrivenDetailedPlacement_swap().
std::vector< std::vector< int > > PlacementTimingOptimizer::findCriticalPaths | ( | float | criticalRatio, |
std::vector< bool > & | FFDirectlyDrivenButNotInOneSlot | ||
) |
Definition at line 172 of file PlacementTimingOptimizer.cc.
|
inline |
Definition at line 114 of file PlacementTimingOptimizer.h.
|
inline |
Definition at line 103 of file PlacementTimingOptimizer.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), conductStaticTimingAnalysis(), getPUId2Slack(), getSlackThr(), getWorstSlackOfCell(), incrementalStaticTimingAnalysis_forPUWithLocation(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath(), GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath_intermediate(), and ParallelCLBPacker::timingDrivenDetailedPlacement_swap().
|
inline |
Definition at line 123 of file PlacementTimingOptimizer.h.
Referenced by getDelayByModel().
|
inlineprivate |
Definition at line 208 of file PlacementTimingOptimizer.h.
|
inline |
Definition at line 93 of file PlacementTimingOptimizer.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), GlobalPlacer::GlobalPlacement_CLBElements(), WirelengthOptimizer::GlobalPlacementQPSolve(), and WirelengthOptimizer::updateB2BNetWeight().
|
inline |
Definition at line 180 of file PlacementTimingOptimizer.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased().
|
inline |
Definition at line 81 of file PlacementTimingOptimizer.h.
std::vector< float > & PlacementTimingOptimizer::getPUId2Slack | ( | bool | update = false | ) |
Definition at line 892 of file PlacementTimingOptimizer.cc.
Referenced by ParallelCLBPacker::exceptionHandling(), and ParallelCLBPacker::ripUpAndLegalizae().
float PlacementTimingOptimizer::getSlackThr | ( | ) |
Definition at line 370 of file PlacementTimingOptimizer.cc.
Referenced by WirelengthOptimizer::GlobalPlacementQPSolve().
|
inline |
Definition at line 187 of file PlacementTimingOptimizer.h.
float PlacementTimingOptimizer::getWorstSlackOfCell | ( | DesignInfo::DesignCell * | srcCell | ) |
Definition at line 66 of file PlacementTimingOptimizer.cc.
Referenced by ParallelCLBPacker::timingDrivenDetailedPlacement_swap().
void PlacementTimingOptimizer::incrementalStaticTimingAnalysis_forPUWithLocation | ( | PlacementInfo::PlacementUnit * | curPU, |
float | targetX, | ||
float | targetY | ||
) |
Definition at line 474 of file PlacementTimingOptimizer.cc.
|
inline |
Definition at line 68 of file PlacementTimingOptimizer.h.
Referenced by PlacementTimingOptimizer().
|
inline |
Definition at line 174 of file PlacementTimingOptimizer.h.
Referenced by ParallelCLBPacker::packCLBs().
void PlacementTimingOptimizer::propogateArrivalTime | ( | ) |
Definition at line 886 of file PlacementTimingOptimizer.cc.
|
inline |
Definition at line 98 of file PlacementTimingOptimizer.h.
void PlacementTimingOptimizer::setPinsLocation | ( | ) |
Definition at line 46 of file PlacementTimingOptimizer.cc.
Referenced by conductStaticTimingAnalysis(), and incrementalStaticTimingAnalysis_forPUWithLocation().
void PlacementTimingOptimizer::stretchClockRegionColumns | ( | ) |
Definition at line 733 of file PlacementTimingOptimizer.cc.
Referenced by clusterLongPathInOneClockRegion().
|
private |
Definition at line 222 of file PlacementTimingOptimizer.h.
Referenced by clusterLongPathInOneClockRegion(), and dumpClockRegionClusters().
|
private |
Definition at line 220 of file PlacementTimingOptimizer.h.
Referenced by clusterLongPathInOneClockRegion().
|
private |
Definition at line 198 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis(), incrementalStaticTimingAnalysis_forPUWithLocation(), PlacementTimingOptimizer(), and setPinsLocation().
|
private |
Definition at line 199 of file PlacementTimingOptimizer.h.
Referenced by clusterLongPathInOneClockRegion(), getDelayByModel_conservative(), PlacementTimingOptimizer(), and stretchClockRegionColumns().
|
private |
Definition at line 206 of file PlacementTimingOptimizer.h.
Referenced by PlacementTimingOptimizer().
|
private |
Definition at line 219 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis(), getEffectFactor(), and setEffectFactor().
|
private |
Definition at line 226 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis(), and pauseCounter().
|
private |
Definition at line 225 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis().
|
private |
Definition at line 202 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis(), dumpClockRegionClusters(), and PlacementTimingOptimizer().
|
private |
Definition at line 217 of file PlacementTimingOptimizer.h.
Referenced by initPois().
|
private |
Definition at line 223 of file PlacementTimingOptimizer.h.
Referenced by getNetActualSlackPinNum(), and getSlackThr().
|
private |
Definition at line 196 of file PlacementTimingOptimizer.h.
Referenced by clusterLongPathInOneClockRegion(), conductStaticTimingAnalysis(), dumpClockRegionClusters(), findCriticalPaths(), getPUId2Slack(), getSlackThr(), getWorstSlackOfCell(), incrementalStaticTimingAnalysis_forPUWithLocation(), PlacementTimingOptimizer(), setPinsLocation(), and stretchClockRegionColumns().
|
private |
Definition at line 221 of file PlacementTimingOptimizer.h.
Referenced by getPois(), and initPois().
|
private |
Definition at line 216 of file PlacementTimingOptimizer.h.
Referenced by initPois().
|
private |
Definition at line 224 of file PlacementTimingOptimizer.h.
Referenced by getPUId2Slack().
|
private |
Definition at line 218 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis().
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().
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().
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().
|
private |
Definition at line 197 of file PlacementTimingOptimizer.h.
Referenced by conductStaticTimingAnalysis(), findCriticalPath(), findCriticalPaths(), getSortedTimingNodes(), incrementalStaticTimingAnalysis_forPUWithLocation(), and propogateArrivalTime().
|
private |
Definition at line 204 of file PlacementTimingOptimizer.h.
Referenced by PlacementTimingOptimizer().
|
private |
Definition at line 213 of file PlacementTimingOptimizer.h.
|
private |
Definition at line 205 of file PlacementTimingOptimizer.h.
Referenced by getDis(), and PlacementTimingOptimizer().
|
private |
Definition at line 214 of file PlacementTimingOptimizer.h.