coriolis/katabatic/doc/GCellGrid.dox

111 lines
4.5 KiB
C++

// -*- C++ -*-
namespace Katabatic {
/*! \class GCellGrid
*
* \brief 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.
*/
//! \function GCellGrid* GCellGrid::create( KatabaticEngine* ktbt );
//! API-space contructor.
//! \function void GCellGrid::_postCreate ();
//! 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.
//! \function void GCellGrid::_preDestroy ();
//! The GCells are deleted at this point.
//! \function Cell* GCellGrid::getCell() const;
//! \sreturn The associated Cell.
//! \function KatabaticEngine* GCellGrid::getKatabatic() const;
//! \sreturn The associated KatabaticEngine.
//! \function unsigned int GCellGrid::getDensityMode() const;
//! \sreturn The computation mode of the GCell densities.
//! \function size_t GCellGrid::getHEdgeCapacity() const;
//! \sreturn The horizontal edge capacity. As the matrix is regular it is
//! identical for all horizontal edges.
//! \function size_t GCellGrid::getVEdgeCapacity() const;
//! \sreturn The vertical edge capacity. As the matrix is regular it is
//! identical for all vertical edges.
//! \function Interval GCellGrid::getUSide( unsigned int direction ) const;
//! \sreturn The side of the whole grid in \c direction.
//! \function size_t GCellGrid::checkDensity() const;
//! \sreturn The number of GCell saturateds.
//!
//! Check all GCells for saturations.
//! \function bool GCellGrid::checkEdgeSaturation( float threshold ) const;
//! \sreturn \true if at least one edge is over \c threshold (percentage
//! of occupation).
//!
//! Check all the edges for saturations.
//! \function void GCellGrid::setDensityMode( unsigned int mode );
//! Sets the density computation mode.
//! \function void GCellGrid::updateContacts( unsigned int flags=KbOpenSession );
//! Force an update on all AutoContact on all the GCells.
//! if \c openSession is \true, enclose the update in a Session.
//! \function size_t GCellGrid::updateDensity();
//! \sreturn The number of GCell saturateds.
//!
//! Force a density update on all the GCells.
//! \enum GCellGrid::DensityMode
//! Various ways of computing the overall density of a GCell.
//! \var GCellGrid::AverageHVDensity
//! The average density all depths accounted.
//! \var GCellGrid::AverageHDensity
//! The average density of horizontal layers.
//! \var GCellGrid::AverageVDensity
//! The average density of horizontal layers.
//! \var GCellGrid::MaxHVDensity
//! The maximum of the average horizontal & vertical densities taken
//! as a whole.
//! \var GCellGrid::MaxVDensity
//! The maximum of the average vertical densities taken depth by depth.
//! \var GCellGrid::MaxHDensity
//! The maximum of the average horizontal densities taken depth by depth.
//! \var GCellGrid::MaxDensity
//! The maximum of the average horizontal & vertical densities
//! taken depth by depth.
}