Session(3)

NAME
Session - Modification Session for Katabatic.

SYNOPSIS

  Static Public Member Functions
static bool isInDemoMode ()
static bool doWarnGCellOverload ()
static Session * get (const char *message=NULL)
static Technology * getTechnology ()
static KatabaticEngine * getKatabatic ()
static const Configuration * getConfiguration ()
static float getSaturateRatio ()
static size_t getSaturateRp ()
static DbU::Unit getExtensionCap ()
static RoutingGauge * getRoutingGauge ()
static const Layer * getRoutingLayer (size_t)
static const Layer * getContactLayer (size_t)
static size_t getSegmentStackSize ()
static size_t getContactStackSize ()
static const vector< AutoSegment * > & getInvalidateds ()
static const vector< AutoSegment * > & getRevalidateds ()
static const vector< AutoSegment * > & getDoglegs ()
static const set< Net * > & getNetsModificateds ()
static Session * open (KatabaticEngine *)
static void close ()
static void setKatabaticFlags (unsigned int)
static void dogleg (AutoSegment *)
static void revalidateTopology ()
static void setInvalidateMask (unsigned int)
static void invalidate (Net *)
static void invalidate (AutoContact *)
static void invalidate (AutoSegment *)
static size_t revalidate ()
static void link (AutoContact *)
static void link (AutoSegment *)
static void unlink (AutoContact *)
static void unlink (AutoSegment *)
static AutoContact * lookup (Contact *)
static AutoSegment * lookup (Segment *)

Detailed Description

Modification Session for Katabatic. To perform modifications, the Katabatic data structure uses a session mechanism built on top of the Hurricane::UpdateSession one. Sessions obeys very simples rules:

•   Only one Session can be opened at a time with Session::open().

•   Subsequent calls to Session::open() returns the currently opened session until Session::close() is called.

•   Revalidation can take place whithout closing the Session by calling Session::revalidate().

The task of a Session is to keep track of the AutoContact and AutoSegment that have been modificateds (i.e. invalidated) and, to restore connexity and/or topology when closed.

Two kinds of revalidation could be performed:
•   Geometrical : only positions of AutoContacts and AutoSegments extensions are recomputed.
•   Topological : a whole net have been invalidated because of a dogleg creation or a move up/move down of a segment.
•   Dogleg : needs to insert the newly created AutoSegments and AutoContacts.
•   Move up/Move down : may needs to create additional dogleg to restore connexity (gaps), and then insert them like above.
After a topological mofication has been done, the net needs to be re-canonized then the geometrical step takes place.
The kind of revalidation needed is automatically detected by the Session.
In addition to it's main purpose, Session also provides cached access to frequently needed variables either from Hurricane or Katabatic Configuration and access to the AutoContact & AutoSegment LUTs of KatabaticEngine.
From a software point of view, Session is a singleton object.

Session Algorithm
Main attributes of a Session:
•   _netInvalidateds, nets on which topology has changed.
•   _autoSegments, that have been moved or createds.
•   _autoContacts, that have been created or one of their slave segment has moved.
•   _revalidateds, the list of AutoSegments that have just been revalidated (after calling revalidate()).
Schematic description of how a Session works:
•   If at least one net has been invalidated, meaning that it's topology has changed, perform _revalidateTopology().
•   Update net topology: correct the topology of each contacts, making dogleg when needed. The AutoContact segment caching is updated at this point.
•   Compute net constraints (on AutoContacts & AutoSegments).
•   Compute net optimal positions (on AutoSegments).
•   Compute the state of the segments regarding to terminals.
•   Canonize sets of aligneds segments. The canonical segment is the one with the lowest id.
•   If the segments has just been created, put it on its optimal axis.
This stage can add itself more invalidated AutoSegments and AutoContacts as it create doglegs.
•   Revalidate geometry of AutoContacts. That is, expand or shrink the extremities of the invalidated AutoSegments. Note that AutoSegments are already at on their final axis position.
•   Revalidate AutoSegments. Just before this stage, they are on the correct axis and their extensions are also correct, so we may update the caching of their characteristics (mostly the extension).

Member Function Documentation

  bool isInDemoMode () [static]
Katabatic shortcut.
References KatabaticEngine::isInDemoMode().
Referenced by GCell::checkDensity().

  bool doWarnGCellOverload () [static]
Katabatic shortcut.
References KatabaticEngine::doWarnOnGCellOverload().
Referenced by GCell::checkDensity().

  Session * get (const char * message = NULL) [static]
Return the Session singleton, if no session is currently open throw an exception carrying message.

  Technology * getTechnology () [inline], [static]
Hurricane shortcut.

  KatabaticEngine * getKatabatic () [inline], [static]
Katabatic shortcut.
Referenced by AutoSegment::create(), GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), AutoSegment::makeDogleg(), and Session::open().

  const Configuration * getConfiguration () [inline], [static]
Katabatic shortcut.
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), and AutoSegment::canMoveUp().

  float getSaturateRatio () [static]
Katabatic shortcut.
References KatabaticEngine::getSaturateRatio().
Referenced by GCell::isSaturated().

  size_t getSaturateRp () [static]
