# Hurricane Documentation

# Hurricane VLSI Database

List of all members | Public Types | Public Member Functions | Static Public Member Functions
Hurricane::RoutingPad Class Reference

RoutingPad description (API) More...

Inheritance diagram for Hurricane::RoutingPad:
[legend]

## Public Types

enum | Flags { BiggestArea = (1 << 0), HighestLayer = (1 << 1), LowestLayer = (1 << 2), ComponentSelection = BiggestArea|HighestLayer|LowestLayer, ShowWarning = (1 << 4) }
typedef Component | Inherit
Public Types inherited from Hurricane::Component
typedef Go | Inherit

## Public Member Functions

bool | isPlacedOccurrence (unsigned int flags) const
Occurrence | getOccurrence () const
Occurrence | getPlugOccurrence ()
virtual const Layer * | getLayer () const
virtual DbU::Unit | getX () const
virtual DbU::Unit | getY () const
virtual Box | getBoundingBox () const
virtual Point | getCenter () const
Point | getSourcePosition () const
Point | getTargetPosition () const
DbU::Unit | getSourceX () const
DbU::Unit | getSourceY () const
DbU::Unit | getTargetX () const
DbU::Unit | getTargetY () const
virtual void | translate (const DbU::Unit &dx, const DbU::Unit &dy)
void | setExternalComponent (Component *)
Component * | setOnBestComponent (unsigned int flags)
void | restorePlugOccurrence ()
Public Member Functions inherited from Hurricane::Component
Net * | getNet () const
Rubber * | getRubber () const
Hook * | getBodyHook ()
virtual Hooks | getHooks () const
Components | getConnexComponents () const
Components | getSlaveComponents () const
Public Member Functions inherited from Hurricane::Go
bool | isMaterialized () const
Public Member Functions inherited from Hurricane::DBo
virtual void | destroy ()
Property * | getProperty (const Name &) const
Properties | getProperties () const
bool | hasProperty () const
void | put (Property *)
void | remove (Property *)
void | removeProperty (const Name &)
void | clearProperties ()

## Static Public Member Functions

static RoutingPad * | create (Net *, Occurrence, unsigned int flags=0)
static RoutingPad * | create (Pin *)
Static Public Member Functions inherited from Hurricane::Component
static ComponentFilter | getIsUnderFilter (const Box &area)
Static Public Member Functions inherited from Hurricane::Go
static bool | autoMaterializationIsDisabled ()
static void | enableAutoMaterialization ()
static void | disableAutoMaterialization ()

## Detailed Description

RoutingPad description (API)

# Introduction

The RoutingPad is a part of the trans-hierarchical mechanism. It allows to connect a Net from the top-level netlist to a plug in an Instance at any level inside the hierarchy, through a Plug Occurrence. RoutingPad can also be created from Pin or Contact Occurrences.

When the RoutingPad is created using a Plug Occurrence, it can be set afterward to any of master net external Component. A utility method RoutingPad::setOnBestComponent() is also provided to automatically set the RoutingPad on a Component matching criteria of surface or layer level.

The position of the RoutingPad is fixed relatively from the instances in it's occurrence path and the entity it refers. The reference point used on the entity is it's center whether it is a segment, a pin or a plug. In the later case, it is the center of the cell.

## Member Typedef Documentation

## ◆ Inherit

Hurricane::RoutingPad::Inherit

Useful for calling upon methods of the base class without knowing it.

## Member Enumeration Documentation

## ◆ Flags

enum Hurricane::RoutingPad::Flags

Set of flags to choose how to select the external component of a RoutingPad to be anchored on.

Enumerator
BiggestArea | Select the external Component of biggest area.
HighestLayer | Select the external Component of in the highest layer.
LowestLayer | Select the external Component of in the lowest layer.
ComponentSelection | A mask to filter bit parts of a flag belonging to component selection.
ShowWarning | Whether to display a warning or not while checking the instances placement.

## Member Function Documentation

## ◆ create() [1/2]

RoutingPad * Hurricane::RoutingPad::create | ( | Net * | net,
|  | Occurrence | occurrence,
|  | unsigned int | flags = `0`
| ) |  |

static

Parameters

  net | The Net of the top-level netlist connected to this RoutingPad.
  occurrence | The Occurrence of Plug, Pin or Pad to connect to.
  flags | In the case of a Plug, the way to select the external component of the Net.

Returns
  The newly created RoutingPad.

## ◆ create() [2/2]

RoutingPad * Hurricane::RoutingPad::create | ( | Pin * | pin | ) |

static

Special variant to create a RoutingPad from a top-level Pin.

## ◆ isPlacedOccurrence()

