AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
PackingCLBSite is a container for the packing information (parameters, candidates and packing status) of a specific DeviceInfo::DeviceSite. More...
#include <ParallelCLBPacker.h>
Classes | |
class | PackingCLBCluster |
PackingCLBCluster is a container of cells/PlacementUnits which can be packed in the corresponding CLB site. More... | |
class | SiteBELMapping |
SiteBELMapping is a contain recording the mapping between cells and BELs. More... | |
Public Member Functions | |
PackingCLBSite (PlacementInfo *placementInfo, DeviceInfo::DeviceSite *CLBSite, int unchangedIterationThr, int numNeighbor, float deltaD, float curD, float maxD, unsigned int PQSize, float y2xRatio, float HPWLWeight, std::vector< PackingCLBSite * > &PUId2PackingCLBSite) | |
Construct a new Packing CLB Site object. More... | |
~PackingCLBSite () | |
bool | isPQTopCompletelyAccptedByCells () |
check whether all the PlacementUnit in the top cluster in the priority queue have been assigned to this CLB site More... | |
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > * | findNeiborPUsFromBinGrid (DesignInfo::DesignCellType curCellType, float targetX, float targetY, float displacementLowerbound, float displacementUpperbound, int PUNumThreshold, const std::vector< PackingCLBSite * > &PUId2PackingCLBSite, float y2xRatio, std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > *res=nullptr, bool clockRegionAware=true) |
find neighbor PlacementUnit around targetX/Y from the bin grid More... | |
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > & | getNeighborPUs () |
void | refreshPrioryQueue () |
sort the elements in the priority queue More... | |
void | removeInvalidClustersFromPQ () |
remove invalid clusters from the priority queue More... | |
void | removeInvalidPUsFromNeighborPUs () |
remove invalid clusters from neighbor PlacementUnits More... | |
void | removeClustersIncompatibleWithDetClusterFromPQ () |
remove clusters incompatible with determined cluster from PQ More... | |
void | findNewClustersWithNeighborPUs () |
extend the clusters in the priority queue with the neighbor PlacementUnits More... | |
void | updateStep (bool initial, bool debug=false) |
a iteration to pack PlacementUnit into a CLB site More... | |
void | updateConsistentPUsInTop () |
update the information of consistent PUs at the top of priority queue More... | |
bool | hasValidPQTop () |
const PackingCLBCluster * | getPriorityQueueTop () |
DeviceInfo::DeviceSite * | getCLBSite () |
float | getY2xRatio () const |
float | getDetScore () |
PackingCLBCluster * | getDeterminedClusterInSite () |
void | setDeterminedClusterInSite (PackingCLBCluster *tmpCluster) |
float | getHPWLChangeForPU (PlacementInfo::PlacementUnit *tmpPU) |
void | setDebug () |
PlacementInfo * | getPlacementInfo () const |
void | addCarry () |
add CARRY-related PlacementUnit into this CLB site More... | |
void | addLUTRAMMacro () |
add LUTRAM-related PlacementUnit into this CLB site More... | |
void | setNonCLBCell (DesignInfo::DesignCell *_NonCLBCell) |
bool | checkIsPrePackedSite () |
bool | checkIsCarrySite () |
bool | checkIsNonCLBSite () |
bool | checkIsMuxSite () |
bool | checkIsLUTRAMSite () |
PlacementInfo::PlacementMacro * | getCarryMacro () |
DesignInfo::DesignCell * | getCarryCell () |
PlacementInfo::PlacementMacro * | getLUTRAMMacro () |
DesignInfo::DesignCell * | getNonCLBCell () |
int | getCarrySiteOffset () |
unsigned int | getPairPinNum (DesignInfo::DesignCell *LUTA, DesignInfo::DesignCell *LUTB) |
check how many input pins will be needed if the two LUTs are packed. More... | |
void | mapCarryRelatedCellsToSlots (PlacementInfo::PlacementMacro *_CARRYChain, float siteOffset) |
void | mapLUTRAMRelatedCellsToSlots (PlacementInfo::PlacementMacro *_LUTRAMMacro) |
void | finalMapToSlotsForCarrySite (int FFControlSetOrderId) |
find the slots in the site for Muxes More... | |
void | finalMapToSlotsForCarrySite () |
find the slots in the site for Carry by enumeration More... | |
bool | compatibleInOneHalfCLB (int halfCLB, int anotherHalfCLB) |
check whether two half CLB can be packed togather More... | |
void | mapMuxF8Macro (int muxF8Offset, PlacementInfo::PlacementMacro *MUXF8Macro) |
map cells in MUXF8 macro to CLB slot More... | |
void | mapMuxF7Macro (int halfCLBOffset, PlacementInfo::PlacementMacro *MUXF7Macro) |
map cells in MUXF7 macro to CLB slot More... | |
int | findMuxFromHalfCLB (PlacementInfo::PlacementMacro *MUXF8Macro) |
find the correspdnding FF control set id for a given Mux macro (this mux macro should have been mapped to a control set in this site) More... | |
void | greedyMapMuxForCommonLUTFFInSite (int FFControlSetOrderId) |
find the slots in the site for Muxes More... | |
void | greedyMapMuxForCommonLUTFFInSite () |
find the slots in the site for Muxes by enumeration More... | |
void | finalMapToSlotsForCommonLUTFFInSite (int FFControlSetOrderId) |
greedily find the exact slots for the LUTs/FFs in the site More... | |
void | finalMapToSlotsForCommonLUTFFInSite () |
finally map LUTs/FFs to the exact slots in the sites More... | |
bool | isMuxMacro (DesignInfo::DesignCell *cell) |
bool | isCarryMacro (DesignInfo::DesignCell *cell) |
void | moveLUTToLUT6Slot () |
void | finalMapToSlots () |
finally map the elements (CARRY/MUX/LUT/FF) packed in this site into the slots in the site More... | |
std::set< std::pair< DesignInfo::DesignCell *, DesignInfo::DesignCell * > > & | getFixedPairedLUTs () |
Get the fixed pairs of LUTs which should NOT be broken. More... | |
std::set< DesignInfo::DesignCell * > & | getConflictLUTs () |
Get the LUTs which CANNOT be paired. More... | |
bool | conflictLUTsContain (DesignInfo::DesignCell *tmpCell) |
check whether a given cell is unpackable More... | |
const SiteBELMapping & | getSlotMapping () const |
Get the slot(BEL) mapping of the cells. More... | |
SiteBELMapping & | getSlotMappingRef () |
int | checkDirectLUTFFConnect (std::map< DesignInfo::DesignCell *, DesignInfo::DesignCell * > &FF2LUT, DesignInfo::DesignCell *tmpLUT, DesignInfo::DesignCell *tmpFF) |
check whether the FF/LUT are directly connected More... | |
float | checkDirectLUTFFConnect_slack (std::map< DesignInfo::DesignCell *, DesignInfo::DesignCell * > &FF2LUT, DesignInfo::DesignCell *tmpLUT, DesignInfo::DesignCell *tmpFF) |
check whether the FF/LUT are directly connected and calculate the slack More... | |
void | setClockRegionAwareTo (bool _clockRegionAware) |
std::array< int, 3 > | getLUTSlot (DesignInfo::DesignCell *targetCell) |
std::array< int, 3 > | getFFSlot (DesignInfo::DesignCell *targetCell) |
Private Attributes | |
PlacementInfo * | placementInfo |
DeviceInfo::DeviceSite * | CLBSite |
int | unchangedIterationThr = 3 |
specify how many iterations a PlacementUnit should stay at the top priority of a site before we finally map it to the site More... | |
unsigned int | numNeighbor = 10 |
the threshold number of cells for site More... | |
float | deltaD = 1.0 |
the increase step of the neighbor search diameter More... | |
float | curD = 0 |
current neighbor search diameter More... | |
float | maxD = 10 |
the maximum constraint of the neighbor search diameter More... | |
unsigned int | PQSize = 10 |
the size of priority queue (the low-priority candidates will be removed) More... | |
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... | |
float | HPWLWeight = 0.01 |
the factor of HPWL overhead in packing evaluation for a cell More... | |
bool | clockRegionAware = true |
whether make clock region become constraints More... | |
int | unchangeIterationCnt = 0 |
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > | neighborPUs |
std::vector< PackingCLBCluster * > | seedClusters |
std::vector< PackingCLBCluster * > | priorityQueue |
std::map< PlacementInfo::PlacementUnit *, int, Packing_PUcompare > | PU2TopCnt |
const std::vector< PackingCLBSite * > & | PUId2PackingCLBSite |
PackingCLBCluster * | determinedClusterInSite = nullptr |
float | detScore = 0 |
bool | isCarrySite = false |
bool | isLUTRAMSite = false |
bool | isNonCLBSite = false |
PlacementInfo::PlacementMacro * | CARRYChain = nullptr |
PlacementInfo::PlacementMacro * | LUTRAMMacro = nullptr |
DesignInfo::DesignCell * | carryCell = nullptr |
DesignInfo::DesignCell * | nonCLBCell = nullptr |
int | CARRYChainSiteOffset = -1 |
bool | debug = false |
std::set< DesignInfo::DesignCell * > | mappedCells |
std::set< DesignInfo::DesignCell * > | mappedLUTs |
std::set< DesignInfo::DesignCell * > | mappedFFs |
std::set< std::pair< DesignInfo::DesignCell *, DesignInfo::DesignCell * > > | fixedPairedLUTs |
std::set< DesignInfo::DesignCell * > | fixedLUTsInPairs |
std::set< DesignInfo::DesignCell * > | conflictLUTs |
SiteBELMapping | slotMapping |
float | best_DirectConnect = -100000000 |
SiteBELMapping | best_SlotMapping |
std::set< DesignInfo::DesignCell * > | best_mappedCells |
std::set< DesignInfo::DesignCell * > | best_mappedLUTs |
std::set< DesignInfo::DesignCell * > | best_mappedFFs |
PackingCLBSite is a container for the packing information (parameters, candidates and packing status) of a specific DeviceInfo::DeviceSite.
Definition at line 399 of file ParallelCLBPacker.h.
|
inline |
Construct a new Packing CLB Site object.
placementInfo | the PlacementInfo for this placer to handle |
CLBSite | |
unchangedIterationThr | specify how many iterations a PlacementUnit should stay at the top priority of a site before we finally map it to the site |
numNeighbor | the threshold number of cells for site |
deltaD | the increase step of the neighbor search diameter |
curD | current neighbor search diameter |
maxD | the maximum constraint of the neighbor search diameter |
PQSize | the size of priority queue (the low-priority candidates will be removed) |
y2xRatio | a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate |
HPWLWeight | the factor of HPWL overhead in packing evaluation for a cell |
PUId2PackingCLBSite | the reference of a map (actually a vector) recording the mapping of PlacementUnits to the PackingCLBSites |
Definition at line 420 of file ParallelCLBPacker.h.
|
inline |
Definition at line 435 of file ParallelCLBPacker.h.
|
inline |
add CARRY-related PlacementUnit into this CLB site
Definition at line 1994 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::ripUpAndLegalizae().
|
inline |
add LUTRAM-related PlacementUnit into this CLB site
Definition at line 2052 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::ripUpAndLegalizae().
|
inline |
check whether the FF/LUT are directly connected
FF2LUT | |
tmpLUT | |
tmpFF |
Definition at line 2593 of file ParallelCLBPacker.h.
|
inline |
check whether the FF/LUT are directly connected and calculate the slack
FF2LUT | |
tmpLUT | |
tmpFF |
Definition at line 2613 of file ParallelCLBPacker.h.
|
inline |
Definition at line 2074 of file ParallelCLBPacker.h.
Referenced by finalMapToSlots(), and ParallelCLBPacker::ripUpAndLegalizae().
|
inline |
Definition at line 2093 of file ParallelCLBPacker.h.
Referenced by finalMapToSlots(), and ParallelCLBPacker::ripUpAndLegalizae().
|
inline |
Definition at line 2084 of file ParallelCLBPacker.h.
Referenced by finalMapToSlots().
|
inline |
Definition at line 2079 of file ParallelCLBPacker.h.
|
inline |
Definition at line 2069 of file ParallelCLBPacker.h.
Referenced by finalMapToSlots(), and ParallelCLBPacker::ripUpAndLegalizae().
|
inline |
check whether two half CLB can be packed togather
halfCLB | |
anotherHalfCLB |
Definition at line 2406 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::addFFGroup().
|
inline |
check whether a given cell is unpackable
some driver LUTs of CARRY/MUX cannot be paired
tmpCell | the given cell |
Definition at line 2565 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::maxCardinalityMatching().
|
inline |
finally map the elements (CARRY/MUX/LUT/FF) packed in this site into the slots in the site
Definition at line 2508 of file ParallelCLBPacker.h.
void ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCarrySite | ( | ) |
find the slots in the site for Carry by enumeration
Definition at line 544 of file ParallelCLBPacker_PackingCLBSite.cc.
Referenced by finalMapToSlots().
void ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCarrySite | ( | int | FFControlSetOrderId | ) |
find the slots in the site for Muxes
FFControlSetOrderId | control the order of FF Control sets |
Definition at line 569 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCommonLUTFFInSite | ( | ) |
finally map LUTs/FFs to the exact slots in the sites
Definition at line 2719 of file ParallelCLBPacker_PackingCLBSite.cc.
Referenced by finalMapToSlots().
void ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCommonLUTFFInSite | ( | int | FFControlSetOrderId | ) |
greedily find the exact slots for the LUTs/FFs in the site
FFControlSetOrderId | control the order of FF Control sets |
Definition at line 1155 of file ParallelCLBPacker_PackingCLBSite.cc.
int ParallelCLBPacker::PackingCLBSite::findMuxFromHalfCLB | ( | PlacementInfo::PlacementMacro * | MUXF8Macro | ) |
find the correspdnding FF control set id for a given Mux macro (this mux macro should have been mapped to a control set in this site)
MUXF8Macro | a given Mux macro |
Definition at line 2040 of file ParallelCLBPacker_PackingCLBSite.cc.
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > * ParallelCLBPacker::PackingCLBSite::findNeiborPUsFromBinGrid | ( | DesignInfo::DesignCellType | curCellType, |
float | targetX, | ||
float | targetY, | ||
float | displacementLowerbound, | ||
float | displacementUpperbound, | ||
int | PUNumThreshold, | ||
const std::vector< PackingCLBSite * > & | PUId2PackingCLBSite, | ||
float | y2xRatio, | ||
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompare > * | res = nullptr , |
||
bool | clockRegionAware = true |
||
) |
find neighbor PlacementUnit around targetX/Y from the bin grid
curCellType | the given cell types |
targetX | target location X |
targetY | target location Y |
displacementLowerbound | the lower bound threshold of neighbors' displacement from the center (the neighbors with low displacement might be tried by previous procedure) |
displacementUpperbound | the upper bound threshold of neighbors' displacement from the center |
PUNumThreshold | The threshold number of PlacementUnits found to stop the search procedure |
PUId2PackingCLBSite | The reference mapping indicating mapped PlacementUnits |
y2xRatio | a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate |
res | a input set to store resultant PUs (for inremental search if it is not nullptr) |
clockRegionAware | whether make clock region become constraints |
Definition at line 310 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::findNewClustersWithNeighborPUs | ( | ) |
extend the clusters in the priority queue with the neighbor PlacementUnits
Definition at line 256 of file ParallelCLBPacker_PackingCLBSite.cc.
|
inline |
Definition at line 2103 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getCellSet().
|
inline |
Definition at line 2098 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::clusterHash(), operator<<(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::printMyself().
|
inline |
Definition at line 2118 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::clusterHash(), and operator<<().
|
inline |
Definition at line 1918 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::areAllPUsValidForThisSite(), getHPWLChangeForPU(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::isPUTypeCompatibleWithSiteType(), operator<<(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::printMyself(), ParallelCLBPacker::ripUpAndLegalizae(), and ParallelCLBPacker::timingDrivenDetailedPlacement_swap().
|
inline |
Get the LUTs which CANNOT be paired.
Definition at line 2551 of file ParallelCLBPacker.h.
|
inline |
Definition at line 1933 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::exceptionPULegalize(), ParallelCLBPacker::ripUpAndLegalizae(), ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath(), and ParallelCLBPacker::timingDrivenDetailedPlacement_swap().
|
inline |
Definition at line 1928 of file ParallelCLBPacker.h.
|
inline |
|
inline |
Get the fixed pairs of LUTs which should NOT be broken.
Definition at line 2541 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getCellSet(), and operator<<().
|
inline |
Definition at line 1943 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getHPWLChangeForPU(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::incrementalUpdateScoreInSite(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::updateScoreInSite().
|
inline |
Definition at line 2108 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::clusterHash(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getCellSet().
|
inline |
|
inline |
Definition at line 1848 of file ParallelCLBPacker.h.
|
inline |
Definition at line 2113 of file ParallelCLBPacker.h.
|
inline |
check how many input pins will be needed if the two LUTs are packed.
LUTA | |
LUTB |
Definition at line 2130 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::addLUT().
|
inline |
Definition at line 1985 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getPlacementUnitMaxPathLen(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getPlacementUnitMaxPathNegativeSlack(), ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getTotalCellWeight(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::PackingCLBCluster().
|
inline |
Definition at line 1912 of file ParallelCLBPacker.h.
|
inline |
Get the slot(BEL) mapping of the cells.
Definition at line 2575 of file ParallelCLBPacker.h.
|
inline |
Definition at line 2580 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping().
|
inline |
Definition at line 1923 of file ParallelCLBPacker.h.
Referenced by operator<<(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::printMyself().
void ParallelCLBPacker::PackingCLBSite::greedyMapMuxForCommonLUTFFInSite | ( | ) |
find the slots in the site for Muxes by enumeration
Definition at line 2059 of file ParallelCLBPacker_PackingCLBSite.cc.
Referenced by finalMapToSlots().
void ParallelCLBPacker::PackingCLBSite::greedyMapMuxForCommonLUTFFInSite | ( | int | FFControlSetOrderId | ) |
find the slots in the site for Muxes
FFControlSetOrderId | control the order of FF Control sets |
Definition at line 2080 of file ParallelCLBPacker_PackingCLBSite.cc.
|
inline |
Definition at line 1907 of file ParallelCLBPacker.h.
|
inline |
|
inline |
Definition at line 2477 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::addFFGroup().
|
inline |
check whether all the PlacementUnit in the top cluster in the priority queue have been assigned to this CLB site
Definition at line 1811 of file ParallelCLBPacker.h.
void ParallelCLBPacker::PackingCLBSite::mapCarryRelatedCellsToSlots | ( | PlacementInfo::PlacementMacro * | _CARRYChain, |
float | siteOffset | ||
) |
Definition at line 2763 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::mapLUTRAMRelatedCellsToSlots | ( | PlacementInfo::PlacementMacro * | _LUTRAMMacro | ) |
Definition at line 2757 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::mapMuxF7Macro | ( | int | halfCLBOffset, |
PlacementInfo::PlacementMacro * | MUXF7Macro | ||
) |
map cells in MUXF7 macro to CLB slot
muxF7Offset | the offset of the MUXF7 in the CLB site. There is only two slots for MUXF8 |
MUXF7Macro | the pointer of the MUXF7 needed to be mapped into current site |
Definition at line 1918 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::mapMuxF8Macro | ( | int | muxF8Offset, |
PlacementInfo::PlacementMacro * | MUXF8Macro | ||
) |
map cells in MUXF8 macro to CLB slot
muxF8Offset | the offset of the MUXF8 in the CLB site. There is only two slots for MUXF8 |
MUXF8Macro | the pointer of the MUXF8 needed to be mapped into current site |
Definition at line 1775 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::moveLUTToLUT6Slot | ( | ) |
Definition at line 2735 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::refreshPrioryQueue | ( | ) |
sort the elements in the priority queue
Definition at line 28 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::removeClustersIncompatibleWithDetClusterFromPQ | ( | ) |
remove clusters incompatible with determined cluster from PQ
some of the clusters in the PQ are not compatible with the determined set of PUs, so we need to remove them too.
Definition at line 70 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::removeInvalidClustersFromPQ | ( | ) |
remove invalid clusters from the priority queue
since some of the PlacementUnits have been determined to be mapped to some other sites, they should be removed from the PQ
Definition at line 49 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::removeInvalidPUsFromNeighborPUs | ( | ) |
remove invalid clusters from neighbor PlacementUnits
since some of the PlacementUnits have been determined to be mapped to some other sites, they should be removed from the neighbor PU set. Moreover, some of the candidate PUs are not compatible with the determined set of PUs, so we need to remove them too.
Definition at line 109 of file ParallelCLBPacker_PackingCLBSite.cc.
|
inline |
Definition at line 2637 of file ParallelCLBPacker.h.
|
inline |
Definition at line 1980 of file ParallelCLBPacker.h.
|
inline |
Definition at line 1938 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::ripUpAndLegalizae(), ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), and ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath().
|
inline |
Definition at line 2061 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::addNonCLBPackingSites().
void ParallelCLBPacker::PackingCLBSite::updateConsistentPUsInTop | ( | ) |
update the information of consistent PUs at the top of priority queue
the PQ top might be kept updated but some of its PUs might be consistent, which we can make them as determined PUs.
Definition at line 142 of file ParallelCLBPacker_PackingCLBSite.cc.
void ParallelCLBPacker::PackingCLBSite::updateStep | ( | bool | initial, |
bool | debug = false |
||
) |
a iteration to pack PlacementUnit into a CLB site
initial | indicate whether it is the first packing iteration |
debug | dump debug information or not |
Definition at line 434 of file ParallelCLBPacker_PackingCLBSite.cc.
|
private |
Definition at line 2770 of file ParallelCLBPacker.h.
Referenced by finalMapToSlots().
|
private |
Definition at line 2772 of file ParallelCLBPacker.h.
|
private |
Definition at line 2774 of file ParallelCLBPacker.h.
|
private |
Definition at line 2773 of file ParallelCLBPacker.h.
|
private |
Definition at line 2771 of file ParallelCLBPacker.h.
|
private |
Definition at line 2756 of file ParallelCLBPacker.h.
Referenced by getCarryCell().
|
private |
Definition at line 2754 of file ParallelCLBPacker.h.
Referenced by addCarry(), and getCarryMacro().
|
private |
Definition at line 2758 of file ParallelCLBPacker.h.
Referenced by addCarry(), and getCarrySiteOffset().
|
private |
Definition at line 2683 of file ParallelCLBPacker.h.
Referenced by getCLBSite(), and getHPWLChangeForPU().
|
private |
whether make clock region become constraints
Definition at line 2739 of file ParallelCLBPacker.h.
Referenced by setClockRegionAwareTo().
|
private |
Definition at line 2767 of file ParallelCLBPacker.h.
Referenced by addCarry(), conflictLUTsContain(), and getConflictLUTs().
|
private |
current neighbor search diameter
Definition at line 2708 of file ParallelCLBPacker.h.
|
private |
Definition at line 2760 of file ParallelCLBPacker.h.
Referenced by setDebug().
|
private |
the increase step of the neighbor search diameter
Definition at line 2702 of file ParallelCLBPacker.h.
|
private |
Definition at line 2748 of file ParallelCLBPacker.h.
Referenced by addCarry(), addLUTRAMMacro(), checkIsMuxSite(), compatibleInOneHalfCLB(), finalMapToSlots(), getDeterminedClusterInSite(), setDeterminedClusterInSite(), setNonCLBCell(), and ~PackingCLBSite().
|
private |
Definition at line 2749 of file ParallelCLBPacker.h.
Referenced by getDetScore().
|
private |
Definition at line 2766 of file ParallelCLBPacker.h.
Referenced by addCarry().
|
private |
Definition at line 2765 of file ParallelCLBPacker.h.
Referenced by getFixedPairedLUTs().
|
private |
the factor of HPWL overhead in packing evaluation for a cell
Definition at line 2733 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::incrementalUpdateScoreInSite(), and ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::updateScoreInSite().
|
private |
Definition at line 2751 of file ParallelCLBPacker.h.
Referenced by checkIsCarrySite(), and checkIsPrePackedSite().
|
private |
Definition at line 2752 of file ParallelCLBPacker.h.
Referenced by checkIsLUTRAMSite(), and checkIsPrePackedSite().
|
private |
Definition at line 2753 of file ParallelCLBPacker.h.
Referenced by checkIsNonCLBSite(), and setNonCLBCell().
|
private |
Definition at line 2755 of file ParallelCLBPacker.h.
Referenced by addLUTRAMMacro(), and getLUTRAMMacro().
|
private |
Definition at line 2762 of file ParallelCLBPacker.h.
|
private |
Definition at line 2764 of file ParallelCLBPacker.h.
|
private |
Definition at line 2763 of file ParallelCLBPacker.h.
|
private |
the maximum constraint of the neighbor search diameter
Definition at line 2714 of file ParallelCLBPacker.h.
|
private |
Definition at line 2742 of file ParallelCLBPacker.h.
Referenced by getNeighborPUs(), and PackingCLBSite().
|
private |
Definition at line 2757 of file ParallelCLBPacker.h.
Referenced by getNonCLBCell(), and setNonCLBCell().
|
private |
the threshold number of cells for site
Definition at line 2696 of file ParallelCLBPacker.h.
|
private |
Definition at line 2682 of file ParallelCLBPacker.h.
Referenced by checkDirectLUTFFConnect_slack(), getPlacementInfo(), isCarryMacro(), and isMuxMacro().
|
private |
the size of priority queue (the low-priority candidates will be removed)
Definition at line 2720 of file ParallelCLBPacker.h.
|
private |
Definition at line 2745 of file ParallelCLBPacker.h.
Referenced by getPriorityQueueTop(), hasValidPQTop(), isPQTopCompletelyAccptedByCells(), PackingCLBSite(), refreshPrioryQueue(), and ~PackingCLBSite().
|
private |
Definition at line 2746 of file ParallelCLBPacker.h.
Referenced by PackingCLBSite().
|
private |
Definition at line 2747 of file ParallelCLBPacker.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::areAllPUsValidForThisSite(), and isPQTopCompletelyAccptedByCells().
|
private |
Definition at line 2744 of file ParallelCLBPacker.h.
Referenced by PackingCLBSite().
|
private |
Definition at line 2768 of file ParallelCLBPacker.h.
Referenced by addCarry(), getFFSlot(), getLUTSlot(), getSlotMapping(), and getSlotMappingRef().
|
private |
specify how many iterations a PlacementUnit should stay at the top priority of a site before we finally map it to the site
Definition at line 2690 of file ParallelCLBPacker.h.
|
private |
Definition at line 2741 of file ParallelCLBPacker.h.
|
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 2727 of file ParallelCLBPacker.h.
Referenced by getHPWLChangeForPU(), and getY2xRatio().