AutoContactTurn(3)

NAME
AutoContactTurn - AutoContact Turn (one H, one V)

SYNOPSIS

Inherits AutoContact.

  Public Member Functions
virtual AutoSegment * getOpposite (const AutoSegment *) const
virtual AutoSegment * getPerpandicular (const AutoSegment *) const
virtual AutoSegment * getSegment (unsigned int) const
virtual void updateGeometry ()
virtual void updateTopology ()

  Static Public Member Functions
static AutoContactTurn * create (GCell *, Net *, const Layer *)

  Additional Inherited Members

Detailed Description

AutoContact Turn (one H, one V) AutoContact to make a turn (one H, one V).

Member Function Documentation

  AutoContactTurn * create (GCell * gcell, Net * net, const Layer * layer) [static]

Parameters:
    gcell The GCell into which create the AutoContact.
    net The Net to which this AutoContact belongs.
    layer The Layer of the AutoContact.

Returns:
    The created AutoContactTurn.

Create a new AutoContactTurn.

References Katabatic::CntInCreationStage, and Contact::create().

Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_1Pad(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM3(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), GCellTopology::doRp_Access(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace{LoadGrByNet.cpp}::singleGCell().

  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.

  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.

  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, AutoContact::getNet(), AutoContact::getX(), AutoContact::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setX(), and AutoContact::setY().

  void updateTopology () [virtual]
Restore the topology (i.e. connexity) of the contact after one or both connected segments has changed layer.

Based on the layer depth delta between the two perpandiculars segments. Three case can occurs:

•   The delta is zero, then just sets the layer of the contact to the common metal layer (turn in same layer).

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

•   The delta cannot be equal to two, due to the alternatives routing directions, it would mean a turn connecting two horizontals (or verticals) in different layers.

•   The delta is three, then create a dogleg to restore the connexity. The dogleg will be created on the connected segment which as been layer invalidated. If both of them have been invalidated, the horizontal one is preferred.

•   A delta of more than three is an error, and must never occurs.

Update Turn Topology

Implements AutoContact.

References DebugSession::close(), Katabatic::CntBadTopology, RoutingGauge::getContactLayer(), AutoContact::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoContact::hasBadTopology(), AutoSegment::invalidate(), AutoContact::isInvalidatedCache(), AutoSegment::isInvalidatedLayer(), AutoSegment::makeDogleg(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().

Author

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