Kite - Detailed Router


Public Types | Public Member Functions | Static Public Member Functions | List of all members
NegociateWindow Class Reference

Perform the routing, main RoutingEvent manager. More...

Public Types

enum  Stage {
  Negociation = 1,
  Packing = 2
}
 

Public Member Functions

void destroy ()
 
bool isInterrupted () const
 
KiteEnginegetKiteEngine () const
 
Hurricane::CellgetCell () const
 
const Katabatic::GCellVector & getGCells () const
 
RoutingEventQueuegetEventQueue ()
 
RoutingEventHistorygetEventHistory ()
 
RoutingEventLoopgetEventLoop ()
 
Stage getStage () const
 
void setGCells (const Katabatic::GCellVector &)
 
void setInterrupt (bool)
 
void setStage (Stage)
 
double computeWirelength ()
 
TrackElementcreateTrackSegment (AutoSegment *, unsigned int flags)
 
void addRoutingEvent (TrackElement *, unsigned int level)
 
void rescheduleEvent (RoutingEvent *, unsigned int level)
 
void run (unsigned int flags)
 
void printStatistics () const
 

Static Public Member Functions

static NegociateWindowcreate (KiteEngine *)
 

Detailed Description

Perform the routing, main RoutingEvent manager.

This object perform the routing. That is creates all the initial RoutingEvent, load them into the queue and then process the queue until it is empty, that is, the routing is finished.

This object is the owner of the RoutingEventQueue, RoutingEventHistory and RoutingEventLoop used all troughout RoutingEvent and SegmentFsm.

Member Enumeration Documentation

◆ Stage

enum Stage

The state under which the router is operating.

Enumerator
Negociation 

The normal mode, priority negociation with ripup.

Packing 

Try to find a better placement for segment but just by looking for other fully free spaces. No ripup is performed.

Member Function Documentation

◆ create()

create ( KiteEngine kite)
static

The publicly avalaible contructor. Route the whole are defined by the Kite associated Cell abutment box.

◆ destroy()

void destroy ( )

The publicly avalaible destructor.

◆ isInterrupted()

bool isInterrupted ( ) const
inline

Returns: true if the NegociateWindow has received an interrupt request.

◆ getKiteEngine()

KiteEngine * getKiteEngine ( ) const
inline

Returns: The associated KiteEngine.

Referenced by NegociateWindow::printStatistics().

◆ getCell()

Hurricane::Cell * getCell ( ) const

Returns: The associated Cell.

◆ getGCells()

const Katabatic::GCellVector & getGCells ( ) const
inline

Returns: A Copy of the vector of GCell from KatabaticEngine. The vector is copied but not the GCell themselves (shallow copy).

◆ getEventQueue()

RoutingEventQueue & getEventQueue ( )
inline

Returns: The RoutingEventQueue.

◆ getEventHistory()

RoutingEventHistory & getEventHistory ( )
inline

Returns: The RoutingEventHistory.

◆ getEventLoop()

RoutingEventLoop & getEventLoop ( )
inline

Returns: The RoutingEventLoop.

◆ getStage()

Stage getStage ( ) const
inline

Returns: The stage (NegicateWindow::Stage) into which the NegociateWindow is running.

◆ setGCells()

void setGCells ( const Katabatic::GCellVector &  v)

Sets the GCell vector from KatabaticEngine (perform a shallow copy).

◆ setInterrupt()

void setInterrupt ( bool  state)
inline

Sets or unset the interruption flag.

◆ setStage()

void setStage ( Stage  stage)
inline

Set the stage (NegociateWindow::Stage) under which we are running.

◆ computeWirelength()

double computeWirelength ( )

Compute the total wirelength of the circuit. It is not completly accurate because overlaps are not took into accounts.

Referenced by NegociateWindow::run().

◆ createTrackSegment()

TrackElement * createTrackSegment ( AutoSegment autoSegment,
unsigned int  flags 
)

Build a TrackSegment from the Katabatic::AutoSegment. If flags contains Kite::KtLoadingStage then assume that we are in the initial loading stage (constructor).

◆ addRoutingEvent()

void addRoutingEvent ( TrackElement segment,
unsigned int  level 
)

Create a new RoutingEvent from TrackElement (if it doesn't already exists) and insert it into the queue with priority level.

Referenced by TrackSegment::reschedule().

◆ rescheduleEvent()

void rescheduleEvent ( RoutingEvent event,
unsigned int  level 
)
inline

Reschedule an event into the queue, with priority level.

Referenced by TrackSegment::reschedule().

◆ run()

void run ( unsigned int  flags)

Perform the routing.

slowMotion is not implemented yet.

◆ printStatistics()

void printStatistics ( ) const

Display some statistics about the routing, compute the internal complete statistics.

Referenced by NegociateWindow::run().


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


Generated by doxygen 1.8.14 on Sun Nov 21 2021 Return to top of page
Kite - Detailed Router Copyright © 2008-2020 Sorbonne Universite. All rights reserved