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

ParallelCLBPacker will finally pack LUT/FF/MUX/CARRY elements into legal CLB sites in a parallel approach. More...

#include <ParallelCLBPacker.h>

Collaboration diagram for ParallelCLBPacker:

Classes

struct  _PUWithScore
 helper struct for candidate site sorting More...
 
struct  _siteWithScore
 helper struct for candidate site sorting More...
 
class  PackedControlSet
 PackedControlSet stores the data of a combination of FFs within one control set (clock enable/preset-reset/clock) that can be packed in a site. More...
 
class  PackingCLBSite
 PackingCLBSite is a container for the packing information (parameters, candidates and packing status) of a specific DeviceInfo::DeviceSite. More...
 
class  PULocation
 PULocation is a helper class to find the neighbor PlacementUnits with KD-Tree. More...
 

Public Types

typedef struct ParallelCLBPacker::_siteWithScore siteWithScore
 helper struct for candidate site sorting More...
 
typedef struct ParallelCLBPacker::_PUWithScore PUWithScore
 helper struct for candidate site sorting More...
 

Public Member Functions

 ParallelCLBPacker (DesignInfo *designInfo, DeviceInfo *deviceInfo, PlacementInfo *placementInfo, std::map< std::string, std::string > &JSONCfg, int unchangedIterationThr, int numNeighbor, float deltaD, float curD, float maxD, int PQSize, float HPWLWeight, std::string packerName, PlacementTimingOptimizer *timingOptimizer, WirelengthOptimizer *WLOptimizer=nullptr)
 Construct a new Parallel CLB Packer object. More...
 
 ~ParallelCLBPacker ()
 
void prePackLegalizedMacros (PlacementInfo::PlacementMacro *tmpMacro)
 Load the information of some packed macros like LUTRAM/Crossing-Clock-Domain FFs/Carry Chains have been legalized. More...
 
void packCLBsIteration (bool initial, bool debug=false)
 update the packing cluster candidates for each CLB site and determine some mapping from elements to sites according to the "confidence". More...
 
void packCLBs (int packIterNum, bool doExceptionHandling, bool debug=false)
 packing the PlacementUnits (which are compatible to CLB sites) into CLB sites More...
 
void addNonCLBPackingSites ()
 
int timingDrivenDetailedPlacement_shortestPath_intermediate ()
 
int timingDrivenDetailedPlacement_shortestPath (int iterId, float displacementRatio)
 
int timingDrivenDetailedPlacement_swap (int iterId)
 
int timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping ()
 
void exceptionHandling (bool verbose=false)
 handle the PlacementUnits that cannot be packed during the parallel procedure More...
 
std::vector< DeviceInfo::DeviceSite * > * findNeiborSitesFromBinGrid (DesignInfo::DesignCellType curCellType, float targetX, float targetY, float displacementLowerbound, float displacementUpperbound, float y2xRatio, bool clockRegionAware)
 find the neighbors of specific cell type with given coordinate center More...
 
std::vector< DeviceInfo::DeviceSite * > * findNeiborSitesFromBinGrid (DesignInfo::DesignCellType curCellType, float targetX, float targetY, float displacementLowerbound, float displacementUpperbound, float y2xRatio, bool clockRegionAware, float v1x, float v1y, float v2x, float v2y, int numLimit)
 
bool exceptionPULegalize (PlacementInfo::PlacementUnit *curPU, float displacementThreshold, bool verbose)
 try to find a legal location for the given PlacementUnit when most of PlacementUnits are packed into CLB site More...
 
bool ripUpAndLegalizae (PackingCLBSite *curTargetPackingSite, PlacementInfo::PlacementUnit *curPU, float displacementThreshold, std::map< PackingCLBSite *, PackingCLBSite::PackingCLBCluster * > &packingSite2DeterminedCluster, bool verbose)
 try to rip up the packing for a given CLB site and pack the given PlacementUnit in the site. The evicted PlacementUnits which are originally packed in this site and cannot be packed now will try to find other CLB sites to pack More...
 
