# Hurricane Documentation

# Hurricane VLSI Database

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

The model (API). More...

Inheritance diagram for Hurricane::Cell:
[legend]

## Public Member Functions

Library * | getLibrary () const
const Name & | getName () const
Instance * | getInstance (const Name &name) const
Instances | getInstances () const
Instances | getInstancesUnder (const Box &area, DbU::Unit threshold=0) const
Instances | getSlaveInstances () const
Net * | getNet (const Name &name) const
Nets | getNets () const
Nets | getGlobalNets () const
Nets | getExternalNets () const
Nets | getInternalNets () const
Nets | getClockNets () const
Nets | getSupplyNets () const
Slice * | getSlice (const Layer *layer) const
Slices | getSlices (const Layer::Mask &mask=~0) const
Rubbers | getRubbers () const
Rubbers | getRubbersUnder (const Box &area) const
Components | getComponents (const Layer::Mask &mask=~0) const
Components | getComponentsUnder (const Box &area, const Layer::Mask &mask=~0) const
Occurrences | getOccurrences (unsigned searchDepth=std::numeric_limits< unsigned int >::max()) const
Occurrences | getOccurrencesUnder (const Box &area, unsigned searchDepth=std::numeric_limits< unsigned int >::max()) const
Occurrences | getTerminalInstanceOccurrences () const
Occurrences | getTerminalNetlistInstanceOccurrences (const Instance *topInstance=NULL) const
Occurrences | getNonTerminalNetlistInstanceOccurrences (const Instance *topInstance=NULL) const
const Box & | getAbutmentBox () const
bool | isCalledBy (Cell *cell) const
bool | isTerminal () const
bool | isTerminalNetlist () const
bool | isUnique () const
bool | isUniquified () const
bool | isUniquifyMaster () const
void | setName (const Name &name)
void | setAbutmentBox (const Box &abutmentBox)
void | setTerminalNetlist (bool isTerminalNetlist)
void | materialize ()
void | unmaterialize ()
Cell * | getClone ()
void | uniquify (unsigned int depth=std::numeric_limits< unsigned int >::max())
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 Cell * | create (Library *library, const Name &name)

## Detailed Description

The model (API).

# Layout vs. Netlist Cell Hierarchy

The Cell / Instance hierarchy can be walkthrough in two different modes:

- The Layout Mode, in this mode the walktrough will be done over all the instances levels. This mode is used for the following collections:

  - Cell::getTerminalInstanceOccurrences().

- The Netlist Mode, in this mode the walktrough will stop at instances flagged as Cell::Flags::TerminalInstance. The netlist hierarchy will be a subset of the layout one. Or, conversely, some level of layout hirearchy can have no netlist equivalent. This mode is used for the following collections:

  - Cell::getTerminalNetlistInstanceOccurrences().
  - Cell::getNonTerminalNetlistInstanceOccurrences().

## Member Function Documentation

## ◆ create()

Cell * Hurricane::Cell::create | ( | Library * | library,
|  | const Name & | name
| ) |  |

static

creates and returns a new Cell named name for the Library library.

Caution: Throws an exception if the Library is null, if the Name is
  empty or if a cell with same name already exists in the Library.

## ◆ getLibrary()

Library * Hurricane::Cell::getLibrary | ( |  | ) | const

inline

Returns the Library owning the Cell.

## ◆ getName()

const Name & Hurricane::Cell::getName | ( |  | ) | const

inline

Returns the Name of the Cell.

## ◆ getInstance()

Instance * Hurricane::Cell::getInstance | ( | const Name & | name | ) | const

inline

Returns the Instance of name name if it exists, else `NULL`.

## ◆ getInstances()

Instances Hurricane::Cell::getInstances | ( |  | ) | const

inline

Returns the Collection of all instances called by the Cell.

## ◆ getInstancesUnder()

Instances Hurricane::Cell::getInstancesUnder | ( | const Box & | area,
|  | DbU::Unit | threshold = `0`
| ) |  | const

Returns the collection of all instances of the Cell intersecting the given rectangular area.

## ◆ getSlaveInstances()

