// -*- C++ -*- namespace Kite { /*! \class TrackCost * \brief Insertion cost of a \TrackSegment in a \Track. * * * The \TrackCost is not computed by itself. It has to be build by * whoever has created it. For example Track::getOverlapCost(). * * * \section secTrackCostOrdering Sorting Track costs * * The \TrackCost is composed of the following criterions : *
    *
  1. boolean \c _infinite : infinite. *
  2. count \c _terminals : number of terminals. *
  3. length \c _delta : overlap between requested interval and * \TrackSegment of the \Track. *
  4. length \c _deltaPerpand : length of perpandicular wiring needed to * connect to this \Track. *
* Criterions are listed above in decreasing lexicographical weigh order. * * There is also special partial ordering functor : TrackCost::CompareByDelta. */ /*! \function TrackCost::TrackCost ( Track* track, const Interval& interval, size_t begin, size_t end ); * \param track The track on which the cost is performed. * \param interval The interval for which we want a cost. * \param begin The index of the first overlaping \TrackSegment in the \Track. * \param end The index of the last overlaping \TrackSegment in the \Track. * * Create a \TrackCost object. Constructor parameters cannot be changed * after creation. * * \remark The cost is not computed by the constructor. It is computed afterward * by any flavor of Track::getOverlapCost(). */ /*! \function bool TrackCost::isInfinite () const; * \Return The overlap include a \TrackSegment from a \GCellRoutingSet of * higher priority, must'nt be overlaped. */ /*! \function bool TrackCost::isHardOverlap () const; * \Return The overlaped \TrackSegment cannot be shrunk to create a sufficent * free space. See the bound interval of \TrackSegmentCost. */ /*! \function bool TrackCost::isOverlap () const; * \Return The overlaped \TrackSegment could be shrunk to create a suitable * free space. */ /*! \function bool TrackCost::isFree () const; * \Return There is enough free space to insert the \TrackSegment. */ /*! \function Track* TrackCost::getTrack () const; * \Return The associated \Track. */ /*! \function const Interval& TrackCost::getInterval () const; * \Return The interval for which we want to compute a cost. */ /*! \function size_t TrackCost::getBegin () const; * \Return The index of the first overlaping \TrackSegment in \Track. */ /*! \function size_t TrackCost::getEnd () const; * \Return The index of the last overlaping \TrackSegment in \Track. */ /*! \function unsigned int TrackCost::getTerminals () const; * \Return The number of terminal in the interval, see TrackSegmentCost::getTerminals(). */ /*! \function DbU::Unit TrackCost::getDelta () const; * \Return The amount of overlaping between the interval and the \TrackSegments * already in the \Track. */ /*! \function DbU::Unit TrackCost::getDeltaPerpand () const; * \Return The amount of perpandicular wirelength needed to put the to be * inserted \TrackSegment in this \Track. */ /*! \function void TrackCost::setInfinite (); * Raise the infinite flag. */ /*! \function void TrackCost::setHardOverlap (); * Raise the hard overlap flag. */ /*! \function void TrackCost::setOverlap (); * Raise the soft overlap flag. */ /*! \function void TrackCost::incTerminals ( unsigned int number ); * \param number The number of terminal to adds. */ /*! \function void TrackCost::incDelta ( DbU::Unit delta ); * \param delta The amount of length to add to the overlap. */ /*! \function void TrackCost::incDeltaPerpand ( DbU::Unit delta ); * \param delta Increments the perpandicular delta. */ /*! \function bool operator< ( const TrackCost& lhs, const TrackCost& rhs ); * \param lhs the left hand side operand. * \param rhs the right hand side operand. * \return \true if lhs < rhs, see \ref secTrackCostOrdering. */ /*! \class TrackCost::CompareByDelta * \brief Partial compare function for \TrackCost. * * Allow \TrackCost sorting on the \c _delta criterion alone. */ } // End of Kite namespace.