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

GlobalPlacer accounts for the general iterations in global placement. More...

#include <GlobalPlacer.h>

Collaboration diagram for GlobalPlacer:

Public Member Functions

 GlobalPlacer (PlacementInfo *placementInfo, std::map< std::string, std::string > &JSONCfg, bool resetLegalizationInfo=true)
 Construct a new Global Placer object based on placement information. More...
 
 ~GlobalPlacer ()
 
void clusterPlacement ()
 cluster elements and conduct initial placement at coarse-grained level More...
 
void GlobalPlacement_CLBElements (int iterNum, bool continuePreviousIteration=false, int lowerBoundIterNum=6, bool enableMacroPseudoNet2Site=false, bool stopStrictly=false, unsigned int spreadRegionBinNumLimit=10000000, PlacementTimingOptimizer *timingOptimizer=nullptr)
 wirelength optimization + cell spreading + legalization + area adjustion More...
 
void GlobalPlacement_fixedCLB (int iterNum, float pseudoNetWeight)
 fix the locations of CLB and let macros move without low pseudo net at initial stages, e.g., just after initial placement More...
 
void setPseudoNetWeight (float weight)
 Set the initial pseudo net weight for the global placer. More...
 
float getPseudoNetWeight ()
 Get the current pseudo net weight. More...
 
int getMacroPseudoNetEnhanceCnt ()
 Get the number of macro pseudo net enhancements. More...
 
float getMacroLegalizationWeight ()
 Get the current macro legalization weight object. More...
 
void setMacroLegalizationParameters (int cnt, float macroLegalizationWeight)
 Set the macro legalization parameters (including legalization counter and pseudo net weight) More...
 
void setMacroLegalizationFixed ()
 fix the macro legalization result More...
 
void setNeighborDisplacementUpperbound (float _threshold)
 Set the distance upperbound of neighbor LUT/FF-like elements for area adjustion. More...
 
void spreading (int currentIteration, int spreadRegionSizeLimit=100000000, float displacementLimit=-10)
 cell spreading for all types of elements More...
 
WirelengthOptimizergetWirelengthOptimizer ()
 
int timingDrivenDetailedPlacement_shortestPath_intermediate (PlacementTimingOptimizer *timingOptimizer)
 

Private Member Functions

void updatePseudoNetWeight (float &pseudoNetWeight, int curIter)
 update pseudo net weight according to placement progress More...
 
void macroLegalize (int curIteration, bool timingDriven=false, PlacementTimingOptimizer *timingOptimizer=nullptr)
 legalize specific types of macro to the target regions More...
 
void printPlacedUnits (std::ostream &os)
 
void dumpLUTCoordinate ()
 
void dumpDSPCoordinate (bool enforced=false)
 
void dumpBRAMCoordinate (bool enforced=false)
 
void dumpFFCoordinate ()
 
void dumpLUTFFCoordinate (bool enforced=false)
 
void dumpAllCellsCoordinate ()
 
void dumpCARRYCoordinate ()
 
void dumpCoord ()
 
float random_float (float min, float max)
 

Private Attributes

PlacementInfoplacementInfo
 
std::map< std::string, std::string > & JSONCfg
 
bool verbose = false
 
bool dumpOptTrace = false
 
float y2xRatio = 1.0
 
bool pseudoNetWeightConsiderNetNum = true
 set adaptive pseudo net weight according to net density More...
 
bool disableSpreadingForgetRatio = false
 diable cell spreading forget ratio More...
 
ClusterPlacerclusterPlacer = nullptr
 cluster placer is used for initial placement More...
 
WirelengthOptimizerWLOptimizer = nullptr
 wirelength optimizer is based on numerial model and used to reduce the overall wirelength with various terms, e.g., terms for wirelength, legalization and timing... More...
 
GeneralSpreadergeneralSpreader = nullptr
 a general spreading will spread cells to meet cell density requirements More...
 
