coriolis/katabatic/doc/NetOptimals.dox

60 lines
2.5 KiB
C++

// -*- C++ -*-
namespace Katabatic {
/*! \defgroup NetOptimals 6. AutoSegment Optimal Placement (internal)
*
* This modules documents how \c AutoSegment optimal placement are computed.
* It is intented for developpers only.
*
* The principle is quite simple : for any given \c AutoSegment, for example
* a vertical one (\b A), we want to find the optimal position so the wire
* length of \c AutoSegment perpandicular to \b A would be minimal. This
* optimal position is an interval of X positions, possibly reduced to a
* point.
*
* Given an \c AutoSegment, we will take into account :
* <ul>
* <li>Perpandicular global \c AutoSegment.
* <li>Terminals linked to the \c AutoSegment through any number of
* local \c AutoSegment (collapsed or not).
* </ul>
*
* How to find the optimal interval :
*
* First we build an histogram in the direction perpandicular to the
* \c AutoSegment. For \b A : in horizontal direction. We populate the
* histogram with the axis coordinate of global \c AutoSegment and
* terminals linked to \b A. Note that for global \c AutoSegment the
* "axis" coordinate is the position of the side of the \c FCell.
* For terminal depending on their orientation relative to \b A we
* add either their axis or their two extremities.
*
* The optimal interval is then the median interval of the histogram.
*
* The set of examples below shows some representative cases.
*
* \image html NetOptimals-1.png "Multiple Verticals Terminals"
* \image latex NetOptimals-1.pdf "Multiple Verticals Terminals" width=0.6\textwidth
* \image html NetOptimals-2.png "Globals Only"
* \image latex NetOptimals-2.pdf "Globals Only" width=0.6\textwidth
* \image html NetOptimals-3.png "One Horizontal Terminal"
* \image latex NetOptimals-3.pdf "One Horizontal Terminal" width=0.6\textwidth
*/
//! \addtogroup NetOptimals
//! \{
/*! \function void KatabaticEngine::_computeNetOptimals ( Net* net );
* \param net The net for which to compute optimal placement.
*
* compute optimal placement of all net's AutoSegment.
*/
//! \}
}