AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
DesignInfo::DesignNet Class Reference

a design net (hyperedge) defined in the design, connecting to pins of cells More...

#include <DesignInfo.h>

Inheritance diagram for DesignInfo::DesignNet:
Collaboration diagram for DesignInfo::DesignNet:

Public Member Functions

 DesignNet (std::string &name, int id, bool virtualNet=false)
 Construct a new Design Net object. More...
 
 ~DesignNet ()
 
void connectToPinName (const std::string &_pinName)
 bind the net to a pin by name More...
 
void connectToPinVariable (DesignPin *_pinPtr)
 bind the net to a pin's pointer More...
 
std::vector< DesignPin * > & getDriverPins ()
 Get the vector reference of the driver pins of the net. More...
 
std::vector< DesignPin * > & getPinsBeDriven ()
 Get the vector reference of the pins driven by the net. More...
 
std::vector< DesignPin * > & getPins ()
 Get the vector reference of the pins. More...
 
bool isVirtual ()
 
void enhance (int pinIdInNetA, int pinIdInNetB, float ratio)
 placer can customize some 2-pin interconnections to make their weights enhanced during wirelength optimization More...
 
float getPinPairEnhanceRatio (int pinIdInNetA, int pinIdInNetB)
 Get the Pin Pair Enhance Ratio (placer can customize some 2-pin interconnections to make their weights enhanced during wirelength optimization) More...
 
float getOverallClusterEnhanceRatio ()
 Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.) More...
 
float getOverallTimingEnhanceRatio ()
 Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.) More...
 
float getOverallEnhanceRatio ()
 Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.) More...
 
void setOverallClusterNetEnhancement (float r)
 Set the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.) More...
 
void setOverallTimingNetEnhancement (float r)
 Set the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.) More...
 
void enhanceOverallClusterNetEnhancement (float r)
 increase the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.) More...
 
void enhanceOverallTimingNetEnhancement (float r)
 increase the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.) More...
 
void resetEnhanceRatio ()
 
void setGlobalClock ()
 Set the attribute isGlobalClock to be true. More...
 
bool checkIsGlobalClock ()
 check the attribute isGlobalClock More...
 
bool checkIsPowerNet ()
 check whether the net is VCC or GND More...
 
bool checkContainFixedPins ()
 
void setContainFixedPins ()
 
- Public Member Functions inherited from DesignInfo::DesignElement
 DesignElement (const std::string &name, DesignElement *parentPtr, DesignElementType type, int id)
 
 DesignElement (const std::string &name, DesignElementType type, int id)
 
 DesignElement (bool isVirtual, DesignElementType type, int id)
 
 DesignElement (bool isVirtual, const std::string &_name, DesignElementType type, int id)
 
virtual ~DesignElement ()
 
const std::string & getName () const
 
DesignElementgetParentPtr ()
 
DesignElementType getElementType ()
 
int getElementIdInType ()
 

Private Attributes

std::vector< std::string > pinNames
 
std::vector< DesignPin * > pinPtrs
 
std::vector< DesignPin * > driverPinPtrs
 
std::vector< DesignPin * > BeDrivenPinPtrs
 
bool containFixedPins = false
 
std::map< std::pair< int, int >, float > pinIdPinIdInNet2EnhanceRatio
 
float overallClusterEnhanceRatio = 1.0
 
float overallTimingEnhanceRatio = 1.0
 
bool virtualNet
 
bool isGlobalClock = false
 
bool isPowerNet = false
 

Detailed Description

a design net (hyperedge) defined in the design, connecting to pins of cells

Definition at line 524 of file DesignInfo.h.

Constructor & Destructor Documentation

◆ DesignNet()

DesignInfo::DesignNet::DesignNet ( std::string &  name,
int  id,
bool  virtualNet = false 
)
inline

Construct a new Design Net object.

the DesignNet will only initilize with name and id. Later it will bind to pins and cells.

Parameters
namethe name of the net
idthe Id of the net
virtualNetis it a virtual net not defined in the design?

Definition at line 536 of file DesignInfo.h.

◆ ~DesignNet()

DesignInfo::DesignNet::~DesignNet ( )
inline

Definition at line 547 of file DesignInfo.h.

Member Function Documentation

◆ checkContainFixedPins()