MacroLegalizerBRAMDSPLegalizer = nullptr
 legalize multi-site BRAM/DSP elements More...
 
MacroLegalizerCARRYMacroLegalizer = nullptr
 legalize multi-site CARRY elements More...
 
CLBLegalizermCLBLegalizer = nullptr
 legalize single-site SLICEM-CLB elements More...
 
CLBLegalizerlCLBLegalizer = nullptr
 legalize single-site SLICEL-CLB elements More...
 
int LUTCoordinateDumpCnt = 0
 
int DSPCoordinateDumpCnt = 0
 
int BRAMCoordinateDumpCnt = 0
 
int FFCoordinateDumpCnt = 0
 
int LUTFFCoordinateDumpCnt = 0
 
int CARRYCoordinateDumpCnt = 0
 
int allCoordinateDumpCnt = 0
 
float spreadingForgetRatio = 0.2
 we use the forget ratio to control the sensitivity of cell spreading during the location updateing (newFinalLoc = expectedLoc * forgetRatio + originalLoc * (1-forgetRatio) ) More...
 
float progressRatio = 0.0
 the similarity between upperbound wirelength and lowerbound wirelength More...
 
float averageMacroLegalDisplacement = 100000
 record the legalization displacement of DSP/BRAM More...
 
float averageCarryLegalDisplacement = 100000
 record the legalization displacement of CARRY More...
 
float averageMCLBLegalDisplacement = 100000
 record the legalization displacement of SLICEM-Macro More...
 
std::deque< float > historyHPWLs
 record the change history of HPWL More...
 
float minHPWL
 
float upperBoundHPWL
 upperbound HPWL is obtained just after cell spreading and legalization More...
 
float lowerBoundHPWL
 lowerbound HPWL is obtained just after wirelength optimization More...
 
bool updateMinHPWLAfterLegalization = false
 when legalization is started, the HPWL might have a significant change due to the legalization displacement/pseudo nets More...
 
bool HPWLChangeLittle = false
 the small change of minHPWL might imply that the optimization converges. More...
 
bool macrosBindedToSites = false
 macros are binded to sites and such binding will lead to pseudo nets between anchors and elements More...
 
bool macroCloseToSite = false
 macros are located closely to their legalized locations More...
 
bool macroLocked = false
 lock the macro binding and bypass serveral legalizaiton iterations for wirelength stable convergence More...
 
bool macroLegalizationFixed = false
 fix the macros to the exact legal location More...
 
bool directMacroLegalize = false
 directly legalize macros without the phase of rough legalization (each standard cell in a macro will be legalized separately) More...
 
bool dumpClockUtilization = false
 
bool DSPCritical = false
 
int macroLockedIterCnt = 0
 
std::deque< float > historyAverageDisplacement
 
float oriPseudoNetWeight = -1.0
 record the pseudo net weight at the end of placement functions for later iterations. This information can be recorded in PlacementInfo for checkpoint dumping More...
 
float pseudoNetWeight = 1.0
 the pseudo net weight in the iterations of placement functions More...
 
float neighborDisplacementUpperbound = -1.0
 the distance threshold for the neighbor detection during area adjustion More...
 
bool hasUserDefinedClusterInfo = false
 
bool enableClockRegionAware = false
 
bool timingOptEnabled = false
 
bool printHPWL = false
 

Detailed Description

GlobalPlacer accounts for the general iterations in global placement.

including wirelength optimization, cell spreading, legalization, area adjustion...

Definition at line 59 of file GlobalPlacer.h.

Constructor & Destructor Documentation

◆ GlobalPlacer()

GlobalPlacer::GlobalPlacer ( PlacementInfo placementInfo,
std::map< std::string, std::string > &  JSONCfg,
bool  resetLegalizationInfo = true 
)

Construct a new Global Placer object based on placement information.

Parameters
placementInfothe PlacementInfo for this placer to handle
JSONCfgthe user-defined placement configuration
resetLegalizationInfo

