# Katabatic Documentation

# Katabatic - Routing Toolbox

Classes | Typedefs | Enumerations
Katabatic Namespace Reference

The namespace dedicated to Katabatic. More...

## Classes

class | AutoContact
| Abstract base class for AutoContact. More...
class | AutoContactHTee
| AutoContact H-Tee (two H, one V) More...
class | AutoContactTerminal
| AutoContact Terminal (S/T is a Terminal) More...
class | AutoContactTurn
| AutoContact Turn (one H, one V) More...
class | AutoContactVTee
| AutoContact V-Tee (one H, two V) More...
class | AutoHorizontal
| Concrete Horizontal AutoSegment. More...
class | AutoSegment
| Abstract base class for AutoSegment. More...
class | AutoSegments_Aligneds
| All aligned AutoSegment of a set. More...
class | AutoSegments_AnchorOnGCell
| All AutoSegment Beginning and/or Stopping in a GCell. More...
class | AutoSegments_InDirection
| Filter to select AutoSegment in a given direction. More...
class | AutoSegments_IsAccountable
| Filter to select accoutable AutoSegment. More...
class | AutoSegments_OnContact
| All AutoSegment anchored on a Contact. More...
class | AutoSegments_Perpandiculars
| All perpandicular AutoSegment to a set of aligneds. More...
class | AutoVertical
| Concrete Vertical AutoSegment. More...
class | BaseGrid
| Abstract Base Class for Irregular Grid. More...
class | BaseObserver
| Observer Design Pattern, Observer part. More...
class | ChipTools
| Utilities for Chip Level Design. More...
class | GCell
| Routing Global Cell. More...
class | GCellDensitySet
| GCell Set, sorted by density. More...
class | GCellGrid
| GCell Grid. More...
class | Grid
| Template Class for Regular Grid. More...
class | KatabaticEngine
| The Katabatic Tool. More...
class | LocatorHelper
| Locator Helper Collection's Locators. More...
class | Observable
| Observer Design Pattern, Subject part. More...
class | Observer
| Observer Design Pattern, Observer part. More...
class | Session
| Modification Session for Katabatic. More...

## Typedefs

typedef Hurricane::Filter< AutoSegment * > | AutoSegmentHF
typedef Hurricane::Locator< AutoSegment * > | AutoSegmentHL
typedef Hurricane::Collection< AutoSegment * > | AutoSegmentHC
typedef GenericCollection< AutoSegment * > | AutoSegments
typedef GenericLocator< AutoSegment * > | AutoSegmentLocator
typedef GenericFilter< AutoSegment * > | AutoSegmentFilter
typedef GenericCollection< GCell * > | GCells
typedef GenericLocator< GCell * > | GCellLocator
typedef GenericFilter< GCell * > | GCellFilter

## Enumerations

enum

FunctionFlag { ,
KbOpenSession = 0x00000001,
KbRealignate = 0x00000002,
KbNativeConstraints = 0x00000004,
KbForceMove = 0x00000008,
KbHorizontal = 0x00000010,
KbVertical = 0x00000020,
KbWithPerpands = 0x00000040,
KbSource = 0x00000080,
KbTarget = 0x00000100,
KbWarnOnError = 0x00000200 ,
KbPropagate = 0x00008000 ,
KbUseAboveLayer = 0x00020000,
KbUseBelowLayer = 0x00040000,
KbDoglegOnLeft = 0x00080000,
KbDoglegOnRight = 0x00100000 ,
KbHalfSlacken = 0x00800000
}

enum | EngineState { EngineCreation = 1, EngineGlobalLoaded = 2, EngineActive = 3, EngineDriving = 4, EnginePreDestroying = 5, EngineGutted = 6 }
enum | AutoContactFlag { CntFixed = 0x00000001, CntTerminal = 0x00000002, CntTurn = 0x00000004, CntHTee = 0x00000008, CntVTee = 0x00000010, CntInvalidated = 0x00000020, CntInvalidatedCache = 0x00000040, CntInCreationStage = 0x00000080, CntBadTopology = 0x00000100 }

enum

