Hurricane VLSI Database


Hurricane::Layer Class Referenceabstract

Layer description (API) More...

Inheritance diagram for Hurricane::Layer:

Public Types

typedef Hurricane::Mask< boost::multiprecision::uint128_t > Mask
 

Public Member Functions

TechnologygetTechnology () const
 
const NamegetName () const
 
const MaskgetMask () const
 
const MaskgetExtractMask () const
 
DbU::Unit getMinimalSize () const
 
DbU::Unit getMinimalSpacing () 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 (DbU::Unit minimalSize)
 
void setMinimalSpacing (DbU::Unit minimalSpacing, DbU::Unit width, DbU::Unit parallelLength)
 
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:

  • Layer : the base class, it supplies a generic interface sufficent for most manipulations. However, there are cases when a specific derived class may be needed. Mostly when assembling the symbolic layers.
  • BasicLayer : they represents the real process layers (GDS ones). They possesses the following characteristics:
    • Each BasicLayer is associated with an unique bit in the Layer::Mask. This bit is used to find if a symbolic layer contains that particular BasicLayer.
    • No dimension extentions. Database objects drawn with those layers have rectangles the exact size specified by the user. This is mandatory if you want to create a real layout (by opposition to a symbolic one).
    • They have a material field hinting the purpose of the layer (is a routing metal, a cut, a diffusion and so on).
    • They may have an associated blockage layer (for routing layers).
  • Symbolic Layers : used to draw the various components of a symbolic layout. They are made of a list of BasicLayers and how to extend their dimensions from the user specified sizes.
    • RegularLayer : contains one BasicLayer, use for wires.
    • ViaLayer : contains three BasicLayer, for contact between metal layers. The BasicLayers must be of (metal,cut,metal) materials.
    • ContactLayer : contains four or five BasicLayers, for contact towards active layers or transistor gates. The fifth optional parameter is the well. Materials of the components must be of type (metal,cut,active,diffusion[,well])
    • DiffusionLayer : contains three BasicLayer, for diffusion area. Materials of the components must be of type (active,diffusion,well).
    • TransistorLayer : contains three to four layers, for representing digital transistors. Materials are of type : (gate,active,diffusion,well).

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

typedef Hurricane::Mask<boost::multiprecision::uint128_t> Hurricane::Layer::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.

References getTechnology().

Referenced by getTechnology().

◆ getName()

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

Returns: the name of the layer.

References getName().

Referenced by getName().

◆ getMask()

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

Returns: the mask associated to the layer.

References getMask().

Referenced by above(), below(), getMask(), 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).

References getExtractMask().

Referenced by getExtractMask().

◆ getMinimalSize()

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

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

References getMinimalSize().

Referenced by getMinimalSize().

◆ getMinimalSpacing()

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

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

◆ getBasicLayers()

virtual 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()

virtual 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()

virtual 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()

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

References above(), and below().

◆ above()

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

Returns: true, if layer is above this one.

References above(), and getMask().

Referenced by above(), and getCutBelow().

◆ below()

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

Returns: true, if layer is below this one.

References below(), and getMask().

Referenced by below(), and getCutBelow().

◆ 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 ( DbU::Unit minimalSize)

Sets the minimal size of a pad on this layer.

◆ setMinimalSpacing()

void Hurricane::Layer::setMinimalSpacing ( DbU::Unit minimalSpacing,
DbU::Unit width,
DbU::Unit parallelLength )

Sets the minimal spacing between two pads on this layer.

◆ setEnclosure()

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

Sets the enclosure for the given BasicLayer.

◆ setExtentionCap()

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

Sets the extention cap for the given BasicLayer.

◆ setExtentionWidth()

virtual 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.13.2 on Fri Sep 27 2024 Return to top of page
Hurricane VLSI Database Copyright © 2000-2020 Bull S.A. All rights reserved