|
AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
a directed graph for timing analysis More...
#include <PlacementTimingInfo.h>

Classes | |
| class | TimingEdge |
| TimingEdge records a directed interconnection relationship between two TimingNode. It is a point-to-point information instead of HyperEdge. More... | |
| class | TimingNode |
| TimingNode is the node in TimingGraph, which could be pin or cell in the design netlist. More... | |
Public Member Functions | |
| TimingGraph (PlacementTimingInfo *timingInfo) | |
| Construct a new empty Timing Graph object. More... | |
| ~TimingGraph () | |
| void | insertTimingNode (TimingNode *timingNode) |
| insert a TimingNode into this TimingGraph More... | |
| std::vector< TimingNode * > & | getNodes () |
| std::vector< TimingEdge * > & | getEdges () |
| void | addEdgeBetween (int idA, int idB, DesignInfo::DesignPin *srcPin, DesignInfo::DesignPin *sinkPin, DesignInfo::DesignNet *net=nullptr, float delay=0.0) |
| add a TimingEdge into TimingGraph based on some related information More... | |
| void | findALoopFromNode (std::vector< int > &nodeInPath, int startNode, int curNode, int level) |
| find loop from a node in timing graph (for debug) More... | |
| void | forwardLevelization () |
| propogate the forward level of each TimingNode forward level of a TimingNode is the distance toward the farthest predecessor register based on the path length (instead of delay) More... | |
| void | backwardLevelization () |
| propogate the backward level of each TimingNode backward level of a TimingNode is the distance toward the farthest successor register based on the path length (instead of delay) More... | |
| void | propogateArrivalTime () |
| propogate the timing delay along the TimingEdge More... | |
| void | backPropogateRequiredArrivalTime () |
| back propogate the required arrival time More... | |
| void | updateCriticalPath () |
| int | getCriticalEndPoint () |
| float | getCriticalPathDelay () |
| std::vector< int > | backTraceDelayLongestPathFromNode (int curNodeId) |
| backtrace the longest delay path from the node More... | |
| bool | backTraceDelayLongestPathFromNode (int curNodeId, std::vector< int > &isCovered, std::vector< int > &resPath, int converThr=30) |
| void | setLongestPathLength () |
| Set the Longest Path Length for each TimingNode in the TimingGraph and get a sorted vector of TimingNodes. More... | |
| void | sortedEndpointByDelay () |
| std::vector< TimingNode * > & | getSortedTimingEndpoints () |
| std::vector< int > | traceBackFromNode (int targetId) |
| find the longest path from a register to the target node (id) More... | |
| std::vector< int > | traceForwardFromNode (int targetId) |
| find the longest path from the target node (id) to a register More... | |
| std::vector< int > | BFSFromNode (int startNodeId, int pathLenThr, unsigned sizeThr, std::set< int > &exceptionCells) |
| BFS the sucessors(predecessors) of a node in the long paths. More... | |
| std::vector< int > | DFSFromNode (int startNodeId, int pathLenThr, unsigned sizeThr, std::set< int > &exceptionCells, int fanoutThr=10000000) |
| DFS the sucessors(predecessors) of a node in the long paths. More... | |
| std::vector< TimingNode * > & | getPathLenSortedNodes () |
| int | getLongPathThresholdLevel () |
| Get the long path threshold level. More... | |
| int | getMediumPathThresholdLevel () |
| Get the medium path threshold level. More... | |
| void | setLongPathThrRatio (float _r) |
| float | getClockPeriod () |
| Get the clock period. More... | |
| void | setClockPeriod (float _clockPeriod) |
| Set the clock period. More... | |
Private Attributes | |
| PlacementTimingInfo * | timingInfo = nullptr |
| std::vector< TimingNode * > | nodes |
| std::vector< TimingNode * > | pathLenSortedNodes |
| std::vector< TimingNode * > | delaySortedTimingEndpointNodes |
| std::vector< TimingEdge * > | edges |
| std::vector< std::vector< int > > | forwardlevel2NodeIds |
| levelized nodes in difference forward level More... | |
| std::vector< std::vector< int > > | backwardlevel2NodeIds |
| levelized nodes in difference backward level More... | |
| float | longPathThrRatio = 0.95 |
| float | mediumPathThrRatio = 0.8 |
| int | longPathThresholdLevel = 1 |
| int | mediumPathThresholdLevel = 1 |
| float | clockPeriod = 10.0 |
| float | maxDelay = 0 |
| int | maxDelayId = -1 |
a directed graph for timing analysis
| nodeType | indicate the type of a node in the graph, usually it is a DesignCell* or DesignPin* |
Definition at line 70 of file PlacementTimingInfo.h.
|
inline |
Construct a new empty Timing Graph object.
Definition at line 77 of file PlacementTimingInfo.h.
|
inline |
Definition at line 82 of file PlacementTimingInfo.h.
|
inline |
add a TimingEdge into TimingGraph based on some related information
| idA | TimingNode A id |
| idB | TimingNode B id |
| srcPin | source DesignPin |
| sinkPin | sink DesignPin |
| net | related DesignNet |
| delay | the delay of this interconnection |
Definition at line 557 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().

