# Katabatic - Routing Toolbox

List of all members | Public Member Functions | Static Public Member Functions
AutoContactHTee Class Reference

AutoContact H-Tee (two H, one V) More...

Inheritance diagram for AutoContactHTee:
[legend]

## 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 ()
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 &)
virtual Box | getNativeConstraintBox () const
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 AutoContactHTee * | create (GCell *, Net *, const Layer *)
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)

## Detailed Description

AutoContact H-Tee (two H, one V)

AutoContact to build an horizontal tee (two H, one V).

## Member Function Documentation

## ◆ create()

AutoContactHTee * 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 AutoContactHTee.

Create a new AutoContactHTee.

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

Referenced by GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), and GCellTopology::_do_xG_xM1_xM3().

## ◆ getOpposite()

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.

## ◆ getPerpandicular()

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.

## ◆ getSegment()

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.

## ◆ updateGeometry()

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

## ◆ updateTopology()

void updateTopology | ( |  | ) |
| virtual

Restore the topology (i.e. connexity) of the contact after any number of connected segments has changed layer (at least one, up to three).

For any configuration, the connexity can be restored by making only one dogleg.

We distinguish two kind of layer changes:

1. The two horizontals (`h1` and `h2`) are still on the same layer (either they both moved or the vertical only has moved, see figures 2 & 4). In that case, the dogleg is made on the vertical.
2. The two horizontals no longer are on the same layer (figures 1 & 3). In that case, the dogleg is made on the horizontal which is at the greater distance (in a layer sense) from the vertical.

Update H-Tee Topology

Implements AutoContact.

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

The documentation for this class was generated from the following files:

- AutoContactHTee.h
- AutoContactHTee.cpp
- AutoContactHTee.dox

Generated by doxygen 1.8.14 on Mon Feb 3 2020 | Return to top of page

Katabatic - Routing Toolbox | Copyright © 2008-2016 UPMC. All rights reserved