# Katabatic Documentation

# Katabatic - Routing Toolbox

List of all members | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions
GCellGrid Class Reference

GCell Grid. More...

Inheritance diagram for GCellGrid:
[legend]

## Public Types

enum | DensityMode { AverageHVDensity =1, AverageHDensity =2, AverageVDensity =3, MaxHVDensity =4, MaxVDensity =5, MaxHDensity =6, MaxDensity =7 }

## Public Member Functions

Cell * | getCell () const
KatabaticEngine * | getKatabatic () const
unsigned int | getDensityMode () const
size_t | getHEdgeCapacity () const
size_t | getVEdgeCapacity () const
Interval | getUSide (unsigned int) const
size_t | checkDensity () const
size_t | updateDensity ()
void | updateContacts (unsigned int flags=KbOpenSession)
void | setDensityMode (unsigned int)
Public Member Functions inherited from Grid< GCell >
GCell * | getGCell (unsigned int index) const
GCell * | getGCell (const Point p) const
GCell * | getGCell (const Point p1, const Point p2) const
GCell * | getGCellLeft (const GCell *gcell) const
GCell * | getGCellRight (const GCell *gcell) const
GCell * | getGCellUp (const GCell *gcell) const
GCell * | getGCellDown (const GCell *gcell) const
GenericCollection< GCell *> | getGCells ()
GenericCollection< GCell *> | getGCellsColumn (unsigned int column, unsigned int rowStart, unsigned int rowStop)
GenericCollection< GCell *> | getGCellsRow (unsigned int row, unsigned int columnStart, unsigned int columnStop)
Public Member Functions inherited from BaseGrid
void | destroy ()
const Box & | getBoundingBox () const
unsigned int | getColumns () const
unsigned int | getRows () const
unsigned int | getRawSize () const
unsigned int | getIndex (unsigned int c, unsigned int r) const
unsigned int | getRow (unsigned int) const
unsigned int | getColumn (unsigned int) const
const Axis & | getXGrads () const
const Axis & | getYGrads () const

## Protected Member Functions

void | _postCreate ()
void | _preDestroy ()
Protected Member Functions inherited from Grid< GCell >
| Grid (const Box &)
Protected Member Functions inherited from BaseGrid
| BaseGrid (const Box &)

## Static Protected Member Functions

static GCellGrid * | create (KatabaticEngine *)

## Detailed Description

GCell Grid.

The GCell Grid of Katabatic. Although the base template class Grid support irregular grid, the GCellGrid is regular, following the Knik global router GCells. Only the topmost row and leftmost column may have different height or width to cope with the design real size.

Due to the regular nature of the grid, the horizontal & vertical edges capacities are all identical, and initialized from the Katabatic Configuration.

The grid is build from the Knik global routing, so obviously a KnikEngine must be attached to the Cell when building the GCellGrid. An error is thrown otherwise.

## Member Enumeration Documentation

## ◆ DensityMode

enum DensityMode

Various ways of computing the overall density of a GCell.

Enumerator
AverageHVDensity | The average density all depths accounted.
AverageHDensity | The average density of horizontal layers.
AverageVDensity | The average density of horizontal layers.
MaxHVDensity | The maximum of the average horizontal & vertical densities taken as a whole.
MaxVDensity | The maximum of the average vertical densities taken depth by depth.
MaxHDensity | The maximum of the average horizontal densities taken depth by depth.
MaxDensity | The maximum of the average horizontal & vertical densities taken depth by depth.

## Member Function Documentation

## ◆ getCell()

Cell * getCell | ( |  | ) | const

Returns: The associated Cell.

Referenced by GCellGrid::_postCreate().

## ◆ getKatabatic()

KatabaticEngine * getKatabatic | ( |  | ) | const

inline

Returns: The associated KatabaticEngine.

## ◆ getDensityMode()

unsigned int getDensityMode | ( |  | ) | const

inline

Returns: The computation mode of the GCell densities.

Referenced by GCell::getDensity().

## ◆ getHEdgeCapacity()

size_t getHEdgeCapacity | ( |  | ) | const

inline

Returns: The horizontal edge capacity. As the matrix is regular it is identical for all horizontal edges.

Referenced by GCell::checkEdgeSaturation().

## ◆ getVEdgeCapacity()

size_t getVEdgeCapacity | ( |  | ) | const

inline

Returns: The vertical edge capacity. As the matrix is regular it is identical for all vertical edges.

Referenced by GCell::checkEdgeSaturation().

## ◆ getUSide()

Interval getUSide | ( | unsigned int | direction | ) | const

Returns: The side of the whole grid in `direction`.

References Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), Katabatic::KbHorizontal, and Katabatic::KbVertical.

## ◆ checkDensity()

size_t checkDensity | ( |  | ) | const

Returns: The number of GCell saturateds.

Check all GCells for saturations.

References Grid< GCell >::getGCells().

## ◆ updateDensity()

size_t updateDensity | ( |  | ) |

Returns: The number of GCell saturateds.

Force a density update on all the GCells.

References Grid< GCell >::getGCells().

## ◆ updateContacts()

void updateContacts | ( | unsigned int | flags = `KbOpenSession` | ) |

Force an update on all AutoContact on all the GCells. if `openSession` is true, enclose the update in a Session.

References Session::close(), Grid< GCell >::getGCells(), Katabatic::KbOpenSession, and Session::open().

Referenced by KatabaticEngine::refresh().

## ◆ setDensityMode()

void setDensityMode | ( | unsigned int | mode | ) |

inline

Sets the density computation mode.

## ◆ _postCreate()

void _postCreate | ( |  | ) |

protectedvirtual

Perform the GCell & GCell vector allocation.

- Read the horizontal and vertical cut lines from Knik and translate them into BaseGrid::Axis.
- From the BaseGrid::Axis, deduces the exact positions of the GCells and allocate them.
- The GCell allocation is done in a "row by row" fashion consistent with BaseGrid implicit assumptions.

Reimplemented from BaseGrid.

References BaseGrid::Axis::addGraduation(), GCellGrid::getCell(), BaseGrid::getColumns(), BaseGrid::getRows(), BaseGrid::Axis::getSize(), and BaseGrid::Axis::sort().

## ◆ _preDestroy()

void _preDestroy | ( |  | ) |

protectedvirtual

The GCells are deleted at this point.

Reimplemented from BaseGrid.

## ◆ create()

GCellGrid * create | ( | KatabaticEngine * | ktbt | ) |

staticprotected

API-space contructor.

References grid().

Referenced by KatabaticEngine::createDetailedGrid().

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

- GCellGrid.h
- GCellGrid.cpp
- GCellGrid.dox