AutoSegmentFlag { ,
SegHorizontal = (1<< 0),
SegFixed = (1<< 1),
SegGlobal = (1<< 2),
SegWeakGlobal = (1<< 3),
SegCanonical = (1<< 4),
SegBipoint = (1<< 5),
SegDogleg = (1<< 6),
SegStrap = (1<< 7),
SegSourceTop = (1<< 8),
SegSourceBottom = (1<< 9),
SegTargetTop = (1<<10),
SegTargetBottom = (1<<11),
SegIsReduced = (1<<12),
SegLayerChange = (1<<13) ,
SegStrongTerminal = SegSourceTerminal|SegTargetTerminal,
SegWeakTerminal1 = (1<<16),
SegWeakTerminal2 = (1<<17),
SegNotSourceAligned = (1<<18),
SegNotTargetAligned = (1<<19) ,
SegSlackened = (1<<22),
SegAxisSet = (1<<23),
SegInvalidated = (1<<24) ,
SegInvalidatedLayer = (1<<27),
SegCreated = (1<<28) ,
SegWeakTerminal = SegStrongTerminal|SegWeakTerminal1|SegWeakTerminal2,
SegNotAligned = SegNotSourceAligned|SegNotTargetAligned
}

## Detailed Description

The namespace dedicated to Katabatic.

## Typedef Documentation

## ◆ AutoSegmentHF

typedef Hurricane::Filter< AutoSegment * > AutoSegmentHF

Shorthand for AutoSegment Hurricane Filter.

## ◆ AutoSegmentHL

typedef Hurricane::Locator< AutoSegment * > AutoSegmentHL

Shorthand for AutoSegment Hurricane Locator.

## ◆ AutoSegmentHC

typedef Hurricane::Collection< AutoSegment * > AutoSegmentHC

Shorthand for AutoSegment Hurricane Collection.

## ◆ AutoSegments

typedef GenericCollection< AutoSegment * > AutoSegments

Shorthand for AutoSegment Hurricane Generic Collection (collection with `unique_ptr<>` like support).

## ◆ AutoSegmentLocator

typedef GenericLocator< AutoSegment * > AutoSegmentLocator

Shorthand for AutoSegment Hurricane Generic Locator (locator with `unique_ptr<>` like support).

## ◆ AutoSegmentFilter

typedef GenericFilter< AutoSegment * > AutoSegmentFilter

Shorthand for AutoSegment Hurricane Generic Filter (filter with `unique_ptr<>` like support).

## ◆ GCells

typedef GenericCollection< GCell * > GCells

GCell Collection with auto-pointer like support.

## ◆ GCellLocator

typedef GenericLocator< GCell * > GCellLocator

GCell Locator with auto-pointer like support.

## ◆ GCellFilter

typedef GenericFilter< GCell * > GCellFilter

GCell Filter with auto-pointer like support.

## Enumeration Type Documentation

## ◆ FunctionFlag

enum FunctionFlag

A set of flags to that can be passed to functions/methods througout all Katabatic.

Enumerator
KbOpenSession | Tells the function to open it's own Session, otherwise use the one that should already have been opened.
KbRealignate | On AutoSegment axis manipulation, force the realignment of all the segment on an aligned set, even is the axis of the canonical is already at the right coordinate.
KbNativeConstraints | Ignore user-defined constraints or terminal induced ones (for AutoContacts anchored on terminals) and return the owning GCell alone.
KbForceMove | Tells the function to force move, even if it is not needed.
KbHorizontal | Request some action to be done in the horizontal direction.
KbVertical | Request some action to be done in the vertical direction.
KbWithPerpands | Request that AutoSegments in perpandicular direction should be includeds.
KbSource | Request AutoSegments anchored by their source anchor or that some operation has to be performed on the source.
KbTarget | Request AutoSegments anchored by their target anchor or that some operation has to be performed on the target.
KbWarnOnError | Display a warning if something has gone wrong.
KbPropagate | The action will affect all the segments on an aligned set.
KbUseAboveLayer | Request/tell the a above layer has been used.
KbUseBelowLayer | Request/tell the a below layer has been used.
KbDoglegOnLeft | The dogleg has occured on the left of something
KbDoglegOnRight | The dogleg has occured on the right of something
KbHalfSlacken | For AutoSegment::slacken(), change the overconstrained limit from 10 tracks down to 3 (hard-wired).

## ◆ EngineState

enum EngineState

Describe the current state of the KatabaticEngine.

Enumerator
EngineCreation | The tool is created, but still in the `_postCreate` stage.
EngineGlobalLoaded | The global routing has been loaded from Knik.
EngineActive | The Engine is in normal running mode (routing ordinary wires).
EngineDriving | The Engine is transforming the AutoContact/AutoSegment into normal Contact/Segment (prior to tool deletion).
EnginePreDestroying | This state is used whenever the tool is destroyed without passing through the EngineDriving state.
EngineGutted | After the EngineDriving state, all the working structures are removed and the tool can no longer be used. It only awaits clean destruction.