Definition at line 31 of file GlobalPlacer.cc.

Here is the call graph for this function:

◆ ~GlobalPlacer()

GlobalPlacer::~GlobalPlacer ( )
inline

Definition at line 71 of file GlobalPlacer.h.

Member Function Documentation

◆ clusterPlacement()

void GlobalPlacer::clusterPlacement ( )

cluster elements and conduct initial placement at coarse-grained level

Definition at line 122 of file GlobalPlacer.cc.

Referenced by AMFPlacer::run().

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

◆ dumpAllCellsCoordinate()

void GlobalPlacer::dumpAllCellsCoordinate ( )
private

Definition at line 864 of file GlobalPlacer.cc.

Referenced by dumpCoord().

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

◆ dumpBRAMCoordinate()

void GlobalPlacer::dumpBRAMCoordinate ( bool  enforced = false)
private

Definition at line 1100 of file GlobalPlacer.cc.

Here is the call graph for this function:

◆ dumpCARRYCoordinate()

void GlobalPlacer::dumpCARRYCoordinate ( )
private

Definition at line 768 of file GlobalPlacer.cc.

Referenced by dumpCoord().

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

◆ dumpCoord()

void GlobalPlacer::dumpCoord ( )
private

Definition at line 388 of file GlobalPlacer.cc.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacement_fixedCLB().

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

◆ dumpDSPCoordinate()

void GlobalPlacer::dumpDSPCoordinate ( bool  enforced = false)
private

Definition at line 1004 of file GlobalPlacer.cc.

Referenced by dumpCoord().

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

◆ dumpFFCoordinate()

void GlobalPlacer::dumpFFCoordinate ( )
private

Definition at line 816 of file GlobalPlacer.cc.

Referenced by dumpCoord().

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

◆ dumpLUTCoordinate()

void GlobalPlacer::dumpLUTCoordinate ( )
private

Definition at line 410 of file GlobalPlacer.cc.

Referenced by dumpCoord().

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

◆ dumpLUTFFCoordinate()

void GlobalPlacer::dumpLUTFFCoordinate ( bool  enforced = false)
private

Definition at line 906 of file GlobalPlacer.cc.

Referenced by dumpCoord(), and GlobalPlacement_CLBElements().

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

◆ getMacroLegalizationWeight()

float GlobalPlacer::getMacroLegalizationWeight ( )
inline

Get the current macro legalization weight object.

Returns
float

Definition at line 161 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

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

◆ getMacroPseudoNetEnhanceCnt()

int GlobalPlacer::getMacroPseudoNetEnhanceCnt ( )
inline

Get the number of macro pseudo net enhancements.

the macro legalization pseudo net will be enhanced as the number of previous enhancements is increased.

Returns
int

Definition at line 151 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

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

◆ getPseudoNetWeight()

float GlobalPlacer::getPseudoNetWeight ( )
inline

Get the current pseudo net weight.

usually we can record the current pseudo net weight for later placement-related procedure

Returns
float

Definition at line 139 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

Here is the caller graph for this function:

◆ getWirelengthOptimizer()

WirelengthOptimizer* GlobalPlacer::getWirelengthOptimizer ( )
inline

Definition at line 207 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

Here is the caller graph for this function:

◆ GlobalPlacement_CLBElements()

void GlobalPlacer::GlobalPlacement_CLBElements ( int  iterNum,
bool  continuePreviousIteration = false,
int  lowerBoundIterNum = 6,
bool  enableMacroPseudoNet2Site = false,
bool  stopStrictly = false,
unsigned int  spreadRegionBinNumLimit = 10000000,
PlacementTimingOptimizer timingOptimizer = nullptr 
)

wirelength optimization + cell spreading + legalization + area adjustion

