AMF-Placer  2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
PlacementTimingInfo::TimingGraph< nodeType >::TimingNode Class Reference

TimingNode is the node in TimingGraph, which could be pin or cell in the design netlist. More...

#include <PlacementTimingInfo.h>

Public Member Functions

 TimingNode (nodeType *designNode, int id)
 Construct a new Timing Node object. More...
 
 ~TimingNode ()
 
int getId ()
 
nodeType * getDesignNode ()
 
void setIsRegister ()
 indicate that this node is a register node More...
 
bool checkIsRegister ()
 check if the node is a register node More...
 
void addInEdge (TimingEdge *tmpEdge)
 
void addOutEdge (TimingEdge *tmpEdge)
 
void setForwardLevel (int _forwardLevel)
 Set the data path forward level of the node for later propagation. More...
 
void setBackwardLevel (int _backwardLevel)
 
void calcLongestPath ()
 calculate the length of the longest path containing this TimingNode More...
 
int getForwardLevel ()
 Get the distance toward the farthest predecessor register based on the path length (instead of delay) More...
 
int getBackwardLevel ()
 Get the distance toward the farthest successor register based on the path length (instead of delay) More...
 
int getLongestPathLength ()
 Get the length of the longest path containing this TimingNode. More...
 
void setDestLevel (int _destLevel)
 
int getDestLevel ()
 
std::vector< TimingEdge * > & getOutEdges ()
 Get the outward edges from this TimingNode. More...
 
void sortOutEdgesByBackwardLevel ()
 sort the outward edges by their sink node backward level More...
 
std::vector< TimingEdge * > & getInEdges ()
 Get the inward edges to this TimingNode. More...
 
void sortInEdgesByForwardLevel ()
 sort the inward edges by their source node forward level More...
 
float getLatestInputArrival ()
 Get the latest arrival time to the output of this timing node. More...
 
void setLatestInputArrival (float _latestInputArrival)
 Set the latest arrival time to the output of this timing node. More...
 
void setLatestOutputArrival (float _latestOutputArrival)
 
float getLatestOutputArrival ()
 
int getSlowestPredecessorId ()
 Get the slowest predecessor node Id. More...
 
void setSlowestPredecessorId (int _slowestPredecessorId)
 Set the slowest predecessor node Id. More...
 
void setInnerDelay (float _innerDelay)
 Set the inner delay. More...
 
float getInnerDelay ()
 Get the inner delay. More...
 
float getRequiredArrivalTime ()
 Get the required arrival time. More...
 
void setRequiredArrivalTime (float _requiredArrival)
 Set the required arrival time. More...
 
void setInitialRequiredArrivalTime (float _requiredArrival)
 Set the required arrival time. More...
 
int getEarlestSuccessorId ()
 Get the earliest successor node Id. More...
 
void setEarlestSuccessorId (int _earliestSuccessorId)
 Set the earliest successor node Id. More...
 
void setClockPeriod (float _clockPeriod)
 
float getClockPeriod ()
 
void setClusterId (int _clusterId)
 
float getClusterId ()
 

Private Attributes

nodeType * designNode = nullptr
 the pointer linked to the design element (pin or cell) More...
 
int id
 
float latestInputArrival = 0.0
 
float latestOutputArrival = 0.0
 
float requiredArrival = 10.0
 
float clockPeriod = -10
 
int slowestPredecessorId = -1
 
int earliestSuccessorId = -1
 
int clusterId = -1
 
float innerDelay = 0.1
 the node can have internal delay (e.g., cell delay) More...
 
bool isRegister = false
 
std::vector< TimingEdge * > inEdges
 
std::vector< TimingEdge * > outEdges
 
int forwardLevel = -1
 the distance toward the farthest predecessor register based on the path length (instead of delay) More...
 
int backwardLevel = -1
 the distance toward the farthest successor register based on the path length (instead of delay) More...
 
int destLevel = -1
 
int longestPathLength = 100000000
 the length of the longest path containing this TimingNode More...
 

Detailed Description

template<typename nodeType>
class PlacementTimingInfo::TimingGraph< nodeType >::TimingNode

