Kite - Detailed Router


Static Public Member Functions | List of all members
Session Class Reference

Kite update Session. More...

Inheritance diagram for Session:
Inheritance graph
[legend]

Static Public Member Functions

static Sessionopen (KiteEngine *)
 
static Sessionget (const char *message=NULL)
 
static Katabatic::Sessionbase ()
 
static bool isEmpty ()
 
static KiteEnginegetKiteEngine ()
 
static Configuration * getConfiguration ()
 
static NetgetBlockageNet ()
 
static NegociateWindowgetNegociateWindow ()
 
static Katabatic::GCellgetGCellUnder (DbU::Unit, DbU::Unit)
 
static void addInsertEvent (TrackElement *, Track *)
 
static void addRemoveEvent (TrackElement *)
 
static void addMoveEvent (TrackElement *, Track *)
 
static void addSortEvent (Track *, bool forced=false)
 
static size_t revalidate ()
 
static TrackElementlookup (Segment *)
 
static TrackElementlookup (AutoSegment *)
 

Detailed Description

Kite update Session.

Session extend the Katabatic update session to the Kite router level. Mainly by managing Track update.

Difference between Kite & Katabatic sessions:

Asymmetry between invalidation & revalidation:

Indirect TrackSegment invalidation:

For details on how Katabatic Sessions works, have a look to Katabatic::Session.

The Session Mechanism.

Delayed modification procedure :

The Revalidate Algorithm.

Revalidation steps :

Note: We cannot use the Observer mechanism to automatically update TrackSegment from an AutoSegment, because we must wait for all AutoSegments (canonical or not) involved into the TrackSegment to be up to date before we can update it.

Note: Have to talk about the special case when new canonical AutoSegment appears after dogleg creation.

The Lookup Mechanism

There are two lookup mechanisms:

Member Function Documentation

◆ open()

Session * open ( KiteEngine kite)
static
Parameters
kiteA Kite ToolEngine on which to work.
Returns
A new Kite update Session.

Open a new Kite update Session on the kite ToolEngine. At this point only one session can be opened at a time. Attempt to open a second one will result in an exception.

◆ get()

Session * get ( const char *  message = NULL)
static

Returns: The currently opened session, NULL if no session has been opened.

Referenced by NegociateWindow::run().

◆ base()

Katabatic::Session * base ( )
inlinestatic

Returns: The Session, casted as it's base object.

◆ isEmpty()

bool isEmpty ( )
inlinestatic

Ensure that the Session is empty and can be closed (deleted) safely.

Referenced by NegociateWindow::run().

◆ getKiteEngine()

KiteEngine * getKiteEngine ( )
inlinestatic

◆ getConfiguration()

Configuration * getConfiguration ( )
static

Returns: The Kite Configuration of the Router (proxy helper).

◆ getBlockageNet()

Net * getBlockageNet ( )
inlinestatic

Returns: The net used to create blockage components (proxy helper).

Referenced by TrackFixedSegment::create().

◆ getNegociateWindow()

NegociateWindow * getNegociateWindow ( )
inlinestatic

Returns: The current NegociateWindow (proxy helper).

Referenced by TrackSegment::_postDoglegs(), and TrackSegment::reschedule().

◆ getGCellUnder()

Katabatic::GCell * getGCellUnder ( DbU::Unit  x,
DbU::Unit  y 
)
inlinestatic

Returns: The GCell under (x,y) (proxy helper, see Katabatic::GCellGrid::getGCell()).

Referenced by SegmentFsm::conflictSolveByHistory().

◆ addInsertEvent()

void addInsertEvent ( TrackElement segment,
Track track 
)
inlinestatic
Parameters
segmentAn AutoSegment to insert in a Track.
trackThe Track into which the segment will be inserted.

Schedule the insertion of segment into Track track. The segment must not already be part of a Track.

◆ addRemoveEvent()

void addRemoveEvent ( TrackElement segment)
inlinestatic
Parameters
segmentA TrackSegment to remove from a Track.

Schedule the removal of segment from Track track.

Referenced by SegmentAction::doAction(), and TrackSegment::reschedule().

◆ addMoveEvent()

void addMoveEvent ( TrackElement segment,
Track track 
)
inlinestatic
Parameters
segmentAn AutoSegment to move into a new Track.
trackThe Track into which the segment will be moved.

Schedule the displacement of segment into Track track.

◆ addSortEvent()

void addSortEvent ( Track track,
bool  forced = false 
)
inlinestatic
Parameters
trackThe Track to update.
forcedForce the invalidation of the Track.

Schedule the update of Track track. If the Track has not been invalidated, no actual sort will takes place. To force a sort (manually invalidating the Track), sets forced to true.

See also:  Track::pack() & Track::sort().

Referenced by TrackSegment::revalidate().

◆ revalidate()

void revalidate ( )
inlinestatic

Applies all the requested modifications, but keeping the session opened.

Referenced by RoutingEvent::process(), NegociateWindow::run(), and NegociateWindow::setGCells().

◆ lookup() [1/2]

TrackElement * lookup ( Segment segment)
static

◆ lookup() [2/2]

TrackElement * lookup ( AutoSegment segment)
static

Returns: the TrackElement associated to segment.


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


Generated by doxygen 1.8.14 on Mon Apr 27 2020 Return to top of page
Kite - Detailed Router Copyright © 2008-2016 UPMC. All rights reserved