Parameters
iterNumthe current placement iteration
continuePreviousIterationwhether we should use the information from previous iterations
lowerBoundIterNumthe iteration number for the lower-bound wirelength optimization
enableMacroPseudoNet2Siteenable pseudo nets for macro legalization
stopStrictlystop strictly even the placement wirelength metrics are not converged.
spreadRegionBinNumLimitthe maximum number of bins in a spreadRegion
timingOptimizerthe pointer of the timing optimizer (if nullptr, timing optimization will be disabled)

Definition at line 128 of file GlobalPlacer.cc.

Referenced by AMFPlacer::run().

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

◆ GlobalPlacement_fixedCLB()

void GlobalPlacer::GlobalPlacement_fixedCLB ( int  iterNum,
float  pseudoNetWeight 
)

fix the locations of CLB and let macros move without low pseudo net at initial stages, e.g., just after initial placement

Parameters
iterNumcurrent iteration number of global placement
pseudoNetWeightgiven pseudo net weight for non-CLB elements

Definition at line 334 of file GlobalPlacer.cc.

Referenced by AMFPlacer::run().

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

◆ macroLegalize()

void GlobalPlacer::macroLegalize ( int  curIteration,
bool  timingDriven = false,
PlacementTimingOptimizer timingOptimizer = nullptr 
)
private

legalize specific types of macro to the target regions

Parameters
curIteration
timingDrivendisable the evaluation of HPWL change but use check displacement change

Definition at line 458 of file GlobalPlacer.cc.

Referenced by GlobalPlacement_CLBElements().

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

◆ printPlacedUnits()

void GlobalPlacer::printPlacedUnits ( std::ostream &  os)
private

Definition at line 398 of file GlobalPlacer.cc.

Here is the call graph for this function:

◆ random_float()

float GlobalPlacer::random_float ( float  min,
float  max 
)
inlineprivate

Definition at line 310 of file GlobalPlacer.h.

◆ setMacroLegalizationFixed()

void GlobalPlacer::setMacroLegalizationFixed ( )
inline

fix the macro legalization result

Definition at line 181 of file GlobalPlacer.h.

◆ setMacroLegalizationParameters()

void GlobalPlacer::setMacroLegalizationParameters ( int  cnt,
float  macroLegalizationWeight 
)
inline

Set the macro legalization parameters (including legalization counter and pseudo net weight)

Parameters
cntthe number of previous macro pseudo net enhancements
macroLegalizationWeightmacro pseudo net weight

Definition at line 172 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

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

◆ setNeighborDisplacementUpperbound()

void GlobalPlacer::setNeighborDisplacementUpperbound ( float  _threshold)
inline

Set the distance upperbound of neighbor LUT/FF-like elements for area adjustion.

Parameters
_thresholdthe distance upperbound

Definition at line 191 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

Here is the caller graph for this function:

◆ setPseudoNetWeight()

void GlobalPlacer::setPseudoNetWeight ( float  weight)
inline

Set the initial pseudo net weight for the global placer.

please note that this pseudo net will be updated according to the placement progress

Parameters
weight

Definition at line 127 of file GlobalPlacer.h.

Referenced by AMFPlacer::run().

Here is the caller graph for this function:

◆ spreading()

void GlobalPlacer::spreading ( int  currentIteration,
int  spreadRegionSizeLimit = 100000000,
float  displacementLimit = -10 
)

cell spreading for all types of elements

we make it public since sometime we allow external functions to call cell spreading for flexible improvement

Parameters
currentIterationthe current global placement iteration in this round
spreadRegionSizeLimitthe maximum number of bins in a spreadRegion
displacementLimit

Definition at line 618 of file GlobalPlacer.cc.

Referenced by GlobalPlacement_CLBElements().

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

◆ timingDrivenDetailedPlacement_shortestPath_intermediate()

int GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate ( PlacementTimingOptimizer timingOptimizer)

Definition at line 1196 of file GlobalPlacer.cc.

Referenced by GlobalPlacement_CLBElements().

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

