20#include "hurricane/Name.h"
21#include "hurricane/Slot.h"
28#include "crlcore/RoutingLayerGauge.h"
34 using Hurricane::JsonObject;
35 using Hurricane::JsonStack;
36 using Hurricane::Initializer;
37 using Hurricane::Name;
38 using Hurricane::Record;
39 using Hurricane::Layer;
40 using Hurricane::Technology;
50 static const size_t nlayerdepth;
52 static RoutingGauge*
create (
const char* name );
55 inline bool isSymbolic ()
const;
56 inline bool isTwoMetals ()
const;
57 inline bool isSuperPitched ()
const;
58 inline bool isHV ()
const;
59 inline bool isVH ()
const;
60 inline bool hasPowerSupply ()
const;
61 bool hasLayer (
const Layer* )
const;
67 inline size_t getUsableLayers ()
const;
68 inline size_t getFirstRoutingLayer ()
const;
69 inline size_t toRoutingDepth (
size_t depth )
const;
70 inline DbU::Unit getHorizontalPitch ()
const;
71 inline DbU::Unit getVerticalPitch ()
const;
77 bool isUsable (
const Layer* )
const;
78 size_t getViaDepth (
const Layer* )
const;
80 unsigned int getLayerType (
const Layer* )
const;
90 inline bool isUsable (
size_t depth )
const;
91 inline unsigned int getLayerType (
size_t depth )
const;
93 inline DbU::Unit getLayerPitch (
size_t depth )
const;
94 inline DbU::Unit getLayerOffset (
size_t depth )
const;
95 inline DbU::Unit getLayerWireWidth (
size_t depth )
const;
96 inline DbU::Unit getLayerPWireWidth (
size_t depth )
const;
97 inline DbU::Unit getViaWidth (
size_t depth )
const;
98 const vector<RoutingLayerGauge*>&
103 inline void setSymbolic (
bool );
105 void toJson ( JsonWriter* )
const;
106 virtual Record* _getRecord ( Record* record=NULL )
const;
107 virtual string _getString ()
const;
108 virtual string _getTypeName ()
const;
113 vector<RoutingLayerGauge*> _layerGauges;
114 vector<Layer*> _viaLayers;
117 bool _isSuperPitched;
118 size_t _firstRoutingLayer;
119 size_t _usableLayers;
122 RoutingGauge (
const char* name );
123 RoutingGauge (
const RoutingGauge& );
124 virtual ~RoutingGauge ();
125 virtual void _preDestroy ();
126 RoutingGauge& operator= (
const RoutingGauge& );
130 inline bool RoutingGauge::isSymbolic ()
const {
return _isSymbolic; }
131 inline bool RoutingGauge::isSuperPitched ()
const {
return _isSuperPitched; }
132 inline bool RoutingGauge::isTwoMetals ()
const {
return (_usableLayers < 3); }
133 inline bool RoutingGauge::isHV ()
const {
return getFirstRoutingGauge()->isHorizontal(); }
134 inline bool RoutingGauge::isVH ()
const {
return getFirstRoutingGauge()->isVertical(); }
135 inline bool RoutingGauge::hasPowerSupply ()
const {
return (getPowerSupplyGauge() != NULL); }
138 inline size_t RoutingGauge::getFirstRoutingLayer ()
const {
return _firstRoutingLayer; }
139 inline size_t RoutingGauge::getUsableLayers ()
const {
return _usableLayers; }
140 inline size_t RoutingGauge::toRoutingDepth (
size_t depth )
const {
return _firstRoutingLayer+depth; }
141 inline DbU::Unit RoutingGauge::getHorizontalPitch ()
const {
return getHorizontalGauge()->getPitch(); }
142 inline DbU::Unit RoutingGauge::getVerticalPitch ()
const {
return getVerticalGauge ()->getPitch(); }
145 inline bool RoutingGauge::isUsable (
size_t depth )
const {
return getLayerGauge(depth)->isUsable(); }
146 inline unsigned int RoutingGauge::getLayerType (
size_t depth )
const {
return getLayerGauge(depth)->
getType(); }
149 inline DbU::Unit RoutingGauge::getLayerOffset (
size_t depth )
const {
return getLayerGauge(depth)->
getOffset(); }
151 inline DbU::Unit RoutingGauge::getLayerPWireWidth (
size_t depth )
const {
return getLayerGauge(depth)->getPWireWidth(); }
152 inline void RoutingGauge::setSymbolic (
bool state ) { _isSymbolic=state; }
160 static void initialize ();
161 JsonRoutingGauge (
unsigned long flags );
162 virtual string getTypeName ()
const;
163 virtual JsonRoutingGauge* clone (
unsigned long flags )
const;
164 virtual void toData ( JsonStack& );
Gauge for the detailed routing.
Definition RoutingGauge.h:46
static RoutingGauge * create(const char *name)
RoutingLayerGauge * getLayerGauge(size_t depth) const
RoutingGauge * getClone() const
void addLayerGauge(RoutingLayerGauge *layerGauge)
Layer * getContactLayer(size_t depth) const
const vector< RoutingLayerGauge * > & getLayerGauges() const
const Layer * getRoutingLayer(size_t depth) const
Technology * getTechnology() const
Definition RoutingGauge.h:137
const Name getName() const
Definition RoutingGauge.h:136
RoutingLayerGauge * getLayerGauge(const Layer *) const
size_t getLayerDepth(const Layer *) const
unsigned int getLayerDirection(const Layer *) const
void checkConnexity() const
size_t getDepth() const
Definition RoutingGauge.h:143
Gauge of a Layer for the detailed routing.
Definition RoutingLayerGauge.h:81
Constant::Direction getDirection() const
Definition RoutingLayerGauge.h:191
DbU::Unit getOffset() const
Definition RoutingLayerGauge.h:194
DbU::Unit getPitch() const
Definition RoutingLayerGauge.h:195
DbU::Unit getWireWidth() const
Definition RoutingLayerGauge.h:197
DbU::Unit getViaWidth() const
Definition RoutingLayerGauge.h:200
Constant::LayerGaugeType getType() const
Definition RoutingLayerGauge.h:192
The namespace of Coriolis Core.
Definition AcmSigda.h:28