Katabatic - Routing Toolbox


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

AutoContact Terminal (S/T is a Terminal) More...

Inheritance diagram for AutoContactTerminal:
Inheritance graph
[legend]

Public Member Functions

virtual Box getNativeConstraintBox () const
 
virtual AutoSegmentgetSegment (unsigned int) const
 
virtual AutoSegmentgetOpposite (const AutoSegment *) const
 
virtual AutoSegmentgetPerpandicular (const AutoSegment *) 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 &)
 
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 AutoContactTerminalcreate (GCell *gcell, Component *anchor, const Layer *layer, Point point, DbU::Unit width, DbU::Unit height)
 
static AutoContactTerminalcreate (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 NamegetStaticName ()
 

Additional Inherited Members

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

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

◆ create() [1/2]

AutoContactTerminal * create ( GCell gcell,
Component rp,
const Layer layer,
Point  point,
DbU::Unit  width,
DbU::Unit  height 
)
static
Parameters
gcellThe GCell into which create the AutoContact.
rpThe RoutingPad on which to anchor the AutoContact.
layerThe Layer of the AutoContact.
pointThe absolute position.
widthThe width of the AutoContact.
heightThe 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().

◆ create() [2/2]

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
gcellThe GCell into which create the AutoContact.
rpThe Component on which to anchor the AutoContact.
layerThe Layer of the AutoContact.
xThe absolute X position.
yThe absolute Y position.
widthThe width of the AutoContact.
heightThe 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().

◆ getNativeConstraintBox()

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

◆ 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 AutoSegment::isHorizontal(), and AutoSegment::isVertical().

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

◆ updateGeometry()

void updateGeometry ( )
virtual

◆ updateTopology()

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

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


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


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