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:
Inheritance graph
[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 LayergetLayer () 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 *)
 
ComponentsetOnBestComponent (unsigned int flags)
 
void restorePlugOccurrence ()
 
- Public Member Functions inherited from Hurricane::Component
NetgetNet () const
 
RubbergetRubber () const
 
HookgetBodyHook ()
 
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 ()
 
PropertygetProperty (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 RoutingPadcreate (Net *, Occurrence, unsigned int flags=0)
 
static RoutingPadcreate (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

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

Member Enumeration Documentation

◆ 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
netThe Net of the top-level netlist connected to this RoutingPad.
occurrenceThe Occurrence of Plug, Pin or Pad to connect to.
flagsIn 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:


Generated by doxygen 1.9.1 on Thu Aug 11 2022 Return to top of page
Hurricane VLSI Database Copyright © 2000-2020 Bull S.A. All rights reserved