## ◆ AutoContactFlag

enum AutoContactFlag

Set of flags to describe the internal state of an AutoContact.

Enumerator
CntFixed | This contact cannot be moved.
CntTerminal | This contact is anchored on a terminal (AutoContactTerminal), must not be changed.
CntTurn | The object true class is AutoContactTurn, must not be changed.
CntHTee | The object true class is AutoContactHTee, must not be changed.
CntVTee | The object true class is AutoContactVTee, must not be changed.
CntInvalidated | At least one AutoSegment of this contact has been moved, the contact position must be recomputed (in the Session revalidation).
CntInvalidatedCache | At least one AutoSegment has been broken or moved up, the connexity must be checked and possibly corrected (in Session revalidation).
CntInCreationStage | Sets only during the initial creation process.
CntBadTopology | Something wrong has happened and the connexity of the AutoContact is no longer ensured (too much or too less AutoSegments, too wide span of AutoSegment layers).

## ◆ AutoSegmentFlag

enum AutoSegmentFlag

Set of flags to describe the internal state of an AutoSegment.

Enumerator
SegHorizontal | This AutoSegment is associated to a Hurricane::Horizontal, if not set, it is associated to a Hurricane::Vertical. Set when the object is constructed.
SegFixed | The Hurricane::Segment associated must/cannot be moved.
SegGlobal | The AutoSegment span between at least two GCells (i.e. not fully enclosed in one).
SegWeakGlobal | The AutoSegment is part of an aligned set which contains at least a global. The global segment is itself tagged as weak global.
SegCanonical | This AutoSegment is the designated representant of a set of aligned AutoSegment.
SegBipoint | This AutoSegment is a straight wire between two terminal AutoContact.
SegDogleg | This AutoSegment has been created as the perpandicular part of a dogleg.
SegStrap | This AutoSegment has been created to to reconnect parts of an AutoSegment after slackening.
SegSourceTop | The source contact of this segment is connected to the top layer.
SegSourceBottom | The source contact of this segment is connected to the bottom layer.
SegTargetTop | The target contact of this segment is connected to the top layer.
SegTargetBottom | The target contact of this segment is connected to the bottom layer.
SegIsReduced | This segment is the perpandicular part of a dogleg which will use the same layer as the parallels.
SegLayerChange | This AutoSegment has been created to to reconnect parts of an AutoSegment after a layer change.
SegStrongTerminal | This AutoSegment directly connected to a terminal.
SegWeakTerminal1 | This AutoSegment indirectly connected to a terminal with medium strength.
SegWeakTerminal2 | This AutoSegment indirectly connected to a terminal with weak strength.

SegNotSourceAligned

This source contact of the segment is not the aligned part of a tee (`h1` or `h2` for a `HTee`, `v1` or `v2` for a `VTee`).

See also
  AutoSegmentFlag::SegNotAligned

SegNotTargetAligned

This target contact of the segment is not the aligned part of a tee (`h1` or `h2` for a `HTee`, `v1` or `v2` for a `VTee`).

See also
  AutoSegmentFlag::SegNotAligned

SegSlackened | This AutoSegment has been slackened, that is freed from any constraints from source or target through the insertion of straps.
SegAxisSet | This AutoSegment has been explicitly positionned at least once.
SegInvalidated | This position or topology of this AutoSegment has been changed, needing a revalidation.
SegInvalidatedLayer | The segment has been chenged of layer, but the source & target AutoContact have not been topologicaly checked yet. This flag must be used in whith AutoSegmentFlag::SegInvalidated.
SegCreated | The AutoSegment has just been created. This flag is set only from the contruction of the object until is first revalidation. Used to disable some tests that cannot be satisfied initially.

SegWeakTerminal

A mask composed of:

- Katabatic::SegStrongTerminal
- Katabatic::SegWeakTerminal1
- Katabatic::SegWeakTerminal2

SegNotAligned

A mask composed of:

- Katabatic::SegNotSourceAligned
- Katabatic::SegNotTargetAligned

This mask is a quick way to know if a segment is not part of an aligned set. It means that the segment is, on both ends, either connected to a terminal, a turn or the stem part of a tee.