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

Public Member Functions

LibrarygetLibrary () const
 
const NamegetName () const
 
InstancegetInstance (const Name &name) const
 
Instances getInstances () const
 
Instances getInstancesUnder (const Box &area, DbU::Unit threshold=0) const
 
Instances getSlaveInstances () const
 
NetgetNet (const Name &name, bool useAlias=true) const
 
Nets getNets () const
 
Nets getGlobalNets () const
 
Nets getExternalNets () const
 
Nets getInternalNets () const
 
Nets getClockNets () const
 
Nets getSupplyNets () const
 
SlicegetSlice (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(), DbU::Unit threshold=0) const
 
Occurrences getTerminalInstanceOccurrences () const
 
Occurrences getTerminalNetlistInstanceOccurrences (const Instance *topInstance=NULL) const
 
Occurrences getNonTerminalNetlistInstanceOccurrences (const Instance *topInstance=NULL) const
 
const BoxgetAbutmentBox () 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 state)
 
void materialize ()
 
void unmaterialize ()
 
CellgetClone ()
 
void uniquify (unsigned int depth=std::numeric_limits< unsigned int >::max())
 
- 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 Cellcreate (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:

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,
bool  useAlias = true 
) 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(),
DbU::Unit  threshold = 0 
) 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.

◆ 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.

◆ 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
depthRecursively 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:


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