| void PlacementTimingInfo::TimingGraph< nodeType >::backPropogateRequiredArrivalTime | ( | ) |
back propogate the required arrival time
Definition at line 650 of file PlacementTimingInfo.cc.
| std::vector< int > PlacementTimingInfo::TimingGraph< nodeType >::backTraceDelayLongestPathFromNode | ( | int | curNodeId | ) |
backtrace the longest delay path from the node
| curNodeId |
Definition at line 685 of file PlacementTimingInfo.cc.
| bool PlacementTimingInfo::TimingGraph< nodeType >::backTraceDelayLongestPathFromNode | ( | int | curNodeId, |
| std::vector< int > & | isCovered, | ||
| std::vector< int > & | resPath, | ||
| int | converThr = 30 |
||
| ) |
Definition at line 703 of file PlacementTimingInfo.cc.
| void PlacementTimingInfo::TimingGraph< nodeType >::backwardLevelization | ( | ) |
propogate the backward level of each TimingNode backward level of a TimingNode is the distance toward the farthest successor register based on the path length (instead of delay)
Definition at line 309 of file PlacementTimingInfo.cc.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().


| std::vector< int > PlacementTimingInfo::TimingGraph< nodeType >::BFSFromNode | ( | int | startNodeId, |
| int | pathLenThr, | ||
| unsigned | sizeThr, | ||
| std::set< int > & | exceptionCells | ||
| ) |
BFS the sucessors(predecessors) of a node in the long paths.
| startNodeId | start node Id |
| sizeThr | the number limitation to avoid huge cluster |
Definition at line 519 of file PlacementTimingInfo.cc.
| std::vector< int > PlacementTimingInfo::TimingGraph< nodeType >::DFSFromNode | ( | int | startNodeId, |
| int | pathLenThr, | ||
| unsigned | sizeThr, | ||
| std::set< int > & | exceptionCells, | ||
| int | fanoutThr = 10000000 |
||
| ) |
DFS the sucessors(predecessors) of a node in the long paths.
| startNodeId | start node Id |
| sizeThr | the number limitation to avoid huge cluster |
| fanoutThr | limit the node fanout during DFS |
Definition at line 460 of file PlacementTimingInfo.cc.
|
inline |
find loop from a node in timing graph (for debug)
| nodeInPath | |
| startNode | |
| curNode | |
| level |
Definition at line 576 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::findALoopFromNode().

| void PlacementTimingInfo::TimingGraph< nodeType >::forwardLevelization | ( | ) |
propogate the forward level of each TimingNode forward level of a TimingNode is the distance toward the farthest predecessor register based on the path length (instead of delay)
Definition at line 186 of file PlacementTimingInfo.cc.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().