◆ updatePseudoNetWeight()

void GlobalPlacer::updatePseudoNetWeight ( float &  pseudoNetWeight,
int  curIter 
)
private

update pseudo net weight according to placement progress

Parameters
pseudoNetWeightcurrent pseudo net weight for final convergence
curItercurrent iteration in the placement procedure

Definition at line 668 of file GlobalPlacer.cc.

Referenced by GlobalPlacement_CLBElements().

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

Member Data Documentation

◆ allCoordinateDumpCnt

int GlobalPlacer::allCoordinateDumpCnt = 0
private

Definition at line 326 of file GlobalPlacer.h.

Referenced by dumpAllCellsCoordinate().

◆ averageCarryLegalDisplacement

float GlobalPlacer::averageCarryLegalDisplacement = 100000
private

record the legalization displacement of CARRY

Definition at line 351 of file GlobalPlacer.h.

Referenced by macroLegalize().

◆ averageMacroLegalDisplacement

float GlobalPlacer::averageMacroLegalDisplacement = 100000
private

record the legalization displacement of DSP/BRAM

Definition at line 345 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), macroLegalize(), and updatePseudoNetWeight().

◆ averageMCLBLegalDisplacement

float GlobalPlacer::averageMCLBLegalDisplacement = 100000
private

record the legalization displacement of SLICEM-Macro

Definition at line 357 of file GlobalPlacer.h.

Referenced by macroLegalize().

◆ BRAMCoordinateDumpCnt

int GlobalPlacer::BRAMCoordinateDumpCnt = 0
private

Definition at line 322 of file GlobalPlacer.h.

Referenced by dumpBRAMCoordinate().

◆ BRAMDSPLegalizer

MacroLegalizer* GlobalPlacer::BRAMDSPLegalizer = nullptr
private

legalize multi-site BRAM/DSP elements

Definition at line 264 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), GlobalPlacer(), macroLegalize(), updatePseudoNetWeight(), and ~GlobalPlacer().

◆ CARRYCoordinateDumpCnt

int GlobalPlacer::CARRYCoordinateDumpCnt = 0
private

Definition at line 325 of file GlobalPlacer.h.

Referenced by dumpCARRYCoordinate().

◆ CARRYMacroLegalizer

MacroLegalizer* GlobalPlacer::CARRYMacroLegalizer = nullptr
private

legalize multi-site CARRY elements

Definition at line 270 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), GlobalPlacer(), macroLegalize(), and ~GlobalPlacer().

◆ clusterPlacer

ClusterPlacer* GlobalPlacer::clusterPlacer = nullptr
private

cluster placer is used for initial placement

Definition at line 245 of file GlobalPlacer.h.

Referenced by clusterPlacement(), GlobalPlacer(), and ~GlobalPlacer().

◆ directMacroLegalize

bool GlobalPlacer::directMacroLegalize = false
private

directly legalize macros without the phase of rough legalization (each standard cell in a macro will be legalized separately)

Definition at line 420 of file GlobalPlacer.h.

Referenced by GlobalPlacer(), and macroLegalize().

◆ disableSpreadingForgetRatio

bool GlobalPlacer::disableSpreadingForgetRatio = false
private

diable cell spreading forget ratio

we use the forget ratio to control the sensitivity of cell spreading during the location updateing (newFinalLoc = expectedLoc * forgetRatio + originalLoc * (1-forgetRatio) )

Definition at line 239 of file GlobalPlacer.h.

Referenced by GlobalPlacer(), and updatePseudoNetWeight().

◆ DSPCoordinateDumpCnt

int GlobalPlacer::DSPCoordinateDumpCnt = 0
private

Definition at line 321 of file GlobalPlacer.h.

Referenced by dumpDSPCoordinate().

◆ DSPCritical

bool GlobalPlacer::DSPCritical = false
private

Definition at line 424 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacer().

◆ dumpClockUtilization