void checkPackedPUsAndUnpackedPUs ()
 check the packing status for all the PlacementUnits More...
 
void setPULocationToPackedSite ()
 update the location of PlacementUnits according to the packing result More...
 
void updatePackedMacro (bool setPUPseudoNetToCLBSite=false, bool setCLBFixed=false)
 Update the macros in PlacementInfo by regarding those elements in one CLB site as a macro. More...
 
void setPUsToBePacked ()
 set the packed attribute for the packed PlacementUnits More...
 
void dumpFinalPacking ()
 
void dumpDSPBRAMPlacementTcl (std::ofstream &outfileTcl)
 
void dumpCLBPlacementTcl (std::ofstream &outfileTcl, bool packingRelatedToLUT6_2)
 
void dumpPlacementTcl (std::string dumpTclFile)
 
void dumpAllCellsCoordinate ()
 

Private Attributes

DesignInfodesignInfo
 
DeviceInfodeviceInfo
 
PlacementInfoplacementInfo
 
std::map< std::string, std::string > & JSONCfg
 
int unchangedIterationThr
 specify how many iterations a PlacementUnit should stay at the top priority of a site before we finally map it to the site More...
 
int numNeighbor
 the threshold number of cells for site More...
 
float deltaD
 the increase step of the neighbor search diameter More...
 
float curD
 current neighbor search diameter More...
 
float maxD
 the maximum constraint of the neighbor search diameter More...
 
int PQSize
 the size of priority queue (the low-priority candidates will be removed) More...
 
float HPWLWeight
 the factor of HPWL overhead in packing evaluation for a cell More...
 
std::string packerName
 
PlacementTimingOptimizertimingOptimizer = nullptr
 
WirelengthOptimizerWLOptimizer = nullptr
 
int DumpCLBPackingCnt = 0
 
int allCoordinateDumpCnt = 0
 
std::vector< PackingCLBSite * > PUId2PackingCLBSite
 
std::vector< PackingCLBSite * > packingSites
 
std::vector< std::vector< PackingCLBSite * > > clockColumns2PackingSites
 
std::vector< PackingCLBSite * > PUId2PackingCLBSiteCandidate
 
std::vector< PlacementInfo::PlacementUnit * > & placementUnits
 
std::vector< PlacementInfo::PlacementUnpackedCell * > & placementUnpackedCells
 
std::vector< PlacementInfo::PlacementMacro * > & placementMacros
 
std::set< DesignInfo::DesignCell * > & cellInMacros
 
std::map< int, PlacementInfo::PlacementUnit * > & cellId2PlacementUnit
 
std::map< DeviceInfo::DeviceSite *, PackingCLBSite * > deviceSite2PackingSite
 
std::set< PlacementInfo::PlacementUnit *, Packing_PUcomparepackedPUs
 
std::set< PlacementInfo::PlacementUnit *, Packing_PUcompareunpackedPUs
 
std::vector< PlacementInfo::PlacementUnit * > unpackedPUsVec
 
std::map< PackingCLBSite *, PlacementInfo::PlacementUnit * > involvedPackingSite2PU
 
std::vector< PULocationPUPoints
 
std::vector< PackingCLBSite * > cellId2PackingSite
 
float y2xRatio = 1.0
 
bool clockRegionAware = true
 whether make clock region become constraints More...
 

Detailed Description

ParallelCLBPacker will finally pack LUT/FF/MUX/CARRY elements into legal CLB sites in a parallel approach.

implemented based on the paper's Algorithm 1: W. Li and D. Z. Pan, "A New Paradigm for FPGA Placement Without Explicit Packing," in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 38, no. 11, pp. 2113-2126, Nov. 2019, doi: 10.1109/TCAD.2018.2877017.

We also provide many detailed optimization techniques according to our observation, macro constraints, timing demands, and the application characteristics to improve the packing efficiency and quality.

Definition at line 93 of file ParallelCLBPacker.h.

Member Typedef Documentation

◆ PUWithScore

helper struct for candidate site sorting

◆ siteWithScore

helper struct for candidate site sorting

Constructor & Destructor Documentation

◆ ParallelCLBPacker()

