|
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.