coriolis/katabatic/doc/man/man3/Katabatic_GCellGrid.3

179 lines
5.9 KiB
Groff

.TH "GCellGrid" 3 "Thu Nov 12 2020" "Version 1.0" "Katabatic - Routing Toolbox" \" -*- nroff -*-
.ad l
.nh
.SH NAME
GCellGrid \- \fBGCell\fP \fBGrid\fP\&.
.SH SYNOPSIS
.br
.PP
.PP
Inherits \fBGrid< GCell >\fP\&.
.SS "Public Types"
.in +1c
.ti -1c
.RI "enum \fBDensityMode\fP { \fBAverageHVDensity\fP =1, \fBAverageHDensity\fP =2, \fBAverageVDensity\fP =3, \fBMaxHVDensity\fP =4, \fBMaxVDensity\fP =5, \fBMaxHDensity\fP =6, \fBMaxDensity\fP =7 }"
.br
.in -1c
.SS "Public Member Functions"
.in +1c
.ti -1c
.RI "\fBCell\fP * \fBgetCell\fP () const"
.br
.ti -1c
.RI "\fBKatabaticEngine\fP * \fBgetKatabatic\fP () const"
.br
.ti -1c
.RI "unsigned int \fBgetDensityMode\fP () const"
.br
.ti -1c
.RI "size_t \fBgetHEdgeCapacity\fP () const"
.br
.ti -1c
.RI "size_t \fBgetVEdgeCapacity\fP () const"
.br
.ti -1c
.RI "\fBInterval\fP \fBgetUSide\fP (unsigned int) const"
.br
.ti -1c
.RI "size_t \fBcheckDensity\fP () const"
.br
.ti -1c
.RI "size_t \fBupdateDensity\fP ()"
.br
.ti -1c
.RI "void \fBupdateContacts\fP (unsigned int flags=\fBKbOpenSession\fP)"
.br
.ti -1c
.RI "void \fBsetDensityMode\fP (unsigned int)"
.br
.in -1c
.SS "Protected Member Functions"
.in +1c
.ti -1c
.RI "void \fB_postCreate\fP ()"
.br
.ti -1c
.RI "void \fB_preDestroy\fP ()"
.br
.in -1c
.SS "Static Protected Member Functions"
.in +1c
.ti -1c
.RI "static \fBGCellGrid\fP * \fBcreate\fP (\fBKatabaticEngine\fP *)"
.br
.in -1c
.SH "Detailed Description"
.PP
\fBGCell\fP \fBGrid\fP\&.
The \fBGCell\fP \fBGrid\fP of \fBKatabatic\fP\&. Although the base template class \fBGrid\fP support irregular grid, the \fBGCellGrid\fP 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\&.
.PP
Due to the regular nature of the grid, the horizontal & vertical edges capacities are all identical, and initialized from the \fBKatabatic\fP Configuration\&.
.PP
The grid is build from the Knik global routing, so obviously a KnikEngine must be attached to the Cell when building the \fBGCellGrid\fP\&. An error is thrown otherwise\&.
.SH "Member Enumeration Documentation"
.PP
.SS "enum \fBDensityMode\fP"
Various ways of computing the overall density of a \fBGCell\fP\&.
.PP
\fBEnumerator\fP
.in +1c
.TP
\fB\fIAverageHVDensity \fP\fP
The average density all depths accounted\&.
.TP
\fB\fIAverageHDensity \fP\fP
The average density of horizontal layers\&.
.TP
\fB\fIAverageVDensity \fP\fP
The average density of horizontal layers\&.
.TP
\fB\fIMaxHVDensity \fP\fP
The maximum of the average horizontal & vertical densities taken as a whole\&.
.TP
\fB\fIMaxVDensity \fP\fP
The maximum of the average vertical densities taken depth by depth\&.
.TP
\fB\fIMaxHDensity \fP\fP
The maximum of the average horizontal densities taken depth by depth\&.
.TP
\fB\fIMaxDensity \fP\fP
The maximum of the average horizontal & vertical densities taken depth by depth\&.
.SH "Member Function Documentation"
.PP
.SS "\fBCell\fP * getCell () const"
\fBReturns:\fP The associated Cell\&.
.PP
Referenced by GCellGrid::_postCreate()\&.
.SS "\fBKatabaticEngine\fP * getKatabatic () const\fC [inline]\fP"
\fBReturns:\fP The associated \fBKatabaticEngine\fP\&.
.SS "unsigned int getDensityMode () const\fC [inline]\fP"
\fBReturns:\fP The computation mode of the \fBGCell\fP densities\&.
.PP
Referenced by GCell::getDensity()\&.
.SS "size_t getHEdgeCapacity () const\fC [inline]\fP"
\fBReturns:\fP The horizontal edge capacity\&. As the matrix is regular it is identical for all horizontal edges\&.
.PP
Referenced by GCell::checkEdgeSaturation()\&.
.SS "size_t getVEdgeCapacity () const\fC [inline]\fP"
\fBReturns:\fP The vertical edge capacity\&. As the matrix is regular it is identical for all vertical edges\&.
.PP
Referenced by GCell::checkEdgeSaturation()\&.
.SS "\fBInterval\fP getUSide (unsigned int direction) const"
\fBReturns:\fP The side of the whole grid in \fCdirection\fP\&.
.PP
References Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), Katabatic::KbHorizontal, and Katabatic::KbVertical\&.
.SS "size_t checkDensity () const"
\fBReturns:\fP The number of \fBGCell\fP saturateds\&.
.PP
Check all GCells for saturations\&.
.PP
References Grid< GCell >::getGCells()\&.
.SS "size_t updateDensity ()"
\fBReturns:\fP The number of \fBGCell\fP saturateds\&.
.PP
Force a density update on all the GCells\&.
.PP
References Grid< GCell >::getGCells()\&.
.SS "void updateContacts (unsigned int flags = \fC\fBKbOpenSession\fP\fP)"
Force an update on all \fBAutoContact\fP on all the GCells\&. if \fCopenSession\fP is \fBtrue\fP, enclose the update in a \fBSession\fP\&.
.PP
References Session::close(), Grid< GCell >::getGCells(), Katabatic::KbOpenSession, and Session::open()\&.
.PP
Referenced by KatabaticEngine::refresh()\&.
.SS "void setDensityMode (unsigned int mode)\fC [inline]\fP"
Sets the density computation mode\&.
.SS "void _postCreate ()\fC [protected]\fP, \fC [virtual]\fP"
Perform the \fBGCell\fP & \fBGCell\fP vector allocation\&.
.IP "\(bu" 2
Read the horizontal and vertical cut lines from Knik and translate them into \fBBaseGrid::Axis\fP\&.
.IP "\(bu" 2
From the \fBBaseGrid::Axis\fP, deduces the exact positions of the GCells and allocate them\&.
.IP "\(bu" 2
The \fBGCell\fP allocation is done in a 'row by row' fashion consistent with \fBBaseGrid\fP implicit assumptions\&.
.PP
.PP
Reimplemented from \fBBaseGrid\fP\&.
.PP
References BaseGrid::Axis::addGraduation(), GCellGrid::getCell(), BaseGrid::getColumns(), BaseGrid::getRows(), BaseGrid::Axis::getSize(), and BaseGrid::Axis::sort()\&.
.SS "void _preDestroy ()\fC [protected]\fP, \fC [virtual]\fP"
The GCells are deleted at this point\&.
.PP
Reimplemented from \fBBaseGrid\fP\&.
.SS "\fBGCellGrid\fP * create (\fBKatabaticEngine\fP * ktbt)\fC [static]\fP, \fC [protected]\fP"
API-space contructor\&.
.PP
References grid()\&.
.PP
Referenced by KatabaticEngine::createDetailedGrid()\&.
.SH "Author"
.PP
Generated automatically by Doxygen for Katabatic - Routing Toolbox from the source code\&.