Katabatic shortcut.
References KatabaticEngine::getSaturateRp().
Referenced by GCell::rpDesaturate().

  DbU::Unit getExtensionCap () [static]
Katabatic shortcut.
Referenced by AutoHorizontal::checkPositions(), AutoVertical::checkPositions(), AutoHorizontal::updatePositions(), and AutoVertical::updatePositions().

  RoutingGauge * getRoutingGauge () [inline], [static]
Katabatic shortcut.
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoSegment::canMoveUp(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), GCell::checkDensity(), Session::getContactLayer(), Session::getRoutingLayer(), GCell::hasFreeTrack(), AutoSegment::makeDogleg(), anonymous_namespace{LoadGrByNet.cpp}::singleGCell(), GCell::stepDesaturate(), GCell::stepNetDesaturate(), GCell::updateDensity(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().

  const Layer * getRoutingLayer (size_t depth) [inline], [static]
Katabatic shortcut.
References Session::getRoutingGauge(), and RoutingGauge::getRoutingLayer().
Referenced by GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_xM1_xM3(), AutoSegment::create(), GCellTopology::doRp_AccessPad(), AutoSegment::reduceDoglegLayer(), and GCell::rpDesaturate().

  const Layer * getContactLayer (size_t depth) [inline], [static]
Katabatic shortcut.
References RoutingGauge::getContactLayer(), and Session::getRoutingGauge().
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_1Pad(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), GCellTopology::_do_xG_xM3(), GCellTopology::doRp_Access(), GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace{LoadGrByNet.cpp}::singleGCell().

  size_t getSegmentStackSize () [inline], [static]
Returns: The number of AutoSegment in the invalidated stack.

  size_t getContactStackSize () [inline], [static]
Returns: The number of AutoSegment in the invalidated stack.

  const vector< AutoSegment * > & getInvalidateds () [inline], [static]
Returns: The stack (vector) of invalidateds AutoSegments.

  const vector< AutoSegment * > & getRevalidateds () [inline], [static]
Returns: The stack (vector) of AutoSegments that have been revalidateds.

  const vector< AutoSegment * > & getDoglegs () [inline], [static]
Returns: The vector of AutoSegments part of a newly created dogleg. The dogleg creation functions in AutoHorizontal and AutoVertical put a triplet (for example in horizontal direction (h1,v1,h2) ) for each dogleg composed of:
•   h1 the segment before the dogleg (which is also the original one).
•   v1 the segment perpandicular (new).
•   h2 the segment after (new).
Referenced by AutoSegment::makeDogleg().

  const set< Net * > & getNetsModificateds () [inline], [static]
Returns: The set of Nets that needs either a topological update or a new canonization.

  Session * open (KatabaticEngine * ktbt) [static]
Opens a new session or returns the already opened one, if any.
References Session::getKatabatic().
Referenced by GCellGrid::updateContacts().

  void close () [static]
Close the Session, triggering the revalidation of the AutoSegemnts and AutoContacts. If no Session is opened, throws an execption.
Referenced by GCellGrid::updateContacts().

  void setKatabaticFlags (unsigned int flags) [static]
Katabatic shortcut.
References KatabaticEngine::setFlags().

  void dogleg (AutoSegment * autoSegment) [inline], [static]
Adds an AutoSegment to the dogleg vector.
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().

  void revalidateTopology () [inline], [static]
Revalidate Net that have been invalidateds and re-canonize them.

  void setInvalidateMask (unsigned int flags) [inline], [static]
Tells what kind of revalidation must be performed.

  void invalidate (Net * net) [inline], [static]
Schedule net for a full revalidation, topological correction and canonization.
Referenced by AutoSegment::_invalidate(), and AutoSegment::_postCreate().

  void invalidate (AutoContact * contact) [inline], [static]
Schedule contact for revalidation.

  void invalidate (AutoSegment * segment) [inline], [static]
Schedule segment for revalidation.

  size_t revalidate () [inline], [static]
Perform the revalidation. Returns the sum of AutoContacts and AutoSegemnts that have been revalidated.
Referenced by KatabaticEngine::createDetailedGrid().

  void link (AutoContact * ac) [static]
Adds ac in the AutoContact lookup table (allow to retrieve an AutoContact by it's base Contact).
Referenced by AutoSegment::_postCreate().

  void link (AutoSegment * as) [static]
Adds as in the AutoSegment lookup table (allow to retrieve an AutoSegment by it's base Segment).

  void unlink (AutoContact * ac) [static]
Removes ac from the AutoContact lookup table.
Referenced by AutoSegment::_preDestroy().

  void unlink (AutoSegment * as) [static]
Removes as from the AutoSegment lookup table.

  AutoContact * lookup (Contact * contact) [static]
Lookup the AutoContact associated with contact. NULL if not found.
Referenced by AutoSegment::AutoSegment(), GCell::checkEdgeSaturation(), AutoSegment::create(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getOppositeAnchor(), and AutoSegment::getPerpandicularsBound().

  AutoSegment * lookup (Segment * segment) [static]
Lookup the AutoSegment associated with segment. NULL if not found.

Author
Generated automatically by Doxygen for Katabatic - Routing Toolbox from the source code.