17 #ifndef KATABATIC_SESSION_H
18 #define KATABATIC_SESSION_H
24 #include <boost/function.hpp>
25 #include "hurricane/Commons.h"
26 #include "hurricane/DbU.h"
27 #include "crlcore/CellGauge.h"
28 #include "crlcore/RoutingGauge.h"
29 #include "katabatic/Constants.h"
30 #include "katabatic/Configuration.h"
51 using Hurricane::_TName;
52 using Hurricane::Record;
63 class KatabaticEngine;
72 static inline bool doDestroyBaseContact ();
73 static inline bool doDestroyBaseSegment ();
74 static inline bool doDestroyTool ();
77 static Session*
get (
const char* message=NULL );
83 static inline size_t getAllowedDepth ();
85 static inline CellGauge* getCellGauge ();
86 static inline DbU::Unit getSliceHeight ();
90 static inline size_t getDepth ();
91 static inline size_t getViaDepth (
const Layer* layer );
92 static inline size_t getLayerDepth (
const Layer* layer );
95 static unsigned int getDirection (
size_t depth );
96 static inline DbU::Unit getPitch (
size_t depth,
unsigned int flags );
97 static inline DbU::Unit getOffset (
size_t depth );
98 static inline DbU::Unit getWireWidth (
size_t depth );
99 static inline DbU::Unit getViaWidth (
size_t depth );
100 static inline unsigned int getDirection (
const Layer* );
101 static inline DbU::Unit getPitch (
const Layer*,
unsigned int flags );
110 static inline const set<AutoSegment*>& getDestroyeds ();
111 static inline const vector<AutoSegment*>&
getDoglegs ();
114 static void close ();
117 static inline void doglegReset ();
130 static inline void destroyRequest (
AutoSegment* );
132 bool _doDestroyBaseContact ();
133 bool _doDestroyBaseSegment ();
134 bool _doDestroyTool ();
135 virtual Configuration* _getConfiguration ();
137 inline void _doglegReset ();
138 void _invalidate (
Net* );
143 void _revalidateTopology ();
144 size_t _revalidate ();
145 DbU::Unit _getPitch (
size_t depth,
unsigned int flags )
const;
146 Record* _getRecord ()
const;
147 string _getString ()
const;
148 inline string _getTypeName ()
const;
154 CellGauge* _cellGauge;
156 vector<AutoContact*> _autoContacts;
157 vector<AutoSegment*> _doglegs;
158 vector<AutoSegment*> _segmentInvalidateds;
159 vector<AutoSegment*> _segmentRevalidateds;
160 set<Net*> _netInvalidateds;
161 set<Net*> _netRevalidateds;
162 set<AutoSegment*> _destroyedSegments;
168 virtual void _postCreate ();
169 virtual void _preDestroy ();
178 inline CellGauge* Session::getCellGauge () {
return get(
"getCellGauge()")->_cellGauge; }
180 inline bool Session::doDestroyBaseContact () {
return get(
"doDestroyBaseContact()")->_doDestroyBaseContact(); }
181 inline bool Session::doDestroyBaseSegment () {
return get(
"doDestroyBaseSegment()")->_doDestroyBaseSegment(); }
182 inline bool Session::doDestroyTool () {
return get(
"doDestroyTool()")->_doDestroyTool(); }
191 inline const set<AutoSegment*>& Session::getDestroyeds () {
return get(
"getDestroyeds()")->_destroyedSegments; }
194 inline void Session::doglegReset () {
return get(
"doglegReset()")->_doglegReset (); }
199 inline void Session::destroyRequest (
AutoSegment* autoSegment ) {
return get(
"destroyRequest(AutoSegment*)")->_destroyRequest(autoSegment); }
201 inline size_t Session::getAllowedDepth () {
return getConfiguration()->getAllowedDepth(); }
203 inline DbU::Unit Session::getSliceHeight () {
return getCellGauge()->getSliceHeight(); }
204 inline DbU::Unit Session::getSliceStep () {
return getCellGauge()->getSliceStep(); }
207 inline size_t Session::getViaDepth (
const Layer* layer ) {
return getRoutingGauge()->getViaDepth(layer); }
211 inline DbU::Unit Session::getPitch (
size_t depth,
unsigned int flags=
Configuration::NoFlags ) {
return get(
"getPitch(depth,flags)")->_getPitch( depth, flags ); }
215 inline DbU::Unit Session::getPitch (
const Layer* layer,
unsigned int flags=
Configuration::NoFlags ) {
return getPitch( getLayerDepth(layer), flags ); }
216 inline DbU::Unit Session::getOffset (
const Layer* layer ) {
return getOffset ( getLayerDepth(layer) ); }
217 inline DbU::Unit Session::getWireWidth (
const Layer* layer ) {
return getWireWidth( getLayerDepth(layer) ); }
218 inline DbU::Unit Session::getViaWidth (
const Layer* layer ) {
return getViaWidth ( getViaDepth(layer) ); }
220 inline unsigned int Session::getDirection (
const Layer* layer ) {
return getDirection( getLayerDepth(layer) ); }
222 inline void Session::_dogleg ( AutoSegment* segment ) { _doglegs.push_back(segment); }
223 inline void Session::_doglegReset () { _doglegs.clear(); }
224 inline void Session::_invalidate ( AutoContact* contact ) { _autoContacts.push_back(contact); }
225 inline void Session::_invalidate ( AutoSegment* segment ) { _segmentInvalidateds.push_back(segment); }
226 inline void Session::_destroyRequest ( AutoSegment* segment ) { _destroyedSegments.insert(segment); }
227 inline string Session::_getTypeName ()
const {
return _TName(
"Session"); }
236 #endif // KATABATIC_SESSION_H
static void revalidateTopology()
Definition: Session.h:185
static const set< Net * > & getNetsModificateds()
Definition: Session.h:193
static void close()
Definition: Session.cpp:295
static size_t getSegmentStackSize()
Definition: Session.h:187
static void link(AutoContact *)
Definition: Session.cpp:368
const Layer * getRoutingLayer(size_t depth) const
static const vector< AutoSegment * > & getInvalidateds()
Definition: Session.h:189
static const Layer * getContactLayer(size_t)
Definition: Session.h:210
static const vector< AutoSegment * > & getRevalidateds()
Definition: Session.h:190
Modification Session for Katabatic.
Definition: Session.h:69
static AutoContact * lookup(Contact *)
Definition: Session.cpp:384
Abstract base class for AutoSegment.
Definition: AutoSegment.h:104
static DbU::Unit getExtensionCap()
static void dogleg(AutoSegment *)
Definition: Session.h:198
Definition: LoadGrByNet.cpp:405
static float getSaturateRatio()
Definition: Session.cpp:352
static RoutingGauge * getRoutingGauge()
Definition: Session.h:179
size_t getLayerDepth(const Layer *) const
static void setKatabaticFlags(unsigned int)
Definition: Session.cpp:364
static void setInvalidateMask(unsigned int)
static KatabaticEngine * getKatabatic()
Definition: Session.h:184
static size_t getSaturateRp()
Definition: Session.cpp:356
static size_t getContactStackSize()
Definition: Session.h:188
The Katabatic Tool.
Definition: KatabaticEngine.h:91
static bool isInDemoMode()
Definition: Session.cpp:348
static const Configuration * getConfiguration()
Definition: Session.h:183
static Technology * getTechnology()
Definition: Session.h:177
static void invalidate(Net *)
Definition: Session.h:195
static Session * open(KatabaticEngine *)
Definition: Session.cpp:277
static void unlink(AutoContact *)
Definition: Session.cpp:376
static const Layer * getRoutingLayer(size_t)
Definition: Session.h:209
static const vector< AutoSegment * > & getDoglegs()
Definition: Session.h:192
RoutingLayerGauge * getLayerGauge(const Layer *) const
Layer * getContactLayer(size_t depth) const
static bool doWarnGCellOverload()
Definition: Session.cpp:360
static size_t revalidate()
Definition: Session.h:186