AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Information related to FPGA placement (wirelength optimization, cell spreading, legalization, packing) More...
#include <PlacementInfo.h>
Classes | |
struct | _ClockNetCoverage |
the retangular clock region coverage of a clock net More... | |
struct | CellBinInfo |
record the bin information for a cell (BELtype, column/row, resource demand) More... | |
class | ClusterNet |
The net between the objects of ClusterUnit class. More... | |
class | ClusterUnit |
a group of PlacementUnits More... | |
class | CompatiblePlacementTable |
describes the type mapping from design to device, where a cell can be placed (which BEL in which site) More... | |
struct | Location |
class | PlacementBinInfo |
BEL bin for global placement for a specific shared BEL type. More... | |
class | PlacementHybridBinInfo |
BEL bin for global placement for multiple specific shared BEL types. More... | |
class | PlacementMacro |
a fixed group of multiple standard cells with constraints of their relative locations More... | |
class | PlacementNet |
Placement net, compared to design net, includes information related to placement. More... | |
class | PlacementSiteBinInfo |
Site bin for global placement for some specific Site types. More... | |
class | PlacementSiteTypeInfo |
information for a site, e.g. what BEL in site and where are these kind of sites More... | |
class | PlacementUnit |
a movement unit in placement with information of location and resource demand More... | |
class | PlacementUnpackedCell |
the smallest, indivisible, representable component. It will include only one standard cell More... | |
Public Types | |
enum | PlacementUnitType { PlacementUnitType_UnpackedCell = 0, PlacementUnitType_Macro } |
Placement Instance Types. More... | |
typedef struct PlacementInfo::Location | Location |
typedef struct PlacementInfo::CellBinInfo | CellBinInfo |
record the bin information for a cell (BELtype, column/row, resource demand) More... | |
Public Member Functions | |
PlacementInfo (DesignInfo *designInfo, DeviceInfo *deviceInfo, std::map< std::string, std::string > &JSONCfg) | |
Construct a new Placement Info object based on the information of design and device. More... | |
~PlacementInfo () | |
void | printStat (bool verbose=false) |
CompatiblePlacementTable * | loadCompatiblePlacementTable (std::string cellType2fixedAmoFileName, std::string cellType2sharedCellTypeFileName, std::string sharedCellType2BELtypeFileName) |
describes the type mapping from design to device, where a cell can be placed (which BEL in which site) More... | |
CompatiblePlacementTable * | getCompatiblePlacementTable () |
void | setBELTypeForCells (DesignInfo *designInfo) |
float | getMinXFromSites (std::vector< DeviceInfo::DeviceSite * > &sites) |
Get the Min X of sites to identify the boundary of the device. More... | |
float | getMinYFromSites (std::vector< DeviceInfo::DeviceSite * > &sites) |
Get the Min Y of sites to identify the boundary of the device. More... | |
float | getMaxXFromSites (std::vector< DeviceInfo::DeviceSite * > &sites) |
Get the Max X of sites to identify the boundary of the device. More... | |
float | getMaxYFromSites (std::vector< DeviceInfo::DeviceSite * > &sites) |
Get the Max Y of sites to identify the boundary of the device. More... | |
void | createGridBins (float binWidth, float binHeight) |
Create a grid of bins on the device. More... | |
void | createSiteBinGrid () |
void | reloadNets () |
update PlacementNet objects when there are some updates of PlacementUnit objects (e.g., some cells are packed) More... | |
void | updateLongPaths () |
update the long path in the design and enhance their net weights More... | |
void | verifyDeviceForDesign () |
verify that each cells in the design can be mapped on the resource elements on the device. More... | |
std::vector< PlacementUnit * > & | getPlacementUnits () |
std::vector< PlacementMacro * > & | getPlacementMacros () |
std::vector< PlacementUnit * > & | getFixedPlacementUnits () |
std::vector< PlacementNet * > & | getPlacementNets () |
std::set< DesignInfo::DesignCell * > & | getCellInMacros () |
std::map< int, PlacementUnit * > & | getCellId2PlacementUnit () |
std::vector< PlacementUnit * > & | getCellId2PlacementUnitVec () |
std::vector< PlacementUnpackedCell * > & | getPlacementUnpackedCells () |
int | getNumCells () |
float | getGlobalMaxX () |
Get the Global Max X (right boundary of the device) More... | |
float | getGlobalMaxY () |
Get the Global Max Y (top boundary of the device) More... | |
float | getGlobalMinX () |
Get the Global Min X (left boundary of the device) More... | |
float | getGlobalMinY () |
Get the Global Min Y (bottom boundary of the device) More... | |
float | getGlobalBinMaxLocX () |
get right boundary of the bin grid More... | |
float | getGlobalBinMaxLocY () |
get top boundary of the bin grid More... | |
float | getGlobalBinMinLocX () |
get left boundary of the bin grid More... | |
float | getGlobalBinMinLocY () |
get bottom boundary of the bin grid More... | |
float | getDeviceMaxEdgeLength () |
std::vector< int > & | getPotentialBELTypeIDs (DesignInfo::DesignCell *cell) |
std::vector< int > & | getPotentialBELTypeIDs (DesignInfo::DesignCellType cellType) |
int | getSharedBELTypeId (std::string tmpStr) |
float | getActualOccupation (DesignInfo::DesignCell *cell) |
Get the actual occupation of a specific cell. More... | |
float | getInflateRatio (DesignInfo::DesignCell *cell) |
Get the inflate ratio of a cell. More... | |
std::vector< float > & | getcellId2Occupation () |
float | getOccupation (DesignInfo::DesignCellType cellType) |
Get the theoratical occupation of a specific cell type. More... | |
float | getActualOccupationByCellId (int id) |
Get the Actual Occupation By Cell Id. More... | |
std::vector< DesignInfo::DesignCell * > * | findNeiborLUTFFsFromBinGrid (DesignInfo::DesignCell *curCell, float displacementUpperbound, int minNumNeighbor=10) |
find neibor LUTs/FFs from bin grid More... | |
std::vector< std::vector< PlacementBinInfo * > > & | getBinGrid (unsigned int BELTypeId) |
Get the Bin Grid object. More... | |
std::vector< std::vector< std::vector< PlacementBinInfo * > > > & | getBinGrid () |
Get the Bin Grid object for all types of BEL. More... | |
std::vector< std::vector< PlacementSiteBinInfo * > > & | getSiteBinGrid () |
PlacementUnit * | getPlacementUnitByCell (DesignInfo::DesignCell *curCell) |
PlacementUnit * | getPlacementUnitByCellId (int cellId) |
PlacementNet * | getPlacementNetByDesignNetId (int netId) |
void | addB2BNetInPlacementInfo (std::vector< Eigen::Triplet< float >> &objectiveMatrixTripletList, std::vector< float > &objectiveMatrixDiag, Eigen::VectorXd &objectiveVector, int puId0, int puId1, float pos0, float pos1, float pinOffset0, float pinOffset1, bool movable0, bool movable1, float w) |
directly set weight in the quadratic Matrix and vector according to given request. More... | |
void | addPseudoNetsInPlacementInfo (std::vector< Eigen::Triplet< float >> &objectiveMatrixTripletList, std::vector< float > &objectiveMatrixDiag, Eigen::VectorXd &objectiveVector, PlacementUnit *tmpPU, float targetLoc, float pseudoWeight, float y2xRatio, bool updateX, bool updateY) |
directly set weight in the quadratic Matrix and vector according to given request. More... | |
void | updateCells2PlacementUnits () |
update the mapping from Cells to PlacementUnits, since sometime, PlacementUnits might change More... | |
void | updateElementBinGrid () |
map design cells to the bins in the bin grid. More... | |
void | adjustLUTFFUtilization_Routability (bool enfore) |
adjust the resource demand of LUTs/FFs according to routing congestion refer to RippleFPGA's implementation More... | |
void | adjustLUTFFUtilization_Routability_Reset () |
reset the inflate ratio of all the cells to be 1, for re-evaluation More... | |
void | adjustLUTFFUtilization_Packablity (float neighborDisplacementUpperbound, bool enfore) |
adjust the resource demand of LUTs/FFs according to packing feasibility More... | |
void | adjustLUTFFUtilization (float neighborDisplacementUpperbound, bool enfore=false) |
adjust the resource demand of LUTs/FFs according to packing feasibility and routing congestion More... | |
void | adjustLUTFFUtilization_Clocking () |
adjust the utlization of clock-related elements to mitigate the overflow of clock utilization More... | |
void | resetElementBinGrid () |
clean the information in bin grid More... | |
void | updateSiteBinGrid () |
void | resetSiteBinGrid () |
DesignInfo * | getDesignInfo () |
DeviceInfo * | getDeviceInfo () |
PlacementTimingInfo * | getTimingInfo () |
std::string | getBELType2FalseBELType (std::string curBELType) |
get the remapped BEL type of a specific BEL type since some cell can be placed in sites of different sites. For cell spreading, we need to remap some BEL types to a unified BEL types. Belows are some examples: More... | |
void | getGridXY (float cellX, float cellY, int &binIdX, int &binIdY) |
Get the Grid row/column based on given location X,Y. More... | |
void | legalizeXYInArea (PlacementUnit *curPU, float &fX, float &fY) |
move the PlacementUnit to ensure the cells in it are within the device area. More... | |
void | enforceLegalizeXYInArea (PlacementUnit *curPU) |
move the PlacementUnit to ensure the cells in it are within the device area. More... | |
bool | isLegalLocation (DesignInfo::DesignCell *curCell, float targetX, float targetY) |
check whether the PlacementUnit is legalized in the device area when a cell in it is placed at target location More... | |
bool | isLegalLocation (PlacementUnit *curPU, float targetX, float targetY) |
check whether the PlacementUnit is legalized in the device area when it is placed at target location More... | |
void | getPULocationByCellLocation (DesignInfo::DesignCell *curCell, float targetX, float targetY, float &PUX, float &PUY) |
std::vector< Location > & | getCellId2location () |
std::vector< Location > & | getPinId2location () |
float | getBinGridW () |
Get the width of a bin in grid. More... | |
float | getBinGridH () |
Get the height of a bin in grid. More... | |
void | setPULegalXY (std::map< PlacementInfo::PlacementUnit *, float > &PU2X, std::map< PlacementInfo::PlacementUnit *, float > &PU2Y) |
set the legalization of some PlacementUnit objects More... | |
void | setPULegalSite (std::map< PlacementInfo::PlacementUnit *, std::vector< DeviceInfo::DeviceSite * >> &PU2Sites) |
set the sites occupied by the PlacementUnit objects More... | |
std::map< PlacementInfo::PlacementUnit *, std::vector< DeviceInfo::DeviceSite * > > & | getPULegalSite () |
get the sites occupied by the legalized PlacementUnit objects More... | |
std::pair< std::map< PlacementInfo::PlacementUnit *, float >, std::map< PlacementInfo::PlacementUnit *, float > > & | getPULegalXY () |
get the locations (pair of X,Y) of the legalized PlacementUnit objects More... | |
void | resetPULegalInformation () |
forget all the legalization information More... | |
void | deleteLegalizationInfoFor (PlacementInfo::PlacementUnit *curPU) |
remove the legalization information of a PlacementUnit object More... | |
void | setCellBinInfo (int cellId, int sharedTypeId, int X, int Y, float occupation) |
Set the cell bin Information of a design cell. More... | |
void | transferCellBinInfo (int cellId, float fX, int fY) |
update the bin information of a design cell when it is moved to a new location More... | |
float | getDisplacement (float fX, float fY, DeviceInfo::DeviceSite *curSite) |
Get the Displacement from a given location to a device site (y2xRatio is considered.) More... | |
std::vector< DeviceInfo::DeviceSite * > * | findNeiborSiteFromBinGrid (DesignInfo::DesignCell *curCell, float targetX, float targetY, float displacementThreshold, int siteNumThreshold, bool checkClockRegion=false) |
find neibor device sites of a given cell from bin grid More... | |
std::vector< CellBinInfo > & | getCellId2CellBinInfo () |
std::vector< DesignInfo::DesignCell * > & | getCells () |
std::vector< std::vector< PlacementNet * > > & | getPlacementUnitId2Nets () |
double | updateB2BAndGetTotalHPWL () |
update the B2B net model for the placement and get the total HPWL of all the nets in the design More... | |
double | getTotalHPWL () |
get the total HPWL of all the nets in the design without updating the B2B net model for the placement More... | |
void | setProgress (float p) |
Set the progress ratio, indicating the progress of the placement convergence,. More... | |
float | getProgress () |
Get the Progress ratio of the placement. More... | |
void | dumpCongestion (std::string dumpFileName) |
dump the congestion mesh grid for evaluation More... | |
void | dumpVivadoPlacementTclWithPULegalizationInfo (std::string dumpFile) |
dump the placement commands to place cells in Vivado (do not use this temporarily) More... | |
void | dumpPlacementUnitInformation (std::string dumpFile) |
dump the PlacementUnit objects and some placement parameters as a checkpoint More... | |
void | loadPlacementUnitInformation (std::string locationFile) |
load the data of the PlacementUnit objects and some placement parameters from a checkpoint file More... | |
void | setPseudoNetWeight (float weight) |
Set the Pseudo Net Weight according to a given value. More... | |
float | getPseudoNetWeight () |
Get the Pseudo Net Weight object. More... | |
int | getMacroPseudoNetEnhanceCnt () |
Get the Macro Pseudo Net Enhance Counter. More... | |
float | getMacroLegalizationWeight () |
Get the Macro Legalization Weight. More... | |
void | setMacroLegalizationParameters (int cnt, float _macroLegalizationWeight) |
Set the Macro Legalization Parameters. More... | |
void | resetLUTFFDeterminedOccupation () |
reset the LUTFFDeterminedOccupation object More... | |
int | getDeterminedOccupation (int cellId) |
void | setDeterminedOccupation (int cellId, int occupation) |
Set the Determined Occupation of a specific cell. More... | |
unsigned int | getPairPinNum (DesignInfo::DesignCell *LUTA, DesignInfo::DesignCell *LUTB) |
Get the Pair Pin Num of two LUTs. More... | |
void | calculateNetNumDistributionOfPUs () |
calculate the proportion of the PlacementUnit objects with high interconnection density More... | |
float | getPUWithManyNetsRatio () |
get the proportion of the PlacementUnit objects with high interconnection density More... | |
void | setMinHPWL (float val) |
record the minimum HPWL during placement procedure More... | |
float | getMinHPWL () |
bool | checkClockUtilization (bool dump) |
check the utlization of the clock regions on the device More... | |
void | enhanceRiskyClockNet () |
void | enhanceDDRNet () |
void | enhanceHighFanoutNet () |
void | dumpOverflowClockUtilization () |
bool | checkClockColumnLegalization (PlacementInfo::PlacementUnit *curPU, DeviceInfo::DeviceSite *curSite) |
check whether the given PlacementUnit can be mapped to the site considering the half-column clock legalization rules More... | |
int | getClockColumnUtilizationIncrease (PlacementInfo::PlacementUnit *curPU, DeviceInfo::DeviceSite *curSite) |
check the clock resource increase extent if the given PlacementUnit can be mapped to the site considering the half-column clock legalization rules More... | |
void | printOutClockColumnLegalization (PlacementInfo::PlacementUnit *curPU, DeviceInfo::DeviceSite *curSite) |
void | addPUIntoClockColumn (PlacementInfo::PlacementUnit *curPU, DeviceInfo::DeviceSite *curSite) |
map the given PlacementUnit to the site for later checking of the half-column clock legalization rules More... | |
std::vector< std::vector< PlacementUnit * > > & | getLongPaths () |
Get the Long Paths in the net list for later optimization. More... | |
void | optimizeLongPaths () |
make the PlacementUnits in the long path closer to each other More... | |
void | buildSimpleTimingGraph () |
call timing info to build simple timing graph More... | |
std::map< PlacementUnit *, std::pair< float, float > > & | getPU2ClockRegionCenters () |
get the PlacementUnit Mapping to clock region centers for timing optimzation More... | |
std::map< PlacementUnit *, int > & | getPU2ClockRegionColumn () |
get the PlacementUnit Mapping to clock region column for timing optimzation More... | |
int | getLongPathThresholdLevel () |
int | getMediumPathThresholdLevel () |
std::map< DeviceInfo::ClockColumn *, std::set< DesignInfo::DesignNet * > > & | getClockCol2ClockNets () |
std::vector< std::vector< PlacementBinInfo * > > & | getGlobalBinGrid () |
void | setClusterNum (int _clusterNum) |
int | getClusterNum () |
bool | isDensePlacement () |
bool | isClockLegalizationRisky () |
int | getHighFanOutThr () |
int | getNetDistributionByDensity (int density) |
float | getMacroRatio () |
void | setPaintDataBase (PaintDataBase *_paintData) |
void | transferPaintData () |
Private Types | |
typedef struct PlacementInfo::_ClockNetCoverage | ClockNetCoverage |
the retangular clock region coverage of a clock net More... | |
Private Attributes | |
CompatiblePlacementTable * | compatiblePlacementTable = nullptr |
std::vector< PlacementUnit * > | placementUnits |
std::vector< PlacementUnpackedCell * > | placementUnpackedCells |
std::vector< PlacementMacro * > | placementMacros |
std::vector< PlacementUnit * > | fixedPlacementUnits |
std::set< DesignInfo::DesignCell * > | cellInMacros |
std::map< int, PlacementUnit * > | cellId2PlacementUnit |
std::vector< PlacementUnit * > | cellId2PlacementUnitVec |
std::vector< CellBinInfo > | cellId2CellBinInfo |
std::vector< Location > | cellId2location |
std::vector< Location > | pinId2location |
DesignInfo * | designInfo |
DeviceInfo * | deviceInfo |
PlacementTimingInfo * | simplePlacementTimingInfo = nullptr |
std::pair< std::map< PlacementInfo::PlacementUnit *, float >, std::map< PlacementInfo::PlacementUnit *, float > > | PULegalXY |
a mapping from PlaceuementUnit objects to legalized locations More... | |
std::map< PlacementInfo::PlacementUnit *, std::vector< DeviceInfo::DeviceSite * > > | PU2LegalSites |
a mapping from PlaceuementUnit objects to device sites More... | |
float | globalMinX |
left boundary of the device More... | |
float | globalMinY |
bottom boundary of the device More... | |
float | globalMaxX |
right boundary of the device More... | |
float | globalMaxY |
top boundary of the device More... | |
float | startX |
left boundary of the bin grid More... | |
float | startY |
bottom boundary of the bin grid More... | |
float | endX |
right boundary of the bin grid More... | |
float | endY |
bottom boundary of the bin grid More... | |
float | eps = 1e-5 |
std::vector< std::vector< std::vector< PlacementBinInfo * > > > | SharedBELTypeBinGrid |
std::vector< std::vector< PlacementBinInfo * > > | LUTFFBinGrid |
Bin Grid for LUTs and FFs, mainly for searching neighbor elements during packing. More... | |
std::vector< std::vector< PlacementBinInfo * > > | globalBinGrid |
Bin Grid includes all types of sites, mainly for congestion evalution. More... | |
std::vector< std::vector< PlacementSiteBinInfo * > > | siteGridForMacros |
float | binWidth |
float | binHeight |
std::vector< PlacementNet * > | placementNets |
std::vector< std::vector< PlacementNet * > > | placementUnitId2Nets |
std::vector< PlacementNet * > | designNetId2PlacementNet |
std::vector< PlacementNet * > | clockNets |
std::vector< std::vector< int > > | clockRegionUtilization |
std::set< PlacementUnit * > | PUSetContainingFF |
std::vector< PlacementUnit * > | PUsContainingFF |
std::vector< std::vector< PlacementUnit * > > | longPaths |
std::map< PlacementUnit *, std::pair< float, float > > | PU2ClockRegionCenters |
std::map< PlacementUnit *, int > | PU2ClockRegionColumn |
std::map< DeviceInfo::ClockColumn *, std::set< DesignInfo::DesignNet * > > | clockCol2ClockNets |
PaintDataBase * | paintData = nullptr |
std::vector< float > | PaintXs |
std::vector< float > | PaintYs |
std::vector< int > | PaintTypes |
std::vector< ClockNetCoverage > | clockNetCoverages |
float | placementProressRatio = 0.01 |
the progress ratio, indicating the progress of the placement convergence. More... | |
std::map< std::string, std::string > & | JSONCfg |
std::string | cellType2fixedAmoFileName |
std::string | cellType2sharedCellTypeFileName |
std::string | sharedCellType2BELtypeFileName |
int | netPinNumDistribution [8] = {8, 16, 24, 32, 64, 256, 512, 1000000} |
int | netDistribution [8] = {0, 0, 0, 0, 0, 0, 0, 0} |
float | y2xRatio = 1.0 |
a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate More... | |
int | longPathThresholdLevel = 10 |
the long path threshold for timing optimization More... | |
int | mediumPathThresholdLevel = 5 |
the medium path threshold for timing optimization More... | |
int | dumpPlacementUnitLocationCnt = 0 |
int | clusterNum = 1 |
bool | clockLegalizationRisky = false |
float | oriPseudoNetWeight = -1 |
int | macroPseudoNetEnhanceCnt = -1 |
float | macroLegalizationWeight = -1 |
float | lastProgressWhenLUTFFUtilAdjust = -1.0 |
float | PUWithManyNetsRatio = -1 |
float | minHPWL = 1e8 |
bool | LUTFFUtilizationAdjusted = false |
int | highFanOutThr = 10000000 |
float | macroRatio = 0.0 |
bool | guiEnable = false |
Information related to FPGA placement (wirelength optimization, cell spreading, legalization, packing)
includes design information, device information includes numerical information for: wirelength optimization: Bound2Bound model, HPWL for nets, macros cell spreading: bin grid, instance density, routing congestion, packability legalization: mapping design instance to device site at coarse-grained level packing: mapping fine-grained instances to sites (e.g., CLB site)
Definition at line 58 of file PlacementInfo.h.
typedef struct PlacementInfo::CellBinInfo PlacementInfo::CellBinInfo |
record the bin information for a cell (BELtype, column/row, resource demand)
|
private |
the retangular clock region coverage of a clock net
typedef struct PlacementInfo::Location PlacementInfo::Location |
Placement Instance Types.
UnpackedCell: the smallest, indivisible, representable component Macro: a fixed group of multiple standard cells with constraints of their relative locations
Enumerator | |
---|---|
PlacementUnitType_UnpackedCell | |
PlacementUnitType_Macro |
Definition at line 67 of file PlacementInfo.h.
PlacementInfo::PlacementInfo | ( | DesignInfo * | designInfo, |
DeviceInfo * | deviceInfo, | ||
std::map< std::string, std::string > & | JSONCfg | ||
) |
Construct a new Placement Info object based on the information of design and device.
designInfo | |
deviceInfo | |
JSONCfg | user-defined placement configuration |
Definition at line 36 of file PlacementInfo.cc.
|
inline |
Definition at line 2697 of file PlacementInfo.h.
|
inline |
directly set weight in the quadratic Matrix and vector according to given request.
Usually B2B Net will be called inside PlacementNet, but we set this API to handle pseudo net settings.
objectiveMatrixTripletList | The non-Diag elements in matrix Q, stored in the vector of Eigen Triplet (i,j,val) |
objectiveMatrixDiag | The Diag elements in matrix Q, stored in a 1-D vector |
objectiveVector | The elements in the vector P |
puId0 | PlacementUnit 0's Id (might be invaid -1) |
puId1 | PlacementUnit 1's Id (might be invaid -1) |
pos0 | PlacementUnit 0's position on one of the dimensions |
pos1 | PlacementUnit 1's position on one of the dimensions |
pinOffset0 | The pin's offset in PlacementUnit 0 |
pinOffset1 | The pin's offset in PlacementUnit 1 |
movable0 | whether the object 0 is movable |
movable1 | whether the object 0 is movable |
w | the weight of the net |
Definition at line 3159 of file PlacementInfo.h.
Referenced by addPseudoNetsInPlacementInfo().
|
inline |
directly set weight in the quadratic Matrix and vector according to given request.
Usually B2B Net will be called inside PlacementNet, but we set this API to handle pseudo net settings.
objectiveMatrixTripletList | The non-Diag elements in matrix Q, stored in the vector of Eigen Triplet (i,j,val) |
objectiveMatrixDiag | The Diag elements in matrix Q, stored in a 1-D vector |
objectiveVector | The elements in the vector P |
tmpPU | PlacementUnit which need a pseudo net |
targetLoc | the location of the anchor which the pseudo net connected to |
pseudoWeight | pseudo net weight to constrain the movement of PlacementUnits from their locations in last optimization iteration |
y2xRatio | a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate |
updateX | update the X-coordinate term in the quadratic problem |
updateY | update the X-coordinate term in the quadratic problem |
Definition at line 3228 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet2LoctionForAllPUs(), WirelengthOptimizer::addPseudoNetForMacros(), WirelengthOptimizer::updatePseudoNetForClockRegion(), and WirelengthOptimizer::updatePseudoNetForUserDefinedClusters().
|
inline |
map the given PlacementUnit to the site for later checking of the half-column clock legalization rules
curPU | a given PU |
curSite | the target site |
Definition at line 4301 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::packCLBsIteration(), ParallelCLBPacker::prePackLegalizedMacros(), ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath(), ParallelCLBPacker::timingDrivenDetailedPlacement_swap(), and ParallelCLBPacker::PackingCLBSite::updateConsistentPUsInTop().
void PlacementInfo::adjustLUTFFUtilization | ( | float | neighborDisplacementUpperbound, |
bool | enfore = false |
||
) |
adjust the resource demand of LUTs/FFs according to packing feasibility and routing congestion
neighborDisplacementUpperbound | set displacement threshold to identify the neighbors of a cell |
enfore | enfore adjustment without considering other factors |
Definition at line 1544 of file PlacementInfo.cc.
Referenced by AMFPlacer::run(), and GlobalPlacer::spreading().
void PlacementInfo::adjustLUTFFUtilization_Clocking | ( | ) |
adjust the utlization of clock-related elements to mitigate the overflow of clock utilization
Definition at line 1409 of file PlacementInfo.cc.
Referenced by adjustLUTFFUtilization().
void PlacementInfo::adjustLUTFFUtilization_Packablity | ( | float | neighborDisplacementUpperbound, |
bool | enfore | ||
) |
adjust the resource demand of LUTs/FFs according to packing feasibility
neighborDisplacementUpperbound | set displacement threshold to identify the neighbors of a cell |
enfore | enfore adjustment without considering other factors |
Definition at line 1073 of file PlacementInfo.cc.
Referenced by adjustLUTFFUtilization().
void PlacementInfo::adjustLUTFFUtilization_Routability | ( | bool | enfore | ) |
adjust the resource demand of LUTs/FFs according to routing congestion refer to RippleFPGA's implementation
enfore | enfore adjustment without considering other factors |
Definition at line 1273 of file PlacementInfo.cc.
Referenced by adjustLUTFFUtilization().
void PlacementInfo::adjustLUTFFUtilization_Routability_Reset | ( | ) |
reset the inflate ratio of all the cells to be 1, for re-evaluation
Definition at line 1511 of file PlacementInfo.cc.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements(), and GlobalPlacer::updatePseudoNetWeight().
|
inline |
call timing info to build simple timing graph
Definition at line 4331 of file PlacementInfo.h.
Referenced by AMFPlacer::run().
|
inline |
calculate the proportion of the PlacementUnit objects with high interconnection density
if a PlacementUnit connects to more than 30 nets, count it. calculate the proportion of the PlacementUnit objects with high interconnection density
Definition at line 4176 of file PlacementInfo.h.
Referenced by InitialPacker::pack().
|
inline |
check whether the given PlacementUnit can be mapped to the site considering the half-column clock legalization rules
curPU | a given PU |
curSite | the target site |
Definition at line 4242 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::areAllPUsValidForThisSite(), ParallelCLBPacker::packCLBsIteration(), and ParallelCLBPacker::PackingCLBSite::updateConsistentPUsInTop().
bool PlacementInfo::checkClockUtilization | ( | bool | dump | ) |
check the utlization of the clock regions on the device
dump | dump the clock utilization |
Definition at line 2087 of file PlacementInfo.cc.
Referenced by ClusterPlacer::ClusterPlacement(), GlobalPlacer::GlobalPlacement_CLBElements(), and AMFPlacer::run().
void PlacementInfo::createGridBins | ( | float | binWidth, |
float | binHeight | ||
) |
Create a grid of bins on the device.
binWidth | the width of each bin |
binHeight | the height of each bin |
Definition at line 325 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
void PlacementInfo::createSiteBinGrid | ( | ) |
|
inline |
remove the legalization information of a PlacementUnit object
curPU |
Definition at line 3714 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::updatePackedMacro().
void PlacementInfo::dumpCongestion | ( | std::string | dumpFileName | ) |
dump the congestion mesh grid for evaluation
dumpFileName |
Definition at line 1562 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
void PlacementInfo::dumpOverflowClockUtilization | ( | ) |
Definition at line 2163 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
void PlacementInfo::dumpPlacementUnitInformation | ( | std::string | dumpFile | ) |
dump the PlacementUnit objects and some placement parameters as a checkpoint
dumpFile |
Definition at line 1723 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
void PlacementInfo::dumpVivadoPlacementTclWithPULegalizationInfo | ( | std::string | dumpFile | ) |
dump the placement commands to place cells in Vivado (do not use this temporarily)
(do not use this temporarily) We move this functionality to the packer/placer. There is a conterpart function in ParallelPack, which is relatively complete. We will collect those information back to PlacementInfo in later implementation.
dumpFile |
Definition at line 1696 of file PlacementInfo.cc.
|
inline |
move the PlacementUnit to ensure the cells in it are within the device area.
curPU | target PlacementUnit |
Definition at line 3402 of file PlacementInfo.h.
Referenced by optimizeLongPaths(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), and GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocationsWorker().
void PlacementInfo::enhanceDDRNet | ( | ) |
Definition at line 2073 of file PlacementInfo.cc.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
void PlacementInfo::enhanceHighFanoutNet | ( | ) |
Definition at line 2019 of file PlacementInfo.cc.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
void PlacementInfo::enhanceRiskyClockNet | ( | ) |
Definition at line 2034 of file PlacementInfo.cc.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
|
inline |
find neibor LUTs/FFs from bin grid
curCell | target Cell |
displacementUpperbound | displacement threshold |
minNumNeighbor | currently not used |
Definition at line 3009 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity().
|
inline |
find neibor device sites of a given cell from bin grid
curCell | target cell |
targetX | target location X |
targetY | target location Y |
displacementThreshold | the displacement threshold from the sites to the target location |
siteNumThreshold | if the number of sites exceed this threshold, stop the searching |
checkClockRegion | enable to check whether the clock region column of the sites are the same as the one of the cell |
Definition at line 3799 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::dumpFinalPacking(), MacroLegalizer::findMacroCell2SitesInDistance(), and CLBLegalizer::findPU2SitesInDistance().
|
inline |
Get the actual occupation of a specific cell.
cell |
it will be the multiplication of cellId2Occupation and cellId2InfationRatio. cellId2Occupation might be adjusted by the packing feasibility. cellId2InfationRatio might be adjusted by the routing congestion level.
Definition at line 2957 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::exceptionHandling(), and updateElementBinGrid().
|
inline |
Get the Actual Occupation By Cell Id.
id |
Definition at line 2995 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::dumpFinalPacking(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getTotalCellWeight(), GeneralSpreader::SpreadRegion::SubBox::spreadCellsH(), and GeneralSpreader::SpreadRegion::SubBox::spreadCellsV().
|
inline |
get the remapped BEL type of a specific BEL type since some cell can be placed in sites of different sites. For cell spreading, we need to remap some BEL types to a unified BEL types. Belows are some examples:
SLICEM_CARRY8 => SLICEL_CARRY8
SLICEM_LUT => SLICEL_LUT
SLICEM_FF => SLICEL_FF
curBELType |
Definition at line 3331 of file PlacementInfo.h.
Referenced by createGridBins().
|
inline |
Get the Bin Grid object for all types of BEL.
Definition at line 3110 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), adjustLUTFFUtilization_Routability(), adjustLUTFFUtilization_Routability_Reset(), and updateElementBinGrid().
|
inline |
Get the Bin Grid object.
BELTypeId | indicate the target BELtype ID, since we map the different resource to different grid for easier processing |
Definition at line 3099 of file PlacementInfo.h.
Referenced by GeneralSpreader::dumpSiteGridDensity(), ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid(), and ParallelCLBPacker::findNeiborSitesFromBinGrid().
|
inline |
Get the height of a bin in grid.
Definition at line 3625 of file PlacementInfo.h.
Referenced by GeneralSpreader::SpreadRegion::SubBox::spreadCellsV().
|
inline |
Get the width of a bin in grid.
Definition at line 3615 of file PlacementInfo.h.
Referenced by GeneralSpreader::SpreadRegion::SubBox::spreadCellsH(), and GlobalPlacer::spreading().
|
inline |
Definition at line 3893 of file PlacementInfo.h.
|
inline |
Definition at line 3600 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), PlacementTimingOptimizer::conductStaticTimingAnalysis(), GeneralSpreader::DumpCellsCoordinate(), IncrementalBELPacker::FFPairing(), PlacementTimingOptimizer::getPUId2Slack(), PlacementTimingOptimizer::getSlackThr(), PlacementTimingOptimizer::getWorstSlackOfCell(), IncrementalBELPacker::LUTFFPairing(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), GeneralSpreader::SpreadRegion::SubBox::Partition(), PlacementTimingOptimizer::setPinsLocation(), GeneralSpreader::SpreadRegion::SubBox::spreadCellsH(), GeneralSpreader::SpreadRegion::SubBox::spreadCellsV(), GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::updatePackedMacro(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), and GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocationsWorker().
|
inline |
|
inline |
Definition at line 2830 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacement_fixedCLB().
|
inline |
Definition at line 2834 of file PlacementInfo.h.
|
inline |
Definition at line 2826 of file PlacementInfo.h.
|
inline |
Definition at line 3898 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), adjustLUTFFUtilization_Packablity(), adjustLUTFFUtilization_Routability(), adjustLUTFFUtilization_Routability_Reset(), ParallelCLBPacker::checkPackedPUsAndUnpackedPUs(), ParallelCLBPacker::dumpFinalPacking(), MacroLegalizer::getMacrosToLegalize(), GlobalPlacer::GlobalPlacement_fixedCLB(), loadPlacementUnitInformation(), ParallelCLBPacker::packCLBs(), PlacementTimingOptimizer::setPinsLocation(), and GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate().
|
inline |
Definition at line 4368 of file PlacementInfo.h.
|
inline |
check the clock resource increase extent if the given PlacementUnit can be mapped to the site considering the half-column clock legalization rules
curPU | a given PU |
curSite | the target site |
Definition at line 4266 of file PlacementInfo.h.
|
inline |
Definition at line 4383 of file PlacementInfo.h.
Referenced by isDensePlacement().
|
inline |
Definition at line 2740 of file PlacementInfo.h.
Referenced by loadPlacementUnitInformation(), and ParallelCLBPacker::updatePackedMacro().
|
inline |
Definition at line 3303 of file PlacementInfo.h.
Referenced by ClusterPlacer::clockBasedPartitioning(), ClusterPlacer::createClockBasedClusterUnits(), ClusterPlacer::createUserDefinedClusterBasedClusterUnits(), GlobalPlacer::GlobalPlacement_CLBElements(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), PlacementTimingOptimizer::PlacementTimingOptimizer(), ClusterPlacer::refineClustersWithPredefinedClusters(), WirelengthOptimizer::reloadPlacementInfo(), and WirelengthOptimizer::updatePseudoNetForUserDefinedClusters().
|
inline |
@briefget the Determined Occupation of a specific cell
LUTFFDeterminedOccupation is used to record the final resource demand of a LUT/FF after final packing
cellId | target cell |
Definition at line 4099 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity().
|
inline |
Definition at line 3308 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid(), ParallelCLBPacker::findNeiborSitesFromBinGrid(), PlacementInfo::PlacementNet::getNewHPWLByTrying(), GlobalPlacer::GlobalPlacer(), ClusterPlacer::isDensePlacement(), isDensePlacement(), GlobalPlacer::macroLegalize(), ParallelCLBPacker::ParallelCLBPacker(), PlacementTimingOptimizer::PlacementTimingOptimizer(), PlacementInfo::PlacementNet::updateBound2BoundNetWeight(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), and WirelengthOptimizer::updatePseudoNetForClockRegion().
|
inline |
Definition at line 2927 of file PlacementInfo.h.
|
inline |
Get the Displacement from a given location to a device site (y2xRatio is considered.)
fX | given X |
fY | given Y |
curSite | target device site |
Definition at line 3781 of file PlacementInfo.h.
Referenced by findNeiborSiteFromBinGrid().
|
inline |
Definition at line 2818 of file PlacementInfo.h.
Referenced by ClusterPlacer::setClusterNetsAdjMat().
|
inline |
Definition at line 4373 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::stretchClockRegionColumns().
|
inline |
get right boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 2892 of file PlacementInfo.h.
|
inline |
get top boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 2902 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::stretchClockRegionColumns().
|
inline |
get left boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 2912 of file PlacementInfo.h.
|
inline |
get bottom boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 2922 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::stretchClockRegionColumns().
|
inline |
Get the Global Max X (right boundary of the device)
Definition at line 2852 of file PlacementInfo.h.
Referenced by ClusterPlacer::ClusterPlacement(), GeneralSpreader::makeCellInLegalArea(), ClusterPlacer::placeClusters(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), WirelengthOptimizer::reloadPlacementInfo(), ClusterPlacer::setClusterNetsAdjMat(), and WirelengthOptimizer::WirelengthOptimizer().
|
inline |
Get the Global Max Y (top boundary of the device)
Definition at line 2862 of file PlacementInfo.h.
Referenced by ClusterPlacer::ClusterPlacement(), GeneralSpreader::makeCellInLegalArea(), ClusterPlacer::placeClusters(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), WirelengthOptimizer::reloadPlacementInfo(), and WirelengthOptimizer::WirelengthOptimizer().
|
inline |
Get the Global Min X (left boundary of the device)
Definition at line 2872 of file PlacementInfo.h.
Referenced by ClusterPlacer::ClusterPlacement(), GeneralSpreader::makeCellInLegalArea(), ClusterPlacer::placeClusters(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), WirelengthOptimizer::reloadPlacementInfo(), ClusterPlacer::setClusterNetsAdjMat(), and WirelengthOptimizer::WirelengthOptimizer().
|
inline |
Get the Global Min Y (bottom boundary of the device)
Definition at line 2882 of file PlacementInfo.h.
Referenced by ClusterPlacer::ClusterPlacement(), GeneralSpreader::makeCellInLegalArea(), ClusterPlacer::placeClusters(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), WirelengthOptimizer::reloadPlacementInfo(), and WirelengthOptimizer::WirelengthOptimizer().
|
inline |
Get the Grid row/column based on given location X,Y.
cellX | input X |
cellY | input Y |
binIdX | output target column of grid |
binIdY | output target row of grid |
Definition at line 3344 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity(), adjustLUTFFUtilization_Routability(), findNeiborLUTFFsFromBinGrid(), ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid(), findNeiborSiteFromBinGrid(), ParallelCLBPacker::findNeiborSitesFromBinGrid(), PlacementTimingOptimizer::stretchClockRegionColumns(), transferCellBinInfo(), and updateElementBinGrid().
|
inline |
Definition at line 4399 of file PlacementInfo.h.
|
inline |
Get the inflate ratio of a cell.
cell |
Definition at line 2968 of file PlacementInfo.h.
|
inline |
Get the Long Paths in the net list for later optimization.
Definition at line 4316 of file PlacementInfo.h.
|
inline |
Definition at line 4358 of file PlacementInfo.h.
Referenced by ClusterPlacer::createLongPathClusterUnits(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), and AMFPlacer::run().
|
inline |
Get the Macro Legalization Weight.
it is the legalization pseudo nets for macros.
Definition at line 4060 of file PlacementInfo.h.
Referenced by dumpPlacementUnitInformation().
|
inline |
Get the Macro Pseudo Net Enhance Counter.
The legalization pseudo nets for macros are strengthened as this counter is increased, so we can force the macros get closer and closer to their legal location.
Definition at line 4040 of file PlacementInfo.h.
Referenced by dumpPlacementUnitInformation().
|
inline |
Definition at line 4418 of file PlacementInfo.h.
float PlacementInfo::getMaxXFromSites | ( | std::vector< DeviceInfo::DeviceSite * > & | sites | ) |
Get the Max X of sites to identify the boundary of the device.
sites |
Definition at line 272 of file PlacementInfo.cc.
Referenced by PlacementInfo().
float PlacementInfo::getMaxYFromSites | ( | std::vector< DeviceInfo::DeviceSite * > & | sites | ) |
Get the Max Y of sites to identify the boundary of the device.
sites |
Definition at line 283 of file PlacementInfo.cc.
Referenced by PlacementInfo().
|
inline |
Definition at line 4363 of file PlacementInfo.h.
Referenced by ClusterPlacer::setClusterNetsAdjMat().
|
inline |
Definition at line 4210 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacer().
float PlacementInfo::getMinXFromSites | ( | std::vector< DeviceInfo::DeviceSite * > & | sites | ) |
Get the Min X of sites to identify the boundary of the device.
sites |
Definition at line 250 of file PlacementInfo.cc.
Referenced by PlacementInfo().
float PlacementInfo::getMinYFromSites | ( | std::vector< DeviceInfo::DeviceSite * > & | sites | ) |
Get the Min Y of sites to identify the boundary of the device.
sites |
Definition at line 261 of file PlacementInfo.cc.
Referenced by PlacementInfo().
|
inline |
Definition at line 4404 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), and PlacementTimingOptimizer::conductStaticTimingAnalysis().
|
inline |
Definition at line 2842 of file PlacementInfo.h.
Referenced by ClusterPlacer::hypergraphPartitioning().
|
inline |
Get the theoratical occupation of a specific cell type.
cellType |
Definition at line 2984 of file PlacementInfo.h.
|
inline |
Get the Pair Pin Num of two LUTs.
Two LUTs can share the input pins of a BEL in CLB. However, device architecture might have requirements on their demands of the number of input pins. This function will return the total number of input pins for the two LUTs.
LUTA | LUT Cell A |
LUTB | LUT Cell A |
Definition at line 4127 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity().
|
inline |
Definition at line 3605 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::conductStaticTimingAnalysis(), PlacementTimingOptimizer::incrementalStaticTimingAnalysis_forPUWithLocation(), and PlacementTimingOptimizer::setPinsLocation().
|
inline |
Definition at line 2814 of file PlacementInfo.h.
Referenced by InitialPacker::dumpMacroHighLight().
|
inline |
Definition at line 3134 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::LUTLUTPairing_TimingDriven().
|
inline |
Definition at line 2822 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), ClusterPlacer::basicPartitioning(), ClusterPlacer::creaeClusterNets(), InitialPacker::enhanceIONets(), PlacementTimingOptimizer::getSlackThr(), WirelengthOptimizer::reloadPlacementInfo(), ClusterPlacer::setClusterNetsAdjMat(), WirelengthOptimizer::updateB2BNetWeight(), and WirelengthOptimizer::updateB2BNetWeightWorker().
|
inline |
Definition at line 3120 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::checkPackedPUsAndUnpackedPUs(), ClusterPlacer::createClockBasedClusterUnits(), ClusterPlacer::createLongPathClusterUnits(), ClusterPlacer::createUserDefinedClusterBasedClusterUnits(), ParallelCLBPacker::dumpCLBPlacementTcl(), ParallelCLBPacker::dumpFinalPacking(), MacroLegalizer::dumpMatching(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCarrySite(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCommonLUTFFInSite(), ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid(), MacroLegalizer::getHPWLChange(), MacroLegalizer::getMacrosToLegalize(), ParallelCLBPacker::PackingCLBSite::greedyMapMuxForCommonLUTFFInSite(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::isCarryMacro(), ParallelCLBPacker::PackingCLBSite::isCarryMacro(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::isMuxMacro(), ParallelCLBPacker::PackingCLBSite::isMuxMacro(), ParallelCLBPacker::PackingCLBSite::mapCarryRelatedCellsToSlots(), ClusterPlacer::refineClustersWithPredefinedClusters(), GeneralSpreader::spreadPlacementUnits(), WirelengthOptimizer::updatePseudoNetForUserDefinedClusters(), and MacroLegalizer::updatePUMatchingLocation().
|
inline |
Definition at line 3127 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ClusterPlacer::createLongPathClusterUnits(), PlacementTimingOptimizer::findCriticalPaths(), findNeiborSiteFromBinGrid(), MacroLegalizer::findPossibleLegalLocation(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), ParallelCLBPacker::packCLBs(), ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath(), GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath_intermediate(), ParallelCLBPacker::timingDrivenDetailedPlacement_swap(), transferPaintData(), and GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations().
|
inline |
Definition at line 3903 of file PlacementInfo.h.
Referenced by CLBLegalizer::getHPWLChange(), and MacroLegalizer::getHPWLChange().
|
inline |
Definition at line 2810 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet2LoctionForAllPUs(), ClusterPlacer::basicPartitioning(), AMFPlacer::clearSomeAttributesCannotRecord(), ClusterPlacer::clockBasedPartitioning(), ClusterPlacer::ClusterPlacement(), ClusterPlacer::createLongPathClusterUnits(), ClusterPlacer::createSinglePUClusterUnits(), ClusterPlacer::createUserDefinedClusterBasedClusterUnits(), GlobalPlacer::dumpAllCellsCoordinate(), ParallelCLBPacker::dumpAllCellsCoordinate(), GlobalPlacer::dumpBRAMCoordinate(), GlobalPlacer::dumpCARRYCoordinate(), PlacementTimingOptimizer::dumpClockRegionClusters(), ClusterPlacer::dumpClusters(), GlobalPlacer::dumpDSPCoordinate(), GlobalPlacer::dumpFFCoordinate(), ParallelCLBPacker::dumpFinalPacking(), GlobalPlacer::dumpLUTCoordinate(), GeneralSpreader::dumpLUTFFCoordinate(), GlobalPlacer::dumpLUTFFCoordinate(), dumpPlacementUnitInformation(), PlacementTimingOptimizer::getPUId2Slack(), CLBLegalizer::getPUsToLegalize(), ClusterPlacer::isClustersToLarges(), ParallelCLBPacker::packCLBs(), ParallelCLBPacker::packCLBsIteration(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), GlobalPlacer::printPlacedUnits(), GeneralSpreader::recordSpreadedCellLocations(), WirelengthOptimizer::reloadPlacementInfo(), ClusterPlacer::resetClusterInfo(), ClusterPlacer::setClusterNetsAdjMat(), WirelengthOptimizer::solverLoadData(), WirelengthOptimizer::solverLoadFixedData(), WirelengthOptimizer::solverWriteBackData(), PlacementTimingOptimizer::stretchClockRegionColumns(), WirelengthOptimizer::updateB2BNetWeightWorker(), ClusterPlacer::userDefinedClusterBasedPartitioning(), and WirelengthOptimizer::WirelengthOptimizer().
|
inline |
Definition at line 2838 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::addNonCLBPackingSites().
|
inline |
Definition at line 2932 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), adjustLUTFFUtilization_Routability(), adjustLUTFFUtilization_Routability_Reset(), MacroLegalizer::findMacroType2AvailableSites(), ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid(), findNeiborSiteFromBinGrid(), ParallelCLBPacker::findNeiborSitesFromBinGrid(), and updateElementBinGrid().
|
inline |
|
inline |
Get the Progress ratio of the placement.
Definition at line 3969 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet2LoctionForAllPUs(), WirelengthOptimizer::addPseudoNetForMacros(), adjustLUTFFUtilization(), adjustLUTFFUtilization_Packablity(), and GlobalPlacer::GlobalPlacement_CLBElements().
|
inline |
Get the Pseudo Net Weight object.
usually it is used to set the configuration of placer or dump placement information
Definition at line 4026 of file PlacementInfo.h.
Referenced by dumpPlacementUnitInformation(), and ParallelCLBPacker::packCLBs().
|
inline |
get the PlacementUnit Mapping to clock region centers for timing optimzation
Definition at line 4343 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ParallelCLBPacker::packCLBs(), AMFPlacer::run(), and WirelengthOptimizer::updatePseudoNetForClockRegion().
|
inline |
get the PlacementUnit Mapping to clock region column for timing optimzation
Definition at line 4353 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), PlacementTimingOptimizer::stretchClockRegionColumns(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), and WirelengthOptimizer::updatePseudoNetForClockRegion().
|
inline |
get the sites occupied by the legalized PlacementUnit objects
Definition at line 3681 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::addNonCLBPackingSites(), ParallelCLBPacker::dumpDSPBRAMPlacementTcl(), and ParallelCLBPacker::prePackLegalizedMacros().
|
inline |
get the locations (pair of X,Y) of the legalized PlacementUnit objects
Definition at line 3693 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNetForMacros(), AMFPlacer::clearSomeAttributesCannotRecord(), MacroLegalizer::dumpMatching(), and GlobalPlacer::macroLegalize().
|
inline |
Definition at line 3546 of file PlacementInfo.h.
Referenced by MacroLegalizer::updatePUMatchingLocation().
|
inline |
get the proportion of the PlacementUnit objects with high interconnection density
Definition at line 4194 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacer().
|
inline |
Definition at line 2942 of file PlacementInfo.h.
Referenced by GeneralSpreader::dumpSiteGridDensity().
|
inline |
Definition at line 3115 of file PlacementInfo.h.
|
inline |
Definition at line 3313 of file PlacementInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), ParallelCLBPacker::PackingCLBSite::checkDirectLUTFFConnect_slack(), PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ClusterPlacer::createLongPathClusterUnits(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCarrySite(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCommonLUTFFInSite(), ClusterPlacer::getPlacementUnitMaxPathLen(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getPlacementUnitMaxPathLen(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getPlacementUnitMaxPathNegativeSlack(), PlacementTimingOptimizer::getPUId2Slack(), PlacementTimingOptimizer::getSlackThr(), PlacementTimingOptimizer::getWorstSlackOfCell(), ParallelCLBPacker::PackingCLBSite::greedyMapMuxForCommonLUTFFInSite(), WirelengthOptimizer::LUTLUTPairing_TimingDriven(), and AMFPlacer::run().
|
inline |
get the total HPWL of all the nets in the design without updating the B2B net model for the placement
Definition at line 3939 of file PlacementInfo.h.
|
inline |
Definition at line 4394 of file PlacementInfo.h.
Referenced by GlobalPlacer::updatePseudoNetWeight().
|
inline |
Definition at line 4388 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ParallelCLBPacker::exceptionHandling(), and GlobalPlacer::updatePseudoNetWeight().
|
inline |
check whether the PlacementUnit is legalized in the device area when a cell in it is placed at target location
curCell | |
targetX | |
targetY |
Definition at line 3452 of file PlacementInfo.h.
Referenced by CLBLegalizer::findPossibleLegalLocation(), and MacroLegalizer::findPossibleLegalLocation().
|
inline |
check whether the PlacementUnit is legalized in the device area when it is placed at target location
curPU | |
targetX | |
targetY |
Definition at line 3506 of file PlacementInfo.h.
|
inline |
move the PlacementUnit to ensure the cells in it are within the device area.
curPU | target PlacementUnit |
fX | output X of PlacementUnit that can ensure the cells in it are within the device area. |
fY | output Y of PlacementUnit that can ensure the cells in it are within the device area. |
Definition at line 3364 of file PlacementInfo.h.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ClusterPlacer::ClusterPlacement(), IncrementalBELPacker::FFPairing(), IncrementalBELPacker::LUTFFPairing(), ClusterPlacer::placeUnitBaseOnClusterPlacement(), WirelengthOptimizer::solverWriteBackData(), PlacementTimingOptimizer::stretchClockRegionColumns(), GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocationsWorker(), and WirelengthOptimizer::updatePseudoNetForUserDefinedClusters().
|
inline |
describes the type mapping from design to device, where a cell can be placed (which BEL in which site)
Since different cell types can be mapped to a group of resource BEL types, we handle the mapping in the following way, with a intermediate Shared BEL Type:
cell type A => A => BEL type 1
cell type B => Shared => BEL type 2
cell type C => BEL => BEL type 3
cell type D => Type => BEL type 4
cellType2fixedAmoFileName | a file indicates how many slot will a cell of specific type cost |
cellType2sharedCellTypeFileName | a file indicates the mapping from cell types to shared BEL types |
sharedCellType2BELtypeFileName | a file indicates the mapping from shared BEL types to resource BEL types |
Definition at line 2732 of file PlacementInfo.h.
Referenced by PlacementInfo().
void PlacementInfo::loadPlacementUnitInformation | ( | std::string | locationFile | ) |
load the data of the PlacementUnit objects and some placement parameters from a checkpoint file
locationFile |
Definition at line 1752 of file PlacementInfo.cc.
void PlacementInfo::optimizeLongPaths | ( | ) |
make the PlacementUnits in the long path closer to each other
Definition at line 723 of file PlacementInfo.cc.
|
inline |
void PlacementInfo::printStat | ( | bool | verbose = false | ) |
Definition at line 294 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
void PlacementInfo::reloadNets | ( | ) |
update PlacementNet objects when there are some updates of PlacementUnit objects (e.g., some cells are packed)
Definition at line 507 of file PlacementInfo.cc.
Referenced by IncrementalBELPacker::FFPairing(), loadPlacementUnitInformation(), IncrementalBELPacker::LUTFFPairing(), InitialPacker::pack(), and ParallelCLBPacker::updatePackedMacro().
void PlacementInfo::resetElementBinGrid | ( | ) |
clean the information in bin grid
Definition at line 898 of file PlacementInfo.cc.
Referenced by updateElementBinGrid().
|
inline |
reset the LUTFFDeterminedOccupation object
LUTFFDeterminedOccupation is used to record the final resource demand of a LUT/FF after final packing
Definition at line 4087 of file PlacementInfo.h.
Referenced by AMFPlacer::run().
|
inline |
forget all the legalization information
Definition at line 3702 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacer().
void PlacementInfo::resetSiteBinGrid | ( | ) |
Definition at line 1650 of file PlacementInfo.cc.
|
inline |
|
inline |
Set the cell bin Information of a design cell.
cellId | the Id of the design cell |
sharedTypeId | which BEL type the design cell is |
X | the column in the grid of the bin which the cell is located in |
Y | the row in the grid of the bin which the cell is located in |
occupation | how much resource is cost by the design cell |
Definition at line 3733 of file PlacementInfo.h.
Referenced by updateElementBinGrid().
|
inline |
Definition at line 4378 of file PlacementInfo.h.
Referenced by ClusterPlacer::clusterPlacementUnits().
|
inline |
Set the Determined Occupation of a specific cell.
LUTFFDeterminedOccupation is used to record the final resource demand of a LUT/FF after final packing
cellId | target cell |
occupation | resource demand of the cell after packing |
Definition at line 4112 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::updatePackedMacro().
|
inline |
Set the Macro Legalization Parameters.
We have specific pseudo net parameters for macro legalizations. We need to set them if loading a check point or re-configuring the placement.
cnt | MacroPseudoNetEnhanceCnt |
_macroLegalizationWeight | MacroPseudoNetEnhanceCnt |
Definition at line 4075 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
|
inline |
record the minimum HPWL during placement procedure
val |
Definition at line 4205 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
|
inline |
Definition at line 4423 of file PlacementInfo.h.
Referenced by AMFPlacer::run().
|
inline |
Set the progress ratio, indicating the progress of the placement convergence,.
the progress ratio is usually HPWL_lower / HPWL_upper
p |
Definition at line 3959 of file PlacementInfo.h.
Referenced by loadPlacementUnitInformation(), and GlobalPlacer::updatePseudoNetWeight().
|
inline |
Set the Pseudo Net Weight according to a given value.
This pseudo net weight will be used in the global placement iteration
weight |
Definition at line 4014 of file PlacementInfo.h.
Referenced by GlobalPlacer::GlobalPlacement_CLBElements().
|
inline |
set the sites occupied by the PlacementUnit objects
PU2Sites | a mapping from PlaceuementUnit objects to device sites |
Definition at line 3668 of file PlacementInfo.h.
Referenced by CLBLegalizer::finalLegalizeBasedOnDP(), MacroLegalizer::finalLegalizeBasedOnDP(), and ParallelCLBPacker::updatePackedMacro().
|
inline |
set the legalization of some PlacementUnit objects
PU2X | X of PlacementUnits |
PU2Y | Y of PlacementUnits |
Definition at line 3648 of file PlacementInfo.h.
Referenced by CLBLegalizer::finalLegalizeBasedOnDP(), MacroLegalizer::finalLegalizeBasedOnDP(), ParallelCLBPacker::updatePackedMacro(), CLBLegalizer::updatePUMatchingLocation(), and MacroLegalizer::updatePUMatchingLocation().
|
inline |
update the bin information of a design cell when it is moved to a new location
When a cell is moved to a new location, corresponding bins should be updated accordingly.
cellId | the Id of the design cell |
fX | the X coordinate the cell is moved to |
fY | the Y coordinate the cell is moved to |
Definition at line 3751 of file PlacementInfo.h.
Referenced by GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocations(), and GeneralSpreader::updatePlacementUnitsWithSpreadedCellLocationsWorker().
void PlacementInfo::transferPaintData | ( | ) |
Definition at line 2219 of file PlacementInfo.cc.
Referenced by updateElementBinGrid().
|
inline |
update the B2B net model for the placement and get the total HPWL of all the nets in the design
Definition at line 3913 of file PlacementInfo.h.
Referenced by ClusterPlacer::ClusterPlacement(), GlobalPlacer::clusterPlacement(), GlobalPlacer::GlobalPlacement_CLBElements(), GlobalPlacer::GlobalPlacement_fixedCLB(), ParallelCLBPacker::packCLBs(), AMFPlacer::run(), ParallelCLBPacker::setPULocationToPackedSite(), and ParallelCLBPacker::updatePackedMacro().
void PlacementInfo::updateCells2PlacementUnits | ( | ) |
update the mapping from Cells to PlacementUnits, since sometime, PlacementUnits might change
Definition at line 1683 of file PlacementInfo.cc.
Referenced by IncrementalBELPacker::FFPairing(), IncrementalBELPacker::LUTFFPairing(), InitialPacker::pack(), and ParallelCLBPacker::updatePackedMacro().
void PlacementInfo::updateElementBinGrid | ( | ) |
map design cells to the bins in the bin grid.
Definition at line 906 of file PlacementInfo.cc.
Referenced by PlacementTimingOptimizer::clusterLongPathInOneClockRegion(), ParallelCLBPacker::exceptionHandling(), IncrementalBELPacker::FFPairing(), GlobalPlacer::GlobalPlacement_CLBElements(), GlobalPlacer::GlobalPlacement_fixedCLB(), loadPlacementUnitInformation(), IncrementalBELPacker::LUTFFPairing(), GlobalPlacer::macroLegalize(), ParallelCLBPacker::packCLBs(), ClusterPlacer::placeClusters(), ParallelCLBPacker::setPULocationToPackedSite(), GlobalPlacer::spreading(), PlacementTimingOptimizer::stretchClockRegionColumns(), and GlobalPlacer::timingDrivenDetailedPlacement_shortestPath_intermediate().
void PlacementInfo::updateLongPaths | ( | ) |
update the long path in the design and enhance their net weights
Definition at line 635 of file PlacementInfo.cc.
void PlacementInfo::updateSiteBinGrid | ( | ) |
Definition at line 1657 of file PlacementInfo.cc.
void PlacementInfo::verifyDeviceForDesign | ( | ) |
verify that each cells in the design can be mapped on the resource elements on the device.
Definition at line 790 of file PlacementInfo.cc.
Referenced by AMFPlacer::run().
|
private |
Definition at line 4522 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Routability(), createGridBins(), createSiteBinGrid(), getBinGridH(), and getGridXY().
|
private |
Definition at line 4521 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Routability(), createGridBins(), createSiteBinGrid(), getBinGridW(), and getGridXY().
|
private |
Definition at line 4440 of file PlacementInfo.h.
Referenced by findNeiborSiteFromBinGrid(), getCellId2CellBinInfo(), setCellBinInfo(), transferCellBinInfo(), and updateCells2PlacementUnits().
|
private |
Definition at line 4441 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity(), checkClockUtilization(), dumpOverflowClockUtilization(), findNeiborLUTFFsFromBinGrid(), getCellId2location(), transferPaintData(), and updateElementBinGrid().
|
private |
Definition at line 4438 of file PlacementInfo.h.
Referenced by getCellId2PlacementUnit(), getPULocationByCellLocation(), isLegalLocation(), loadPlacementUnitInformation(), PlacementInfo(), reloadNets(), and updateCells2PlacementUnits().
|
private |
Definition at line 4439 of file PlacementInfo.h.
Referenced by getCellId2PlacementUnitVec(), getPlacementUnitByCell(), getPlacementUnitByCellId(), loadPlacementUnitInformation(), PlacementInfo::PlacementNet::PlacementNet(), reloadNets(), and updateCells2PlacementUnits().
|
private |
Definition at line 4437 of file PlacementInfo.h.
Referenced by getCellInMacros(), loadPlacementUnitInformation(), PlacementInfo(), printStat(), and updateCells2PlacementUnits().
|
private |
Definition at line 4586 of file PlacementInfo.h.
Referenced by PlacementInfo::CompatiblePlacementTable::CompatiblePlacementTable(), loadCompatiblePlacementTable(), and PlacementInfo().
|
private |
Definition at line 4587 of file PlacementInfo.h.
Referenced by PlacementInfo::CompatiblePlacementTable::CompatiblePlacementTable(), loadCompatiblePlacementTable(), and PlacementInfo().
|
private |
Definition at line 4537 of file PlacementInfo.h.
Referenced by addPUIntoClockColumn(), checkClockColumnLegalization(), dumpOverflowClockUtilization(), getClockCol2ClockNets(), getClockColumnUtilizationIncrease(), PlacementInfo(), and printOutClockColumnLegalization().
|
private |
Definition at line 4613 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), and isClockLegalizationRisky().
|
private |
Definition at line 4576 of file PlacementInfo.h.
Referenced by checkClockUtilization().
|
private |
Definition at line 4528 of file PlacementInfo.h.
Referenced by checkClockUtilization(), dumpOverflowClockUtilization(), enhanceRiskyClockNet(), and reloadNets().
|
private |
Definition at line 4529 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), checkClockUtilization(), and enhanceRiskyClockNet().
|
private |
Definition at line 4612 of file PlacementInfo.h.
Referenced by getClusterNum(), and setClusterNum().
|
private |
Definition at line 4432 of file PlacementInfo.h.
Referenced by PlacementInfo::PlacementBinInfo::addSiteIntoBin(), adjustLUTFFUtilization(), adjustLUTFFUtilization_Clocking(), adjustLUTFFUtilization_Packablity(), adjustLUTFFUtilization_Routability(), adjustLUTFFUtilization_Routability_Reset(), createGridBins(), getActualOccupation(), getActualOccupationByCellId(), getcellId2Occupation(), getCompatiblePlacementTable(), getInflateRatio(), getOccupation(), getPotentialBELTypeIDs(), getSharedBELTypeId(), PlacementInfo(), setBELTypeForCells(), verifyDeviceForDesign(), and ~PlacementInfo().
|
private |
Definition at line 4443 of file PlacementInfo.h.
Referenced by PlacementInfo::PlacementMacro::addVirtualCell(), getCells(), getDesignInfo(), getDeterminedOccupation(), getNumCells(), loadCompatiblePlacementTable(), PlacementInfo(), printStat(), reloadNets(), resetLUTFFDeterminedOccupation(), PlacementInfo::CompatiblePlacementTable::setBELTypeForCells(), setBELTypeForCells(), setDeterminedOccupation(), transferCellBinInfo(), transferPaintData(), updateCells2PlacementUnits(), updateElementBinGrid(), and verifyDeviceForDesign().
|
private |
Definition at line 4526 of file PlacementInfo.h.
Referenced by getPlacementNetByDesignNetId(), and reloadNets().
|
private |
Definition at line 4444 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Clocking(), checkClockUtilization(), createGridBins(), createSiteBinGrid(), dumpOverflowClockUtilization(), enhanceRiskyClockNet(), getBELType2FalseBELType(), getDeviceInfo(), loadCompatiblePlacementTable(), loadPlacementUnitInformation(), PlacementInfo(), PlacementInfo::CompatiblePlacementTable::setBELTypeForCells(), and PlacementInfo::PlacementUnpackedCell::setLockedAt().
|
private |
Definition at line 4610 of file PlacementInfo.h.
Referenced by dumpPlacementUnitInformation(), and dumpVivadoPlacementTclWithPULegalizationInfo().
|
private |
right boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 4497 of file PlacementInfo.h.
Referenced by createGridBins(), createSiteBinGrid(), getDeviceMaxEdgeLength(), and getGlobalBinMaxLocX().
|
private |
bottom boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 4504 of file PlacementInfo.h.
Referenced by createGridBins(), createSiteBinGrid(), getDeviceMaxEdgeLength(), and getGlobalBinMaxLocY().
|
private |
Definition at line 4506 of file PlacementInfo.h.
Referenced by addB2BNetInPlacementInfo(), adjustLUTFFUtilization_Routability(), createGridBins(), createSiteBinGrid(), enforceLegalizeXYInArea(), getPULocationByCellLocation(), isLegalLocation(), and legalizeXYInArea().
|
private |
Definition at line 4436 of file PlacementInfo.h.
Referenced by getFixedPlacementUnits(), and loadPlacementUnitInformation().
|
private |
Bin Grid includes all types of sites, mainly for congestion evalution.
Definition at line 4519 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Routability(), createGridBins(), dumpCongestion(), getGlobalBinGrid(), and updateElementBinGrid().
|
private |
right boundary of the device
Definition at line 4471 of file PlacementInfo.h.
Referenced by createGridBins(), enforceLegalizeXYInArea(), getGlobalMaxX(), getPULocationByCellLocation(), isLegalLocation(), legalizeXYInArea(), PlacementInfo(), and printStat().
|
private |
top boundary of the device
Definition at line 4476 of file PlacementInfo.h.
Referenced by createGridBins(), enforceLegalizeXYInArea(), getGlobalMaxY(), getPULocationByCellLocation(), isLegalLocation(), legalizeXYInArea(), PlacementInfo(), and printStat().
|
private |
left boundary of the device
Definition at line 4461 of file PlacementInfo.h.
Referenced by createGridBins(), enforceLegalizeXYInArea(), getGlobalMinX(), getPULocationByCellLocation(), isLegalLocation(), legalizeXYInArea(), PlacementInfo(), and printStat().
|
private |
bottom boundary of the device
Definition at line 4466 of file PlacementInfo.h.
Referenced by createGridBins(), enforceLegalizeXYInArea(), getGlobalMinY(), getPULocationByCellLocation(), isLegalLocation(), legalizeXYInArea(), PlacementInfo(), and printStat().
|
private |
Definition at line 4628 of file PlacementInfo.h.
Referenced by PlacementInfo(), and updateElementBinGrid().
|
private |
Definition at line 4624 of file PlacementInfo.h.
Referenced by enhanceHighFanoutNet(), getHighFanOutThr(), and reloadNets().
|
private |
Definition at line 4585 of file PlacementInfo.h.
Referenced by getMacroPseudoNetEnhanceCnt(), and PlacementInfo().
|
private |
Definition at line 4619 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity().
|
private |
Definition at line 4533 of file PlacementInfo.h.
Referenced by getLongPaths(), optimizeLongPaths(), and updateLongPaths().
|
private |
the long path threshold for timing optimization
Definition at line 4602 of file PlacementInfo.h.
Referenced by buildSimpleTimingGraph(), and getLongPathThresholdLevel().
|
private |
Bin Grid for LUTs and FFs, mainly for searching neighbor elements during packing.
Definition at line 4513 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity(), createGridBins(), and findNeiborLUTFFsFromBinGrid().
|
private |
Definition at line 4622 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization(), adjustLUTFFUtilization_Packablity(), and loadPlacementUnitInformation().
|
private |
Definition at line 4617 of file PlacementInfo.h.
Referenced by getMacroLegalizationWeight(), loadPlacementUnitInformation(), and setMacroLegalizationParameters().
|
private |
Definition at line 4616 of file PlacementInfo.h.
Referenced by getMacroPseudoNetEnhanceCnt(), loadPlacementUnitInformation(), and setMacroLegalizationParameters().
|
private |
Definition at line 4626 of file PlacementInfo.h.
Referenced by getMacroRatio(), and updateCells2PlacementUnits().
|
private |
the medium path threshold for timing optimization
Definition at line 4608 of file PlacementInfo.h.
Referenced by buildSimpleTimingGraph(), and getMediumPathThresholdLevel().
|
private |
Definition at line 4621 of file PlacementInfo.h.
Referenced by getMinHPWL(), and setMinHPWL().
|
private |
Definition at line 4590 of file PlacementInfo.h.
Referenced by getNetDistributionByDensity(), and reloadNets().
|
private |
Definition at line 4589 of file PlacementInfo.h.
Referenced by getNetDistributionByDensity(), and reloadNets().
|
private |
Definition at line 4615 of file PlacementInfo.h.
Referenced by getPseudoNetWeight(), loadPlacementUnitInformation(), and setPseudoNetWeight().
|
private |
Definition at line 4538 of file PlacementInfo.h.
Referenced by setPaintDataBase(), and transferPaintData().
|
private |
Definition at line 4542 of file PlacementInfo.h.
Referenced by transferPaintData().
|
private |
Definition at line 4540 of file PlacementInfo.h.
Referenced by transferPaintData().
|
private |
Definition at line 4541 of file PlacementInfo.h.
Referenced by transferPaintData().
|
private |
Definition at line 4442 of file PlacementInfo.h.
Referenced by getPinId2location().
|
private |
Definition at line 4435 of file PlacementInfo.h.
Referenced by getPlacementMacros(), loadPlacementUnitInformation(), and PlacementInfo().
|
private |
Definition at line 4524 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Routability(), enhanceDDRNet(), enhanceHighFanoutNet(), getPlacementNets(), getTotalHPWL(), PlacementInfo(), reloadNets(), updateB2BAndGetTotalHPWL(), and ~PlacementInfo().
|
private |
the progress ratio, indicating the progress of the placement convergence.
the progress ratio is usually HPWL_lower / HPWL_upper
Definition at line 4583 of file PlacementInfo.h.
Referenced by getProgress(), and setProgress().
|
private |
Definition at line 4525 of file PlacementInfo.h.
Referenced by getPlacementUnitId2Nets(), and reloadNets().
|
private |
Definition at line 4433 of file PlacementInfo.h.
Referenced by adjustLUTFFUtilization_Packablity(), calculateNetNumDistributionOfPUs(), getPlacementUnits(), loadPlacementUnitInformation(), PlacementInfo(), printStat(), reloadNets(), and updateElementBinGrid().
|
private |
Definition at line 4434 of file PlacementInfo.h.
Referenced by getPlacementUnpackedCells(), loadPlacementUnitInformation(), and PlacementInfo().
|
private |
Definition at line 4535 of file PlacementInfo.h.
Referenced by getPU2ClockRegionCenters().
|
private |
Definition at line 4536 of file PlacementInfo.h.
Referenced by findNeiborSiteFromBinGrid(), and getPU2ClockRegionColumn().
|
private |
a mapping from PlaceuementUnit objects to device sites
Definition at line 4456 of file PlacementInfo.h.
Referenced by deleteLegalizationInfoFor(), dumpPlacementUnitInformation(), getPULegalSite(), loadPlacementUnitInformation(), resetPULegalInformation(), and setPULegalSite().
|
private |
a mapping from PlaceuementUnit objects to legalized locations
Definition at line 4451 of file PlacementInfo.h.
Referenced by deleteLegalizationInfoFor(), getPULegalXY(), loadPlacementUnitInformation(), resetPULegalInformation(), and setPULegalXY().
|
private |
Definition at line 4532 of file PlacementInfo.h.
Referenced by reloadNets(), and updateLongPaths().
|
private |
Definition at line 4531 of file PlacementInfo.h.
Referenced by reloadNets().
|
private |
Definition at line 4620 of file PlacementInfo.h.
Referenced by calculateNetNumDistributionOfPUs(), and getPUWithManyNetsRatio().
|
private |
Definition at line 4507 of file PlacementInfo.h.
Referenced by createGridBins(), findNeiborSiteFromBinGrid(), getBinGrid(), resetElementBinGrid(), transferCellBinInfo(), and ~PlacementInfo().
|
private |
Definition at line 4588 of file PlacementInfo.h.
Referenced by PlacementInfo::CompatiblePlacementTable::CompatiblePlacementTable(), loadCompatiblePlacementTable(), and PlacementInfo().
|
private |
Definition at line 4445 of file PlacementInfo.h.
Referenced by buildSimpleTimingGraph(), getTimingInfo(), PlacementInfo(), reloadNets(), and transferPaintData().
|
private |
Definition at line 4520 of file PlacementInfo.h.
Referenced by createSiteBinGrid(), getSiteBinGrid(), resetSiteBinGrid(), and ~PlacementInfo().
|
private |
left boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 4483 of file PlacementInfo.h.
Referenced by createGridBins(), createSiteBinGrid(), getDeviceMaxEdgeLength(), getGlobalBinMinLocX(), and getGridXY().
|
private |
bottom boundary of the bin grid
the coverage of bin grid is a bit larger than the device.
Definition at line 4490 of file PlacementInfo.h.
Referenced by createGridBins(), createSiteBinGrid(), getDeviceMaxEdgeLength(), getGlobalBinMinLocY(), and getGridXY().
|
private |
a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate
Definition at line 4596 of file PlacementInfo.h.
Referenced by PlacementInfo::PlacementNet::addPseudoNet_enhancePin2Pin(), addPseudoNetsInPlacementInfo(), adjustLUTFFUtilization_Routability(), findNeiborLUTFFsFromBinGrid(), getDisplacement(), PlacementInfo::PlacementNet::getHPWL(), PlacementInfo::PlacementNet::getNewHPWLByTrying(), getTotalHPWL(), PlacementInfo(), updateB2BAndGetTotalHPWL(), and PlacementInfo::PlacementNet::updateBound2BoundNetWeight().