Katabatic - Routing Toolbox


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

AutoContact Turn (one H, one V) More...

Inheritance diagram for AutoContactTurn:
Inheritance graph
[legend]

Public Member Functions

virtual AutoSegmentgetOpposite (const AutoSegment *) const
 
virtual AutoSegmentgetPerpandicular (const AutoSegment *) const
 
virtual AutoSegmentgetSegment (unsigned int) const
 
virtual void updateGeometry ()
 
virtual void updateTopology ()
 
- Public Member Functions inherited from AutoContact
HookgetBodyHook ()
 
HookgetAnchorHook ()
 
ComponentgetAnchor () const
 
NetgetNet () const
 
const LayergetLayer () 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
 
Contactbase () const
 
virtual const NamegetName () const
 
size_t getId () const
 
virtual Box getBoundingBox () const
 
GCellgetGCell () 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
 
BoxintersectConstraintBox (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 AutoContactTurncreate (GCell *, Net *, const Layer *)
 
- Static Public Member Functions inherited from AutoContact
static size_t getAllocateds ()
 
static const NamegetStaticName ()
 

Additional Inherited Members

- Static Protected Member Functions inherited from AutoContact
static void _getTopology (Contact *, Component *&anchor, Horizontal **&, Vertical **&, size_t)
 

Detailed Description

AutoContact Turn (one H, one V)

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

Member Function Documentation

◆ create()

AutoContactTurn * create ( GCell gcell,
Net net,
const Layer layer 
)
static
Parameters
gcellThe GCell into which create the AutoContact.
netThe Net to which this AutoContact belongs.
layerThe Layer of the AutoContact.
Returns
The created AutoContactTurn.

Create a new AutoContactTurn.

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

Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().

◆ 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.

References AutoContact::_getTopology(), AutoContact::base(), DebugSession::close(), Katabatic::CntBadTopology, Katabatic::CntInvalidatedCache, AutoSegment::getDirection(), AutoContact::getNet(), AutoSegment::invalidate(), Katabatic::KbHorizontal, Katabatic::KbVertical, Session::lookup(), DebugSession::open(), and AutoContact::showTopologyError().

◆ updateGeometry()

void updateGeometry ( )
virtual

◆ updateTopology()

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


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


Generated by doxygen 1.8.13 on Mon May 14 2018 Return to top of page
Katabatic - Routing Toolbox Copyright © 2008-2016 UPMC. All rights reserved