# 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
KiteEngine * | getKiteEngine () const
Hurricane::Cell * | getCell () const
const Katabatic::GCellVector & | getGCells () const
RoutingEventQueue & | getEventQueue ()
RoutingEventHistory & | getEventHistory ()
RoutingEventLoop & | getEventLoop ()
Stage | getStage () const
void | setGCells (const Katabatic::GCellVector &)
void | setInterrupt (bool)
void | setStage (Stage)
double | computeWirelength ()
TrackElement * | createTrackSegment (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 NegociateWindow * | create (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:

- NegociateWindow.h
- NegociateWindow.cpp
- NegociateWindow.dox