// -*- C++ -*- namespace Kite { /*! \class NegociateWindow * \brief 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. */ //! \enum NegociateWindow::Stage //! The state under which the router is operating. //! \var NegociateWindow::Negociation //! The normal mode, priority negociation with ripup. //! \var NegociateWindow::Packing //! Try to find a better placement for segment but just by //! looking for other fully free spaces. No ripup is performed. //! \function NegociateWindow::create ( KiteEngine* kite ); //! The publicly avalaible contructor. Route the whole are defined //! by the Kite associated Cell abutment box. //! \function void NegociateWindow::destroy (); //! The publicly avalaible destructor. //! \function bool NegociateWindow::isInterrupted () const; //! \sreturn \true if the NegociateWindow has received an interrupt request. //! \function KiteEngine* NegociateWindow::getKiteEngine () const; //! \sreturn The associated KiteEngine. //! \function Hurricane::Cell* NegociateWindow::getCell () const; //! \sreturn The associated Cell. //! \function const Katabatic::GCellVector& NegociateWindow::getGCells () const; //! \sreturn A Copy of the vector of GCell from KatabaticEngine. The vector //! is copied but not the GCell themselves (shallow copy). //! \function RoutingEventQueue& NegociateWindow::getEventQueue (); //! \sreturn The RoutingEventQueue. //! \function RoutingEventHistory& NegociateWindow::getEventHistory (); //! \sreturn The RoutingEventHistory. //! \function RoutingEventLoop& NegociateWindow::getEventLoop (); //! \sreturn The RoutingEventLoop. //! \function Stage NegociateWindow::getStage () const; //! \sreturn The stage (NegicateWindow::Stage) into which the NegociateWindow is running. //! \function void NegociateWindow::setGCells ( const Katabatic::GCellVector& v ); //! Sets the GCell vector from KatabaticEngine (perform a shallow copy). //! \function void NegociateWindow::setInterrupt ( bool state ); //! Sets or unset the interruption flag. //! \function void NegociateWindow::setStage ( Stage stage ); //! Set the stage (NegociateWindow::Stage) under which we are running. //! \function double NegociateWindow::computeWirelength (); //! Compute the total wirelength of the circuit. It is not completly //! accurate because overlaps are not took into accounts. //! \function TrackElement* NegociateWindow::createTrackSegment ( AutoSegment*, unsigned int flags ); //! Build a TrackSegment from the Katabatic::AutoSegment. If \c flags contains //! Kite::KtLoadingStage then assume that we are in the initial loading stage //! (constructor). //! \function void NegociateWindow::addRoutingEvent ( TrackElement*, unsigned int level ); //! Create a new RoutingEvent from TrackElement (if it doesn't already exists) //! and insert it into the queue with priority \c level. //! \function void NegociateWindow::rescheduleEvent ( RoutingEvent*, unsigned int level ); //! Reschedule an event into the queue, with priority \c level. //! \function void NegociateWindow::run ( int slowMotion=0 ); //! Perform the routing. //! //! \red{\c slowMotion is not implemented yet.} //! \function void NegociateWindow::printStatistics () const //! Display some statistics about the routing, compute the internal //! complete statistics. }