Hurricane VLSI Database


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

Instance description (API) More...

Inheritance diagram for Hurricane::Instance:
Inheritance graph
[legend]

Classes

class  PlacementStatus
 Instance Placement Status (API) More...
 

Public Types

typedef Go Inherit
 

Public Member Functions

const NamegetName () const
 
CellgetMasterCell () const
 
const TransformationgetTransformation () const
 
PluggetPlug (const Net *masterNet) const
 
Plugs getPlugs () const
 
Plugs getConnectedPlugs () const
 
Plugs getUnconnectedPlugs () const
 
Path getPath (const Path &tailPath=Path()) const
 
Box getAbutmentBox () const
 
void setName (const Name &name)
 
void setTransformation (const Transformation &transformation)
 
void setMasterCell (Cell *masterCell, bool secureFlag=true)
 
void uniquify ()
 
InstancegetClone (Cell *cloneCell) 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 Instancecreate (Cell *cell, const Name &name, Cell *masterCell, bool secureFlag=true)
 
static Instancecreate (Cell *cell, const Name &name, Cell *masterCell, const Transformation &transformation, const PlacementStatus &placementstatus, bool secureFlag=true)
 
static InstanceFilter getIsUnderFilter (const Box &area)
 
- Static Public Member Functions inherited from Hurricane::Go
static bool autoMaterializationIsDisabled ()
 
static void enableAutoMaterialization ()
 
static void disableAutoMaterialization ()
 

Detailed Description

Instance description (API)

Introduction

Instances provide the capability to build hierarchical assemblies. An instance belongs to a cell (the "<b>owner cell</b>") and references (calls) a model cell which we will call the "<b>mater cell</b>". Seen from the other hand, a cell may be the master cell of many instances belonging to other cells, this set of instances is named the "<b>slave instances</b>" of this cell (it is empty for the top most cell of a hierachical assembly, as well as for all cells from the library which are not instanciated in the current design).

Placement Status

See Instance::PlacementStatus and Instance::PlacementStatus::Code.

An Instance can have three kind of placement status:

Predefined filters

Hurricane::Instance::getIsUnderFilter

Instance Destruction

When the Instance::destroy() method is called, if the master Cell is uniquified, that is, is unique and a copy of the reference Cell, it is destroyed as well. That state means that the master Cell has been created for the only purpose as to serve as a model for this peculiar Instance. It is then logical that it should be removed with it.

Member Typedef Documentation

◆ Inherit

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

Member Function Documentation

◆ create() [1/2]

Instance * Hurricane::Instance::create ( Cell cell,
const Name name,
Cell masterCell,
bool  secureFlag = true 
)
static

No description.

◆ create() [2/2]

Instance * Hurricane::Instance::create ( Cell cell,
const Name name,
Cell masterCell,
const Transformation transformation,
const PlacementStatus placementstatus,
bool  secureFlag = true 
)
static

Create and return a pointer to a new instance of name <name> belonging to the cell <cell> and refering the cell <masterCell> through a transformation <transformation> if it is provided (else the identity transform is assumed).

Caution: Throws an exception if the cell <cell> is null, if the
<masterCell> is null, if an instance of same name already exists or if a cyclic assembly is detected.
Remarks
If the <secureFlag> is set to false the verification of the lack of cyclic assembly is skipped (you save some cpu time, but at your own risks).

◆ getName()

const Name & Hurricane::Instance::getName ( ) const
inline

Returns: the instance name.

◆ getMasterCell()

Cell * Hurricane::Instance::getMasterCell ( ) const
inline

Returns: the cell model referenced by the instance.

◆ getTransformation()

const Transformation & Hurricane::Instance::getTransformation ( ) const
inline

Returns: the transformation associated to the instance.

◆ getPlug()

Plug * Hurricane::Instance::getPlug ( const Net masterNet) const
inline

Returns: the plug associated to the <masterNet> if it exists or else NULL (if the net is not external).

◆ getPlugs()

Plugs Hurricane::Instance::getPlugs ( ) const
inline

Returns: the collection of instance plugs.

Important:\n Each external net of the master cell of the instance has by
construction an associated plug. This one may be connected or not to a net in the owner cell of the instance.

◆ getConnectedPlugs()

Plugs Hurricane::Instance::getConnectedPlugs ( ) const

Returns: the collection of instance plugs which are effectively connected.

◆ getUnconnectedPlugs()

Plugs Hurricane::Instance::getUnconnectedPlugs ( ) const

Returns: the collection of instance plugs which are not connected.

◆ getPath()

Path Hurricane::Instance::getPath ( const Path tailPath = Path()) const

Returns: the path composed of the instance solely.

Returns: the path resulting of the concatenation of the instance and the tail path (possibly empty).

Caution: An exception will be thrown if the tail path is not
consistent with the instance (that is if the owner cell of the tail path is not the master cell of the instance).

◆ getAbutmentBox()

Box Hurricane::Instance::getAbutmentBox ( ) const

Returns: the abutment box of the instance, that is the abutment box of the master cell to which has been applied the instance transformation.

◆ getIsUnderFilter()

InstanceFilter Hurricane::Instance::getIsUnderFilter ( const Box area)
static

Returns: the filter selecting instances which intersect the given area.

◆ setName()

void Hurricane::Instance::setName ( const Name name)

Allows to change the instance name.

Remarks
Throws an exception if the name is empty or if an instance with the same name exists in the owner cell.

◆ setTransformation()

void Hurricane::Instance::setTransformation ( const Transformation transformation)

Allows to modify the instance transformation.

◆ setMasterCell()

void Hurricane::Instance::setMasterCell ( Cell masterCell,
bool  secureFlag = true 
)

Allows to change the cell referenced by this instance.

Caution: Throws an exception if either the cell is null, a cyclic
assembly is detected or the substitution can't succeed.
Remarks
If the <secureFlag> is set to false the verification of the lack of cyclic assembly is skipped (you save some cpu time, but at your own risks).
Important:\n In order to succeed with the substitution, it is necessary
that for each connected plug, refering an external net of the old master cell, a net of same name can be found in the new master cell.

The properties of the instance, of its existing plugs and of the different occurences of those ones are preserved. On the other hand, all the hierarchical pathes going through that instance and not ending on it, as well as all associated occurences, become obsolete. The properties attached to those occurences are therefore deleted.

◆ uniquify()

void Hurricane::Instance::uniquify ( )

Replace the <masterCell> of this instance by a cloned copy.

See also
Cell::getClone().

◆ getClone()

Instance * Hurricane::Instance::getClone ( Cell cloneCell) const

Build a duplicate of instance ( <this>) inside a cloned Cell <cloneCell>. The connections (Plug) on the copied instance are copied. That is, connected to Net with identical names in <cloneCell>.

Important:\n In , a copy (by name) of all the nets this instance
is connected to must exits.

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