ParallelCLBPacker::ParallelCLBPacker ( DesignInfo designInfo,
DeviceInfo deviceInfo,
PlacementInfo placementInfo,
std::map< std::string, std::string > &  JSONCfg,
int  unchangedIterationThr,
int  numNeighbor,
float  deltaD,
float  curD,
float  maxD,
int  PQSize,
float  HPWLWeight,
std::string  packerName,
PlacementTimingOptimizer timingOptimizer,
WirelengthOptimizer WLOptimizer = nullptr 
)

Construct a new Parallel CLB Packer object.

Parameters
designInfogiven design information
deviceInfogiven device information
placementInfothe PlacementInfo for this placer to handle
JSONCfgthe user-defined placement configuration
unchangedIterationThrspecify how many iterations a PlacementUnit should stay at the top priority of a site before we finally map it to the site
numNeighborthe threshold number of cells for site
deltaDthe increase step of the neighbor search diameter
curDcurrent neighbor search diameter
maxDthe maximum constraint of the neighbor search diameter
PQSizethe size of priority queue (the low-priority candidates will be removed)
HPWLWeightthe factor of HPWL overhead in packing evaluation for a cell
packerNamethe name of this packer
timingOptimizertimingOptimizer
WLOptimizerWLOptimizer

Definition at line 57 of file ParallelCLBPacker.cc.

Here is the call graph for this function:

◆ ~ParallelCLBPacker()

ParallelCLBPacker::~ParallelCLBPacker ( )
inline

Definition at line 120 of file ParallelCLBPacker.h.

Member Function Documentation

◆ addNonCLBPackingSites()

void ParallelCLBPacker::addNonCLBPackingSites ( )

Definition at line 2743 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ checkPackedPUsAndUnpackedPUs()

void ParallelCLBPacker::checkPackedPUsAndUnpackedPUs ( )

check the packing status for all the PlacementUnits

Definition at line 1722 of file ParallelCLBPacker.cc.

Referenced by exceptionHandling().

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

◆ dumpAllCellsCoordinate()

void ParallelCLBPacker::dumpAllCellsCoordinate ( )

Definition at line 3420 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ dumpCLBPlacementTcl()

void ParallelCLBPacker::dumpCLBPlacementTcl ( std::ofstream &  outfileTcl,
bool  packingRelatedToLUT6_2 
)

Definition at line 3003 of file ParallelCLBPacker.cc.

Referenced by dumpPlacementTcl().

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

◆ dumpDSPBRAMPlacementTcl()

void ParallelCLBPacker::dumpDSPBRAMPlacementTcl ( std::ofstream &  outfileTcl)

Definition at line 2865 of file ParallelCLBPacker.cc.

Referenced by dumpPlacementTcl().

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

◆ dumpFinalPacking()

void ParallelCLBPacker::dumpFinalPacking ( )

Definition at line 3225 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ dumpPlacementTcl()

void ParallelCLBPacker::dumpPlacementTcl ( std::string  dumpTclFile)

Definition at line 3184 of file ParallelCLBPacker.cc.

Referenced by dumpFinalPacking().

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

◆ exceptionHandling()

void ParallelCLBPacker::exceptionHandling ( bool  verbose = false)

handle the PlacementUnits that cannot be packed during the parallel procedure

Parameters
verbosewhether dumping information for debugging

Definition at line 1766 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ exceptionPULegalize()

bool ParallelCLBPacker::exceptionPULegalize ( PlacementInfo::PlacementUnit curPU,
float  displacementThreshold,
bool  verbose 
)

try to find a legal location for the given PlacementUnit when most of PlacementUnits are packed into CLB site

Parameters
curPUa PlacementUnit which has NOT been legalized/packed
displacementThresholdthe displacement threshold to find the neighbor site candidate
verbosewhether print out debugging information
Returns
true if the PlacementUnit is legalized/packed successfully
false if the PlacementUnit CANNOT be legalized/packed successfully in this iteration

Definition at line 1931 of file ParallelCLBPacker.cc.

Referenced by exceptionHandling().

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