bool Hurricane::RoutingPad::isPlacedOccurrence | ( | unsigned int | flags | ) | const

Check wether all the instances in the occurrence path are placed. If at least, one is not and `flags` contains RoutingPad::ShowWarning, display a warning.

When using a RoutingPad as a reference/anchor for other physical components (that is, the occurence entity is no longer a Plug), it is critical that it is in a truly meaningful position. And this is true only if all the instances in the occurrence's Path have a physical position (i.e. are placed).

## ◆ getOccurrence()

Occurrence Hurricane::RoutingPad::getOccurrence | ( |  | ) | const

inline

Returns
  The Occurence on which we are anchored on. If a Component has been selected to be the anchor, it's an Occurrence on that component which is returned, not the actual Plug.

## ◆ getPlugOccurrence()

Occurrence Hurricane::RoutingPad::getPlugOccurrence | ( |  | ) |

Returns
  The original Plug Occurrence.

## ◆ getLayer()

const Layer * Hurricane::RoutingPad::getLayer | ( |  | ) | const

virtual

Returns
  If anchored on a component, the Layer of that Component. If anchored on a Plug, `NULL`.

Implements Hurricane::Component.

## ◆ getX()

DbU::Unit Hurricane::RoutingPad::getX | ( |  | ) | const

virtual

Returns
  The X position of the RoutingPad. This is the position, as returned by Component::getPosition() of the Component it is anchored on.

Implements Hurricane::Component.

## ◆ getY()

DbU::Unit Hurricane::RoutingPad::getY | ( |  | ) | const

virtual

Returns
  The Y position of the RoutingPad. This is the position, as returned by Component::getPosition() of the Component it is anchored on.

Implements Hurricane::Component.

## ◆ getBoundingBox()

Box Hurricane::RoutingPad::getBoundingBox | ( |  | ) | const

virtual

Returns
  If it's anchored on a Component, returns the bounding box of that component (with Occurrence Transformation applied). If it's on a Plug, just return a zero-sised box from getPosition().

Implements Hurricane::Component.

## ◆ getCenter()

Point Hurricane::RoutingPad::getCenter | ( |  | ) | const

virtual

Returns
  The center of the bounding box.

Reimplemented from Hurricane::Component.

## ◆ getSourcePosition()

Point Hurricane::RoutingPad::getSourcePosition | ( |  | ) | const

Returns
  If anchored on a Segment, the source position of it. getPosition() otherwise.

## ◆ getTargetPosition()

Point Hurricane::RoutingPad::getTargetPosition | ( |  | ) | const

Returns
  If anchored on a Segment, the target position of it. getPosition() otherwise.

## ◆ getSourceX()

Point Hurricane::RoutingPad::getSourceX | ( |  | ) | const

Returns
  If anchored on a Segment, the X coordinate of the source position. getX() otherwise.

## ◆ getSourceY()

Point Hurricane::RoutingPad::getSourceY | ( |  | ) | const

Returns
  If anchored on a Segment, the Y coordinate of the source position. getY() otherwise.

## ◆ getTargetX()

Point Hurricane::RoutingPad::getTargetX | ( |  | ) | const

Returns
  If anchored on a Segment, the X coordinate of the target position. getX() otherwise.

## ◆ getTargetY()

Point Hurricane::RoutingPad::getTargetY | ( |  | ) | const

Returns
  If anchored on a Segment, the Y coordinate of the target position. getY() otherwise.

## ◆ translate()

void Hurricane::RoutingPad::translate | ( | const DbU::Unit & | dx,
|  | const DbU::Unit & | dy
| ) |  |

virtual

As the position of the RoutingPad is fixed relatively to the instance path and the anchoring component, it cannot be translated. Thus this method do nothing. The Routing pad will translate nevertheless with any translation of any of the instance in it's path or the anchor.

Implements Hurricane::Go.

## ◆ setExternalComponent()

void Hurricane::RoutingPad::setExternalComponent | ( | Component * | component | ) |

When the RoutingPad is anchored on a Plug, allow to set the `component` that we will anchor on. The Occurrence of the RoutingPad is updated from the Plug to the `component`.

Remarks
  `component` must be tagged as Net external.

## ◆ setOnBestComponent()

void Hurricane::RoutingPad::setOnBestComponent | ( | unsigned int | flags | ) |

Automatically select the best component to anchor on, according to the criteria givens on `flags` (selection occurs in net external components).

## ◆ restorePlugOccurrence()

void Hurricane::RoutingPad::restorePlugOccurrence | ( |  | ) |

If the RoutingPad has been anchored on a Component, detach from it and revert to the Plug Occurrence.

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

- RoutingPad.h
- RoutingPad.dox