// -*- 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 : * * * 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. */ //! \} }