Layer description (API) More...
Public Types | |
typedef Hurricane::Mask< unsigned long long > | Mask |
Public Member Functions | |
Technology * | getTechnology () const |
const Name & | getName () const |
const Mask & | getMask () const |
const Mask & | getExtractMask () const |
const DbU::Unit & | getMinimalSize () const |
const DbU::Unit & | getMinimalSpacing () const |
virtual BasicLayers | getBasicLayers () const =0 |
virtual const Layer * | getTop () const |
virtual const Layer * | getBottom () const |
virtual const Layer * | getOpposite (const Layer *) const |
Layer * | getMetalAbove (bool useSymbolic=true) const |
Layer * | getMetalBelow (bool useSymbolic=true) const |
Layer * | getCutAbove (bool useSymbolic=true) const |
Layer * | getCutBelow (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 () |
Property * | getProperty (const Name &) const |
Properties | getProperties () const |
bool | hasProperty () const |
void | put (Property *) |
void | remove (Property *) |
void | removeProperty (const Name &) |
void | clearProperties () |
Layer description (API)
Layers are divideds in three categories:
(metal,cut,metal) materials.
(metal,cut,active,diffusion[,well])
(active,diffusion,well).
(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 ...
The creation order is significant regarding the metal connectivity. The metal & cut layers must be created in alternately fashion, for example:
BasicLayer | Material | Layer::Mask |
---|---|---|
cut0 | cut | 0x00000010 |
metal1 | metal | 0x00000020 |
cut1 | cut | 0x00000040 |
metal2 | metal | 0x00000080 |
cut2 | cut | 0x00000100 |
metal3 | metal | 0x00000200 |
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.
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.
|
inline |
Returns: the technolgy owning the layer.
|
inline |
Returns: the name of the layer.
|
inline |
Returns: the mask associated to the layer.
Referenced by above(), below(), and Hurricane::Technology::isMetal().
|
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).
|
inline |
Returns: the minimal size allowed for a rectangular layout pad on this layer.
|
inline |
Returns: the minimal spacing between two pads on this layer.
|
pure virtual |
Returns: the collection of basic layers within this layer.
|
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.
|
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.
Layer * Hurricane::Layer::getMetalAbove | ( | bool | useSymbolic = true | ) | const |
Returns: The metal working layer whose mask is immediatly above this one.
Layer * Hurricane::Layer::getMetalBelow | ( | bool | useSymbolic = true | ) | const |
Returns: The metal working layer whose mask is immediatly below this one.
Layer * Hurricane::Layer::getCutAbove | ( | bool | useSymbolic = true | ) | const |
Returns: The cut working layer whose mask is immediatly above this one.
Layer * Hurricane::Layer::getCutBelow | ( | bool | useSymbolic = true | ) | const |
Returns: The cut working layer whose mask is immediatly below this one.
|
inline |
Returns: true, if layer
is above this one.
References getMask().
|
inline |
Returns: true, if layer
is below this one.
References getMask().
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.
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.
void Hurricane::Layer::setName | ( | const Name & | name | ) |
sets or changes the layer name.
void Hurricane::Layer::setMinimalSize | ( | const DbU::Unit & | minimalSize | ) |
Sets the minimal size of a pad on this layer.
void Hurricane::Layer::setMinimalSpacing | ( | const DbU::Unit & | minimalSpacing | ) |
Sets the minimal spacing between two pads on this layer.
|
virtual |
Sets the enclosure for the given BasicLayer.
|
virtual |
Sets the extention cap for the given BasicLayer.
|
virtual |
Sets the extention width for the given BasicLayer.
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 |