◆ findNeiborSitesFromBinGrid() [1/2]

std::vector< DeviceInfo::DeviceSite * > * ParallelCLBPacker::findNeiborSitesFromBinGrid ( DesignInfo::DesignCellType  curCellType,
float  targetX,
float  targetY,
float  displacementLowerbound,
float  displacementUpperbound,
float  y2xRatio,
bool  clockRegionAware 
)

find the neighbors of specific cell type with given coordinate center

Parameters
curCellTypethe given cell type
targetXcenter X
targetYcenter Y
displacementLowerboundthe lower bound threshold of neighbors' displacement from the center (the neighbors with low displacement might be tried by previous procedure)
displacementUpperboundthe upper bound threshold of neighbors' displacement from the center
y2xRatioa factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate
clockRegionAwarewhether make clock region become constraints
Returns
std::vector<DeviceInfo::DeviceSite *>*

Definition at line 2432 of file ParallelCLBPacker.cc.

Referenced by exceptionPULegalize(), ripUpAndLegalizae(), timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping(), timingDrivenDetailedPlacement_shortestPath(), and timingDrivenDetailedPlacement_swap().

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

◆ findNeiborSitesFromBinGrid() [2/2]

std::vector< DeviceInfo::DeviceSite * > * ParallelCLBPacker::findNeiborSitesFromBinGrid ( DesignInfo::DesignCellType  curCellType,
float  targetX,
float  targetY,
float  displacementLowerbound,
float  displacementUpperbound,
float  y2xRatio,
bool  clockRegionAware,
float  v1x,
float  v1y,
float  v2x,
float  v2y,
int  numLimit 
)

Definition at line 2304 of file ParallelCLBPacker.cc.

Here is the call graph for this function:

◆ packCLBs()

void ParallelCLBPacker::packCLBs ( int  packIterNum,
bool  doExceptionHandling,
bool  debug = false 
)

packing the PlacementUnits (which are compatible to CLB sites) into CLB sites

Parameters
packIterNumthe number of packing iteration
doExceptionHandlingconduct exception handling if some PlacementUnits fail to be legalized during the parallel procedure
debugwhether print out debugging information

Definition at line 288 of file ParallelCLBPacker.cc.

Referenced by AMFPlacer::run().

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

◆ packCLBsIteration()

void ParallelCLBPacker::packCLBsIteration ( bool  initial,
bool  debug = false 
)

update the packing cluster candidates for each CLB site and determine some mapping from elements to sites according to the "confidence".

Parameters
initialindicate whether it is the first round of the packing iteration
debugwhether print out debugging information

Definition at line 129 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ prePackLegalizedMacros()

void ParallelCLBPacker::prePackLegalizedMacros ( PlacementInfo::PlacementMacro tmpMacro)

Load the information of some packed macros like LUTRAM/Crossing-Clock-Domain FFs/Carry Chains have been legalized.

Parameters
tmpMacro

Definition at line 29 of file ParallelCLBPacker.cc.

Referenced by ParallelCLBPacker().

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

◆ ripUpAndLegalizae()

bool ParallelCLBPacker::ripUpAndLegalizae ( PackingCLBSite curTargetPackingSite,
PlacementInfo::PlacementUnit curPU,
float  displacementThreshold,
std::map< PackingCLBSite *, PackingCLBSite::PackingCLBCluster * > &  packingSite2DeterminedCluster,
bool  verbose 
)

try to rip up the packing for a given CLB site and pack the given PlacementUnit in the site. The evicted PlacementUnits which are originally packed in this site and cannot be packed now will try to find other CLB sites to pack

Parameters
curTargetPackingSitea given CLB site
curPUa given PlacementUnit
displacementThresholdthe displacement threshold for the evicted PlacementUnits to find the neighbor site candidates
packingSite2DeterminedClusterthe mapping between PlacementUnit and CLB sites
verbosewhether print out debugging information
Returns
true if such re-packing is sucessful for the involved CLB sites and PlacementUnits
false if such re-packing FAILS for the involved CLB sites and PlacementUnits

