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

IncrementalBELPacker incrementally packs some LUTs/FFs during global placement based on their distance, interconnection density and compatibility. More...

#include <IncrementalBELPacker.h>

Collaboration diagram for IncrementalBELPacker:

Classes

struct  _CellWithScore
 
struct  _PUWithScore
 
class  FFLocation
 FFLocation records the FF cell pointer and the location of the FF cell for kdt::KDTree construction which can help to find neighbors for cells. More...
 

Public Member Functions

 IncrementalBELPacker (DesignInfo *designInfo, DeviceInfo *deviceInfo, PlacementInfo *placementInfo, std::map< std::string, std::string > &JSONCfg)
 Construct a new Incremental BEL Packer object. More...
 
void isLUTsPackable (PlacementInfo::PlacementUnpackedCell *LUTA, PlacementInfo::PlacementUnpackedCell *LUTB)
 check whether two LUTs can be packed to share one BEL More...
 
void LUTFFPairing (float disThreshold)
 try to pair LUTs/FFs in the design netlist which are neighbors according to a given threshold and connectivity More...
 
void FFPairing (float disThreshold)
 try to pair FFs in the design netlist which are neighbors according to a given threshold and the control set compatibility More...
 
void dumpPairedLUTFF ()
 
float getCellDistance (PlacementInfo::Location &A, PlacementInfo::Location &B)
 

Private Types

typedef struct IncrementalBELPacker::_PUWithScore PUWithScore
 
typedef struct IncrementalBELPacker::_CellWithScore CellWithScore
 

Private Attributes

DesignInfodesignInfo
 
DeviceInfodeviceInfo
 
PlacementInfoplacementInfo
 
PlacementInfo::CompatiblePlacementTablecompatiblePlacementTable
 
std::vector< PlacementInfo::PlacementUnit * > & placementUnits
 
std::vector< PlacementInfo::PlacementUnpackedCell * > & placementUnpackedCells
 
std::vector< PlacementInfo::PlacementMacro * > & placementMacros
 
std::vector< PlacementInfo::PlacementUnit * > & fixedPlacementUnits
 
std::set< DesignInfo::DesignCell * > & cellInMacros
 
std::map< int, PlacementInfo::PlacementUnit * > & cellId2PlacementUnit
 
std::vector< PlacementInfo::PlacementUnit * > & cellId2PlacementUnitVec
 
std::map< std::string, std::string > & JSONCfg
 
std::vector< int > placementNetId2LUTPlacementUnitId
 
std::vector< std::pair< DesignInfo::DesignCell *, DesignInfo::DesignCell * > > LUTFFPairs
 
std::vector< std::pair< DesignInfo::DesignCell *, DesignInfo::DesignCell * > > FF_FFPairs
 
int LUTFFPairDumpCnt = 0
 
float y2xRatio = 1.0
 

Detailed Description

IncrementalBELPacker incrementally packs some LUTs/FFs during global placement based on their distance, interconnection density and compatibility.

Definition at line 49 of file IncrementalBELPacker.h.

Member Typedef Documentation

◆ CellWithScore

◆ PUWithScore

Constructor & Destructor Documentation

◆ IncrementalBELPacker()

IncrementalBELPacker::IncrementalBELPacker ( DesignInfo designInfo,
DeviceInfo deviceInfo,
PlacementInfo placementInfo,
std::map< std::string, std::string > &  JSONCfg 
)
inline

Construct a new Incremental BEL Packer object.

Parameters
designInfogiven design information
deviceInfogiven device information
placementInfothe PlacementInfo for this placer to handle
JSONCfgthe user-defined placement configuration

Definition at line 60 of file IncrementalBELPacker.h.

Member Function Documentation

◆ dumpPairedLUTFF()

void IncrementalBELPacker::dumpPairedLUTFF ( )

Definition at line 419 of file IncrementalBELPacker.cc.

Referenced by FFPairing(), and LUTFFPairing().

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

◆ FFPairing()

void IncrementalBELPacker::FFPairing ( float  disThreshold)

try to pair FFs in the design netlist which are neighbors according to a given threshold and the control set compatibility

