// -*- C++ -*-
namespace Katabatic {
/*! \mainpage Routing Toolbox Documentation
*
* This documentation adresses two level of explanations :
*
*
* - The \b API description which explains how to use Katabatic,
* thoses parts as flagged as \b API.
*
- The internal description which details how Katabatic do
* things. It's mostly intended for myself to help me not to
* forget how I've done things when debug time will come...
* It may also be valuable to people who may want to use
* or patch Katabatic for their own purpose (my secret hope).
*
*/
/*! \namespace Katabatic
* \brief The namespace dedicated to Katabatic.
*/
/*! \enum LoadGRMethod
* Lists all avalaible global routing loading methods for
* loadGlobalRouting().
*/
/*! \var LoadGRMethod LoadGrByNet
* The global routing will be loaded net by net.
*/
/*! \var LoadGRMethod LoadGrByGCell
* The global routing will be loaded GCell by GCell.
*/
/*! \class KatabaticEngine
* \brief The Katabatic ToolEngine, routing toolbox (\b API).
*/
/*! \function KatabaticEngine* KatabaticEngine::create ( const RoutingGauge* gauge, Cell* cell, vector& nets );
* \param gauge The RoutingGauge to use.
* \param cell The \Cell to be routed.
* \param nets The subset of \Nets to be routeds. Note that the vector is
* copied inside the KatabaticEngine object, so there's no need to keep
* the parameter.
*
* creates a new KatabaticEngine object. Should never be used, as Katabatic
* must be used as the base class for any router, and therefore
* created through it. Still avalaible for debugging purposes.
*/
/* \function void KatabaticEngine::destroy ();
* Cleanly destruct the data-base, saves the routing wires in
* the \Hurricane data-base (really a call to _preDestroy()).
*
* \see _saveNet().
*/
/*! \function GCellGrid* KatabaticEngine::getGCellGrid () const;
* \return The associated GCellGrid.
*/
/*! \function const vector& KatabaticEngine::getRoutingNets () const;
* \return The subset of \Nets that are to be routed.
*/
/*! \function void KatabaticEngine::loadGlobalRouting ( unsigned int method )
* \param method to specify the algorithm used to perform the loading.
*
* translates a global routing created by Tornado (GCell/GCell data-base)
* into an initial detailed routing. Two algorithms are currently
* avalaibles :
*
* - LoadGrByNet : load global routing net by net.
*
- LoadGrByGCell : load global routing GCell by GCell.
*
*
* This method is essentially a switch which calls the appropriate sub-method
* _loadGrByNet() or _LoadGRbyGCell(). It relies on the presence of a Nimbus
* ToolEngine, if not found, throws an error.
*/
/*! \function void KatabaticEngine::setGlobalThreshold ( DbU::Unit threshold );
* \param threshold The global routing threshold.
*
* The length (in DbU::Unit) from which an AutoSegment will be considered to be
* global.
*
* \see layerAssign(), getGlobalThresold().
*/
/*! \function DbU::Unit KatabaticEngine::getGlobalThreshold () const;
* \return The value of the global routing thresold.
*
* \see setGlobalThresold().
*/
/*! \function void KatabaticEngine::_computeNetConstraints ( Net* );
* computes the \c AutoSegment constraints (see \ref NetConstraints).
*/
/*! \function void KatabaticEngine::_computeNetOptimals ( Net* );
* computes the \c AutoSegment optimal positions (see \ref NetOptimals).
*/
/*! \function AutoSegment* KatabaticEngine::_lookup ( Segment* segment ) const;
* \param segment The \c Hurricane segment.
*
* Finds the Katabatic AutoSegment associated to \c segment.
* For this function to work, a Katabatic update session must be open.
* If not, an exception will be thrown.
*/
/*! \function void KatabaticEngine::_link ( AutoSegment* autoSegment );
* adds \b autoSegment to the AutoSegment internal lookup table.
* This function does nothing if DoLinkAutoSegment() is \false :
* in destruction mode.
* \see _Lookup().
*/
/*! \function void KatabaticEngine::_unlink ( AutoSegment* autoSegment );
* removes \b autoSegment AutoSegment internal lookup table.
* This function does nothing if DoLinkAutoSegment() is \false :
* in destruction mode.
* \see _Lookup().
*/
/*! \function void KatabaticEngine::_destroyAutoSegments ();
* clear the internal AutoSegment lookup table. Should be called
* only from inside the Katabatic destructor.
*/
/*! \function void KatabaticEngine::_saveNet ( Net* net );
* \param net The \Net to process.
*
* Revert (partially destruct) the AutoSegment/AutoContact
* structure of the \Net to the \Hurricane data-base.
* To be used only in the Katabatic destructor...
*
* \see destroy().
*/
/*! \function KatabaticEngine* KatabaticEngine::get ( const Cell* cell )
* \brief Returns the Katabatic ToolEngine attached to the Cell, if any.
*/
/*! \function void KatabaticEngine::refresh ( bool openSession=true );
* Force the update of all AutoContact. By default opens a new
* update Session. If one is already open, set openSession to
* \False.
*/
/*! \function void KatabaticEngine::startMeasures ();
* Start memory consumption and timer measurment (reset any
* previous one).
*
* \see stopMeasures(), printMeasures().
*/
/*! \function void KatabaticEngine::stopMeasures ();
* compute memory consumption \& time elapsed since the last
* call to startMeasures().
*
* \see startMeasures(), printMeasures().
*/
/*! \function void KatabaticEngine::printMeasures () const;
* Display memory consumption \& time elapsed.
*
* \see startMeasures(), stopMeasures().
*/
/*! \function void KatabaticEngine::_check ( const char* message=NULL ) const;
* \param message The message to print.
*
* Perform a coherency complete coherency check of the
* data-base. Currently :
*
* - No AutoSegment remains invalidated (\ref katabaticSession).
*
- AutoSegment extentions are coherent.
*
*/
//! \addtogroup collapseCanonical
//! \{
/*! \function void KatabaticEngine::_canonize ( Net* net );
* \param net The \Net to canonize.
*
* Find canonical AutoSegments and non-canonicals ones,
* sets up the flags accordingly.
*
* \see AutoSegment::isCanonical().
*/
//! \}
}