Concrete Horizontal AutoSegment. More...
Public Member Functions | |
virtual bool | _canSlacken () const |
virtual bool | canMoveULeft (float reserve=0.0) const |
virtual bool | canMoveURight (float reserve=0.0) const |
virtual Segment * | base () |
virtual Segment * | base () const |
virtual Horizontal * | getHorizontal () |
virtual DbU::Unit | getSourceU () const |
virtual DbU::Unit | getTargetU () const |
virtual DbU::Unit | getDuSource () const |
virtual DbU::Unit | getDuTarget () const |
virtual Interval | getSpanU () const |
virtual bool | getConstraints (DbU::Unit &min, DbU::Unit &max) const |
virtual Interval | getSourceConstraints (unsigned int flags=0) const |
virtual Interval | getTargetConstraints (unsigned int flags=0) const |
virtual unsigned int | getDirection () const |
virtual size_t | getGCells (vector< GCell *> &) const |
virtual void | setDuSource (DbU::Unit) |
virtual void | setDuTarget (DbU::Unit) |
virtual void | updateOrient () |
virtual void | updatePositions () |
virtual bool | checkPositions () const |
virtual bool | checkConstraints () const |
virtual unsigned int | _makeDogleg (GCell *, unsigned int flags) |
virtual bool | moveULeft () |
virtual bool | moveURight () |
Public Member Functions inherited from AutoSegment | |
virtual Vertical * | getVertical () |
Cell * | getCell () const |
Net * | getNet () const |
const Layer * | getLayer () const |
Box | getBoundingBox () const |
Hook * | getSourceHook () |
Hook * | getTargetHook () |
Contact * | getSource () const |
Contact * | getTarget () const |
Component * | getOppositeAnchor (Component *) const |
Components | getAnchors () const |
virtual DbU::Unit | getX () const |
virtual DbU::Unit | getY () const |
DbU::Unit | getWidth () const |
DbU::Unit | getLength () const |
DbU::Unit | getSourcePosition () const |
DbU::Unit | getTargetPosition () const |
DbU::Unit | getSourceX () const |
DbU::Unit | getSourceY () const |
DbU::Unit | getTargetX () const |
DbU::Unit | getTargetY () const |
void | invert () |
void | setLayer (const Layer *) |
bool | isHorizontal () const |
bool | isVertical () const |
bool | isGlobal () const |
bool | isLocal () const |
bool | isFixed () const |
bool | isBipoint () const |
bool | isWeakTerminal () const |
bool | isStrongTerminal (unsigned int flags=0) const |
bool | isLayerChange () const |
bool | isSpinTop () const |
bool | isSpinBottom () const |
bool | isSpinTopOrBottom () const |
bool | isReduced () const |
bool | isStrap () const |
bool | isDogleg () const |
bool | isInvalidated () const |
bool | isInvalidatedLayer () const |
bool | isCreated () const |
bool | isCanonical () const |
bool | isUnsetAxis () const |
bool | isSlackened () const |
bool | canReduce () const |
bool | mustRaise () const |
unsigned int | canDogleg (Interval) |
bool | canMoveUp (float reserve=0.0, unsigned int flags=0) const |
bool | canPivotUp (float reserve=0.0, unsigned int flags=0) const |
bool | canPivotDown (float reserve=0.0, unsigned int flags=0) const |
bool | canSlacken (unsigned int flags=0) const |
unsigned long | getId () const |
GCell * | getGCell () const |
AutoContact * | getAutoSource () const |
AutoContact * | getAutoTarget () const |
AutoContact * | getOppositeAnchor (AutoContact *) const |
size_t | getPerpandicularsBound (set< AutoSegment *> &) |
AutoSegment * | getParent () const |
DbU::Unit | getAxis () const |
DbU::Unit | getOrigin () const |
DbU::Unit | getExtremity () const |
Interval | getMinSpanU () const |
bool | getConstraints (Interval &i) const |
const Interval & | getUserConstraints () const |
virtual DbU::Unit | getSlack () const |
DbU::Unit | getOptimalMin () const |
DbU::Unit | getOptimalMax () const |
Interval & | getOptimal (Interval &i) const |
virtual DbU::Unit | getCost (DbU::Unit axis) const |
virtual AutoSegment * | getCanonical (DbU::Unit &min, DbU::Unit &max) |
AutoSegment * | getCanonical (Interval &i) |
void | unsetFlags (unsigned int) |
void | setFlags (unsigned int) |
void | computeTerminal () |
void | mergeUserConstraints (const Interval &) |
void | resetUserConstraints () |
void | setOptimalMin (DbU::Unit min) |
void | setOptimalMax (DbU::Unit max) |
void | revalidate () |
AutoSegment * | makeDogleg (AutoContact *) |
unsigned int | makeDogleg (Interval, unsigned int flags=KbNoFlags) |
unsigned int | makeDogleg (GCell *, unsigned int flags=KbNoFlags) |
bool | slacken (unsigned int flags) |
bool | reduceDoglegLayer () |
bool | reduce () |
bool | raise () |
AutoSegment * | canonize (unsigned int flags=KbNoFlags) |
virtual void | invalidate (unsigned int flags=KbPropagate) |
void | computeOptimal (set< AutoSegment *> &processeds) |
void | setAxis (DbU::Unit, unsigned int flags=KbNoFlags) |
bool | toConstraintAxis (unsigned int flags=KbRealignate) |
bool | toOptimalAxis (unsigned int flags=KbRealignate) |
AutoSegments | getOnSourceContact (unsigned int direction) |
AutoSegments | getOnTargetContact (unsigned int direction) |
AutoSegments | getAligneds (unsigned int flags=KbNoFlags) |
AutoSegments | getPerpandiculars () |
Protected Member Functions | |
virtual void | _postCreate () |
virtual void | _preDestroy () |
Protected Member Functions inherited from AutoSegment | |
AutoSegment (Segment *segment) | |
virtual | ~AutoSegment () |
void | _invalidate () |
unsigned int | _getFlags () const |
Additional Inherited Members | |
Static Public Member Functions inherited from AutoSegment | |
static AutoSegment * | create (AutoContact *source, AutoContact *target, Segment *hurricaneSegment) |
static AutoSegment * | create (AutoContact *source, AutoContact *target, unsigned int dir, size_t depth=RoutingGauge::nlayerdepth) |
Static Protected Member Functions inherited from AutoSegment | |
static void | _preCreate (AutoContact *source, AutoContact *target) |
Concrete Horizontal AutoSegment.
|
virtual |
Returns: true if the segment can be slackened. That is, source or target constraints are less than three pitches.
Implements AutoSegment.
References Interval::contains(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getSide(), Interval::getSize(), DbU::getValueString(), Interval::inflate(), and Katabatic::KbVertical.
|
virtual |
reserve
(expressed in total saturation percentage). Implements AutoSegment.
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), GCell::getDown(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getRight(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getWDensity(), and AutoSegment::isGlobal().
|
virtual |
reserve
(expressed in total saturation percentage). Implements AutoSegment.
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getRight(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getUp(), GCell::getWDensity(), and AutoSegment::isGlobal().
|
virtual |
Returns: the decorated Hurricane::Segment.
Implements AutoSegment.
|
virtual |
Returns: the decorated Hurricane::Segment (const flavor).
Implements AutoSegment.
|
virtual |
Returns: If the decorated segment is a Hurricane::Horizontal, return it. NULL
otherwise.
Reimplemented from AutoSegment.
|
virtual |
Returns: The AutoSegment uniform source position. (X for an horizontal and Y for a Vertical).
Implements AutoSegment.
References Segment::getSourceX().
|
virtual |
Returns: The AutoSegment uniform target position. (X for an horizontal and Y for a Vertical).
Implements AutoSegment.
References Segment::getTargetX().
|
virtual |
Returns: The AutoSegment uniform delta from source. (dX for an horizontal and dY for a Vertical).
Implements AutoSegment.
References Horizontal::getDxSource().
|
virtual |
Returns: The AutoSegment uniform delta from source. (dX for an horizontal and dY for a Vertical).
Implements AutoSegment.
References Horizontal::getDxTarget().
|
virtual |
Returns: The AutoSegment uniform occupying interval (on X for horizontal and on Y for vertical).
Implements AutoSegment.
References Segment::getSourceX(), and Segment::getTargetX().
Returns: in min
& max
the allowed range for the segment axis.
Implements AutoSegment.
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getCBYMax(), AutoContact::getCBYMin(), AutoSegment::getUserConstraints(), and DbU::getValueString().
|
virtual |
flags
contains KbNativeConstraints
the constraint returned is only the enclosing GCell. Implements AutoSegment.
References AutoSegment::getAutoSource(), Box::getYMax(), Box::getYMin(), and Katabatic::KbNativeConstraints.
|
virtual |
flags
contains KbNativeConstraints
the constraint returned is only the enclosing GCell. Implements AutoSegment.
References AutoSegment::getAutoTarget(), Box::getYMax(), Box::getYMin(), and Katabatic::KbNativeConstraints.
|
virtual |
Returns: Katabatic::KbHorizontal or Katabatic::KbVertical according to the decorated segment.
Implements AutoSegment.
References Katabatic::KbHorizontal.
|
virtual |
gcells | A vector that will be filled by all the GCells that the segment overlap. In increasing order, from source to target. |
Implements AutoSegment.
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), and GCell::getRight().
|
virtual |
Set the uniform dU
from source anchor (dX for Horizontal, dY for Vertical).
Implements AutoSegment.
|
virtual |
Set the uniform dU
from target anchor (dX for Horizontal, dY for Vertical).
Implements AutoSegment.
|
virtual |
Ensure that source is lower than target. Swap them if needed. Swap never occurs on global segment because their source and target anchors are from different GCell, which are already ordered.
Implements AutoSegment.
References Segment::getSourceX(), Segment::getTargetX(), Segment::invert(), Katabatic::SegSourceBottom, Katabatic::SegSourceTop, Katabatic::SegStrongTerminal, Katabatic::SegTargetBottom, Katabatic::SegTargetTop, AutoSegment::setFlags(), and AutoSegment::unsetFlags().
|
virtual |
Update the segment begenning and ending positions. The positions takes into account the extension caps and reflect the real space used by the segment under it's long axis.
Implements AutoSegment.
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceX(), and Segment::getTargetX().
|
virtual |
Returns: true if the relative positions of source & target are coherent. (source <= target).
Implements AutoSegment.
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceX(), Segment::getTargetX(), and DbU::getValueString().
|
virtual |
Returns: true if the constraint intervel is coherent (non-empty or punctual in the worst case).
Implements AutoSegment.
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), and Interval::intersect().
|
virtual |
This method is the workhorse for the various dogleg and topology restauration methods. It is the atomic method that actually make the dogleg on this segment.
Returns: Katabatic::KbUseAboveLayer if the dogleg is using the above layer (Katabatic::KbUseBelowLayer for the below layer).
Break the current segment in two (a.k.a. making a dogleg).
doglegGCell
.After this method call the net topology is guarantee to be valid.
Implements AutoSegment.
References AutoSegment::canonize(), DebugSession::close(), AutoContactTurn::create(), AutoSegment::create(), Session::dogleg(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Session::getConfiguration(), RoutingGauge::getContactLayer(), AutoContact::getGCell(), Component::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), Component::getNet(), AutoSegment::getNet(), GCell::getRight(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoSegment::getSourceX(), AutoSegment::getTargetX(), GCell::getX(), GCell::getXMax(), AutoSegment::getY(), AutoContact::invalidate(), AutoSegment::invalidate(), AutoSegment::isCanonical(), AutoSegment::isLocal(), AutoSegment::isSlackened(), AutoSegment::isWeakTerminal(), Katabatic::KbHorizontal, Katabatic::KbUseAboveLayer, Katabatic::KbUseBelowLayer, Katabatic::KbVertical, AutoContact::migrateConstraintBox(), DebugSession::open(), GCell::removeHSegment(), Katabatic::SegCanonical, Katabatic::SegDogleg, Katabatic::SegGlobal, Katabatic::SegNotAligned, Katabatic::SegSlackened, Katabatic::SegWeakTerminal1, AutoSegment::setFlags(), AutoSegment::setLayer(), and AutoSegment::unsetFlags().
|
virtual |
This function do not manage an aligned set. It applies on this
segment only.
Displace an Horizontal or Vertical segment to the GCell below (a.k.a. lower or inferior). Rules for displacement:
The displacement take care of:
Returns: true if the move has succeeded.
Implements AutoSegment.
References GCell::addVSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), GCell::getDown(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getRight(), AutoContact::getSegment(), GCell::getSide(), Interval::getVMax(), AutoSegment::isLocal(), Katabatic::KbVertical, GCell::removeVSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().
|
virtual |
This function do not manage an aligned set. It applies on this
segment only.
Displace an Horizontal or Vertical segment to the GCell above (a.k.a. upper or superior). Rules for displacement:
Implements AutoSegment.
References GCell::addVSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getRight(), AutoContact::getSegment(), GCell::getSide(), GCell::getUp(), Interval::getVMin(), AutoSegment::isLocal(), Katabatic::KbVertical, GCell::removeVSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().
|
protectedvirtual |
In addition to AutoSegment::_postCreate(), detect whether the segment is global or local and register it in the relevant GCells (if needed).
If the segment is anchored directly on a terminal, adjust the axis so it's connected.
Reimplemented from AutoSegment.
References AutoSegment::_postCreate(), GCell::addHSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getRight(), GCell::getX(), Component::getY(), Katabatic::SegGlobal, AutoSegment::setFlags(), and AutoContact::setY().
|
protectedvirtual |
Perform operations that must be done before the actual destructor is called. Merely whidrawn the AutoSegment from the lookup/Session mechanism.
Reimplemented from AutoSegment.
References AutoSegment::_preDestroy(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getId(), GCell::getRight(), GCell::getX(), and GCell::removeHSegment().
Generated by doxygen 1.8.14 on Sun Nov 21 2021 | Return to top of page |
Katabatic - Routing Toolbox | Copyright © 2008-2020 Sorbonne Universite. All rights reserved |