TimingNode is the node in TimingGraph, which could be pin or cell in the design netlist.

Definition at line 96 of file PlacementTimingInfo.h.

Constructor & Destructor Documentation

◆ TimingNode()

template<typename nodeType >
PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::TimingNode ( nodeType *  designNode,
int  id 
)
inline

Construct a new Timing Node object.

Parameters
designNodenode element, could be cell or pin
idunique id for the node

Definition at line 105 of file PlacementTimingInfo.h.

◆ ~TimingNode()

template<typename nodeType >
PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::~TimingNode ( )
inline

Definition at line 110 of file PlacementTimingInfo.h.

Member Function Documentation

◆ addInEdge()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::addInEdge ( TimingEdge tmpEdge)
inline

Definition at line 142 of file PlacementTimingInfo.h.

◆ addOutEdge()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::addOutEdge ( TimingEdge tmpEdge)
inline

Definition at line 147 of file PlacementTimingInfo.h.

◆ calcLongestPath()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::calcLongestPath ( )
inline

calculate the length of the longest path containing this TimingNode

Definition at line 172 of file PlacementTimingInfo.h.

◆ checkIsRegister()

template<typename nodeType >
bool PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::checkIsRegister ( )
inline

check if the node is a register node

Returns
true
false

Definition at line 137 of file PlacementTimingInfo.h.

◆ getBackwardLevel()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getBackwardLevel ( )
inline

Get the distance toward the farthest successor register based on the path length (instead of delay)

Returns
int

Definition at line 194 of file PlacementTimingInfo.h.

◆ getClockPeriod()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getClockPeriod ( )
inline

Definition at line 393 of file PlacementTimingInfo.h.

◆ getClusterId()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getClusterId ( )
inline

Definition at line 403 of file PlacementTimingInfo.h.

◆ getDesignNode()

template<typename nodeType >
nodeType* PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getDesignNode ( )
inline

Definition at line 117 of file PlacementTimingInfo.h.

◆ getDestLevel()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getDestLevel ( )
inline

Definition at line 218 of file PlacementTimingInfo.h.

◆ getEarlestSuccessorId()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getEarlestSuccessorId ( )
inline

Get the earliest successor node Id.

Returns
int

Definition at line 373 of file PlacementTimingInfo.h.

◆ getForwardLevel()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getForwardLevel ( )
inline

Get the distance toward the farthest predecessor register based on the path length (instead of delay)

Returns
int

Definition at line 183 of file PlacementTimingInfo.h.

◆ getId()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getId ( )
inline

Definition at line 112 of file PlacementTimingInfo.h.

◆ getInEdges()

template<typename nodeType >
std::vector<TimingEdge *>& PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getInEdges ( )
inline

Get the inward edges to this TimingNode.

Returns
std::vector<TimingEdge *>&

Definition at line 249 of file PlacementTimingInfo.h.

◆ getInnerDelay()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getInnerDelay ( )
inline

Get the inner delay.

Returns
float

Definition at line 330 of file PlacementTimingInfo.h.

◆ getLatestInputArrival()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getLatestInputArrival ( )
inline

Get the latest arrival time to the output of this timing node.

Returns
float

Definition at line 270 of file PlacementTimingInfo.h.

◆ getLatestOutputArrival()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getLatestOutputArrival ( )
inline

Definition at line 290 of file PlacementTimingInfo.h.

◆ getLongestPathLength()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getLongestPathLength ( )
inline

Get the length of the longest path containing this TimingNode.

Returns
int

Definition at line 204 of file PlacementTimingInfo.h.

◆ getOutEdges()

template<typename nodeType >
std::vector<TimingEdge *>& PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getOutEdges ( )
inline

Get the outward edges from this TimingNode.

Returns
std::vector<TimingEdge *>&

Definition at line 228 of file PlacementTimingInfo.h.

◆ getRequiredArrivalTime()

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getRequiredArrivalTime ( )
inline

Get the required arrival time.

Returns
float

Definition at line 340 of file PlacementTimingInfo.h.

◆ getSlowestPredecessorId()

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getSlowestPredecessorId ( )
inline

Get the slowest predecessor node Id.

Returns
int