bool DesignInfo::DesignNet::checkContainFixedPins ( )
inline

Definition at line 753 of file DesignInfo.h.

◆ checkIsGlobalClock()

bool DesignInfo::DesignNet::checkIsGlobalClock ( )
inline

check the attribute isGlobalClock

Returns
true if the net is a global clock (which could CLK, SR, or CE signal)
false if the net is not a global clock

Definition at line 737 of file DesignInfo.h.

Referenced by PlacementInfo::PlacementNet::isGlobalClock().

Here is the caller graph for this function:

◆ checkIsPowerNet()

bool DesignInfo::DesignNet::checkIsPowerNet ( )
inline

check whether the net is VCC or GND

Returns
true if the net is VCC or GND
false if the net is NOT VCC or GND

Definition at line 748 of file DesignInfo.h.

◆ connectToPinName()

void DesignInfo::DesignNet::connectToPinName ( const std::string &  _pinName)

bind the net to a pin by name

Parameters
_pinName

Definition at line 81 of file DesignInfo.cc.

Referenced by DesignInfo::addPinToNet().

Here is the caller graph for this function:

◆ connectToPinVariable()

void DesignInfo::DesignNet::connectToPinVariable ( DesignPin _pinPtr)

bind the net to a pin's pointer

be aware that the net could bind to multiple pins

Parameters
_pinPtr

Definition at line 86 of file DesignInfo.cc.

Referenced by DesignInfo::addPinToNet().

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

◆ enhance()

void DesignInfo::DesignNet::enhance ( int  pinIdInNetA,
int  pinIdInNetB,
float  ratio 
)
inline

placer can customize some 2-pin interconnections to make their weights enhanced during wirelength optimization

Parameters
pinIdInNetApin A's id in the pin list of the net
pinIdInNetBpin B's id in the pin list of the net
ratioenhance the weight to what extent

Definition at line 609 of file DesignInfo.h.

◆ enhanceOverallClusterNetEnhancement()

void DesignInfo::DesignNet::enhanceOverallClusterNetEnhancement ( float  r)
inline

increase the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.)

Parameters
r

Definition at line 698 of file DesignInfo.h.

◆ enhanceOverallTimingNetEnhancement()

void DesignInfo::DesignNet::enhanceOverallTimingNetEnhancement ( float  r)
inline

increase the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.)

Parameters
r

Definition at line 708 of file DesignInfo.h.

◆ getDriverPins()

std::vector<DesignPin *>& DesignInfo::DesignNet::getDriverPins ( )
inline

Get the vector reference of the driver pins of the net.

Returns
std::vector<DesignPin *>&

Definition at line 571 of file DesignInfo.h.

◆ getOverallClusterEnhanceRatio()

float DesignInfo::DesignNet::getOverallClusterEnhanceRatio ( )
inline

Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.)

Returns
float

Definition at line 648 of file DesignInfo.h.

◆ getOverallEnhanceRatio()

float DesignInfo::DesignNet::getOverallEnhanceRatio ( )
inline

Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.)

Returns
float

Definition at line 668 of file DesignInfo.h.

Referenced by PlacementInfo::PlacementNet::updateBound2BoundNetWeight().

Here is the caller graph for this function:

◆ getOverallTimingEnhanceRatio()

float DesignInfo::DesignNet::getOverallTimingEnhanceRatio ( )
inline

Get the Overall Enhance Ratio (the entire net can be enhanced to a pre-defined extent.)

Returns
float

Definition at line 658 of file DesignInfo.h.

◆ getPinPairEnhanceRatio()

float DesignInfo::DesignNet::getPinPairEnhanceRatio ( int  pinIdInNetA,
int  pinIdInNetB 
)
inline

Get the Pin Pair Enhance Ratio (placer can customize some 2-pin interconnections to make their weights enhanced during wirelength optimization)

Parameters
pinIdInNetApin A's id in the pin list of the net
pinIdInNetBpin B's id in the pin list of the net
Returns
float

Definition at line 630 of file DesignInfo.h.

Referenced by PlacementInfo::PlacementNet::updateBound2BoundNetWeight().

Here is the caller graph for this function:

◆ getPins()

std::vector<DesignPin *>& DesignInfo::DesignNet::getPins ( )
inline

