AutoContact Terminal (S/T is a Terminal) More...
Public Member Functions | |
virtual Box | getNativeConstraintBox () const |
virtual AutoSegment * | getSegment (unsigned int) const |
virtual AutoSegment * | getOpposite (const AutoSegment *) const |
virtual AutoSegment * | getPerpandicular (const AutoSegment *) const |
virtual void | updateGeometry () |
virtual void | updateTopology () |
Public Member Functions inherited from AutoContact | |
Hook * | getBodyHook () |
Hook * | getAnchorHook () |
Component * | getAnchor () const |
Net * | getNet () const |
const Layer * | getLayer () const |
DbU::Unit | getX () const |
DbU::Unit | getY () const |
DbU::Unit | getDx () const |
DbU::Unit | getDy () const |
Point | getCenter () const |
Point | getPosition () const |
DbU::Unit | getWidth () const |
DbU::Unit | getHalfWidth () const |
DbU::Unit | getHeight () const |
DbU::Unit | getHalfHeight () const |
Components | getSlaveComponents () const |
void | setLayer (const Layer *) |
void | setWidth (DbU::Unit) |
void | setHeight (DbU::Unit) |
void | setSizes (DbU::Unit width, DbU::Unit height) |
void | setX (DbU::Unit) |
void | setY (DbU::Unit) |
void | setPosition (DbU::Unit width, DbU::Unit height) |
void | setPosition (const Point &) |
void | setDx (DbU::Unit) |
void | setDy (DbU::Unit) |
void | setOffset (DbU::Unit dx, DbU::Unit dy) |
virtual void | translate (const DbU::Unit &tx, const DbU::Unit &ty) |
bool | isInCreationStage () const |
bool | isInvalidated () const |
bool | isInvalidatedCache () const |
bool | isTurn () const |
bool | isTee (unsigned int direction) const |
bool | isHTee () const |
bool | isVTee () const |
bool | isFixed () const |
bool | hasBadTopology () const |
bool | canDestroy (unsigned int flags=0) const |
bool | canMoveUp (const AutoSegment *moved) const |
Contact * | base () const |
virtual const Name & | getName () const |
size_t | getId () const |
virtual Box | getBoundingBox () const |
GCell * | getGCell () const |
unsigned int | getMinDepth () const |
unsigned int | getMaxDepth () const |
void | getLengths (DbU::Unit *lengths, AutoSegment::DepthLengthSet &) |
Interval | getUConstraints (unsigned int direction) const |
DbU::Unit | getCBXMin () const |
DbU::Unit | getCBXMax () const |
DbU::Unit | getCBYMin () const |
DbU::Unit | getCBYMax () const |
Box | getConstraintBox () const |
Box & | intersectConstraintBox (Box &box) const |
void | invalidate (unsigned int flags=0) |
void | showTopologyError (const std::string &, unsigned int flags=0) |
virtual void | checkTopology () |
void | setGCell (GCell *) |
void | setCBXMin (DbU::Unit xMin) |
void | setCBXMax (DbU::Unit xMax) |
void | setCBYMin (DbU::Unit yMin) |
void | setCBYMax (DbU::Unit yMax) |
void | setConstraintBox (const Box &box) |
bool | restrictConstraintBox (DbU::Unit constraintMin, DbU::Unit constraintMax, unsigned int flags=KbWarnOnError) |
void | migrateConstraintBox (AutoContact *other) |
Static Public Member Functions | |
static AutoContactTerminal * | create (GCell *gcell, Component *anchor, const Layer *layer, Point point, DbU::Unit width, DbU::Unit height) |
static AutoContactTerminal * | create (GCell *gcell, Component *anchor, const Layer *layer, const DbU::Unit dx, const DbU::Unit dy, const DbU::Unit width, const DbU::Unit height) |
Static Public Member Functions inherited from AutoContact | |
static size_t | getAllocateds () |
static const Name & | getStaticName () |
Additional Inherited Members | |
Static Protected Member Functions inherited from AutoContact | |
static void | _getTopology (Contact *, Component *&anchor, Horizontal **&, Vertical **&, size_t) |
AutoContact Terminal (S/T is a Terminal)
AutoContact that are directly attached by either source or target or both to a terminal.
|
static |
gcell | The GCell into which create the AutoContact. |
rp | The RoutingPad on which to anchor the AutoContact. |
layer | The Layer of the AutoContact. |
point | The absolute position. |
width | The width of the AutoContact. |
height | The height of the AutoContact. |
Create a new AutoContactTerminal anchored on rp
. point
gives the absolute position.
References Hook::detach(), and Component::getBodyHook().
Referenced by GCellTopology::doRp_AccessPad(), and GCellTopology::doRp_AutoContacts().
|
static |
gcell | The GCell into which create the AutoContact. |
rp | The Component on which to anchor the AutoContact. |
layer | The Layer of the AutoContact. |
x | The absolute X position. |
y | The absolute Y position. |
width | The width of the AutoContact. |
height | The height of the AutoContact. |
Create a new AutoContactTerminal anchored on rp
. (x,y)
gives the absolute position.
The anchor component rp
is most often a Hurricane::RoutingPad (occurrencing a Hurricane::Segment) or directly a Hurricane::Segment, in case of RoutingPad layer promotion.
References Katabatic::CntInCreationStage, Contact::create(), Component::getPosition(), and DbU::getValueString().
|
virtual |
Returns: The native constraint box (that is, whithout any user constraints applied). For AutoContactTerminal, this is the Box of the supporting external component, and for all others the bounding box of the owning GCell.
Reimplemented from AutoContact.
References AutoContact::getAnchor(), GCell::getBoundingBox(), Occurrence::getEntity(), RoutingPad::getOccurrence(), Transformation::getOrientation(), Occurrence::getPath(), Component::getPosition(), RoutingPad::getSourcePosition(), Segment::getSourcePosition(), RoutingPad::getTargetPosition(), Segment::getTargetPosition(), Path::getTransformation(), and DbU::getValueString().
|
virtual |
Returns: The nth anchored AutoSegment. The index is significant:
Not all the indexes are filled for every AutoContact. For example Turn
have h1 and b1, and HTee
have h1, h2 and v1.
Implements AutoContact.
References AutoSegment::isHorizontal(), and AutoSegment::isVertical().
|
virtual |
Returns: The other AutoSegment the same direction as reference
, this is only meaningful on AutoContactHTee or AutoContactVTee. If there is no opposite, NULL
is returned.
Implements AutoContact.
|
virtual |
Returns: The AutoSegment in the perpandicular direction to reference
, this is only meaningful on AutoContacTurn. It there is no unique perpandicular, NULL
is returned.
Implements AutoContact.
|
virtual |
Compute the new position of the AutoContact based on the AutoSegment positions. The Session mechanism ensure that all AutoSegment are set into their final positions before calling this updator.
Implements AutoContact.
References AutoContact::base(), DebugSession::close(), Katabatic::CntInvalidated, Interval::contains(), AutoContact::getNet(), AutoContact::getUConstraints(), DbU::getValueString(), AutoSegment::getX(), AutoSegment::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoSegment::isCreated(), AutoSegment::isHorizontal(), AutoContact::isInvalidatedCache(), Katabatic::KbHorizontal, Katabatic::KbVertical, DebugSession::open(), AutoContact::setX(), AutoContact::setY(), and AutoContact::showTopologyError().
|
virtual |
Restore the topology (i.e. connexity) of the contact after the incident segment has changed layer.
Based on the layer depth delta between the terminal and the segment three case can occurs:
As, by default, the perpandicular is set in the layer above the parallel, it may be necessary to adjust his layer as well (to the one below).
Implements AutoContact.
References DebugSession::close(), Katabatic::CntBadTopology, AutoContact::getAnchor(), RoutingGauge::getContactLayer(), AutoContact::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoSegment::invalidate(), AutoContact::isInvalidatedCache(), AutoSegment::makeDogleg(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().
Generated by doxygen 1.8.14 on Fri Oct 1 2021 | Return to top of page |
Katabatic - Routing Toolbox | Copyright © 2008-2020 Sorbonne Universite. All rights reserved |