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:
Inheritance graph
[legend]

Public Types

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

Public Member Functions

CellgetCell () const
 
KatabaticEnginegetKatabatic () 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 >
GCellgetGCell (unsigned int index) const
 
GCellgetGCell (const Point p) const
 
GCellgetGCell (const Point p1, const Point p2) const
 
GCellgetGCellLeft (const GCell *gcell) const
 
GCellgetGCellRight (const GCell *gcell) const
 
GCellgetGCellUp (const GCell *gcell) const
 
GCellgetGCellDown (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 BoxgetBoundingBox () 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 AxisgetXGrads () const
 
const AxisgetYGrads () 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 GCellGridcreate (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

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:


Generated by doxygen 1.8.14 on Sun Nov 21 2021 Return to top of page
Katabatic - Routing Toolbox Copyright © 2008-2020 Sorbonne Universite. All rights reserved