AutoContactTerminal(3)

NAME
AutoContactTerminal - AutoContact Terminal (S/T is a Terminal)

SYNOPSIS

Inherits AutoContact.

  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 ()

  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)

  Additional Inherited Members

Detailed Description

AutoContact Terminal (S/T is a Terminal) AutoContact that are directly attached by either source or target or both to a terminal.

Member Function Documentation

  AutoContactTerminal * create (GCell * gcell, Component * rp, const Layer * layer, Point point, DbU::Unit width, DbU::Unit height) [static]

Parameters:
    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.

Returns:
    The created 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().

  AutoContactTerminal * create (GCell * gcell, Component * rp, const Layer * layer, const DbU::Unit x, const DbU::Unit y, const DbU::Unit width, const DbU::Unit height) [static]

Parameters:
    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.

Returns:
    The created 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().

  Box getNativeConstraintBox () const [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().

  AutoSegment * getSegment (unsigned int index) const [virtual]
Returns: The nth anchored AutoSegment. The index is significant:

•   0 : first horizontal (h1).

•   1 : second horizontal (h2).

•   2 : first vertical (b1).

•   3 : second vertical (b2).

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().

  AutoSegment * getOpposite (const AutoSegment * reference) const [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.

  AutoSegment * getPerpandicular (const AutoSegment * reference) const [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.

  void updateGeometry () [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().

  void updateTopology () [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:

•   The delta is zero, then just sets the layer of the contact to the common metal layer.

•   The delta is one, then sets the contact layer to VIA connecting the two layers.

•   The delta is two, then create a dogleg to restore the connexity. Depending on whether the terminal was attached to the source or target, sets the layer of the segments.

•   A delta of more than two is an error, and must never 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).

Update Terminal Topology

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().

Author

Generated automatically by Doxygen for Katabatic - Routing Toolbox from the source code.