bool GlobalPlacer::dumpClockUtilization = false
private

Definition at line 422 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacer().

◆ dumpOptTrace

bool GlobalPlacer::dumpOptTrace = false
private

◆ enableClockRegionAware

bool GlobalPlacer::enableClockRegionAware = false
private

Definition at line 449 of file GlobalPlacer.h.

Referenced by macroLegalize(), spreading(), and updatePseudoNetWeight().

◆ FFCoordinateDumpCnt

int GlobalPlacer::FFCoordinateDumpCnt = 0
private

Definition at line 323 of file GlobalPlacer.h.

Referenced by dumpFFCoordinate().

◆ generalSpreader

GeneralSpreader* GlobalPlacer::generalSpreader = nullptr
private

a general spreading will spread cells to meet cell density requirements

Definition at line 258 of file GlobalPlacer.h.

Referenced by GlobalPlacement_fixedCLB(), spreading(), and ~GlobalPlacer().

◆ hasUserDefinedClusterInfo

bool GlobalPlacer::hasUserDefinedClusterInfo = false
private

Definition at line 448 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacer().

◆ historyAverageDisplacement

std::deque<float> GlobalPlacer::historyAverageDisplacement
private

Definition at line 427 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and macroLegalize().

◆ historyHPWLs

std::deque<float> GlobalPlacer::historyHPWLs
private

record the change history of HPWL

Definition at line 363 of file GlobalPlacer.h.

Referenced by GlobalPlacer(), and updatePseudoNetWeight().

◆ HPWLChangeLittle

bool GlobalPlacer::HPWLChangeLittle = false
private

the small change of minHPWL might imply that the optimization converges.

Definition at line 389 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and updatePseudoNetWeight().

◆ JSONCfg

◆ lCLBLegalizer

CLBLegalizer* GlobalPlacer::lCLBLegalizer = nullptr
private

legalize single-site SLICEL-CLB elements

Definition at line 282 of file GlobalPlacer.h.

Referenced by GlobalPlacer(), and ~GlobalPlacer().

◆ lowerBoundHPWL

float GlobalPlacer::lowerBoundHPWL
private

lowerbound HPWL is obtained just after wirelength optimization

Definition at line 376 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and updatePseudoNetWeight().

◆ LUTCoordinateDumpCnt

int GlobalPlacer::LUTCoordinateDumpCnt = 0
private

Definition at line 320 of file GlobalPlacer.h.

Referenced by dumpLUTCoordinate().

◆ LUTFFCoordinateDumpCnt

int GlobalPlacer::LUTFFCoordinateDumpCnt = 0
private

Definition at line 324 of file GlobalPlacer.h.

Referenced by dumpLUTFFCoordinate().

◆ macroCloseToSite

bool GlobalPlacer::macroCloseToSite = false
private

macros are located closely to their legalized locations

Definition at line 401 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and macroLegalize().

◆ macroLegalizationFixed

bool GlobalPlacer::macroLegalizationFixed = false
private

fix the macros to the exact legal location

Definition at line 413 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), macroLegalize(), setMacroLegalizationFixed(), and spreading().

◆ macroLocked

bool GlobalPlacer::macroLocked = false
private

lock the macro binding and bypass serveral legalizaiton iterations for wirelength stable convergence

Definition at line 407 of file GlobalPlacer.h.

Referenced by macroLegalize().

◆ macroLockedIterCnt

int GlobalPlacer::macroLockedIterCnt = 0
private

Definition at line 426 of file GlobalPlacer.h.

Referenced by macroLegalize().

◆ macrosBindedToSites

bool GlobalPlacer::macrosBindedToSites = false
private

macros are binded to sites and such binding will lead to pseudo nets between anchors and elements

Definition at line 395 of file GlobalPlacer.h.

Referenced by macroLegalize().

◆ mCLBLegalizer

CLBLegalizer* GlobalPlacer::mCLBLegalizer = nullptr
private

