17 #ifndef CRL_ROUTING_GAUGE_H 18 #define CRL_ROUTING_GAUGE_H 22 #include "hurricane/Name.h" 23 #include "hurricane/Slot.h" 30 #include "crlcore/RoutingLayerGauge.h" 40 using Hurricane::Record;
52 static const size_t nlayerdepth;
57 inline bool isSymbolic ()
const;
58 inline bool isTwoMetals ()
const;
59 inline bool isHV ()
const;
60 inline bool isVH ()
const;
61 inline bool hasPowerSupply ()
const;
62 bool hasLayer (
const Layer* )
const;
68 inline DbU::Unit getHorizontalPitch ()
const;
69 inline DbU::Unit getVerticalPitch ()
const;
74 size_t getViaDepth (
const Layer* )
const;
76 unsigned int getLayerType (
const Layer* )
const;
85 inline unsigned int getLayerType (
size_t depth )
const;
86 inline DbU::Unit getLayerPitch (
size_t depth )
const;
87 inline DbU::Unit getLayerOffset (
size_t depth )
const;
88 inline DbU::Unit getLayerWireWidth (
size_t depth )
const;
89 inline DbU::Unit getLayerPWireWidth (
size_t depth )
const;
90 inline DbU::Unit getViaWidth (
size_t depth )
const;
93 const vector<RoutingLayerGauge*>&
98 inline void setSymbolic (
bool );
100 void toJson ( JsonWriter* )
const;
101 virtual Record* _getRecord ( Record* record=NULL )
const;
102 virtual string _getString ()
const;
103 virtual string _getTypeName ()
const;
108 vector<RoutingLayerGauge*> _layerGauges;
109 vector<Layer*> _viaLayers;
117 virtual void _preDestroy ();
122 inline bool RoutingGauge::isSymbolic ()
const {
return _isSymbolic; }
123 inline bool RoutingGauge::isTwoMetals ()
const {
return (
getDepth() < 3); }
124 inline bool RoutingGauge::isHV ()
const {
return not isTwoMetals() and (
getLayerGauge(1)->isHorizontal()); }
125 inline
bool RoutingGauge::isVH ()
const {
return not isTwoMetals() and (
getLayerGauge(1)->isVertical()); }
126 inline
bool RoutingGauge::hasPowerSupply ()
const {
return (getPowerSupplyGauge() != NULL); }
130 inline DbU::Unit RoutingGauge::getHorizontalPitch ()
const {
return getHorizontalGauge()->
getPitch(); }
131 inline DbU::Unit RoutingGauge::getVerticalPitch ()
const {
return getVerticalGauge ()->
getPitch(); }
132 inline unsigned int RoutingGauge::getLayerType (
size_t depth )
const {
return getLayerGauge(depth)->
getType(); }
137 inline DbU::Unit RoutingGauge::getLayerPWireWidth (
size_t depth )
const {
return getLayerGauge(depth)->getPWireWidth(); }
139 inline void RoutingGauge::setSymbolic (
bool state ) { _isSymbolic=state; }
145 class JsonRoutingGauge :
public JsonObject {
147 static void initialize ();
148 JsonRoutingGauge (
unsigned long flags );
149 virtual string getTypeName ()
const;
150 virtual JsonRoutingGauge* clone (
unsigned long flags )
const;
151 virtual void toData ( JsonStack& );
DbU::Unit getViaWidth() const
Definition: RoutingLayerGauge.h:188
DbU::Unit getPitch() const
Definition: RoutingLayerGauge.h:183
DbU::Unit getWireWidth() const
Definition: RoutingLayerGauge.h:185
Gauge for the detailed routing.
Definition: RoutingGauge.h:48
RoutingGauge * getClone() const
Constant::Direction getDirection() const
Definition: RoutingLayerGauge.h:178
Technology * getTechnology() const
Definition: RoutingGauge.h:129
const Name getName() const
Definition: RoutingGauge.h:127
DbU::Unit getOffset() const
Definition: RoutingLayerGauge.h:182
size_t getDepth() const
Definition: RoutingGauge.h:128
Constant::LayerGaugeType getType() const
Definition: RoutingLayerGauge.h:179
RoutingLayerGauge * getLayerGauge(const Layer *) const
void addLayerGauge(RoutingLayerGauge *layerGauge)
static RoutingGauge * create(const char *name)
const vector< RoutingLayerGauge * > & getLayerGauges() const
Layer * getContactLayer(size_t depth) const
const Layer * getRoutingLayer(size_t depth) const
void checkConnexity() const
size_t getLayerDepth(const Layer *) const
Gauge of a Layer for the detailed routing.
Definition: RoutingLayerGauge.h:75
unsigned int getLayerDirection(const Layer *) const
The namespace of Coriolis Core.
Definition: Environment.h:24