19 #include "hurricane/Commons.h"
20 #include "hurricane/Error.h"
21 #include "hurricane/DbU.h"
22 #include "hurricane/Collection.h"
23 #include "hurricane/Slot.h"
24 #include "crlcore/Utilities.h"
39 , PowerSupply = (1 << 5)
41 , LocalOnly = (1 << 7)
43 , BottomPowerSupply = (1 << 9)
67 using Hurricane::Record;
96 inline bool isHorizontal ()
const;
97 inline bool isVertical ()
const;
98 inline bool isUsable ()
const;
121 inline void setType ( uint32_t );
123 void toJson ( JsonWriter* )
const;
124 virtual string _getTypeName ()
const;
125 virtual string _getString ()
const;
126 virtual Record* _getRecord ()
const;
132 const Layer* _blockageLayer;
158 virtual void _preDestroy();
167 typedef map<Layer*,RoutingLayerGauge*> RoutingLayerGaugeMap;
181 inline bool RoutingLayerGauge::isHorizontal ()
const {
return (_direction == Constant::Direction::Horizontal); }
182 inline bool RoutingLayerGauge::isVertical ()
const {
return (_direction == Constant::Direction::Vertical); }
183 inline bool RoutingLayerGauge::isUsable ()
const {
return (_type != Constant::LayerGaugeType::PinOnly)
184 and (_type != Constant::LayerGaugeType::LocalOnly); }
195 inline DbU::Unit RoutingLayerGauge::getPWireWidth ()
const {
return (_pwireWidth) ? _pwireWidth : _wireWidth; }
199 inline DbU::Unit RoutingLayerGauge::getObstacleDw ()
const {
return _obstacleDw; }
201 {
return getTrackPosition( start,
getTrackIndex(start,stop,position,mode) ); }
202 inline void RoutingLayerGauge::setPWireWidth (
DbU::Unit pwidth ) { _pwireWidth = pwidth; }
204 inline void RoutingLayerGauge::setRoutingGauge ( RoutingGauge* rg ) { _routingGauge = rg; }
210 class JsonRoutingLayerGauge :
public JsonObject {
212 static void initialize ();
213 JsonRoutingLayerGauge (
unsigned long flags );
214 virtual string getTypeName ()
const;
215 virtual JsonRoutingLayerGauge* clone (
unsigned long flags )
const;
216 virtual void toData ( JsonStack& );
234 if (s !=
"Horizontal")
235 std::cerr <<
Hurricane::Error(
"::from(Direction&,string&): Unknown value \"%s\"."
236 , s.c_str() ) << std::endl;
243 inline std::string getString<const Constant::Direction*>
246 switch ( *direction ) {
250 return "Unknown Constant::Direction";
255 inline std::string getString<Constant::Direction>
258 switch ( direction ) {
262 return "Unknown Constant::Direction";
275 if (s ==
"Unusable" ) type = Constant::Unusable;
277 else if (s ==
"LocalOnly" ) type = Constant::LocalOnly;
278 else if (s ==
"PowerSupply" ) type = Constant::PowerSupply;
279 else if (s ==
"PowerSupply|Bottom") type = Constant::BottomPowerSupply;
282 std::cerr <<
Hurricane::Error(
"::from(LayerGaugeType&,string&): Unknown value \"%s\"."
283 , s.c_str() ) << std::endl;
290 inline std::string getString<const Constant::LayerGaugeType*>
293 switch ( *layerGaugeType ) {
294 case Constant::Bottom:
return "Bottom (error)";
295 case Constant::Unusable:
return "Unusable";
297 case Constant::LocalOnly:
return "LocalOnly";
299 case Constant::PowerSupply:
return "PowerSupply";
300 case Constant::BottomPowerSupply:
return "PowerSupply|Bottom";
302 return "Unknown Constant::LayerGaugeType";
307 inline std::string getString<Constant::LayerGaugeType*>
309 {
return getString<const Constant::LayerGaugeType*>(layerGaugeType); }
313 inline std::string getString<const Constant::LayerGaugeType>
316 switch ( layerGaugeType ) {
317 case Constant::Bottom:
return "Bottom (error)";
318 case Constant::Unusable:
return "Unusable";
320 case Constant::LocalOnly:
return "LocalOnly";
322 case Constant::PowerSupply:
return "PowerSupply";
323 case Constant::BottomPowerSupply:
return "PowerSupply|Bottom";
325 return "Unknown Constant::LayerGaugeType";
330 inline std::string getString<Constant::LayerGaugeType>
332 {
return getString<const Constant::LayerGaugeType>(layerGaugeType); }
Gauge for the detailed routing.
Definition: RoutingGauge.h:46
Gauge of a Layer for the detailed routing.
Definition: RoutingLayerGauge.h:79
DbU::Unit getHalfViaWidth() const
Definition: RoutingLayerGauge.h:198
Constant::Direction getDirection() const
Definition: RoutingLayerGauge.h:188
unsigned int getDepth() const
Definition: RoutingLayerGauge.h:186
double getDensity() const
Definition: RoutingLayerGauge.h:190
DbU::Unit getOffset() const
Definition: RoutingLayerGauge.h:191
DbU::Unit getHalfWireWidth() const
Definition: RoutingLayerGauge.h:196
const Layer * getLayer() const
Definition: RoutingLayerGauge.h:185
DbU::Unit getPitch() const
Definition: RoutingLayerGauge.h:192
const Layer * getBlockageLayer() const
Definition: RoutingLayerGauge.h:187
DbU::Unit getHalfPitch() const
Definition: RoutingLayerGauge.h:193
Constant::LayerGaugeType getType() const
Definition: RoutingLayerGauge.h:189
DbU::Unit getWireWidth() const
Definition: RoutingLayerGauge.h:194
void divide(DbU::Unit dividend, long "ient, long &modulo) const
unsigned int getTrackNumber(DbU::Unit start, DbU::Unit stop) const
DbU::Unit getViaWidth() const
Definition: RoutingLayerGauge.h:197
long getTrackIndex(DbU::Unit start, DbU::Unit stop, DbU::Unit position, unsigned mode) const
static RoutingLayerGauge * create(const Layer *layer, Constant::Direction direction, Constant::LayerGaugeType type, unsigned int depth, double density, DbU::Unit offset, DbU::Unit pitch, DbU::Unit wireWidth, DbU::Unit pwireWidth, DbU::Unit viaWidth, DbU::Unit obsDw)
The namespace of Coriolis Core.
Definition: AcmSigda.h:28
Store various constants.
Definition: RoutingLayerGauge.h:31
LayerGaugeType
Definition: RoutingLayerGauge.h:37
@ PinOnly
Definition: RoutingLayerGauge.h:40
@ Default
Definition: RoutingLayerGauge.h:42
Round
Definition: RoutingLayerGauge.h:46
@ Inferior
Definition: RoutingLayerGauge.h:47
@ Exact
Definition: RoutingLayerGauge.h:49
@ Superior
Definition: RoutingLayerGauge.h:46
@ Nearest
Definition: RoutingLayerGauge.h:48
Direction
Definition: RoutingLayerGauge.h:33
@ Vertical
Definition: RoutingLayerGauge.h:34
@ Horizontal
Definition: RoutingLayerGauge.h:33