Definition at line 2050 of file ParallelCLBPacker.cc.

Referenced by exceptionPULegalize().

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

◆ setPULocationToPackedSite()

void ParallelCLBPacker::setPULocationToPackedSite ( )

update the location of PlacementUnits according to the packing result

Definition at line 2518 of file ParallelCLBPacker.cc.

Referenced by packCLBs(), and AMFPlacer::run().

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

◆ setPUsToBePacked()

void ParallelCLBPacker::setPUsToBePacked ( )

set the packed attribute for the packed PlacementUnits

Definition at line 2542 of file ParallelCLBPacker.cc.

◆ timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping()

int ParallelCLBPacker::timingDrivenDetailedPlacement_LUTFFPairReloacationAfterSlotMapping ( )

Definition at line 993 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ timingDrivenDetailedPlacement_shortestPath()

int ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath ( int  iterId,
float  displacementRatio 
)

Definition at line 539 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ timingDrivenDetailedPlacement_shortestPath_intermediate()

int ParallelCLBPacker::timingDrivenDetailedPlacement_shortestPath_intermediate ( )

Definition at line 1263 of file ParallelCLBPacker.cc.

Here is the call graph for this function:

◆ timingDrivenDetailedPlacement_swap()

int ParallelCLBPacker::timingDrivenDetailedPlacement_swap ( int  iterId)

Definition at line 1410 of file ParallelCLBPacker.cc.

Referenced by packCLBs().

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

◆ updatePackedMacro()

void ParallelCLBPacker::updatePackedMacro ( bool  setPUPseudoNetToCLBSite = false,
bool  setCLBFixed = false 
)

Update the macros in PlacementInfo by regarding those elements in one CLB site as a macro.

Parameters
setPUPseudoNetToCLBSitewhether set the legalization pseudo nets for those packed PlacementUnits after updateing
setCLBFixedwhether fix the locations of the packed PlacementUnits after updateing

Definition at line 2562 of file ParallelCLBPacker.cc.

Referenced by AMFPlacer::run().

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

Member Data Documentation

◆ allCoordinateDumpCnt

int ParallelCLBPacker::allCoordinateDumpCnt = 0
private

Definition at line 3021 of file ParallelCLBPacker.h.

Referenced by dumpAllCellsCoordinate().

◆ cellId2PackingSite

◆ cellId2PlacementUnit

std::map<int, PlacementInfo::PlacementUnit *>& ParallelCLBPacker::cellId2PlacementUnit
private

Definition at line 3031 of file ParallelCLBPacker.h.

Referenced by updatePackedMacro().

◆ cellInMacros

std::set<DesignInfo::DesignCell *>& ParallelCLBPacker::cellInMacros
private

Definition at line 3030 of file ParallelCLBPacker.h.

Referenced by updatePackedMacro().

◆ clockColumns2PackingSites

std::vector<std::vector<PackingCLBSite *> > ParallelCLBPacker::clockColumns2PackingSites
private

Definition at line 3025 of file ParallelCLBPacker.h.

Referenced by packCLBsIteration(), and ParallelCLBPacker().

◆ clockRegionAware

bool ParallelCLBPacker::clockRegionAware = true
private

whether make clock region become constraints

Definition at line 3047 of file ParallelCLBPacker.h.

Referenced by exceptionHandling(), exceptionPULegalize(), findNeiborSitesFromBinGrid(), and ripUpAndLegalizae().

◆ curD

float ParallelCLBPacker::curD
private

current neighbor search diameter

Definition at line 2996 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateStep().

◆ deltaD

float ParallelCLBPacker::deltaD
private

the increase step of the neighbor search diameter

Definition at line 2990 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateStep().

◆ designInfo

◆ deviceInfo

DeviceInfo* ParallelCLBPacker::deviceInfo
private

Definition at line 2970 of file ParallelCLBPacker.h.

Referenced by ParallelCLBPacker().

◆ deviceSite2PackingSite

◆ DumpCLBPackingCnt

int ParallelCLBPacker::DumpCLBPackingCnt = 0
private