Parameters
disThresholda given threshold

Definition at line 253 of file IncrementalBELPacker.cc.

Referenced by AMFPlacer::run().

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

◆ getCellDistance()

float IncrementalBELPacker::getCellDistance ( PlacementInfo::Location A,
PlacementInfo::Location B 
)
inline

Definition at line 103 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

Here is the caller graph for this function:

◆ isLUTsPackable()

void IncrementalBELPacker::isLUTsPackable ( PlacementInfo::PlacementUnpackedCell LUTA,
PlacementInfo::PlacementUnpackedCell LUTB 
)

check whether two LUTs can be packed to share one BEL

Parameters
LUTA
LUTB

Definition at line 35 of file IncrementalBELPacker.cc.

Here is the call graph for this function:

◆ LUTFFPairing()

void IncrementalBELPacker::LUTFFPairing ( float  disThreshold)

try to pair LUTs/FFs in the design netlist which are neighbors according to a given threshold and connectivity

Parameters
disThresholda given threshold

Definition at line 44 of file IncrementalBELPacker.cc.

Referenced by AMFPlacer::run().

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

Member Data Documentation

◆ cellId2PlacementUnit

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

Definition at line 167 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ cellId2PlacementUnitVec

std::vector<PlacementInfo::PlacementUnit *>& IncrementalBELPacker::cellId2PlacementUnitVec
private

Definition at line 168 of file IncrementalBELPacker.h.

Referenced by LUTFFPairing().

◆ cellInMacros

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

Definition at line 166 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ compatiblePlacementTable

PlacementInfo::CompatiblePlacementTable* IncrementalBELPacker::compatiblePlacementTable
private

Definition at line 161 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ designInfo

DesignInfo* IncrementalBELPacker::designInfo
private

Definition at line 158 of file IncrementalBELPacker.h.

Referenced by FFPairing().

◆ deviceInfo

DeviceInfo* IncrementalBELPacker::deviceInfo
private

Definition at line 159 of file IncrementalBELPacker.h.

◆ FF_FFPairs

std::vector<std::pair<DesignInfo::DesignCell *, DesignInfo::DesignCell *> > IncrementalBELPacker::FF_FFPairs
private

Definition at line 173 of file IncrementalBELPacker.h.

Referenced by FFPairing().

◆ fixedPlacementUnits

std::vector<PlacementInfo::PlacementUnit *>& IncrementalBELPacker::fixedPlacementUnits
private

Definition at line 165 of file IncrementalBELPacker.h.

◆ JSONCfg

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

Definition at line 169 of file IncrementalBELPacker.h.

Referenced by dumpPairedLUTFF(), and IncrementalBELPacker().

◆ LUTFFPairDumpCnt

int IncrementalBELPacker::LUTFFPairDumpCnt = 0
private

Definition at line 174 of file IncrementalBELPacker.h.

Referenced by dumpPairedLUTFF().

◆ LUTFFPairs

std::vector<std::pair<DesignInfo::DesignCell *, DesignInfo::DesignCell *> > IncrementalBELPacker::LUTFFPairs
private

Definition at line 172 of file IncrementalBELPacker.h.

Referenced by dumpPairedLUTFF(), FFPairing(), and LUTFFPairing().

◆ placementInfo

PlacementInfo* IncrementalBELPacker::placementInfo
private

Definition at line 160 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ placementMacros

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

Definition at line 164 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ placementNetId2LUTPlacementUnitId

std::vector<int> IncrementalBELPacker::placementNetId2LUTPlacementUnitId
private

Definition at line 170 of file IncrementalBELPacker.h.

◆ placementUnits

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

Definition at line 162 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ placementUnpackedCells

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

Definition at line 163 of file IncrementalBELPacker.h.

Referenced by FFPairing(), and LUTFFPairing().

◆ y2xRatio

float IncrementalBELPacker::y2xRatio = 1.0
private

Definition at line 175 of file IncrementalBELPacker.h.

Referenced by FFPairing(), getCellDistance(), and IncrementalBELPacker().


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