Katabatic - Routing Toolbox


List of all members | Static Public Member Functions
Session Class Reference

Modification Session for Katabatic. More...

Static Public Member Functions

static bool isInDemoMode ()
 
static bool doWarnGCellOverload ()
 
static Sessionget (const char *message=NULL)
 
static TechnologygetTechnology ()
 
static KatabaticEnginegetKatabatic ()
 
static const Configuration * getConfiguration ()
 
static float getSaturateRatio ()
 
static size_t getSaturateRp ()
 
static DbU::Unit getExtensionCap ()
 
static RoutingGaugegetRoutingGauge ()
 
static const LayergetRoutingLayer (size_t)
 
static const LayergetContactLayer (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 Sessionopen (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 AutoContactlookup (Contact *)
 
static AutoSegmentlookup (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:

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.

Session Algorithm

Main attributes of a Session:

Schematic description of how a Session works:

Member Function Documentation

◆ isInDemoMode()

bool isInDemoMode ( )
static

Katabatic shortcut.

Referenced by GCell::checkDensity().

◆ doWarnGCellOverload()

bool doWarnGCellOverload ( )
static

Katabatic shortcut.

Referenced by GCell::checkDensity().

◆ get()

Session * get ( const char *  message = NULL)
static

◆ getTechnology()

Technology * getTechnology ( )
inlinestatic

Hurricane shortcut.

◆ getKatabatic()

KatabaticEngine * getKatabatic ( )
inlinestatic

◆ getConfiguration()

const Configuration * getConfiguration ( )
inlinestatic

◆ getSaturateRatio()

float getSaturateRatio ( )
static

Katabatic shortcut.

Referenced by GCell::isSaturated().

◆ getSaturateRp()

size_t getSaturateRp ( )
static

Katabatic shortcut.

Referenced by GCell::rpDesaturate().

◆ getExtensionCap()

DbU::Unit getExtensionCap ( )
static

◆ getRoutingGauge()

RoutingGauge * getRoutingGauge ( )
inlinestatic

◆ getRoutingLayer()

const Layer * getRoutingLayer ( size_t  depth)
inlinestatic

◆ getContactLayer()

const Layer * getContactLayer ( size_t  depth)
inlinestatic

◆ getSegmentStackSize()

size_t getSegmentStackSize ( )
inlinestatic

Returns: The number of AutoSegment in the invalidated stack.

◆ getContactStackSize()

size_t getContactStackSize ( )
inlinestatic

Returns: The number of AutoSegment in the invalidated stack.

◆ getInvalidateds()

const vector< AutoSegment * > & getInvalidateds ( )
inlinestatic

Returns: The stack (vector) of invalidateds AutoSegments.

◆ getRevalidateds()

const vector< AutoSegment * > & getRevalidateds ( )
inlinestatic

Returns: The stack (vector) of AutoSegments that have been revalidateds.

◆ getDoglegs()

const vector< AutoSegment * > & getDoglegs ( )
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:

  • h1 the segment before the dogleg (which is also the original one).
  • v1 the segment perpandicular (new).
  • h2 the segment after (new).

Referenced by AutoHorizontal::_canSlacken(), AutoVertical::_canSlacken(), AutoSegment::makeDogleg(), and AutoSegment::reduceDoglegLayer().

◆ getNetsModificateds()

const set< Net * > & getNetsModificateds ( )
inlinestatic

Returns: The set of Nets that needs either a topological update or a new canonization.

◆ open()

Session * open ( KatabaticEngine ktbt)
static

Opens a new session or returns the already opened one, if any.

Referenced by GCellGrid::updateContacts().

◆ close()

void close ( )
static

Close the Session, triggering the revalidation of the AutoSegemnts and AutoContacts. If no Session is opened, throws an execption.

References RoutingGauge::getLayerDirection(), Constant::Horizontal, Katabatic::KbHorizontal, Katabatic::KbVertical, anonymous_namespace{LoadGrByNet.cpp}::NoFlags, Constant::PinOnly, and Constant::Vertical.

Referenced by GCellGrid::updateContacts().

◆ setKatabaticFlags()

void setKatabaticFlags ( unsigned int  flags)
static

Katabatic shortcut.

◆ dogleg()

void dogleg ( AutoSegment autoSegment)
inlinestatic

Adds an AutoSegment to the dogleg vector.

References RoutingLayerGauge::getDepth().

Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().

◆ revalidateTopology()

void revalidateTopology ( )
inlinestatic

Revalidate Net that have been invalidateds and re-canonize them.

◆ setInvalidateMask()

void setInvalidateMask ( unsigned int  flags)
inlinestatic

Tells what kind of revalidation must be performed.

◆ invalidate() [1/3]

void invalidate ( Net net)
inlinestatic

Schedule net for a full revalidation, topological correction and canonization.

Referenced by AutoSegment::_invalidate(), AutoSegment::_postCreate(), and AutoSegment::raise().

◆ invalidate() [2/3]

void invalidate ( AutoContact contact)
inlinestatic

Schedule contact for revalidation.

◆ invalidate() [3/3]

void invalidate ( AutoSegment segment)
inlinestatic

Schedule segment for revalidation.

◆ revalidate()

size_t revalidate ( )
inlinestatic

Perform the revalidation. Returns the sum of AutoContacts and AutoSegemnts that have been revalidated.

◆ link() [1/2]

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().

◆ link() [2/2]

void link ( AutoSegment as)
static

Adds as in the AutoSegment lookup table (allow to retrieve an AutoSegment by it's base Segment).

◆ unlink() [1/2]

void unlink ( AutoContact ac)
static

Removes ac from the AutoContact lookup table.

Referenced by AutoSegment::_preDestroy().

◆ unlink() [2/2]

void unlink ( AutoSegment as)
static

Removes as from the AutoSegment lookup table.

◆ lookup() [1/2]

AutoContact * lookup ( Contact contact)
static

◆ lookup() [2/2]

AutoSegment * lookup ( Segment segment)
static

Lookup the AutoSegment associated with segment. NULL if not found.


The documentation for this class was generated from the following files:


Generated by doxygen 1.8.13 on Mon May 14 2018 Return to top of page
Katabatic - Routing Toolbox Copyright © 2008-2016 UPMC. All rights reserved