Get the vector reference of the pins.

Returns
std::vector<DesignPin *>&

Definition at line 591 of file DesignInfo.h.

Referenced by DesignInfo::loadUserDefinedClusterNets(), and PlacementInfo::PlacementNet::PlacementNet().

Here is the caller graph for this function:

◆ getPinsBeDriven()

std::vector<DesignPin *>& DesignInfo::DesignNet::getPinsBeDriven ( )
inline

Get the vector reference of the pins driven by the net.

Returns
std::vector<DesignPin *>&

Definition at line 581 of file DesignInfo.h.

Referenced by InitialPacker::findCARRYMacros(), ParallelCLBPacker::PackingCLBSite::mapCarryRelatedCellsToSlots(), and InitialPacker::mapCarryRelatedRouteThru().

Here is the caller graph for this function:

◆ isVirtual()

bool DesignInfo::DesignNet::isVirtual ( )
inline

Definition at line 596 of file DesignInfo.h.

◆ resetEnhanceRatio()

void DesignInfo::DesignNet::resetEnhanceRatio ( )
inline

Definition at line 713 of file DesignInfo.h.

◆ setContainFixedPins()

void DesignInfo::DesignNet::setContainFixedPins ( )
inline

Definition at line 758 of file DesignInfo.h.

◆ setGlobalClock()

void DesignInfo::DesignNet::setGlobalClock ( )
inline

Set the attribute isGlobalClock to be true.

if the net is a global clock (which could CLK, SR, or CE signal)

Definition at line 726 of file DesignInfo.h.

◆ setOverallClusterNetEnhancement()

void DesignInfo::DesignNet::setOverallClusterNetEnhancement ( float  r)
inline

Set the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.)

Parameters
r

Definition at line 678 of file DesignInfo.h.

◆ setOverallTimingNetEnhancement()

void DesignInfo::DesignNet::setOverallTimingNetEnhancement ( float  r)
inline

Set the Overall Net Enhancement (the entire net can be enhanced to a pre-defined extent.)

Parameters
r

Definition at line 688 of file DesignInfo.h.

Member Data Documentation

◆ BeDrivenPinPtrs

std::vector<DesignPin *> DesignInfo::DesignNet::BeDrivenPinPtrs
private

Definition at line 767 of file DesignInfo.h.

Referenced by getPinsBeDriven().

◆ containFixedPins

bool DesignInfo::DesignNet::containFixedPins = false
private

Definition at line 768 of file DesignInfo.h.

Referenced by checkContainFixedPins(), and setContainFixedPins().

◆ driverPinPtrs

std::vector<DesignPin *> DesignInfo::DesignNet::driverPinPtrs
private

Definition at line 766 of file DesignInfo.h.

Referenced by getDriverPins().

◆ isGlobalClock

bool DesignInfo::DesignNet::isGlobalClock = false
private

Definition at line 773 of file DesignInfo.h.

Referenced by checkIsGlobalClock(), and setGlobalClock().

◆ isPowerNet

bool DesignInfo::DesignNet::isPowerNet = false
private

Definition at line 774 of file DesignInfo.h.

Referenced by checkIsPowerNet(), and DesignNet().

◆ overallClusterEnhanceRatio

float DesignInfo::DesignNet::overallClusterEnhanceRatio = 1.0
private

◆ overallTimingEnhanceRatio

float DesignInfo::DesignNet::overallTimingEnhanceRatio = 1.0
private

◆ pinIdPinIdInNet2EnhanceRatio

std::map<std::pair<int, int>, float> DesignInfo::DesignNet::pinIdPinIdInNet2EnhanceRatio
private

Definition at line 769 of file DesignInfo.h.

Referenced by enhance(), getPinPairEnhanceRatio(), and resetEnhanceRatio().

◆ pinNames

std::vector<std::string> DesignInfo::DesignNet::pinNames
private

Definition at line 764 of file DesignInfo.h.

◆ pinPtrs

std::vector<DesignPin *> DesignInfo::DesignNet::pinPtrs
private

Definition at line 765 of file DesignInfo.h.

Referenced by getPins().

◆ virtualNet

bool DesignInfo::DesignNet::virtualNet
private

Definition at line 772 of file DesignInfo.h.

Referenced by isVirtual().


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