Hurricane VLSI Database


List of all members | Public Types | Public Member Functions
Hurricane::Layer Class Referenceabstract

Layer description (API) More...

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

Public Types

typedef Hurricane::Mask< unsigned long long > Mask
 

Public Member Functions

TechnologygetTechnology () const
 
const NamegetName () const
 
const MaskgetMask () const
 
const MaskgetExtractMask () const
 
const DbU::UnitgetMinimalSize () const
 
const DbU::UnitgetMinimalSpacing () const
 
virtual BasicLayers getBasicLayers () const =0
 
virtual const LayergetTop () const
 
virtual const LayergetBottom () const
 
virtual const LayergetOpposite (const Layer *) const
 
LayergetMetalAbove (bool useSymbolic=true) const
 
LayergetMetalBelow (bool useSymbolic=true) const
 
LayergetCutAbove (bool useSymbolic=true) const
 
LayergetCutBelow (bool useSymbolic=true) const
 
bool above (const Layer *layer) const
 
bool below (const Layer *layer) const
 
bool contains (const Layer *layer) const
 
bool intersect (const Layer *layer) const
 
void setName (const Name &name)
 
void setMinimalSize (const DbU::Unit &minimalSize)
 
void setMinimalSpacing (const DbU::Unit &minimalSpacing)
 
virtual void setEnclosure (const BasicLayer *layer, DbU::Unit, uint32_t flags)
 
virtual void setExtentionCap (const BasicLayer *layer, DbU::Unit)
 
virtual void setExtentionWidth (const BasicLayer *layer, DbU::Unit)
 
- 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 ()
 

Detailed Description

Layer description (API)

Introduction

Layers are divideds in three categories:

Like for the Technology object, a layer must not be deleted, else all components located on it will have a dangling pointer to an deleted object ...

BasicLayer Creation Ordering

The creation order is significant regarding the metal connectivity. The metal & cut layers must be created in alternately fashion, for example:

BasicLayerMaterialLayer::Mask
cut0 cut 0x00000010
metal1 metal 0x00000020
cut1 cut 0x00000040
metal2 metal 0x00000080
cut2 cut 0x00000100
metal3 metal 0x00000200

Looking Up a Layer from a Mask

A BasicLayer is uniquely associated to a bit in the Layer::Mask. But, multiple symbolic layers could be built over that BasicLayer. In that case all those layers will have the same mask. For the mask lookup functions not to be confused, we introduce the concept of working layer in all the symbolic layers with the same mask, this is the one that will be returned.

Member Typedef Documentation

◆ Mask

This type represents a mask bit field characterising efficiently the constituents of any kind of layer. It associates to each basic layer a bit and to each symbolic layer the union of the bits corresponding to its basic layers.

Member Function Documentation

◆ getTechnology()

Technology * Hurricane::Layer::getTechnology ( ) const
inline

Returns: the technolgy owning the layer.

◆ getName()

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

Returns: the name of the layer.

◆ getMask()

const Layer::Mask & Hurricane::Layer::getMask ( ) const
inline

Returns: the mask associated to the layer.

Referenced by above(), below(), and Hurricane::Technology::isMetal().

◆ getExtractMask()

const Layer::Mask & Hurricane::Layer::getExtractMask ( ) const
inline

Returns: the mask used for extraction.

Two differents basic layers have different masks but may have same extraction masks (ie CP layer which represent poly and CPG which represent poly used to realize transistor gates).

◆ getMinimalSize()

const DbU::Unit & Hurricane::Layer::getMinimalSize ( ) const
inline

Returns: the minimal size allowed for a rectangular layout pad on this layer.

◆ getMinimalSpacing()

const DbU::Unit & Hurricane::Layer::getMinimalSpacing ( ) const
inline

Returns: the minimal spacing between two pads on this layer.

◆ getBasicLayers()

BasicLayers Hurricane::Layer::getBasicLayers ( ) const
pure virtual

Returns: the collection of basic layers within this layer.

Remarks
For a basic layer the collection contains this one only.

◆ getTop()

const Layer * Hurricane::Layer::getTop ( ) const
virtual

Returns: The uppermost layer of that layer. On BasicLayer, it is always the layer itself. In symbolic layers the meaning depends on the object structure.

Remarks
In symbolic layers, top & bottom are not related to the Layer::Mask but to the structuration of the layer. It is advisable that the designer create layers and symbolic layers in way that ensure the top layer is indeed the one with the greater mask.

◆ getBottom()

const Layer * Hurricane::Layer::getBottom ( ) const
virtual

Returns: The lowermost layer of that layer. On BasicLayer, it is always the layer itself. In symbolic layers the meaning depends on the object structure.

◆ getOpposite()

const Layer * Hurricane::Layer::getOpposite ( const Layer source) const
virtual

Returns: This method is only meaningful for ViaLayer. It returns the metal Layer opposite to the one given in arguments.

◆ getMetalAbove()

Layer * Hurricane::Layer::getMetalAbove ( bool  useSymbolic = true) const

Returns: The metal working layer whose mask is immediatly above this one.

◆ getMetalBelow()

Layer * Hurricane::Layer::getMetalBelow ( bool  useSymbolic = true) const

Returns: The metal working layer whose mask is immediatly below this one.

◆ getCutAbove()

Layer * Hurricane::Layer::getCutAbove ( bool  useSymbolic = true) const

Returns: The cut working layer whose mask is immediatly above this one.

◆ getCutBelow()

Layer * Hurricane::Layer::getCutBelow ( bool  useSymbolic = true) const

Returns: The cut working layer whose mask is immediatly below this one.

◆ above()

bool Hurricane::Layer::above ( const Layer layer) const
inline

Returns: true, if layer is above this one.

References getMask().

◆ below()

bool Hurricane::Layer::below ( const Layer layer) const
inline

Returns: true, if layer is below this one.

References getMask().

◆ contains()

bool Hurricane::Layer::contains ( const Layer layer) const

Returns: true if the <layer> is completely included in the layer <this> (that is if the basic layers of <layer> are a sub-set of the basic layers of <this>), else false.

◆ intersect()

bool Hurricane::Layer::intersect ( const Layer layer) const

Returns: true if the <layer> and the layer <this> have at least a common basic layer, else false.

◆ setName()

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

sets or changes the layer name.

Remarks
An exception is thrown if the name is empty or if there is an other layer with that name.

◆ setMinimalSize()

void Hurricane::Layer::setMinimalSize ( const DbU::Unit minimalSize)

Sets the minimal size of a pad on this layer.

◆ setMinimalSpacing()

void Hurricane::Layer::setMinimalSpacing ( const DbU::Unit minimalSpacing)

Sets the minimal spacing between two pads on this layer.

◆ setEnclosure()

void Hurricane::Layer::setEnclosure ( const BasicLayer layer,
DbU::Unit  ,
uint32_t  flags 
)
virtual

Sets the enclosure for the given BasicLayer.

◆ setExtentionCap()

void Hurricane::Layer::setExtentionCap ( const BasicLayer layer,
DbU::Unit  ecap 
)
virtual

Sets the extention cap for the given BasicLayer.

◆ setExtentionWidth()

void Hurricane::Layer::setExtentionWidth ( const BasicLayer layer,
DbU::Unit  ewidth 
)
virtual

Sets the extention width for the given BasicLayer.


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