| AMF-Placer
    2.0
    An Open-Source Timing-driven Analytical Mixed-size FPGA Placer | 
Placement net, compared to design net, includes information related to placement. More...
#include <PlacementInfo.h>

| Classes | |
| struct | _pinOffset | 
| Public Types | |
| typedef struct PlacementInfo::PlacementNet::_pinOffset | pinOffset | 
| Public Member Functions | |
| PlacementNet (DesignInfo::DesignNet *designNet, int id, std::vector< PlacementUnit * > &cellId2PlacementUnitVec, PlacementInfo *placementInfo) | |
| Construct a new Placement Net object.  More... | |
| ~PlacementNet () | |
| std::vector< PlacementUnit * > & | getUnits () | 
| Get the reference of the vector of PlacementUnits connected to the net The placement units in the vector might be duplicated because a net might connect to multiple pins of a unit.  More... | |
| std::vector< PlacementUnit * > & | getDriverUnits () | 
| Get the reference of the vector of the driver units that drive the net.  More... | |
| std::vector< PlacementUnit * > & | getUnitsBeDriven () | 
| Get the reference of the vector of the PlacementUnits driven by the net.  More... | |
| DesignInfo::DesignNet * | getDesignNet () | 
| Get the Design Net object.  More... | |
| int | getId () | 
| Get the Id of the net in current placement procedure.  More... | |
| std::vector< pinOffset > & | getPinOffsetsInUnit () | 
| Get the Pin Offsets (x,y) of the Units object.  More... | |
| bool | updateNetBounds (bool updateX, bool updateY) | 
| update the bounding box of the net  More... | |
| float | getHPWL (float y2xRatio) | 
| get current HPWL of the net  More... | |
| float | getNewHPWLByTrying (PlacementUnit *curPU, double targetPUX, double targetPUY, float y2xRatio) const | 
| Get the New HPWL By Trying to move a PlacementUnit object.  More... | |
| void | updateBound2BoundNetWeight (std::vector< Eigen::Triplet< float >> &objectiveMatrixTripletList, std::vector< float > &objectiveMatrixDiag, Eigen::VectorXd &objectiveVector, float generalWeight, float y2xRatio, bool updateX, bool updateY, bool checkClockRegion=false) | 
| update the weights of 2-pin nets between PlacementUnits in this hyperedge(PlacementNet) according to Bound2Bound net model  More... | |
| void | addPseudoNet_enhancePin2Pin (std::vector< Eigen::Triplet< float >> &objectiveMatrixTripletList, std::vector< float > &objectiveMatrixDiag, Eigen::VectorXd &objectiveVector, float generalWeight, float y2xRatio, bool updateX, bool updateY, int PUIdA, int PUIdB, int pinIdA_net, int pinIdB_net) | 
| void | drawNet (float generalWeight=1.0) | 
| void | addB2BNet (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) | 
| set weights of the terms in the quadratic problem  More... | |
| std::set< PlacementUnit * > & | getPUSet () | 
| float | getLeftPinX () | 
| float | getRightPinX () | 
| float | getTopPinY () | 
| float | getBottomPinY () | 
| int | getLeftPUId () | 
| int | getRightPUId () | 
| int | getTopPUId () | 
| int | getBottomPUId () | 
| bool | isGlobalClock () | 
| Private Attributes | |
| DesignInfo::DesignNet * | designNet = nullptr | 
| std::vector< PlacementUnit * > | unitsOfNetPins | 
| std::vector< PlacementUnit * > | unitsOfDriverPins | 
| std::vector< PlacementUnit * > | unitsOfPinsBeDriven | 
| std::vector< pinOffset > | pinOffsetsInUnit | 
| std::set< PlacementUnit * > | PUSet | 
| int | id | 
| PlacementInfo * | placementInfo = nullptr | 
| float | leftPUX | 
| float | rightPUX | 
| float | topPUY | 
| float | bottomPUY | 
| float | leftPinX | 
| float | rightPinX | 
| float | topPinY | 
| float | bottomPinY | 
| unsigned int | leftPuId | 
| unsigned int | rightPuId | 
| unsigned int | topPuId | 
| unsigned int | bottomPuId | 
| unsigned int | leftPinId_net | 
| unsigned int | rightPinId_net | 
| unsigned int | topPinId_net | 
| unsigned int | bottomPinId_net | 
| float | eps = 1e-5 | 
| float | minDist = 1 | 
Placement net, compared to design net, includes information related to placement.
Placement net, compared to design net, includes information related to placement: HPWL bounding box, interconnection between placement units (unpacked/macro), APIs to check wirelength.
Please note that PlacementNet is HyperEdge, connecting to multiple pins.
Definition at line 1876 of file PlacementInfo.h.
| 
 | inline | 
Construct a new Placement Net object.
| designNet | each PlacementNet is binded to design net. | 
| id | |
| cellId2PlacementUnitVec | 
Definition at line 1886 of file PlacementInfo.h.

| 
 | inline | 
Definition at line 1926 of file PlacementInfo.h.
| 
 | inline | 
set weights of the terms in the quadratic problem
min_x 0.5 * x'Px + q'x s.t. l <= Ax <= u
| 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 2353 of file PlacementInfo.h.
Referenced by addPseudoNet_enhancePin2Pin(), and updateBound2BoundNetWeight().

| 
 | inline | 
| void PlacementInfo::PlacementNet::drawNet | ( | float | generalWeight = 1.0 | ) | 
Definition at line 760 of file PlacementInfo.cc.
| 
 | inline | 