Definition at line 300 of file PlacementTimingInfo.h.

◆ setBackwardLevel()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setBackwardLevel ( int  _backwardLevel)
inline

Definition at line 163 of file PlacementTimingInfo.h.

◆ setClockPeriod()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setClockPeriod ( float  _clockPeriod)
inline

Definition at line 388 of file PlacementTimingInfo.h.

◆ setClusterId()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setClusterId ( int  _clusterId)
inline

Definition at line 398 of file PlacementTimingInfo.h.

◆ setDestLevel()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setDestLevel ( int  _destLevel)
inline

Definition at line 213 of file PlacementTimingInfo.h.

◆ setEarlestSuccessorId()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setEarlestSuccessorId ( int  _earliestSuccessorId)
inline

Set the earliest successor node Id.

Parameters
_earliestSuccessorId

Definition at line 383 of file PlacementTimingInfo.h.

◆ setForwardLevel()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setForwardLevel ( int  _forwardLevel)
inline

Set the data path forward level of the node for later propagation.

Parameters
_forwardLevel

Definition at line 157 of file PlacementTimingInfo.h.

◆ setInitialRequiredArrivalTime()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setInitialRequiredArrivalTime ( float  _requiredArrival)
inline

Set the required arrival time.

Parameters
_requiredArrival

Definition at line 360 of file PlacementTimingInfo.h.

◆ setInnerDelay()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setInnerDelay ( float  _innerDelay)
inline

Set the inner delay.

Parameters
_innerDelay

Definition at line 320 of file PlacementTimingInfo.h.

◆ setIsRegister()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setIsRegister ( )
inline

indicate that this node is a register node

Definition at line 126 of file PlacementTimingInfo.h.

◆ setLatestInputArrival()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setLatestInputArrival ( float  _latestInputArrival)
inline

Set the latest arrival time to the output of this timing node.

Parameters
_latestInputArrival

Definition at line 280 of file PlacementTimingInfo.h.

◆ setLatestOutputArrival()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setLatestOutputArrival ( float  _latestOutputArrival)
inline

Definition at line 285 of file PlacementTimingInfo.h.

◆ setRequiredArrivalTime()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setRequiredArrivalTime ( float  _requiredArrival)
inline

Set the required arrival time.

Parameters
_requiredArrival

Definition at line 350 of file PlacementTimingInfo.h.

◆ setSlowestPredecessorId()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::setSlowestPredecessorId ( int  _slowestPredecessorId)
inline

Set the slowest predecessor node Id.

Parameters
_slowestPredecessorId

Definition at line 310 of file PlacementTimingInfo.h.

◆ sortInEdgesByForwardLevel()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::sortInEdgesByForwardLevel ( )
inline

sort the inward edges by their source node forward level

Definition at line 258 of file PlacementTimingInfo.h.

◆ sortOutEdgesByBackwardLevel()

template<typename nodeType >
void PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::sortOutEdgesByBackwardLevel ( )
inline

sort the outward edges by their sink node backward level

Definition at line 237 of file PlacementTimingInfo.h.

Member Data Documentation

◆ backwardLevel

◆ clockPeriod

◆ clusterId

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::clusterId = -1
private

◆ designNode

template<typename nodeType >
nodeType* PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::designNode = nullptr
private

the pointer linked to the design element (pin or cell)

Definition at line 413 of file PlacementTimingInfo.h.

Referenced by PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::getDesignNode().

◆ destLevel

◆ earliestSuccessorId

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::earliestSuccessorId = -1
private

◆ forwardLevel

◆ id

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::id
private

◆ inEdges

◆ innerDelay

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::innerDelay = 0.1
private

◆ isRegister

template<typename nodeType >
bool PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::isRegister = false
private

◆ latestInputArrival

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::latestInputArrival = 0.0
private

◆ latestOutputArrival

template<typename nodeType >
float PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::latestOutputArrival = 0.0
private

◆ longestPathLength

template<typename nodeType >
int PlacementTimingInfo::TimingGraph< nodeType >::TimingNode::longestPathLength = 100000000
private

◆ outEdges

◆ requiredArrival

◆ slowestPredecessorId


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