Definition at line 3020 of file ParallelCLBPacker.h.

Referenced by dumpFinalPacking().

◆ HPWLWeight

float ParallelCLBPacker::HPWLWeight
private

the factor of HPWL overhead in packing evaluation for a cell

Definition at line 3014 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), and ParallelCLBPacker().

◆ involvedPackingSite2PU

std::map<PackingCLBSite *, PlacementInfo::PlacementUnit *> ParallelCLBPacker::involvedPackingSite2PU
private

Definition at line 3037 of file ParallelCLBPacker.h.

◆ JSONCfg

std::map<std::string, std::string>& ParallelCLBPacker::JSONCfg
private

◆ maxD

float ParallelCLBPacker::maxD
private

the maximum constraint of the neighbor search diameter

Definition at line 3002 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), exceptionHandling(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateStep().

◆ numNeighbor

int ParallelCLBPacker::numNeighbor
private

the threshold number of cells for site

Definition at line 2984 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateStep().

◆ packedPUs

std::set<PlacementInfo::PlacementUnit *, Packing_PUcompare> ParallelCLBPacker::packedPUs
private

Definition at line 3034 of file ParallelCLBPacker.h.

Referenced by checkPackedPUsAndUnpackedPUs(), and updatePackedMacro().

◆ packerName

std::string ParallelCLBPacker::packerName
private

Definition at line 3015 of file ParallelCLBPacker.h.

Referenced by dumpFinalPacking().

◆ packingSites

◆ placementInfo

◆ placementMacros

std::vector<PlacementInfo::PlacementMacro *>& ParallelCLBPacker::placementMacros
private

Definition at line 3029 of file ParallelCLBPacker.h.

Referenced by ParallelCLBPacker(), and updatePackedMacro().

◆ placementUnits

std::vector<PlacementInfo::PlacementUnit *>& ParallelCLBPacker::placementUnits
private

Definition at line 3027 of file ParallelCLBPacker.h.

Referenced by exceptionHandling(), and updatePackedMacro().

◆ placementUnpackedCells

std::vector<PlacementInfo::PlacementUnpackedCell *>& ParallelCLBPacker::placementUnpackedCells
private

Definition at line 3028 of file ParallelCLBPacker.h.

Referenced by updatePackedMacro().

◆ PQSize

int ParallelCLBPacker::PQSize
private

the size of priority queue (the low-priority candidates will be removed)

Definition at line 3008 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateStep().

◆ PUId2PackingCLBSite

◆ PUId2PackingCLBSiteCandidate

std::vector<PackingCLBSite *> ParallelCLBPacker::PUId2PackingCLBSiteCandidate
private

Definition at line 3026 of file ParallelCLBPacker.h.

Referenced by packCLBsIteration().

◆ PUPoints

std::vector<PULocation> ParallelCLBPacker::PUPoints
private

Definition at line 3038 of file ParallelCLBPacker.h.

Referenced by exceptionHandling().

◆ timingOptimizer

◆ unchangedIterationThr

int ParallelCLBPacker::unchangedIterationThr
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 2978 of file ParallelCLBPacker.h.

Referenced by addNonCLBPackingSites(), ParallelCLBPacker(), and ParallelCLBPacker::PackingCLBSite::updateConsistentPUsInTop().

◆ unpackedPUs

std::set<PlacementInfo::PlacementUnit *, Packing_PUcompare> ParallelCLBPacker::unpackedPUs
private

Definition at line 3035 of file ParallelCLBPacker.h.

Referenced by checkPackedPUsAndUnpackedPUs().

◆ unpackedPUsVec

std::vector<PlacementInfo::PlacementUnit *> ParallelCLBPacker::unpackedPUsVec
private

Definition at line 3036 of file ParallelCLBPacker.h.

Referenced by checkPackedPUsAndUnpackedPUs(), and exceptionHandling().

◆ WLOptimizer

WirelengthOptimizer* ParallelCLBPacker::WLOptimizer = nullptr
private

Definition at line 3018 of file ParallelCLBPacker.h.

Referenced by packCLBs().

◆ y2xRatio


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