# Katabatic Documentation

# Katabatic - Routing Toolbox

AutoContact.h
1 // -*- C++ -*-
2 //
3 // This file is part of the Coriolis Software.
4 // Copyright (c) UPMC 2008-2018, All Rights Reserved
5 //
6 // +-----------------------------------------------------------------+
7 // | C O R I O L I S |
8 // | K a t a b a t i c - Routing Toolbox |
9 // | |
10 // | Author : Jean-Paul CHAPUT |
11 // | E-mail : Jean-Paul.Chaput@lip6.fr |
12 // | =============================================================== |
13 // | C++ Header : "./katabatic/AutoContact.h" |
14 // +-----------------------------------------------------------------+
15
16
17 #ifndef KATABATIC_AUTOCONTACT_H
18 #define KATABATIC_AUTOCONTACT_H
19
20 #include <vector>
21 #include <map>
22 #include "hurricane/Contact.h"
23 #include "hurricane/ExtensionGo.h"
24 #include "katabatic/Constants.h"
25 #include "katabatic/AutoSegment.h"
26 #include "katabatic/GCell.h"
27
28
29 namespace Katabatic {
30
31
32 using std::cerr;
33 using std::endl;
34 using Hurricane::tab;
35 using Hurricane::Name;
36 using Hurricane::Net;
37 using Hurricane::Component;
38 using Hurricane::Components;
39 using Hurricane::Layer;
40 using Hurricane::Contact;
41 using Hurricane::ExtensionGo;
42
43 class GCell;
44 class KatabaticEngine;
45 class AutoHorizontal;
46 class AutoVertical;
47 class AutoContact;
48
49
50 typedef std::map<Contact*,AutoContact*> AutoContactLut;
51
52
53 // -------------------------------------------------------------------
54 // Class : "Katabatic::AutoContact".
55
56 enum AutoContactFlag { CntFixed = 0x00000001
57 , CntTerminal = 0x00000002
58 , CntTurn = 0x00000004
59 , CntHTee = 0x00000008
60 , CntVTee = 0x00000010
61 , CntInvalidated = 0x00000020
62 , CntInvalidatedCache = 0x00000040
63 , CntInCreationStage = 0x00000080
64 , CntBadTopology = 0x00000100
65 , CntIgnoreAnchor = 0x00000200
66 , CntWeakTerminal = 0x00000400
67 , CntUserNativeConstraints = 0x00000800
68 };
69
70 class AutoContact {
71 public:
72 static AutoContact* createFrom ( Contact* );
73 public:
74 // Wrapped Contact Accessors.
75 inline Hook* getBodyHook ();
76 inline Hook* getAnchorHook ();
77 inline Component* getAnchor () const;
78 inline Net* getNet () const;
79 inline const Layer* getLayer () const;
80 inline DbU::Unit getX () const;
81 inline DbU::Unit getY () const;
82 inline DbU::Unit getDx () const;
83 inline DbU::Unit getDy () const;
84 inline Point getCenter () const;
85 inline Point getPosition () const;
86 inline DbU::Unit getWidth () const;
87 inline DbU::Unit getHalfWidth () const;
88 inline DbU::Unit getHeight () const;
89 inline DbU::Unit getHalfHeight () const;
90 inline Components getSlaveComponents () const;
91 // Wrapped Contact Modifiers.
92 inline void setLayer ( const Layer* );
93 inline void setWidth ( DbU::Unit );
94 inline void setHeight ( DbU::Unit );
95 inline void setSizes ( DbU::Unit width, DbU::Unit height );
96 inline void setX ( DbU::Unit );
97 inline void setY ( DbU::Unit );
98 inline void setPosition ( DbU::Unit width, DbU::Unit height );
99 inline void setPosition ( const Point& );
100 inline void setDx ( DbU::Unit );
101 inline void setDy ( DbU::Unit );
102 inline void setOffset ( DbU::Unit dx, DbU::Unit dy );
103 virtual void translate ( const DbU::Unit& tx, const DbU::Unit& ty );
104 // Predicates.
105 inline bool isInCreationStage () const;
106 inline bool isInvalidated () const;
107 inline bool isInvalidatedCache () const;
108 inline bool isTerminal () const;
109 inline bool isTurn () const;
110 bool isTee ( unsigned int direction ) const;
111 inline bool isHTee () const;
112 inline bool isVTee () const;
113 inline bool isFixed () const;
114 inline bool isUserNativeConstraints () const;
115 inline bool hasBadTopology () const;
116 bool canDestroy ( unsigned int flags=0 ) const;
117 bool canMoveUp ( const AutoSegment* moved ) const;
118 // Accessors.
119 inline Contact* base () const;
120 static size_t getAllocateds ();
121 static const Name& getStaticName ();
122 virtual const Name& getName () const;
123 inline size_t getId () const;
124 virtual Box getBoundingBox () const;
125 inline GCell* getGCell () const;
126 virtual AutoSegment* getOpposite ( const AutoSegment* ) const = 0;
127 virtual AutoSegment* getPerpandicular ( const AutoSegment* ) const = 0;
128 virtual AutoSegment* getSegment ( unsigned int ) const = 0;
129 unsigned int getMinDepth () const;
130 unsigned int getMaxDepth () const;
131 void getLengths ( DbU::Unit* lengths, AutoSegment::DepthLengthSet& );
132 virtual Box getNativeConstraintBox () const;
133 Interval getNativeUConstraints ( unsigned int direction ) const;
134 Interval getUConstraints ( unsigned int direction ) const;
135 inline DbU::Unit getCBXMin () const;
136 inline DbU::Unit getCBXMax () const;
137 inline DbU::Unit getCBYMin () const;
138 inline DbU::Unit getCBYMax () const;
139 inline Box getConstraintBox () const;
140 Box& intersectConstraintBox ( Box& box ) const;
141 // Collections.
142 AutoSegments getAutoSegments ();
143 // Modifiers.
144 void invalidate ( unsigned int flags=0 );
145 virtual void cacheDetach ( AutoSegment* ) = 0;
146 virtual void cacheAttach ( AutoSegment* ) = 0;
147 virtual void updateCache () = 0;
148 virtual void updateGeometry () = 0;
149 virtual void updateTopology () = 0;
150 void showTopologyError ( const std::string&, unsigned int flags=0 );
151 virtual void checkTopology ();
152 inline void setFlags ( unsigned int );
153 inline void unsetFlags ( unsigned int );
154 void setGCell ( GCell* );
155 inline void setCBXMin ( DbU::Unit xMin );
156 inline void setCBXMax ( DbU::Unit xMax );
157 inline void setCBYMin ( DbU::Unit yMin );
158 inline void setCBYMax ( DbU::Unit yMax );
159 void setConstraintBox ( const Box& box );
160 bool restrictConstraintBox ( DbU::Unit constraintMin
161 , DbU::Unit constraintMax
162 , unsigned int flags=KbWarnOnError );
163 void restoreNativeConstraintBox ();
164 void migrateConstraintBox ( AutoContact* other );
165 void destroy ();
166 // Inspector Management.
167 Record* _getRecord () const;
168 virtual string _getString () const;
169 virtual string _getTypeName () const;
170
171 private:
172 // Internal: Attributes.
173 static size_t _maxId;
174 static size_t _allocateds;
175 static const Name _goName;
176
177 protected:
178 size_t _id;
179 Contact* _contact;
180 GCell* _gcell;
181 unsigned int _flags;
182 int _dxMin:8;
183 int _dxMax:8;
184 int _dyMin:8;
185 int _dyMax:8;
186
187 protected:
188 // Constructors & Destructors.
189 AutoContact ( GCell*, Contact* );
190 virtual ~AutoContact ();
191 static void _preCreate ( GCell*, Net*, const Layer* );
192 virtual void _postCreate ();
193 virtual void _preDestroy ();
194 private:
195 AutoContact ( const AutoContact& );
196 AutoContact& operator= ( const AutoContact& );
197
198 protected:
199 inline int _getDeltaMin ( DbU::Unit x, DbU::Unit xMin );
200 inline int _getDeltaMax ( DbU::Unit x, DbU::Unit xMin, DbU::Unit xMax );
201 static void _getTopology ( Contact*, Component*& anchor, Horizontal**&, Vertical**&, size_t );
202 virtual void _invalidate ( unsigned int flags ) = 0;
203 };
204
205
206 // Wrapped Contact Inline Functions.
207 inline Hook* AutoContact::getBodyHook () { return _contact->getBodyHook(); }
208 inline Hook* AutoContact::getAnchorHook () { return _contact->getAnchorHook(); }
209 inline Component* AutoContact::getAnchor () const { return _contact->getAnchor(); }
210 inline Net* AutoContact::getNet () const { return _contact->getNet(); }
211 inline const Layer* AutoContact::getLayer () const { return _contact->getLayer(); }
212 inline DbU::Unit AutoContact::getX () const { return _contact->getX(); }
213 inline DbU::Unit AutoContact::getY () const { return _contact->getY(); }
214 inline DbU::Unit AutoContact::getDx () const { return _contact->getDx(); }
215 inline DbU::Unit AutoContact::getDy () const { return _contact->getDy(); }
216 inline Point AutoContact::getCenter () const { return _contact->getCenter(); }
217 inline Point AutoContact::getPosition () const { return _contact->getPosition(); }
218 inline DbU::Unit AutoContact::getWidth () const { return _contact->getWidth(); }
219 inline DbU::Unit AutoContact::getHalfWidth () const { return _contact->getHalfWidth(); }
220 inline DbU::Unit AutoContact::getHeight () const { return _contact->getHeight(); }
221 inline DbU::Unit AutoContact::getHalfHeight () const { return _contact->getHalfHeight(); }
222 inline Components AutoContact::getSlaveComponents () const { return _contact->getSlaveComponents(); }
223 inline void AutoContact::setLayer ( const Layer* layer ) { _contact->setLayer(layer); }
224 inline void AutoContact::setWidth ( DbU::Unit w ) { _contact->setWidth(w); }
225 inline void AutoContact::setHeight ( DbU::Unit h ) { _contact->setHeight(h); }
226 inline void AutoContact::setSizes ( DbU::Unit w, DbU::Unit h ) { _contact->setSizes(w,h); }
227 inline void AutoContact::setX ( DbU::Unit x ) { _contact->setX(x); }
228 inline void AutoContact::setY ( DbU::Unit y ) { _contact->setY(y); }
229 inline void AutoContact::setPosition ( DbU::Unit x, DbU::Unit y ) { _contact->setPosition(x,y); }
230 inline void AutoContact::setPosition ( const Point& p ) { _contact->setPosition(p); }
231 inline void AutoContact::setDx ( DbU::Unit dx ) { _contact->setDx(dx); }
232 inline void AutoContact::setDy ( DbU::Unit dy ) { _contact->setDy(dy); }
233 inline void AutoContact::setOffset ( DbU::Unit dx, DbU::Unit dy ) { _contact->setOffset(dx,dy); }
234 // AutoContact Inline Functions.
235 inline bool AutoContact::isInCreationStage () const { return _flags&CntInCreationStage; }
236 inline bool AutoContact::isInvalidated () const { return _flags&CntInvalidated; }
237 inline bool AutoContact::isInvalidatedCache () const { return _flags&CntInvalidatedCache; }
238 inline bool AutoContact::isTurn () const { return _flags&CntTurn; }
239 inline bool AutoContact::isFixed () const { return _flags&CntFixed; }
240 inline bool AutoContact::isUserNativeConstraints () const { return _flags&CntUserNativeConstraints; }
241 inline bool AutoContact::isTerminal () const { return _flags&CntTerminal; }
242 inline bool AutoContact::isHTee () const { return _flags&CntHTee; }
243 inline bool AutoContact::isVTee () const { return _flags&CntVTee; }
244 inline bool AutoContact::hasBadTopology () const { return _flags&CntBadTopology; }
245 inline size_t AutoContact::getId () const { return _id; }
246 inline Contact* AutoContact::base () const { return _contact; }
247 inline GCell* AutoContact::getGCell () const { return _gcell; }
248 inline Box AutoContact::getConstraintBox () const { return Box(getCBXMin(),getCBYMin(),getCBXMax(),getCBYMax()); }
249 inline void AutoContact::setCBXMin ( DbU::Unit xMin ) { _dxMin = _getDeltaMin(xMin,_gcell->getX()); }
250 inline void AutoContact::setCBXMax ( DbU::Unit xMax ) { _dxMax = _getDeltaMax(xMax,_gcell->getX(),_gcell->getXMax()); }
251 inline void AutoContact::setCBYMin ( DbU::Unit yMin ) { _dyMin = _getDeltaMin(yMin,_gcell->getY()); }
252 inline void AutoContact::setCBYMax ( DbU::Unit yMax ) { _dyMax = _getDeltaMax(yMax,_gcell->getY(),_gcell->getYMax()); }
253 inline void AutoContact::setFlags ( unsigned int flags ) { _flags|= flags; }
254 inline void AutoContact::unsetFlags ( unsigned int flags ) { _flags&=~flags; }
255 inline int AutoContact::_getDeltaMin ( DbU::Unit x, DbU::Unit xMin ) { if (x<xMin) return 0; return (int)DbU::toLambda(x-xMin); }
256 inline int AutoContact::_getDeltaMax ( DbU::Unit x, DbU::Unit xMin, DbU::Unit xMax ) { if (x>xMax) x=xMax; return (int)DbU::toLambda(x-xMin); }
257
258 inline DbU::Unit AutoContact::getCBXMin () const
259 { return isFixed() ? _contact->getX() : DbU::fromLambda(_dxMin) + _gcell->getX(); }
260
261 inline DbU::Unit AutoContact::getCBXMax () const
262 { return isFixed() ? _contact->getX() : DbU::fromLambda(_dxMax) + _gcell->getX(); }
263
264 inline DbU::Unit AutoContact::getCBYMin () const
265 { return isFixed() ? _contact->getY() : DbU::fromLambda(_dyMin) + _gcell->getY(); }
266
267 inline DbU::Unit AutoContact::getCBYMax () const
268 { return isFixed() ? _contact->getY() : DbU::fromLambda(_dyMax) + _gcell->getY(); }
269
270 // -------------------------------------------------------------------
271 // Class : "Katabatic::LocatorHelper".
272
273 class LocatorHelper {
274 public:
275 inline LocatorHelper ( AutoContact*, unsigned int flags=0 );
276 inline bool isValid () const;
277 inline AutoSegment* getSegment () const;
278 inline void progress ();
279 private:
280 inline unsigned int _min () const;
281 inline unsigned int _max () const;
282 private:
283 unsigned int _flags;
284 unsigned int _index;
285 AutoContact* _contact;
286 };
287
288
289 inline LocatorHelper::LocatorHelper ( AutoContact* contact, unsigned int flags )
290 : _flags(flags), _index(_min()), _contact(contact)
291 {
292 cdebug_tabw(145,1);
293 cdebug_log(145,0) << "CTOR LocatorHelper " << contact->_getString() << endl;
294 cdebug_log(145,0) << "+ _min():" << _min() << endl;
295 cdebug_log(145,0) << "+ _max():" << _max() << endl;
296 cdebug_log(145,0) << "+ getSegment(_min()):" << _contact->getSegment(_min()) << endl;
297 if (not _contact->getSegment(_index)) progress();
298 cdebug_tabw(145,-1);
299 }
300
301 inline bool LocatorHelper::isValid () const
302 { return _index < _max(); }
303
304 inline unsigned int LocatorHelper::_min () const
305 { return (_flags & (KbHorizontal|KbWithPerpands)) ? 0 : 2; }
306
307 inline unsigned int LocatorHelper::_max () const
308 { return ((_flags & KbHorizontal) and not (_flags & KbWithPerpands)) ? 2 : 4; }
309
310 inline AutoSegment* LocatorHelper::getSegment () const
311 {
312 cdebug_log(145,0) << "LocatorHelper::getSegment(" << _index << ") - " << _contact->getSegment(_index) << endl;
313 return (_index < _max()) ? _contact->getSegment(_index) : NULL;
314 }
315
316 inline void LocatorHelper::progress ()
317 {
318 cdebug_tabw(145,1);
319 ++_index;
320 cdebug_log(145,0) << "LocatorHelper::progress() [" << _index << "] " << _contact->getSegment(_index) << endl;
321 while ((_index < _max()) and (_contact->getSegment(_index) == NULL)) {
322 ++_index;
323 cdebug_log(145,0) << "LocatorHelper::progress() [" << _index << "] " << _contact->getSegment(_index) << endl;
324 }
325 cdebug_tabw(145,-1);
326 }
327
328
329 // -------------------------------------------------------------------
330 // Helper Functions.
331
332
333 template<typename Type>inline void order ( Type& a, Type& b ) { if (a>b) std::swap(a,b); }
334
335 inline DbU::Unit setInBound ( DbU::Unit lower, DbU::Unit upper, DbU::Unit& value )
336 {
337 if ( lower > value ) value = lower;
338 if ( upper < value ) value = upper;
339
340 return value;
341 }
342
343 inline size_t abssub ( size_t a, size_t b ) { return (a>b) ? a-b : b-a; }
344
345
346 } // Katabatic namespace.
347
348
349 INSPECTOR_P_SUPPORT(Katabatic::AutoContact);
350
351
352 #endif // KATABATIC_AUTOCONTACT_H
Katabatic::CntInCreationStage
Definition: AutoContact.h:63
Katabatic::AutoContact::getNet
Net * getNet() const
Definition: AutoContact.h:210
Katabatic::GCell::getY
DbU::Unit getY() const
Definition: GCell.h:245
Katabatic::AutoContact::getAllocateds
static size_t getAllocateds()
Definition: AutoContact.cpp:153
Katabatic::AutoContact::_getTopology
static void _getTopology(Contact *, Component *&anchor, Horizontal **&, Vertical **&, size_t)
Definition: AutoContact.cpp:339
Katabatic::KbWithPerpands
Definition: Constants.h:29
Katabatic::AutoContact::isInvalidatedCache
bool isInvalidatedCache() const
Definition: AutoContact.h:237
Katabatic::AutoContact::setDy
void setDy(DbU::Unit)
Definition: AutoContact.h:232
Katabatic::AutoContact::getSegment
virtual AutoSegment * getSegment(unsigned int) const =0
Hurricane::Contact::getHalfWidth
DbU::Unit getHalfWidth() const
Katabatic::AutoContact::getStaticName
static const Name & getStaticName()
Definition: AutoContact.cpp:157
Katabatic::AutoContact::checkTopology
virtual void checkTopology()
Definition: AutoContact.cpp:400
Katabatic::AutoContact::setOffset
void setOffset(DbU::Unit dx, DbU::Unit dy)
Definition: AutoContact.h:233
Hurricane::Contact::setX
void setX(const DbU::Unit &x)
Hurricane::Component::getNet
Net * getNet() const
Katabatic::AutoContactFlag
AutoContactFlag
Definition: AutoContact.h:56
Katabatic::AutoContact::getAnchorHook
Hook * getAnchorHook()
Definition: AutoContact.h:208
Hurricane::Component::getBodyHook
Hook * getBodyHook()
Katabatic::AutoContact::getDx
DbU::Unit getDx() const
Definition: AutoContact.h:214
Katabatic::AutoContact::getCBXMin
DbU::Unit getCBXMin() const
Definition: AutoContact.h:258
Katabatic::CntFixed
Definition: AutoContact.h:56
Katabatic::AutoContact::getWidth
DbU::Unit getWidth() const
Definition: AutoContact.h:218
Katabatic::AutoContact::isInCreationStage
bool isInCreationStage() const
Definition: AutoContact.h:235
Hurricane::Component
Katabatic::CntTurn
Definition: AutoContact.h:58
Katabatic::AutoContact::getCBYMax
DbU::Unit getCBYMax() const
Definition: AutoContact.h:267
Katabatic::AutoContact::setCBXMax
void setCBXMax(DbU::Unit xMax)
Definition: AutoContact.h:250
Hurricane::Component::getX
virtual DbU::Unit getX() const=0
Katabatic::AutoContact::isFixed
bool isFixed() const
Definition: AutoContact.h:239
Hurricane::Contact::setDx
void setDx(const DbU::Unit &dx)
Hurricane::Name
Hurricane::Net
Hurricane::Component::getLayer
virtual const Layer * getLayer() const=0
Katabatic::AutoContact::setPosition
void setPosition(DbU::Unit width, DbU::Unit height)
Definition: AutoContact.h:229
Katabatic::AutoContact::setConstraintBox
void setConstraintBox(const Box &box)
Definition: AutoContact.cpp:442
Hurricane::Contact
Hurricane::DbU::fromLambda
static Unit fromLambda(double value)
Hurricane::DbU::Unit
std::int64_t Unit
Hurricane::Component::getSlaveComponents
Components getSlaveComponents() const
Katabatic::AutoContact::invalidate
void invalidate(unsigned int flags=0)
Definition: AutoContact.cpp:296
Katabatic::LocatorHelper::LocatorHelper
LocatorHelper(AutoContact *, unsigned int flags=0)
Definition: AutoContact.h:289
Katabatic::AutoContact::getNativeConstraintBox
virtual Box getNativeConstraintBox() const
Definition: AutoContact.cpp:261
Katabatic::CntHTee
Definition: AutoContact.h:59
Hurricane::Contact::setWidth
void setWidth(const DbU::Unit &width)
Hurricane::Contact::setOffset
void setOffset(const DbU::Unit &dx, const DbU::Unit &dy)
Hurricane::Contact
Katabatic::AutoContact::getCenter
Point getCenter() const
Definition: AutoContact.h:216
Katabatic::AutoContact::setLayer
void setLayer(const Layer *)
Definition: AutoContact.h:223
Katabatic::AutoContact::canMoveUp
bool canMoveUp(const AutoSegment *moved) const
Definition: AutoContact.cpp:413
Hurricane::Point
Hurricane::Contact::setY
void setY(const DbU::Unit &y)
Katabatic::AutoContact::setWidth
void setWidth(DbU::Unit)
Definition: AutoContact.h:224
Hurricane::Horizontal
Katabatic::AutoContact::setDx
void setDx(DbU::Unit)
Definition: AutoContact.h:231
Hurricane::Contact::getHalfHeight
DbU::Unit getHalfHeight() const
Hurricane::Vertical
Hurricane::Interval
Katabatic::AutoContact::setCBYMax
void setCBYMax(DbU::Unit yMax)
Definition: AutoContact.h:252
Katabatic::AutoContact::isInvalidated
bool isInvalidated() const
Definition: AutoContact.h:236
Katabatic::AutoContact::translate
virtual void translate(const DbU::Unit &tx, const DbU::Unit &ty)
Definition: AutoContact.cpp:532
Katabatic::GCell
Routing Global Cell.
Definition: GCell.h:74
Hurricane::Contact::setSizes
void setSizes(const DbU::Unit &width, const DbU::Unit &height)
Katabatic::AutoContact::isHTee
bool isHTee() const
Definition: AutoContact.h:242
Hurricane::Contact::getAnchor
Component * getAnchor() const
Katabatic::AutoSegment
Abstract base class for AutoSegment.
Definition: AutoSegment.h:104
Hurricane::GenericCollection
Katabatic::KbWarnOnError
Definition: Constants.h:32
Katabatic::AutoContact::getUConstraints
Interval getUConstraints(unsigned int direction) const
Definition: AutoContact.cpp:283
Katabatic::AutoContact::getHeight
DbU::Unit getHeight() const
Definition: AutoContact.h:220
Katabatic::AutoContact::migrateConstraintBox
void migrateConstraintBox(AutoContact *other)
Definition: AutoContact.cpp:511
Katabatic::AutoContact::setY
void setY(DbU::Unit)
Definition: AutoContact.h:228
Katabatic::AutoContact::setSizes
void setSizes(DbU::Unit width, DbU::Unit height)
Definition: AutoContact.h:226
Hurricane::Component::getY
virtual DbU::Unit getY() const=0
Katabatic::AutoContact::getMaxDepth
unsigned int getMaxDepth() const
Definition: AutoContact.cpp:205
Katabatic::AutoContact::getConstraintBox
Box getConstraintBox() const
Definition: AutoContact.h:248
Hurricane::Hook
Katabatic::AutoContact::getPerpandicular
virtual AutoSegment * getPerpandicular(const AutoSegment *) const =0
Definition: AutoContact.cpp:183
Katabatic::AutoContact::getBoundingBox
virtual Box getBoundingBox() const
Definition: AutoContact.cpp:528
Katabatic::CntBadTopology
Definition: AutoContact.h:64
Katabatic
The namespace dedicated to Katabatic.
Definition: Katabatic.dox:13
Katabatic::AutoContact::updateTopology
virtual void updateTopology()=0
Katabatic::LocatorHelper
Locator Helper Collection&#39;s Locators.
Definition: AutoContact.h:273
Hurricane::Contact::getWidth
const DbU::Unit & getWidth() const
Hurricane::Contact::getAnchorHook
Hook * getAnchorHook()
Hurricane::Box
Katabatic::AutoContact::getY
DbU::Unit getY() const
Definition: AutoContact.h:213
Katabatic::AutoContact::getAnchor
Component * getAnchor() const
Definition: AutoContact.h:209
Katabatic::AutoContact::getLayer
const Layer * getLayer() const
Definition: AutoContact.h:211
Katabatic::AutoContact::getDy
DbU::Unit getDy() const
Definition: AutoContact.h:215
Katabatic::GCell::getXMax
DbU::Unit getXMax() const
Definition: GCell.h:246
Katabatic::AutoContact::isTurn
bool isTurn() const
Definition: AutoContact.h:238
Hurricane::Layer
Katabatic::AutoContact::setHeight
void setHeight(DbU::Unit)
Definition: AutoContact.h:225
Katabatic::AutoContact::getPosition
Point getPosition() const
Definition: AutoContact.h:217
Katabatic::CntInvalidatedCache
Definition: AutoContact.h:62
Katabatic::AutoContact::getHalfHeight
DbU::Unit getHalfHeight() const
Definition: AutoContact.h:221
Katabatic::KbHorizontal
Definition: Constants.h:27
Katabatic::AutoContact::getId
size_t getId() const
Definition: AutoContact.h:245
Katabatic::AutoContact::getMinDepth
unsigned int getMinDepth() const
Definition: AutoContact.cpp:187
Katabatic::AutoContact::isVTee
bool isVTee() const
Definition: AutoContact.h:243
Katabatic::CntVTee
Definition: AutoContact.h:60
Katabatic::GCell::getYMax
DbU::Unit getYMax() const
Definition: GCell.h:247
Katabatic::AutoContact::canDestroy
bool canDestroy(unsigned int flags=0) const
Definition: AutoContact.cpp:161
Hurricane::Contact::setDy
void setDy(const DbU::Unit &dy)
Katabatic::CntTerminal
Definition: AutoContact.h:57
Katabatic::AutoContact::isTee
bool isTee(unsigned int direction) const
Definition: AutoContact.cpp:406
Hurricane::Contact::getDy
const DbU::Unit & getDy() const
Katabatic::AutoContact::getX
DbU::Unit getX() const
Definition: AutoContact.h:212
Katabatic::AutoContact::getCBYMin
DbU::Unit getCBYMin() const
Definition: AutoContact.h:264
Katabatic::AutoContact::hasBadTopology
bool hasBadTopology() const
Definition: AutoContact.h:244
Katabatic::AutoContact::intersectConstraintBox
Box & intersectConstraintBox(Box &box) const
Definition: AutoContact.cpp:507
Katabatic::AutoContact::getName
virtual const Name & getName() const
Definition: AutoContact.cpp:175
Katabatic::AutoContact::getSlaveComponents
Components getSlaveComponents() const
Definition: AutoContact.h:222
Hurricane::Contact::getHeight
const DbU::Unit & getHeight() const
Katabatic::AutoContact::restrictConstraintBox
bool restrictConstraintBox(DbU::Unit constraintMin, DbU::Unit constraintMax, unsigned int flags=KbWarnOnError)
Definition: AutoContact.cpp:453
Katabatic::AutoContact
Abstract base class for AutoContact.
Definition: AutoContact.h:70
Katabatic::AutoContact::setCBYMin
void setCBYMin(DbU::Unit yMin)
Definition: AutoContact.h:251
Katabatic::AutoContact::showTopologyError
void showTopologyError(const std::string &, unsigned int flags=0)
Definition: AutoContact.cpp:363
Katabatic::AutoContact::getLengths
void getLengths(DbU::Unit *lengths, AutoSegment::DepthLengthSet &)
Definition: AutoContact.cpp:223
Katabatic::LocatorHelper::progress
void progress()
Definition: AutoContact.h:316
Katabatic::CntInvalidated
Definition: AutoContact.h:61
Katabatic::GCell::getX
DbU::Unit getX() const
Definition: GCell.h:244
Katabatic::LocatorHelper::getSegment
AutoSegment * getSegment() const
Definition: AutoContact.h:310
Katabatic::AutoContact::getCBXMax
DbU::Unit getCBXMax() const
Definition: AutoContact.h:261
Hurricane::Component::getPosition
virtual Point getPosition() const
Katabatic::AutoContact::getBodyHook
Hook * getBodyHook()
Definition: AutoContact.h:207
Katabatic::AutoContact::setCBXMin
void setCBXMin(DbU::Unit xMin)
Definition: AutoContact.h:249
Katabatic::AutoContact::updateGeometry
virtual void updateGeometry()=0
Hurricane::Contact::setLayer
void setLayer(const Layer *layer)
Hurricane::Net
Katabatic::AutoContact::setGCell
void setGCell(GCell *)
Definition: AutoContact.cpp:314
Katabatic::AutoContact::getOpposite
virtual AutoSegment * getOpposite(const AutoSegment *) const =0
Katabatic::AutoContact::getHalfWidth
DbU::Unit getHalfWidth() const
Definition: AutoContact.h:219
Katabatic::AutoContact::setX
void setX(DbU::Unit)
Definition: AutoContact.h:227
Hurricane::DbU::toLambda
static double toLambda(Unit u)
Hurricane::Contact::getDx
const DbU::Unit & getDx() const
Hurricane::Contact::setPosition
void setPosition(const DbU::Unit &x, const DbU::Unit &y)
Katabatic::AutoContact::getGCell
GCell * getGCell() const
Definition: AutoContact.h:247
Katabatic::LocatorHelper::isValid
bool isValid() const
Definition: AutoContact.h:301
Katabatic::AutoContact::base
Contact * base() const
Definition: AutoContact.h:246
Hurricane::Component
Hurricane::Contact::setHeight
void setHeight(const DbU::Unit &height)