|
inline |
Get the clock period.
TODO: enable multiple clock
Definition at line 777 of file PlacementTimingInfo.h.
Referenced by WirelengthOptimizer::addPseudoNet_SlackBased(), ParallelCLBPacker::PackingCLBSite::checkDirectLUTFFConnect_slack(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCarrySite(), ParallelCLBPacker::PackingCLBSite::finalMapToSlotsForCommonLUTFFInSite(), ParallelCLBPacker::PackingCLBSite::greedyMapMuxForCommonLUTFFInSite(), and WirelengthOptimizer::LUTLUTPairing_TimingDriven().

|
inline |
Definition at line 642 of file PlacementTimingInfo.h.
|
inline |
Definition at line 647 of file PlacementTimingInfo.h.
|
inline |
Definition at line 542 of file PlacementTimingInfo.h.
|
inline |
Get the long path threshold level.
Definition at line 750 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::getLongPathThresholdLevel().

|
inline |
Get the medium path threshold level.
Definition at line 760 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::getMediumPathThresholdLevel().

|
inline |
Definition at line 537 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph(), PlacementTimingOptimizer::findCriticalPath(), PlacementTimingInfo::getSimplePlacementTimingInfo(), PlacementInfo::reloadNets(), PlacementTimingInfo::setDSPInnerDelay(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::updateCriticalPath().

|
inline |
Definition at line 740 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::getSimplePlacementTimingInfo_PathLenSorted().

|
inline |
Definition at line 699 of file PlacementTimingInfo.h.
|
inline |
insert a TimingNode into this TimingGraph
| timingNode | a given TimingNode |
Definition at line 532 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().

| void PlacementTimingInfo::TimingGraph< nodeType >::propogateArrivalTime | ( | ) |
propogate the timing delay along the TimingEdge
Definition at line 578 of file PlacementTimingInfo.cc.
|
inline |
Set the clock period.
TODO: enable multiple clock
| _clockPeriod |
Definition at line 789 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().

|
inline |
Set the Longest Path Length for each TimingNode in the TimingGraph and get a sorted vector of TimingNodes.
Definition at line 668 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::buildSimpleTimingGraph().

|
inline |
Definition at line 765 of file PlacementTimingInfo.h.
|
inline |
Definition at line 684 of file PlacementTimingInfo.h.
Referenced by PlacementTimingOptimizer::findCriticalPaths(), PlacementTimingOptimizer::getSortedTimingNodes(), and PlacementInfo::transferPaintData().

| std::vector< int > PlacementTimingInfo::TimingGraph< nodeType >::traceBackFromNode | ( | int | targetId | ) |
find the longest path from a register to the target node (id)
| targetId |
Definition at line 399 of file PlacementTimingInfo.cc.
| std::vector< int > PlacementTimingInfo::TimingGraph< nodeType >::traceForwardFromNode | ( | int | targetId | ) |
find the longest path from the target node (id) to a register
| targetId |
Definition at line 429 of file PlacementTimingInfo.cc.
|
inline |
Definition at line 628 of file PlacementTimingInfo.h.
|
private |
levelized nodes in difference backward level
Definition at line 811 of file PlacementTimingInfo.h.
|
private |
Definition at line 818 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getClockPeriod(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::setClockPeriod().
|
private |
Definition at line 798 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getSortedTimingEndpoints(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::sortedEndpointByDelay().
|
private |
Definition at line 799 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::addEdgeBetween(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getEdges(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::TimingGraph(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::~TimingGraph().
|
private |
levelized nodes in difference forward level
Definition at line 805 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::sortedEndpointByDelay().
|
private |
Definition at line 815 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getLongPathThresholdLevel().
|
private |
Definition at line 813 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::setLongPathThrRatio().
|
private |
Definition at line 820 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getCriticalPathDelay(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::updateCriticalPath().
|
private |
Definition at line 821 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getCriticalEndPoint(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::updateCriticalPath().
|
private |
Definition at line 816 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getMediumPathThresholdLevel().
|
private |
Definition at line 814 of file PlacementTimingInfo.h.
|
private |
Definition at line 796 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::addEdgeBetween(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::findALoopFromNode(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getNodes(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::insertTimingNode(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::setLongestPathLength(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::sortedEndpointByDelay(), PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::TimingGraph(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::~TimingGraph().
|
private |
Definition at line 797 of file PlacementTimingInfo.h.
Referenced by PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::getPathLenSortedNodes(), and PlacementTimingInfo::TimingGraph< DesignInfo::DesignCell >::setLongestPathLength().
|
private |
Definition at line 795 of file PlacementTimingInfo.h.