Definition at line 2427 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight().

| 
 | inline | 
Definition at line 2451 of file PlacementInfo.h.
| 
 | inline | 
Get the Design Net object.
Definition at line 1973 of file PlacementInfo.h.
| 
 | inline | 
Get the reference of the vector of the driver units that drive the net.
Definition at line 1953 of file PlacementInfo.h.
| 
 | inline | 
get current HPWL of the net
| y2xRatio | a factor to tune the weights of the net spanning in Y-coordinate relative to the net spanning in X-coordinate | 
Definition at line 2076 of file PlacementInfo.h.
| 
 | inline | 
Get the Id of the net in current placement procedure.
Definition at line 1983 of file PlacementInfo.h.
Referenced by Packing_Netcompare::operator()().

| 
 | inline | 
Definition at line 2409 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight().

| 
 | inline | 
Definition at line 2433 of file PlacementInfo.h.
| 
 | inline | 
Get the New HPWL By Trying to move a PlacementUnit object.
For some procedures like legalization and packing, evaluate the wirelength change if the location of a PlacementUnit is changed.
| curPU | the PlacementUnit to be moved | 
| targetPUX | |
| targetPUY | |
| y2xRatio | 
Definition at line 2093 of file PlacementInfo.h.

| 
 | inline | 
Get the Pin Offsets (x,y) of the Units object.
Definition at line 1993 of file PlacementInfo.h.
| 
 | inline | 
Definition at line 2404 of file PlacementInfo.h.
| 
 | inline | 
Definition at line 2415 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight().

| 
 | inline | 
Definition at line 2439 of file PlacementInfo.h.
| 
 | inline | 
Definition at line 2421 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight().

| 
 | inline | 
Definition at line 2445 of file PlacementInfo.h.
| 
 | inline | 
Get the reference of the vector of PlacementUnits connected to the net The placement units in the vector might be duplicated because a net might connect to multiple pins of a unit.
Definition at line 1943 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getInternalPinsNum(), and PlacementInfo::reloadNets().

| 
 | inline | 
Get the reference of the vector of the PlacementUnits driven by the net.
Definition at line 1963 of file PlacementInfo.h.
Referenced by ParallelCLBPacker::PackingCLBSite::PackingCLBCluster::getInternalPinsNum().

| 
 | inline | 
Definition at line 2457 of file PlacementInfo.h.
Referenced by PlacementInfo::reloadNets().


| 
 | inline | 
update the weights of 2-pin nets between PlacementUnits in this hyperedge(PlacementNet) according to Bound2Bound net model
In the quadratic placement, the wirelength(HPWL) can be modeled into a quadratic equation based on Bound2Bound net model. The equation can be represented by matrix operation (XQX^T+PX)
| 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 | 
| generalWeight | a weight given from external setting | 
| 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 2184 of file PlacementInfo.h.

| 
 | inline | 
update the bounding box of the net
| updateX | if true, update the bounding box of the net in X coordinate | 
| updateY | if true, update the bounding box of the net in Y coordinate | 
Definition at line 2006 of file PlacementInfo.h.
| 
 | private | 
Definition at line 2476 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2474 of file PlacementInfo.h.
Referenced by getBottomPinY(), getHPWL(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2475 of file PlacementInfo.h.
Referenced by getBottomPinY(), getBottomPUId(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2473 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2464 of file PlacementInfo.h.
Referenced by getDesignNet(), isGlobalClock(), PlacementNet(), and updateBound2BoundNetWeight().
| 
 | private | 
Definition at line 2477 of file PlacementInfo.h.
Referenced by addB2BNet().
| 
 | private | 
Definition at line 2471 of file PlacementInfo.h.
Referenced by getId().
| 
 | private | 
Definition at line 2476 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2474 of file PlacementInfo.h.
Referenced by getHPWL(), getLeftPinX(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2475 of file PlacementInfo.h.
Referenced by getLeftPinX(), getLeftPUId(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2473 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2478 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight().
| 
 | private | 
Definition at line 2468 of file PlacementInfo.h.
Referenced by addPseudoNet_enhancePin2Pin(), getNewHPWLByTrying(), getPinOffsetsInUnit(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2472 of file PlacementInfo.h.
Referenced by getNewHPWLByTrying(), and updateBound2BoundNetWeight().
| 
 | private | 
Definition at line 2469 of file PlacementInfo.h.
Referenced by getPUSet(), and PlacementNet().
| 
 | private | 
Definition at line 2476 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2474 of file PlacementInfo.h.
Referenced by getHPWL(), getRightPinX(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2475 of file PlacementInfo.h.
Referenced by getRightPinX(), getRightPUId(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2473 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2476 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2474 of file PlacementInfo.h.
Referenced by getHPWL(), getTopPinY(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2475 of file PlacementInfo.h.
Referenced by getTopPinY(), getTopPUId(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2473 of file PlacementInfo.h.
Referenced by updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2466 of file PlacementInfo.h.
Referenced by getDriverUnits(), and PlacementNet().
| 
 | private | 
Definition at line 2465 of file PlacementInfo.h.
Referenced by addPseudoNet_enhancePin2Pin(), getNewHPWLByTrying(), getUnits(), PlacementNet(), updateBound2BoundNetWeight(), and updateNetBounds().
| 
 | private | 
Definition at line 2467 of file PlacementInfo.h.
Referenced by getUnitsBeDriven(), and PlacementNet().