Component description (API) More...
Classes | |
class | BodyHook |
Public Types | |
typedef Go | Inherit |
Public Member Functions | |
Net * | getNet () const |
Rubber * | getRubber () const |
Hook * | getBodyHook () |
virtual Hooks | getHooks () const |
virtual DbU::Unit | getX () const =0 |
virtual DbU::Unit | getY () const =0 |
virtual Point | getPosition () const |
virtual const Layer * | getLayer () const =0 |
virtual Box | getBoundingBox (const BasicLayer *) const =0 |
Components | getConnexComponents () const |
Components | getSlaveComponents () const |
Public Member Functions inherited from Hurricane::Go | |
bool | isMaterialized () const |
virtual void | translate (const DbU::Unit &dx, const DbU::Unit &dy)=0 |
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 ComponentFilter | getIsUnderFilter (const Box &area) |
Static Public Member Functions inherited from Hurricane::Go | |
static bool | autoMaterializationIsDisabled () |
static void | enableAutoMaterialization () |
static void | disableAutoMaterialization () |
Component description (API)
Components are the abstract objects representing the category of net components (segments, contacts, pads, plugs,...). Each component knows its net, its layer and has a "body".
Some components (for instance the segments) bear on contacts or other segments, more precisely they bear an extremity (the origin or the extremity), possibly through an offset on other components. The real location of the concerned part is therefore relative to the location of the component on which this part bears.
For that purpose each components must be able to return a location from which a relative calculations can be done. The methods getX() and getY() provide this information and must be overloaded for each sub-type of component in oder to get the desired effect.
When a component is destroyed, all components which are anchored on its body (through the body hook) are also destroyed. This may recursively propagate to other components anchored on the body of those last ones.
Rings are reorganized such that the connectivity remains invariant.
Useful for calling upon methods of the base class without knowing it.
|
inline |
Returns: the net owning the component.
Referenced by Hurricane::Plug::isConnected().
|
inline |
Returns: the rubber associated to the component (may be NULL).
|
inline |
Returns: the hook representing the component body.
|
virtual |
Returns: the collection of component hooks, that is the collection of nested hooks within the component, each of them representing a part of the component.
|
pure virtual |
Returns: the abscissa of the component's body. This abscissa is a reference base for the components anchored, through an offset, on the component's body.
Implemented in Hurricane::RoutingPad.
Referenced by getPosition().
|
pure virtual |
Returns: the ordinate of the component's body. This ordinate is a reference base for the components anchored, through an offset, on the component's body.
Implemented in Hurricane::RoutingPad.
Referenced by getPosition().
|
inlinevirtual |
Returns: the location of the component's body.
This method returns, in principle, a point built from the two previous methods. As far as some similar calculations are done in both methods, it is wise to redefine the method as shown below for the Contact :
Indeed, contacts can possibly bear on other components through an offset defined by two attributes _dx and _dy. In order to compute the abscissa of a contact the component on which it bears must be found. This component named the anchor is returned by the call to getAnchor(). If the component has no anchor, its coordinates are considered as absolute and the attribute _dx gives directly its abscissa.
The method getAnchor() must loop through a ring in order to find the contact anchor. By overloading the function getPosition(), only one loop will be needed. Furtermore we call directly anchor->getPosition() and not both anchor->getX() and anchor->getY(), this will be faster (this anchor may be anchored itself on an other component).
|
pure virtual |
Returns: the layer on which the component is located (may return NULL for some component types like the plugs).
Implemented in Hurricane::RoutingPad.
|
pure virtual |
Returns: the envelope of the component for the <basicLayer>
, that is the smallest box enclosing all layout elements located on the specified basic layer.
Returns: an empty box for objects which are not physical layout ones (i.e. plugs) or for those which have no layout on the specified basic layer.
Components Hurricane::Component::getConnexComponents | ( | ) | const |
Returns: the collection of "connex components" to the component <this>
(which includes at least this one).
If the layout elements are correctly assembled and on the proper layers, this "connex components collection" represents an geometrically and electrically connected subset of layout elements
On the other hand, if layout anchored objects don't overlap on the same conducting layers (either by a wrong contact layer or by an offset which forbids layout intersection) electrical continuity will not be ensured.
Components Hurricane::Component::getSlaveComponents | ( | ) | const |
Returns: the collection of components whose existence depends directly or indirectly of the existence of the component <this>
(a segment can't survive to the destruction of a contact on which it is anchored).
|
static |
Returns: the filter allowing to select only components which intersect the rectangular <area>
.
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 |