34 #include "hurricane/Mask.h"
35 #include "hurricane/DBo.h"
36 #include "hurricane/Layers.h"
37 #include "hurricane/DbU.h"
38 #include "hurricane/BasicLayers.h"
53 typedef Hurricane::Mask<boost::multiprecision::uint128_t>
Mask;
55 static const uint32_t NoFlags = 0;
56 static const uint32_t EnclosureH = (1 << 0);
57 static const uint32_t EnclosureV = (1 << 1);
58 static const uint32_t EnclosureMax = (1 << 2);
59 static const uint32_t ExtensionCap = (1 << 3);
60 static const uint32_t ExtensionWidth = (1 << 4);
71 virtual const Layer* getBlockageLayer ()
const;
72 virtual const Layer* getRoutingLayer ()
const;
73 virtual const Layer* getCut ()
const;
81 virtual DbU::Unit getEnclosure ( uint32_t flags )
const;
82 virtual DbU::Unit getExtentionCap ()
const;
83 virtual DbU::Unit getExtentionWidth ()
const;
87 virtual DbU::Unit getTopEnclosure ( uint32_t flags )
const;
88 virtual DbU::Unit getBottomEnclosure ( uint32_t flags )
const;
89 virtual double getMinimalArea ()
const;
91 inline bool above (
const Layer* layer )
const;
92 inline bool below (
const Layer* layer )
const;
95 inline bool isSymbolic ()
const;
96 inline bool isBlockage ()
const;
99 inline void setSymbolic (
bool );
100 inline void setBlockage (
bool );
106 virtual void setMinimalArea (
double );
108 virtual void _toJson ( JsonWriter* )
const;
109 virtual string _getString ()
const;
110 virtual Record* _getRecord ()
const;
111 inline Layer* _getNextOfTechnologyLayerMap ()
const;
112 inline void _setMask (
const Mask& mask );
113 inline void _setExtractMask (
const Mask& extractMask );
114 inline void _setNextOfTechnologyLayerMap (
Layer* layer );
115 virtual void _onDbuChange (
float scale );
116 static const Name& _sgetName (
const Layer* );
126 Layer* _nextOfTechnologyLayerMap;
139 virtual void _postCreate ();
140 virtual void _preDestroy ();
143 struct CompareByMask {
144 inline bool operator() (
const Layer* lhs,
const Layer* rhs )
const;
150 inline bool Layer::isSymbolic ()
const {
return _symbolic; }
151 inline bool Layer::isBlockage ()
const {
return _blockage; }
160 inline void Layer::setSymbolic (
bool state ) { _symbolic = state; }
161 inline void Layer::setBlockage (
bool state ) { _blockage = state; }
162 inline Layer* Layer::_getNextOfTechnologyLayerMap ()
const {
return _nextOfTechnologyLayerMap; }
163 inline void Layer::_setMask (
const Mask& mask ) { _mask = mask; }
164 inline void Layer::_setExtractMask (
const Mask& extractMask ) { _extractMask = extractMask; }
165 inline void Layer::_setNextOfTechnologyLayerMap ( Layer* layer ) { _nextOfTechnologyLayerMap = layer; }
167 inline bool Layer::CompareByMask::operator() (
const Layer* lhs,
const Layer* rhs )
const
174 class JsonLayer :
public JsonDBo {
176 JsonLayer (
unsigned long flags );
177 Technology* lookupTechnology ( JsonStack&,
const string& fname )
const;
BasicLayer description (API)
Definition: BasicLayer.h:42
DataBase object root class (API).
Definition: DBo.h:45
std::int64_t Unit
Definition: DbU.h:67
Layer description (API)
Definition: Layer.h:50
virtual void setEnclosure(const BasicLayer *layer, DbU::Unit, uint32_t flags)
bool below(const Layer *layer) const
Definition: Layer.h:153
const Mask & getMask() const
Definition: Layer.h:156
const Name & getName() const
Definition: Layer.h:155
void setMinimalSize(const DbU::Unit &minimalSize)
Layer * getMetalBelow(bool useSymbolic=true) const
virtual const Layer * getBottom() const
virtual void setExtentionCap(const BasicLayer *layer, DbU::Unit)
virtual const Layer * getTop() const
virtual const Layer * getOpposite(const Layer *) const
const DbU::Unit & getMinimalSpacing() const
Definition: Layer.h:159
virtual void setExtentionWidth(const BasicLayer *layer, DbU::Unit)
virtual BasicLayers getBasicLayers() const =0
void setMinimalSpacing(const DbU::Unit &minimalSpacing)
Layer * getCutBelow(bool useSymbolic=true) const
void setName(const Name &name)
bool above(const Layer *layer) const
Definition: Layer.h:152
Layer * getMetalAbove(bool useSymbolic=true) const
Layer * getCutAbove(bool useSymbolic=true) const
bool intersect(const Layer *layer) const
Technology * getTechnology() const
Definition: Layer.h:154
const Mask & getExtractMask() const
Definition: Layer.h:157
Hurricane::Mask< boost::multiprecision::uint128_t > Mask
Definition: Layer.h:53
bool contains(const Layer *layer) const
const DbU::Unit & getMinimalSize() const
Definition: Layer.h:158
Name description (API)
Definition: Name.h:35
Technological rules description (API).
Definition: Technology.h:62
Contains Almost Everything.
Definition: BasicLayer.h:39