Instances Hurricane::Cell::getSlaveInstances | ( |  | ) | const

Returns the Collection of instances whose master is this Cell.

## ◆ getNet()

Net * Hurricane::Cell::getNet | ( | const Name & | name | ) | const

Returns the Net of name name if it exists, else `NULL`.

## ◆ getNets()

Nets Hurricane::Cell::getNets | ( |  | ) | const

inline

Returns the Collection of all nets of the Cell.

## ◆ getGlobalNets()

Nets Hurricane::Cell::getGlobalNets | ( |  | ) | const

Returns the Collection of all global nets of the Cell.

## ◆ getExternalNets()

Nets Hurricane::Cell::getExternalNets | ( |  | ) | const

Returns the Collection of all external nets of the Cell.

## ◆ getInternalNets()

Nets Hurricane::Cell::getInternalNets | ( |  | ) | const

Returns the Collection of all internal nets of the Cell.

## ◆ getClockNets()

Nets Hurricane::Cell::getClockNets | ( |  | ) | const

Returns the Collection of all clock nets of the Cell.

## ◆ getSupplyNets()

Nets Hurricane::Cell::getSupplyNets | ( |  | ) | const

Returns the Collection of all supply nets of the Cell.

## ◆ getSlice()

Slice * Hurricane::Cell::getSlice | ( | const Layer * | layer | ) | const

inline

Returns the Slice associated with the Layer layer if it exists, else `NULL`.

## ◆ getSlices()

Slices Hurricane::Cell::getSlices | ( | const Layer::Mask & | mask = `~0` | ) | const

Returns the Collection of slices of a Cell.

## ◆ getRubbers()

Rubbers Hurricane::Cell::getRubbers | ( |  | ) | const

Returns the Collection of all Rubbers of a Cell.

## ◆ getRubbersUnder()

Rubbers Hurricane::Cell::getRubbersUnder | ( | const Box & | area | ) | const

Returns the collection of all Rubbers of the Cell intersecting the given rectangular area.

Caution: Only currently materialized rubbers are taken into account
  in this collection.

## ◆ getComponents()

Components Hurricane::Cell::getComponents | ( | const Layer::Mask & | mask = `~0` | ) | const

Returns the Collection of all Components of the Cell.

## ◆ getComponentsUnder()

Components Hurricane::Cell::getComponentsUnder | ( | const Box & | area,
|  | const Layer::Mask & | mask = `~0`
| ) |  | const

Returns the collection of all Components of the Cell intersecting the given rectangular area.

Caution: Only currently materialized Components are taken into account
  in this collection.

## ◆ getOccurrences()

Occurrences Hurricane::Cell::getOccurrences | ( | unsigned | searchDepth = `std::numeric_limits<unsigned int>::max()` | ) | const

Returns the Collection of all Occurrences belonging to this Cell.

Remarks
  The search depth is decremented each time a hirearchical level is crossed. The search ends when depth becomes null (the value `INFINITE` is equal to ``(unsigned)-1) .

## ◆ getOccurrencesUnder()

Occurrences Hurricane::Cell::getOccurrencesUnder | ( | const Box & | area,
|  | unsigned | searchDepth = `std::numeric_limits<unsigned int>::max()`
| ) |  | const

Returns the Collection of all Occurrences belonging to this Cell and intersecting the given rectangular area.

Remarks
  The search depth is decremented each time a hirearchical level is crossed. The search ends when depth becomes null (the value `INFINITE` is equal to ``(unsigned)-1) .

Caution: Only occurences corresponding to currently materialized
  entities are taken into account in this Collection.

## ◆ getTerminalInstanceOccurrences()

Occurrences Hurricane::Cell::getTerminalInstanceOccurrences | ( |  | ) | const

Returns the trans-hierarchical Collection of all instance Occurrences that are layout terminal cells (leaves).

## ◆ getTerminalNetlistInstanceOccurrences()

Occurrences Hurricane::Cell::getTerminalNetlistInstanceOccurrences | ( | const Instance * | topInstance = `NULL` | ) | const

