17 #ifndef KITE_SEGMENT_FSM_H
18 #define KITE_SEGMENT_FSM_H
20 #include "kite/TrackCost.h"
27 class RoutingEventQueue;
28 class RoutingEventHistory;
44 , MoveToAxis = (1<< 8)
65 ,
unsigned int toState =0
68 inline unsigned int getType ()
const;
70 inline unsigned int setFlag (
unsigned int );
76 unsigned int _toState;
92 enum State { MissingData = (1<<0)
93 , EmptyTrackList = (1<<1)
98 , MaximumSlack = (1<<6)
99 , SelfInserted =
Self | Inserted
101 , SelfMaximumSlack =
Self | MaximumSlack
103 enum SlackenFlags { NoRecursive = (1<<0)
104 , NoTransition = (1<<1)
112 inline bool isFullBlocked ()
const;
116 inline unsigned int getState ()
const;
120 inline vector<TrackCost>& getCosts ();
121 inline TrackCost& getCost (
size_t );
122 inline Track* getTrack (
size_t );
123 inline size_t getBegin (
size_t );
124 inline size_t getEnd (
size_t );
125 inline vector<SegmentAction>& getActions ();
126 inline void setState (
unsigned int );
130 ,
unsigned int toState =0
133 inline void clearActions ();
134 bool insertInTrack (
size_t );
135 bool conflictSolveByHistory ();
136 bool conflictSolveByPlaceds ();
137 bool solveTerminalVsGlobal ();
139 bool slackenTopology (
unsigned int flags=0 );
140 bool solveFullBlockages ();
144 ,
unsigned int flags );
147 ,
unsigned int flags );
150 ,
unsigned int flags );
159 vector<TrackCost> _costs;
160 vector<SegmentAction> _actions;
185 #endif // KITE_SEGMENT_FSM_H
Atomic Placement Request for a TrackSegment.
Definition: RoutingEvent.h:55
Definition: SegmentFsm.h:58
Definition: SegmentFsm.h:41
Definition: SegmentFsm.h:54
RoutingEventQueue & getQueue() const
Definition: SegmentFsm.h:167
Definition: SegmentFsm.h:57
Definition: SegmentFsm.h:40
bool isFullBlocked() const
Definition: SegmentFsm.h:165
DataNegociate * getData()
Definition: SegmentFsm.h:170
unsigned int getType() const
Definition: SegmentFsm.h:81
Pseudo-decorator to process a RoutingEvent.
Definition: SegmentFsm.h:89
unsigned int setFlag(unsigned int)
Definition: SegmentFsm.h:83
Type
Definition: SegmentFsm.h:36
TrackElement * getSegment() const
Definition: SegmentFsm.h:80
unsigned int getState() const
Definition: SegmentFsm.h:169
Definition: SegmentFsm.h:53
void setAxisHint(DbU::Unit)
Definition: SegmentFsm.h:82
Structure managing one routing track.
Definition: Track.h:42
State
Definition: SegmentFsm.h:92
TrackCost & getCost(size_t)
Definition: SegmentFsm.h:174
Definition: SegmentFsm.h:45
vector< SegmentAction > & getActions()
Definition: SegmentFsm.h:178
SegmentAction(TrackElement *, unsigned int type, DbU::Unit axisHint=0, unsigned int toState=0)
Definition: SegmentFsm.cpp:349
Definition: SegmentFsm.h:59
Definition: SegmentFsm.h:56
Definition: SegmentFsm.h:50
Interval & getOptimal()
Definition: SegmentFsm.h:172
Definition: SegmentFsm.h:52
Definition: SegmentFsm.h:51
Track * getTrack(size_t)
Definition: SegmentFsm.h:175
bool doAction(RoutingEventQueue &)
Definition: SegmentFsm.cpp:361
History of RoutingEvent.
Definition: RoutingEventHistory.h:35
void clearActions()
Definition: SegmentFsm.h:180
Definition: SegmentFsm.h:38
Abstract Class for all Elements inserted inside a Track.
Definition: TrackElement.h:100
Definition: SegmentFsm.h:48
void setState(unsigned int)
Definition: SegmentFsm.h:179
Definition: SegmentFsm.h:36
Definition: SegmentFsm.h:49
The priority Queue of RoutingEvent.
Definition: RoutingEventQueue.h:35
Store request for an event to be generated on a TrackElement.
Definition: SegmentFsm.h:34
Definition: SegmentFsm.h:37
vector< TrackCost > & getCosts()
Definition: SegmentFsm.h:173
RoutingEventHistory & getHistory() const
Definition: SegmentFsm.h:168
Definition: SegmentFsm.h:43
Algorimthmic datas associated the TrackSegment.
Definition: DataNegociate.h:50
Definition: SegmentFsm.h:42
Definition: SegmentFsm.h:55
Interval & getConstraint()
Definition: SegmentFsm.h:171
size_t getEnd(size_t)
Definition: SegmentFsm.h:177
Definition: SegmentFsm.h:39
RoutingEvent * getEvent() const
Definition: SegmentFsm.h:166
Definition: SegmentFsm.h:47
Definition: SegmentFsm.h:46
size_t getBegin(size_t)
Definition: SegmentFsm.h:176