Modification Session for Katabatic. More...
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 *) |
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:
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:
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.
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()
.
id
. 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.
|
static |
Katabatic shortcut.
References KatabaticEngine::isInDemoMode().
Referenced by GCell::checkDensity().
|
static |
Katabatic shortcut.
References KatabaticEngine::doWarnOnGCellOverload().
Referenced by GCell::checkDensity().
|
static |
Return the Session singleton, if no session is currently open throw an exception carrying message
.
|
inlinestatic |
Hurricane shortcut.
|
inlinestatic |
Katabatic shortcut.
Referenced by AutoSegment::create(), GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), AutoSegment::makeDogleg(), and Session::open().
|
inlinestatic |
Katabatic shortcut.
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), and AutoSegment::canMoveUp().
|
static |
Katabatic shortcut.
References KatabaticEngine::getSaturateRatio().
Referenced by GCell::isSaturated().
|
static |
Katabatic shortcut.
References KatabaticEngine::getSaturateRp().
Referenced by GCell::rpDesaturate().
|
static |
Katabatic shortcut.
Referenced by AutoHorizontal::checkPositions(), AutoVertical::checkPositions(), AutoHorizontal::updatePositions(), and AutoVertical::updatePositions().
|
inlinestatic |
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().
|
inlinestatic |
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().
|
inlinestatic |
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().
|
inlinestatic |
Returns: The number of AutoSegment in the invalidated stack.
|
inlinestatic |
Returns: The number of AutoSegment in the invalidated stack.
|
inlinestatic |
Returns: The stack (vector) of invalidateds AutoSegments.
|
inlinestatic |
Returns: The stack (vector) of AutoSegments that have been revalidateds.
|
inlinestatic |
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:
Referenced by AutoSegment::makeDogleg().
|
inlinestatic |
Returns: The set of Nets that needs either a topological update or a new canonization.
|
static |
Opens a new session or returns the already opened one, if any.
References Session::getKatabatic().
Referenced by GCellGrid::updateContacts().
|
static |
Close the Session, triggering the revalidation of the AutoSegemnts and AutoContacts. If no Session is opened, throws an execption.
Referenced by GCellGrid::updateContacts().
|
static |
Katabatic shortcut.
References KatabaticEngine::setFlags().
|
inlinestatic |
Adds an AutoSegment to the dogleg vector.
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().
|
inlinestatic |
Revalidate Net that have been invalidateds and re-canonize them.
|
inlinestatic |
Tells what kind of revalidation must be performed.
|
inlinestatic |
Schedule net
for a full revalidation, topological correction and canonization.
Referenced by AutoSegment::_invalidate(), and AutoSegment::_postCreate().
|
inlinestatic |
Schedule contact
for revalidation.
|
inlinestatic |
Schedule segment
for revalidation.
|
inlinestatic |
Perform the revalidation. Returns the sum of AutoContacts and AutoSegemnts that have been revalidated.
Referenced by KatabaticEngine::createDetailedGrid().
|
static |
Adds ac
in the AutoContact lookup table (allow to retrieve an AutoContact by it's base Contact).
Referenced by AutoSegment::_postCreate().
|
static |
Adds as
in the AutoSegment lookup table (allow to retrieve an AutoSegment by it's base Segment).
|
static |
Removes ac
from the AutoContact lookup table.
Referenced by AutoSegment::_preDestroy().
|
static |
Removes as
from the AutoSegment lookup table.
|
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().
|
static |
Lookup the AutoSegment associated with segment
. NULL
if not found.
Generated by doxygen 1.8.14 on Mon Oct 28 2019 | Return to top of page |
Katabatic - Routing Toolbox | Copyright © 2008-2016 UPMC. All rights reserved |