Returns the trans-hierarchical Collection of all instance Occurrences that are leaf cells. With the `topInstance` argument we can restrict the collection to leafs of that instance (of the current Cell) only.

## ◆ getNonTerminalNetlistInstanceOccurrences()

Occurrences Hurricane::Cell::getNonTerminalNetlistInstanceOccurrences | ( | const Instance * | topInstance = `NULL` | ) | const

Returns the trans-hierarchical Collection of all instance Occurrences that are not leaf cells. With the `topInstance` argument we can restrict the collection to non-leafs of that instance (of the current Cell) only.

## ◆ getAbutmentBox()

Box Hurricane::Cell::getAbutmentBox | ( |  | ) | const

inline

Returns Returns the abutment box of the cell (which is defined by the designer unlike the bounding box which is managed dynamically).

## ◆ isCalledBy()

bool Hurricane::Cell::isCalledBy | ( | Cell * | cell | ) | const

Returns true if the cell `this` is directly or indirectly called by the Cell cell. This functions allows to check that there is no cyclic instance calls of cells (it is by default, automatically called when creating an instance).

## ◆ isTerminal()

bool Hurricane::Cell::isTerminal | ( |  | ) | const

inline

Returns true if the cell contains no instances. This is a layout leaf cell.

## ◆ isTerminalNetlist()

bool Hurricane::Cell::isTerminalNetlist | ( |  | ) | const

inline

Returns true if the Cell is marked as terminal for the netlist hierarchy. A terminal netlist cell may, however contains further level of physical (layout) instances. This is a state that can be set or unset.

Referenced by setTerminalNetlist().

## ◆ isUnique()

bool Hurricane::Cell::isUnique | ( |  | ) | const

Returns true if the Cell has one or less instances, regardless of it's uniquification state.

## ◆ isUniquified()

bool Hurricane::Cell::isUniquified | ( |  | ) | const

Returns true if this Cell is the result of an uniquification and is not the reference (the original) Cell.

## ◆ isUniquifyMaster()

bool Hurricane::Cell::isUniquifyMaster | ( |  | ) | const

Returns true if the Cell has been uniquified and this is the original Cell. The original Cell can have both normal instances and uniquified instances.

## ◆ setName()

void Hurricane::Cell::setName | ( | const Name & | name | ) |

Allows to change the Cell Name.

Remarks
  Throws an exception if the new name is empty or if the Library owning the Cell has already a Cell with the same name.

## ◆ setAbutmentBox()

void Hurricane::Cell::setAbutmentBox | ( | const Box & | abutmentBox | ) |

sets Cell abutment box.

Remarks
  At the Cell creation the abutment box is empty. This one must be set through this function. It is possible also, once fixed, to reset it to empty (undefined) by passing an empty Box as argument.

## ◆ setTerminalNetlist()

void Hurricane::Cell::setTerminalNetlist | ( | bool | state | ) |

inline

sets Cell netlist terminal status to state.

References isTerminalNetlist().

## ◆ materialize()

void Hurricane::Cell::materialize | ( |  | ) |

materializes all components of all the nets of the Cell.

## ◆ unmaterialize()

void Hurricane::Cell::unmaterialize | ( |  | ) |

De-materializes all components of all the nets of the Cell.

## ◆ getClone()

Cell * Hurricane::Cell::getClone | ( |  | ) |

Build a duplicate of the Cell. The database keep track of all the duplicate of one original Cell. The name of a duplicate is generated by appending `'_uXX'` where `'XX'` is the number of the duplicate.

Only logical information (netlist) and instance's placements gets duplicated. No physical components will be duplicated.

## ◆ uniquify()

void Hurricane::Cell::uniquify | ( | unsigned int | depth = `std::numeric_limits<unsigned int>::max()` | ) |

Parameters

  depth | Recursively perform the uniquification until that hierarchical depth.

Multiple instances of a same model are modificated so that each instance has it's own unique copy of the model.

This is equivalent to a flatten operation, but without destroying the intermediate level of hierarchy. Only the netlist and instance's placements gets duplicated. No physical components will be duplicated.

See also
  Cell::getClone(), Instance::uniquify().

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

- Cell.h
- Cell.dox