# Hurricane Documentation

# 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:
[legend]

## Classes

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

## Public Types

typedef Go | Inherit

## Public Member Functions

const Name & | getName () const
Cell * | getMasterCell () const
const Transformation & | getTransformation () const
Plug * | getPlug (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 ()
Instance * | getClone (Cell *cloneCell) 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 Instance * | create (Cell *cell, const Name &name, Cell *masterCell, bool secureFlag=true)
static Instance * | create (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:

- Instance::PlacementStatus::UNPLACED : the instance doesn't have a meaningful position. It shouldn't be materialized either. It's position therfore shouldn't be used.
- Instance::PlacementStatus::PLACED : the instance has be placed manually or by an automated tool. It is movable.
- Instance::PlacementStatus::FIXED : the instance is placed and mustn't be moved by automated tools. It can still be moved manually.

# 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

Hurricane::Instance::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: 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: 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: 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:

- Instance.h
- Instance.dox