legalize single-site SLICEM-CLB elements

Definition at line 276 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), GlobalPlacer(), macroLegalize(), and ~GlobalPlacer().

◆ minHPWL

float GlobalPlacer::minHPWL
private

◆ neighborDisplacementUpperbound

float GlobalPlacer::neighborDisplacementUpperbound = -1.0
private

the distance threshold for the neighbor detection during area adjustion

Definition at line 446 of file GlobalPlacer.h.

Referenced by setNeighborDisplacementUpperbound(), and spreading().

◆ oriPseudoNetWeight

float GlobalPlacer::oriPseudoNetWeight = -1.0
private

record the pseudo net weight at the end of placement functions for later iterations. This information can be recorded in PlacementInfo for checkpoint dumping

Definition at line 434 of file GlobalPlacer.h.

Referenced by getPseudoNetWeight(), GlobalPlacement_CLBElements(), and setPseudoNetWeight().

◆ placementInfo

◆ printHPWL

bool GlobalPlacer::printHPWL = false
private

Definition at line 451 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacer().

◆ progressRatio

float GlobalPlacer::progressRatio = 0.0
private

the similarity between upperbound wirelength and lowerbound wirelength

Definition at line 339 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), macroLegalize(), spreading(), and updatePseudoNetWeight().

◆ pseudoNetWeight

float GlobalPlacer::pseudoNetWeight = 1.0
private

the pseudo net weight in the iterations of placement functions

Definition at line 440 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), GlobalPlacement_fixedCLB(), and updatePseudoNetWeight().

◆ pseudoNetWeightConsiderNetNum

bool GlobalPlacer::pseudoNetWeightConsiderNetNum = true
private

set adaptive pseudo net weight according to net density

we assign higher weight for the pseudo nets between anchors and elements which connects to more nets

Definition at line 230 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and GlobalPlacer().

◆ spreadingForgetRatio

float GlobalPlacer::spreadingForgetRatio = 0.2
private

we use the forget ratio to control the sensitivity of cell spreading during the location updateing (newFinalLoc = expectedLoc * forgetRatio + originalLoc * (1-forgetRatio) )

Definition at line 333 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), spreading(), and updatePseudoNetWeight().

◆ timingOptEnabled

bool GlobalPlacer::timingOptEnabled = false
private

Definition at line 450 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements().

◆ updateMinHPWLAfterLegalization

bool GlobalPlacer::updateMinHPWLAfterLegalization = false
private

when legalization is started, the HPWL might have a significant change due to the legalization displacement/pseudo nets

Definition at line 383 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and updatePseudoNetWeight().

◆ upperBoundHPWL

float GlobalPlacer::upperBoundHPWL
private

upperbound HPWL is obtained just after cell spreading and legalization

Definition at line 370 of file GlobalPlacer.h.

Referenced by GlobalPlacement_CLBElements(), and updatePseudoNetWeight().

◆ verbose

bool GlobalPlacer::verbose = false
private

Definition at line 220 of file GlobalPlacer.h.

Referenced by GlobalPlacer(), and spreading().

◆ WLOptimizer

WirelengthOptimizer* GlobalPlacer::WLOptimizer = nullptr
private

wirelength optimizer is based on numerial model and used to reduce the overall wirelength with various terms, e.g., terms for wirelength, legalization and timing...

Definition at line 252 of file GlobalPlacer.h.

Referenced by getMacroLegalizationWeight(), getMacroPseudoNetEnhanceCnt(), getWirelengthOptimizer(), GlobalPlacement_CLBElements(), GlobalPlacement_fixedCLB(), GlobalPlacer(), setMacroLegalizationParameters(), and ~GlobalPlacer().

◆ y2xRatio

float GlobalPlacer::y2xRatio = 1.0
private

Definition at line 222 of file GlobalPlacer.h.

Referenced by GlobalPlacer().


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