\hypertarget{classKatabatic_1_1GCell}{}\section{G\+Cell Class Reference}
\label{classKatabatic_1_1GCell}\index{G\+Cell@{G\+Cell}}


Routing Global Cell.  




Inherits Extension\+Go.

\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{classKatabatic_1_1GCell_1_1CompareByDensity}{Compare\+By\+Density}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} Density Comparison Functor. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classKatabatic_1_1GCell_1_1CompareByIndex}{Compare\+By\+Index}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} Index Comparison Functor. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classKatabatic_1_1GCell_1_1Key}{Key}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} \mbox{\hyperlink{classKatabatic_1_1GCell_1_1Key}{Key}} -\/ Density Cache. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef set$<$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$, \mbox{\hyperlink{classKatabatic_1_1GCell_1_1CompareByIndex}{Compare\+By\+Index}} $>$ \mbox{\hyperlink{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}{Set\+Index}}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual const \textbf{ Name} \& \mbox{\hyperlink{classKatabatic_1_1GCell_a9e76ae5cee9320b65251387419c9432b}{get\+Name}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_a9f274f17cf9166e997d306b120618fdf}{is\+Saturated}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_a49b7bd2f05abd94436177558fd0f97d8}{is\+Saturated}} (unsigned int depth) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_a5bc2a781be2586924afce4e4a4ea6697}{is\+Valid}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_a0e0a7b382b06e230051965bcb78ed21c}{is\+Above\+Density}} (float threshold) const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_ac2275a015db51cc12dd53fb13d22ca4f}{has\+Free\+Track}} (size\+\_\+t depth, float reserve) const
\item 
\mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1GCell_a9a56286f633fddd702d66563de457a4a}{get\+G\+Cell\+Grid}} () const
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1GCell_a6c4d9081746b8daa3e45e5e3dd185b60}{get\+Depth}} () const
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1GCell_a762de91e7869ca544ff034b99fc2e0a6}{get\+Index}} () const
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1GCell_ad26f8bcf642c2620ac525cc04c8376c0}{get\+Row}} () const
\item 
unsigned int \mbox{\hyperlink{classKatabatic_1_1GCell_ac5b1a776c3eafa7f68d31292615011fa}{get\+Column}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1GCell_a633722329744550b6da94c3b6fb97484}{get\+Left}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1GCell_abdeb6b4a351f8b292894d3f0c24f105d}{get\+Right}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1GCell_a335506a314a2330b5a354906e798e60c}{get\+Up}} () const
\item 
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ \mbox{\hyperlink{classKatabatic_1_1GCell_ae448c9d6d028e967d7bd5a1bfdd05311}{get\+Down}} () const
\item 
virtual void \mbox{\hyperlink{classKatabatic_1_1GCell_a819f3ffbba69e4de2a19c827676b5aee}{translate}} (const \textbf{ Db\+U\+::\+Unit} \&, const \textbf{ Db\+U\+::\+Unit} \&)
\item 
virtual \textbf{ Box} \mbox{\hyperlink{classKatabatic_1_1GCell_ab5d8bf98ab5af6fcfebea1b9f446d5d7}{get\+Bounding\+Box}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_a00b8f54c8171f6699e57de1b8c18eeb1}{getX}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_a4580de6b074712e400d5d238ce3af054}{getY}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_aaf7ff16cd2fd5a3fa4c5221efb9b9b76}{get\+X\+Max}} () const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_a096a92c18156eac4268efb50496a2d18}{get\+Y\+Max}} () const
\item 
\textbf{ Interval} \mbox{\hyperlink{classKatabatic_1_1GCell_a10f3dd5001b2015e34a9aacdacf6eae6}{get\+Side}} (unsigned int) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_ad0dda8d59162b90040263fc55d7da714}{get\+H\+Capacity}} () const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_a3994e204ebccf8aa12899e0c5ef4112b}{get\+V\+Capacity}} () const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_ad31c16c87377e164728a0df55e21f96b}{get\+Density}} (unsigned int flags=0) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_ae56b981fad5960835faef809ec282cfa}{get\+C\+Density}} (unsigned int flags=0) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_aa64538731e911c60eeaea557be1c7740}{get\+W\+Density}} (unsigned int depth, unsigned int flags=0) const
\item 
\textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_ab37ffda5a2e1ba60931d32c29237bd33}{get\+Blockage}} (unsigned int depth) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_a44ec8d16030b5900bd0ccc02652b727f}{get\+Fragmentation}} (unsigned int depth) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_a14feed45699c8dc406251519dc08bc79}{get\+Feedthroughs}} (unsigned int depth) const
\item 
float \mbox{\hyperlink{classKatabatic_1_1GCell_a4785bcc49da76fc38f6940f5b1cc5b17}{get\+Globals\+Count}} (unsigned int depth) const
\item 
const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ $>$ \& \mbox{\hyperlink{classKatabatic_1_1GCell_a81575302a8794958c310dc101807e9c5}{get\+H\+Segments}} () const
\item 
const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ $>$ \& \mbox{\hyperlink{classKatabatic_1_1GCell_ac3c357d72a24990494758dcc216e3b1e}{get\+V\+Segments}} () const
\item 
const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ $>$ \& \mbox{\hyperlink{classKatabatic_1_1GCell_aacf50ce6dcef3a7523453725af7feeae}{get\+Contacts}} () const
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_a79668a41675e9ba0ca59d4b91e3b70be}{get\+H\+Start\+Segments}} ()
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_acbd17a4441905a4f5bc33a26bb338d0a}{get\+V\+Start\+Segments}} ()
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_a77beccf65527a330f15bed2aba4f9dea}{get\+H\+Stop\+Segments}} ()
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_a2f0f038f5700b7b55f22829c5d43aa07}{get\+V\+Stop\+Segments}} ()
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_a1f92568d22b1384a8cdf328340fb9160}{get\+Start\+Segments}} (unsigned int direction)
\item 
\mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} \mbox{\hyperlink{classKatabatic_1_1GCell_a80ad0f9e79bccf6aed4fb69b4b795005}{get\+Stop\+Segments}} (unsigned int direction)
\item 
size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1GCell_a3bda8c3dbb2896a0e6e57f974d0c1cad}{get\+Routing\+Pads}} (set$<$ \textbf{ Routing\+Pad} $\ast$$>$ \&)
\item 
const \mbox{\hyperlink{classKatabatic_1_1GCell_1_1Key}{Key}} \& \mbox{\hyperlink{classKatabatic_1_1GCell_ade1e79e88bf4f4c173ffd083dd5470c9}{get\+Key}} () const
\item 
size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1GCell_a88208864ba2268689946a8cb7a86fcb2}{check\+Density}} () const
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_af4dcc99733b7ea77e8c3c7da9ac3cd3c}{check\+Edge\+Saturation}} (size\+\_\+t hreserved, size\+\_\+t vreserved) const
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a1270eab34ac57f21c0286a5455044a0d}{add\+Blockage}} (unsigned int depth, \textbf{ Db\+U\+::\+Unit})
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a4aad7d6f7357fd7963aab91bc2019a1b}{add\+H\+Segment}} (\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a8aa815e9e99df8187e628f6ec9e9da77}{add\+V\+Segment}} (\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a2b84aab620bfca1064e988e94e7b9c59}{add\+Contact}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_abe128484d8aa063198292a88c63f2bba}{remove\+V\+Segment}} (\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_aff76aa96214c0efcf13186b8b3e5c852}{remove\+H\+Segment}} (\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_aa052a9427fbd4185f00567a97770f80b}{remove\+Contact}} (\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_aa0beea2ceaa543503346967085036d1a}{update\+Contacts}} ()
\item 
size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1GCell_a9b3455dce10eb98d0496175dd586528c}{update\+Density}} ()
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a11beff0f0bec06d0f3e080969516dfc3}{update\+Key}} (unsigned int depth)
\item 
void \mbox{\hyperlink{classKatabatic_1_1GCell_a11f07f57cc33fcd4b2d310145c778801}{rp\+Desaturate}} (set$<$ \textbf{ Net} $\ast$$>$ \&)
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_a5ae4d250ebecf59aa98fb068d848be14}{step\+Desaturate}} (unsigned int depth, set$<$ \textbf{ Net} $\ast$$>$ \&, \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$\&moved, unsigned int flags=0)
\item 
bool \mbox{\hyperlink{classKatabatic_1_1GCell_abe4cf4a81bb78e9b479992336a999a07}{step\+Net\+Desaturate}} (unsigned int depth, set$<$ \textbf{ Net} $\ast$$>$ \&global\+Nets, \mbox{\hyperlink{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}{Set\+Index}} \&invalidateds)
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static size\+\_\+t \mbox{\hyperlink{classKatabatic_1_1GCell_a91c8bc1a6bdb1b15c3c084ebfd38af47}{get\+Allocateds}} ()
\item 
static \textbf{ Db\+U\+::\+Unit} \mbox{\hyperlink{classKatabatic_1_1GCell_ac594cb2832ee7ef410c89499258d38fd}{get\+Top\+Right\+Shrink}} ()
\item 
static const \textbf{ Name} \& \mbox{\hyperlink{classKatabatic_1_1GCell_a00e56270cfb31f56e52e31afbc33ba71}{get\+Static\+Name}} ()
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Routing Global Cell. 

\hypertarget{classKatabatic_1_1GCell_secGCellDescription}{}\subsection{G\+Cell Description}\label{classKatabatic_1_1GCell_secGCellDescription}
Please note that there are two kind of Global Cells (or \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} for short)\+:
\begin{DoxyItemize}
\item The \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} used by the global router Knik.
\item The \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} used by the detailed router (\mbox{\hyperlink{namespaceKatabatic}{Katabatic}} \& Kite). Although the information they hold is obviously related, they are two separate kind of objects.
\end{DoxyItemize}

The area of the design to be routed is divided in a regular grid of rectangular area, the \mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}}. Each rectangular area is a \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}.

The \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} contains the following informations\+:
\begin{DoxyItemize}
\item The Auto\+Segments that begins or ends in it. The list of segments is not avalaible directly but through the Auto\+Contacts that are owned by the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}.
\item The Auto\+Segments that go straight {\itshape through} it (or {\itshape over} it). Horizontal \& Vertical segments are stored in two separeted list. Those two lists are sorted by layer depth (the deepest layers first).
\item A lot of synthetic information about the density of tracks used in the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}.
\end{DoxyItemize}

Auto\+Contacts are affected to G\+Cells, the area of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is the one into which the \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} is allowed to be placed. It is this that way that the respect of the global routing choosen by Knik is enforced. See the \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} constraint box.

When tracks are aligned with the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} boundaries they one exactly on the boundary can belong to the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} on either side of the boundary. But we want a clear and mutually exclusive ownership of each \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} area. So, we choose that one \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} do not own the topmost and rightmost track. And to implement it, we shrink top and right coordinates by the amount of \mbox{\hyperlink{classKatabatic_1_1GCell_ac594cb2832ee7ef410c89499258d38fd}{G\+Cell\+::get\+Top\+Right\+Shrink()}}, which must be less than the track spacing.\hypertarget{classKatabatic_1_1GCell_secGCellDensity}{}\subsubsection{Saturation \& Density Computation}\label{classKatabatic_1_1GCell_secGCellDensity}
At any depth (i.\+e. layer), in the preferred routing direction, a \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} can pass a finite length of wire. For example on an horizontal preferred layer\+: \[ WL_{max} = width(GCell) \times Htracks(GCell) \] Then the density, is the ratio between $WL_{max}$ and the actually used wirelength\+: \[ Wdensity(depth) = \frac{WL_{used}(depth)}{WL_{max}(depth)} \] Normally, the ratio musn\textquotesingle{}t exceed 1.\+0, but the occupied wire length computation, for now, doesn\textquotesingle{}t merge overlapping wires belonging to the same net, so the ratio may be slightly inaccurate. Thus in some pathological cases may be greater than 1.\+0 whithout truly been overloaded.

A Cell is considered as {\itshape saturated} if the overall density is above the saturation ratio given by \mbox{\hyperlink{classKatabatic_1_1Session_a266a4079ca235e8fdb622ef4996d324d}{Session\+::get\+Saturate\+Ratio()}}.

Contact density is calculated as follow\+: \[ Cont_{density} = \frac{|Contacts|}{Htracks \times Vtracks \times 4} \] It is a ratio over the number of actual contacts in the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} and the maximal number. The maximal number being the product of the number of tracks in both direction and 4 stands for the hardwired number of layers (the depth).

Should not be hardwired... {\itshape To be corrected in future versions.}\hypertarget{classKatabatic_1_1GCell_secGCellFeedthrough}{}\subsubsection{Feedthrough Computation}\label{classKatabatic_1_1GCell_secGCellFeedthrough}
The feedtrough value is an estimate is of how many complete tracks have been used on a given layer of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. It varies between zero and the number of track on the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} (complete saturation). As an estimate, it doesn\textquotesingle{}t tell you the actual number of free track, but how many you {\itshape may expect} assuming the routing is reasonably well done.

Computation is done as follow\+: \tabulinesep=1mm
\begin{longtabu} spread 0pt [c]{*{2}{|X[-1]}|}
\hline
\rowcolor{\tableheadbgcolor}\textbf{ Wire type}&\textbf{ Estimated Cost }\\\cline{1-2}
\endfirsthead
\hline
\endfoot
\hline
\rowcolor{\tableheadbgcolor}\textbf{ Wire type}&\textbf{ Estimated Cost }\\\cline{1-2}
\endhead
Straight wire (feedthrough) &{\bfseries 1.\+0} \\\cline{1-2}
Beginning or ending global wire &{\bfseries 0.\+5} \\\cline{1-2}
Local wire. &{\bfseries 1/3} \\\cline{1-2}
Blockage wire &The exact percentage of the track \\\cline{1-2}
\end{longtabu}
\hypertarget{classKatabatic_1_1GCell_secGCellTrackComputation}{}\subsubsection{Track Computation}\label{classKatabatic_1_1GCell_secGCellTrackComputation}
The number of track that can go through a \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the horizontal direction is computed as follow\+: \[ Htracks = \frac{heigth(GCell)}{Vpitch} + 1 \]

The pitch is assumed to be the same for every layer and is hardwired to 5.\+0 lambda.

This is a bad architectural choice. The informations pertaining to routing should be held at Kite level, not be hardwired and the pitch should be made variable with the layer... {\itshape To be corrected in future versions}.\hypertarget{classKatabatic_1_1GCell_secGCellLazyEvaluation}{}\subsection{G\+Cell Lazy Evaluation}\label{classKatabatic_1_1GCell_secGCellLazyEvaluation}
To save processing time, the densities are not recomputed every time a segment is modified (added, removed or moved). Instead a lazy evaluation mechanism is used. Densities are recomputed each time a density is queried {\itshape and} the lazy evaluation {\itshape not} explicitly disabled (flag No\+Update).\hypertarget{classKatabatic_1_1GCell_secGCellSortingKey}{}\subsection{G\+Cell Sorting Key}\label{classKatabatic_1_1GCell_secGCellSortingKey}
In order to perform a lexicographical sort on the tuple $(density(depth),id)$ of a \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}, a specific slave object \mbox{\hyperlink{classKatabatic_1_1GCell_1_1Key}{G\+Cell\+::\+Key}} is introduced. It is the density on one specific depth, not the average density.\hypertarget{classKatabatic_1_1GCell_secGCellDesaturation}{}\subsection{G\+Cell Desaturation / Layer Assignment}\label{classKatabatic_1_1GCell_secGCellDesaturation}
In addition to it\textquotesingle{}s geometrical and density functionality, the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} provides {\itshape desaturation} capabilities. Desaturation is the operation of moving up feedthough \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} from the bottom layers towards the upper ones in order to balance the densities in the different densities. Thoses operations provides building blocks for the layer assignment stage which is provided by the Kabatic tool.

Two strategies are avalaibles, moving one global \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} at a time with \mbox{\hyperlink{classKatabatic_1_1GCell_a5ae4d250ebecf59aa98fb068d848be14}{G\+Cell\+::step\+Desaturate()}} or, when one \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is moved up, move up the whole net trunk with \mbox{\hyperlink{classKatabatic_1_1GCell_abe4cf4a81bb78e9b479992336a999a07}{G\+Cell\+::step\+Net\+Desaturate()}}.\hypertarget{classKatabatic_1_1GCell_secGCellImplantation}{}\subsection{G\+Cell Implantation}\label{classKatabatic_1_1GCell_secGCellImplantation}
\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} derives from Hurricane\+::\+Extension\+Go to allow a graphical rendering of the routing density. 

\subsection{Member Typedef Documentation}
\mbox{\Hypertarget{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}\label{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!Set\+Index@{Set\+Index}}
\index{Set\+Index@{Set\+Index}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{Set\+Index}{SetIndex}}
{\footnotesize\ttfamily typedef set$<$ \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$, \mbox{\hyperlink{classKatabatic_1_1GCell_1_1CompareByIndex}{Compare\+By\+Index}} $>$ \mbox{\hyperlink{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}{Set\+Index}}}

Shorthand for a set of \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} sorted on their index. 

\subsection{Member Function Documentation}
\mbox{\Hypertarget{classKatabatic_1_1GCell_a91c8bc1a6bdb1b15c3c084ebfd38af47}\label{classKatabatic_1_1GCell_a91c8bc1a6bdb1b15c3c084ebfd38af47}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Allocateds@{get\+Allocateds}}
\index{get\+Allocateds@{get\+Allocateds}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Allocateds()}{getAllocateds()}}
{\footnotesize\ttfamily size\+\_\+t get\+Allocateds (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Returns\+:} The number of allocated G\+Cells. \mbox{\Hypertarget{classKatabatic_1_1GCell_ac594cb2832ee7ef410c89499258d38fd}\label{classKatabatic_1_1GCell_ac594cb2832ee7ef410c89499258d38fd}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Top\+Right\+Shrink@{get\+Top\+Right\+Shrink}}
\index{get\+Top\+Right\+Shrink@{get\+Top\+Right\+Shrink}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Top\+Right\+Shrink()}{getTopRightShrink()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Top\+Right\+Shrink (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Returns\+:} The amount of shrink on the top and right boundaries. \mbox{\Hypertarget{classKatabatic_1_1GCell_a00e56270cfb31f56e52e31afbc33ba71}\label{classKatabatic_1_1GCell_a00e56270cfb31f56e52e31afbc33ba71}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Static\+Name@{get\+Static\+Name}}
\index{get\+Static\+Name@{get\+Static\+Name}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Static\+Name()}{getStaticName()}}
{\footnotesize\ttfamily const \textbf{ Name} \& get\+Static\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Returns\+:} The name of the Go slice\+: {\ttfamily \char`\"{}\+Katabatic\+::\+G\+Cell\char`\"{}}.

\begin{DoxySeeAlso}{See also}
Hurricane\+::\+Extension\+Go 
\end{DoxySeeAlso}
\mbox{\Hypertarget{classKatabatic_1_1GCell_a9e76ae5cee9320b65251387419c9432b}\label{classKatabatic_1_1GCell_a9e76ae5cee9320b65251387419c9432b}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Name@{get\+Name}}
\index{get\+Name@{get\+Name}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Name()}{getName()}}
{\footnotesize\ttfamily const \textbf{ Name} \& get\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The name of the Go slice\+: {\ttfamily \char`\"{}\+Katabatic\+::\+G\+Cell\char`\"{}}.

\begin{DoxySeeAlso}{See also}
Hurricane\+::\+Extension\+Go 
\end{DoxySeeAlso}


Referenced by G\+Cell\+::check\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a9f274f17cf9166e997d306b120618fdf}\label{classKatabatic_1_1GCell_a9f274f17cf9166e997d306b120618fdf}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!is\+Saturated@{is\+Saturated}}
\index{is\+Saturated@{is\+Saturated}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{is\+Saturated()}{isSaturated()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily bool is\+Saturated (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if at least one layer exceed a saturation of {\ttfamily 1.\+0} (more wirelength that it can hold). 

Referenced by G\+Cell\+::check\+Density(), G\+Cell\+::step\+Desaturate(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a49b7bd2f05abd94436177558fd0f97d8}\label{classKatabatic_1_1GCell_a49b7bd2f05abd94436177558fd0f97d8}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!is\+Saturated@{is\+Saturated}}
\index{is\+Saturated@{is\+Saturated}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{is\+Saturated()}{isSaturated()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily bool is\+Saturated (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if the saturation ratio of layer {\ttfamily depth} is over the threshold defined for the G\+Cells. 

References G\+Cell\+::get\+Density(), and Session\+::get\+Saturate\+Ratio().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a5bc2a781be2586924afce4e4a4ea6697}\label{classKatabatic_1_1GCell_a5bc2a781be2586924afce4e4a4ea6697}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!is\+Valid@{is\+Valid}}
\index{is\+Valid@{is\+Valid}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{is\+Valid()}{isValid()}}
{\footnotesize\ttfamily bool is\+Valid (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if all the Auto\+Contact/\+Auto\+Segment of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} are valids. 

Referenced by G\+Cell\+::check\+Density(), G\+Cell\+::get\+C\+Density(), G\+Cell\+::get\+Density(), G\+Cell\+::get\+Feedthroughs(), G\+Cell\+::get\+Fragmentation(), G\+Cell\+::get\+Globals\+Count(), G\+Cell\+::get\+W\+Density(), G\+Cell\+::has\+Free\+Track(), G\+Cell\+::is\+Above\+Density(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a0e0a7b382b06e230051965bcb78ed21c}\label{classKatabatic_1_1GCell_a0e0a7b382b06e230051965bcb78ed21c}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!is\+Above\+Density@{is\+Above\+Density}}
\index{is\+Above\+Density@{is\+Above\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{is\+Above\+Density()}{isAboveDensity()}}
{\footnotesize\ttfamily bool is\+Above\+Density (\begin{DoxyParamCaption}\item[{float}]{threshold }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if the overall saturation ratio greater than {\ttfamily threshold}. 

References G\+Cell\+::get\+Density(), G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ac2275a015db51cc12dd53fb13d22ca4f}\label{classKatabatic_1_1GCell_ac2275a015db51cc12dd53fb13d22ca4f}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!has\+Free\+Track@{has\+Free\+Track}}
\index{has\+Free\+Track@{has\+Free\+Track}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{has\+Free\+Track()}{hasFreeTrack()}}
{\footnotesize\ttfamily bool has\+Free\+Track (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{depth,  }\item[{float}]{reserve }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} {\bfseries true} if there should be enough wire length to pass a wire completly trough this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 

References G\+Cell\+::get\+H\+Capacity(), G\+Cell\+::get\+Index(), Routing\+Gauge\+::get\+Layer\+Depth(), Layer\+::get\+Name(), Session\+::get\+Routing\+Gauge(), Routing\+Gauge\+::get\+Routing\+Layer(), G\+Cell\+::get\+V\+Capacity(), G\+Cell\+::is\+Valid(), Katabatic\+::\+Kb\+Horizontal, Katabatic\+::\+Kb\+Vertical, and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a9a56286f633fddd702d66563de457a4a}\label{classKatabatic_1_1GCell_a9a56286f633fddd702d66563de457a4a}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+G\+Cell\+Grid@{get\+G\+Cell\+Grid}}
\index{get\+G\+Cell\+Grid@{get\+G\+Cell\+Grid}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+G\+Cell\+Grid()}{getGCellGrid()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}} $\ast$ get\+G\+Cell\+Grid (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The \mbox{\hyperlink{classKatabatic_1_1Grid}{Grid}} of which \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is part of. 

Referenced by G\+Cell\+::check\+Edge\+Saturation(), G\+Cell\+::get\+Density(), G\+Cell\+::get\+Down(), G\+Cell\+::get\+Left(), G\+Cell\+::get\+Right(), G\+Cell\+::get\+Up(), and G\+Cell\+::step\+Net\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a6c4d9081746b8daa3e45e5e3dd185b60}\label{classKatabatic_1_1GCell_a6c4d9081746b8daa3e45e5e3dd185b60}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Depth@{get\+Depth}}
\index{get\+Depth@{get\+Depth}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Depth()}{getDepth()}}
{\footnotesize\ttfamily unsigned int get\+Depth (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The depth (i.\+e. number of routing layers) of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. \mbox{\Hypertarget{classKatabatic_1_1GCell_a762de91e7869ca544ff034b99fc2e0a6}\label{classKatabatic_1_1GCell_a762de91e7869ca544ff034b99fc2e0a6}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Index@{get\+Index}}
\index{get\+Index@{get\+Index}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Index()}{getIndex()}}
{\footnotesize\ttfamily unsigned int get\+Index (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The linear index of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the \mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}} vector.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}} for the meaning of the index. 
\end{DoxySeeAlso}


Referenced by Auto\+Segment\+::can\+Move\+Up(), G\+Cell\+::has\+Free\+Track(), and G\+Cell\+::step\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ad26f8bcf642c2620ac525cc04c8376c0}\label{classKatabatic_1_1GCell_ad26f8bcf642c2620ac525cc04c8376c0}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Row@{get\+Row}}
\index{get\+Row@{get\+Row}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Row()}{getRow()}}
{\footnotesize\ttfamily unsigned int get\+Row (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The row of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the \mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}}. 

References Base\+Grid\+::get\+Row().



Referenced by G\+Cell\+::check\+Density(), and Auto\+Segment\+::compute\+Optimal().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ac5b1a776c3eafa7f68d31292615011fa}\label{classKatabatic_1_1GCell_ac5b1a776c3eafa7f68d31292615011fa}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Column@{get\+Column}}
\index{get\+Column@{get\+Column}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Column()}{getColumn()}}
{\footnotesize\ttfamily unsigned int get\+Column (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The Column of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the \mbox{\hyperlink{classKatabatic_1_1GCellGrid}{G\+Cell\+Grid}}. 

References Base\+Grid\+::get\+Column().



Referenced by G\+Cell\+::check\+Density(), and Auto\+Segment\+::compute\+Optimal().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a633722329744550b6da94c3b6fb97484}\label{classKatabatic_1_1GCell_a633722329744550b6da94c3b6fb97484}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Left@{get\+Left}}
\index{get\+Left@{get\+Left}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Left()}{getLeft()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ get\+Left (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The left neighbor of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} ({\ttfamily N\+U\+LL} if it is the leftmost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References G\+Cell\+::get\+G\+Cell\+Grid(), and Grid$<$ G\+Cell\+T $>$\+::get\+G\+Cell\+Left().



Referenced by Auto\+Vertical\+::can\+Move\+U\+Left(), and Auto\+Vertical\+::move\+U\+Left().

\mbox{\Hypertarget{classKatabatic_1_1GCell_abdeb6b4a351f8b292894d3f0c24f105d}\label{classKatabatic_1_1GCell_abdeb6b4a351f8b292894d3f0c24f105d}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Right@{get\+Right}}
\index{get\+Right@{get\+Right}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Right()}{getRight()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ get\+Right (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The right neighbor of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} ({\ttfamily N\+U\+LL} if it is the rightmost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References G\+Cell\+::get\+G\+Cell\+Grid(), and Grid$<$ G\+Cell\+T $>$\+::get\+G\+Cell\+Right().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Horizontal\+::\+\_\+pre\+Destroy(), Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), G\+Cell\+::check\+Edge\+Saturation(), Auto\+Horizontal\+::get\+G\+Cells(), Auto\+Segment\+::make\+Dogleg(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a335506a314a2330b5a354906e798e60c}\label{classKatabatic_1_1GCell_a335506a314a2330b5a354906e798e60c}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Up@{get\+Up}}
\index{get\+Up@{get\+Up}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Up()}{getUp()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ get\+Up (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The top neighbor of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} ({\ttfamily N\+U\+LL} if it is the topmost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References G\+Cell\+::get\+G\+Cell\+Grid(), and Grid$<$ G\+Cell\+T $>$\+::get\+G\+Cell\+Up().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+pre\+Destroy(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Horizontal\+::can\+Move\+U\+Right(), Auto\+Vertical\+::can\+Move\+U\+Right(), G\+Cell\+::check\+Edge\+Saturation(), Auto\+Vertical\+::get\+G\+Cells(), Auto\+Segment\+::make\+Dogleg(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ae448c9d6d028e967d7bd5a1bfdd05311}\label{classKatabatic_1_1GCell_ae448c9d6d028e967d7bd5a1bfdd05311}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Down@{get\+Down}}
\index{get\+Down@{get\+Down}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Down()}{getDown()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$ get\+Down (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The bottom neighbor of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} ({\ttfamily N\+U\+LL} if it is the bottommost \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}). 

References Grid$<$ G\+Cell\+T $>$\+::get\+G\+Cell\+Down(), and G\+Cell\+::get\+G\+Cell\+Grid().



Referenced by Auto\+Horizontal\+::can\+Move\+U\+Left(), and Auto\+Horizontal\+::move\+U\+Left().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a819f3ffbba69e4de2a19c827676b5aee}\label{classKatabatic_1_1GCell_a819f3ffbba69e4de2a19c827676b5aee}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!translate@{translate}}
\index{translate@{translate}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{translate()}{translate()}}
{\footnotesize\ttfamily void translate (\begin{DoxyParamCaption}\item[{const \textbf{ Db\+U\+::\+Unit} \&}]{,  }\item[{const \textbf{ Db\+U\+::\+Unit} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

Required to exists as a \textbf{ Hurricane\+::\+Go} derived class. But must never be used... \mbox{\Hypertarget{classKatabatic_1_1GCell_ab5d8bf98ab5af6fcfebea1b9f446d5d7}\label{classKatabatic_1_1GCell_ab5d8bf98ab5af6fcfebea1b9f446d5d7}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Bounding\+Box@{get\+Bounding\+Box}}
\index{get\+Bounding\+Box@{get\+Bounding\+Box}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Bounding\+Box()}{getBoundingBox()}}
{\footnotesize\ttfamily \textbf{ Box} get\+Bounding\+Box (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

{\bfseries Returns\+:} The bounding box of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}, with the top right shrink applied. 

Referenced by Auto\+Segment\+::\+Auto\+Segment(), Auto\+Segment\+::compute\+Optimal(), and Auto\+Contact\+Terminal\+::get\+Native\+Constraint\+Box().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a00b8f54c8171f6699e57de1b8c18eeb1}\label{classKatabatic_1_1GCell_a00b8f54c8171f6699e57de1b8c18eeb1}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!getX@{getX}}
\index{getX@{getX}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+X()}{getX()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} getX (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The lower left X coordinate of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} box. 

References Box\+::get\+X\+Min().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Horizontal\+::\+\_\+pre\+Destroy(), Auto\+Contact\+::get\+C\+B\+X\+Max(), Auto\+Contact\+::get\+C\+B\+X\+Min(), Auto\+Segment\+::get\+Origin(), Auto\+Contact\+::set\+C\+B\+X\+Max(), and Auto\+Contact\+::set\+C\+B\+X\+Min().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a4580de6b074712e400d5d238ce3af054}\label{classKatabatic_1_1GCell_a4580de6b074712e400d5d238ce3af054}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!getY@{getY}}
\index{getY@{getY}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Y()}{getY()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} getY (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The lower left Y coordinate of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} box. 

References Box\+::get\+Y\+Min().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Vertical\+::\+\_\+pre\+Destroy(), Auto\+Contact\+::get\+C\+B\+Y\+Max(), Auto\+Contact\+::get\+C\+B\+Y\+Min(), Auto\+Segment\+::get\+Origin(), Auto\+Contact\+::set\+C\+B\+Y\+Max(), and Auto\+Contact\+::set\+C\+B\+Y\+Min().

\mbox{\Hypertarget{classKatabatic_1_1GCell_aaf7ff16cd2fd5a3fa4c5221efb9b9b76}\label{classKatabatic_1_1GCell_aaf7ff16cd2fd5a3fa4c5221efb9b9b76}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+X\+Max@{get\+X\+Max}}
\index{get\+X\+Max@{get\+X\+Max}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+X\+Max()}{getXMax()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+X\+Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The upper right X coordinate of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} box (top right shrink applied). 

References Box\+::get\+X\+Max().



Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::get\+Extremity(), and Auto\+Contact\+::set\+C\+B\+X\+Max().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a096a92c18156eac4268efb50496a2d18}\label{classKatabatic_1_1GCell_a096a92c18156eac4268efb50496a2d18}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Y\+Max@{get\+Y\+Max}}
\index{get\+Y\+Max@{get\+Y\+Max}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Y\+Max()}{getYMax()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Y\+Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The upper right Y coordinate of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} box (top right shrink applied). 

References Box\+::get\+Y\+Max().



Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Segment\+::get\+Extremity(), and Auto\+Contact\+::set\+C\+B\+Y\+Max().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a10f3dd5001b2015e34a9aacdacf6eae6}\label{classKatabatic_1_1GCell_a10f3dd5001b2015e34a9aacdacf6eae6}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Side@{get\+Side}}
\index{get\+Side@{get\+Side}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Side()}{getSide()}}
{\footnotesize\ttfamily \textbf{ Interval} get\+Side (\begin{DoxyParamCaption}\item[{unsigned int}]{direction }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The interval corresponding to the side position of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} box, in {\ttfamily direction}. 

References Box\+::get\+X\+Max(), Box\+::get\+X\+Min(), Box\+::get\+Y\+Max(), Box\+::get\+Y\+Min(), Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Vertical.



Referenced by Auto\+Horizontal\+::\+\_\+can\+Slacken(), Auto\+Vertical\+::\+\_\+can\+Slacken(), Auto\+Segment\+::make\+Dogleg(), Auto\+Horizontal\+::move\+U\+Left(), Auto\+Vertical\+::move\+U\+Left(), Auto\+Horizontal\+::move\+U\+Right(), Auto\+Vertical\+::move\+U\+Right(), and Auto\+Segment\+::to\+Constraint\+Axis().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ad0dda8d59162b90040263fc55d7da714}\label{classKatabatic_1_1GCell_ad0dda8d59162b90040263fc55d7da714}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+H\+Capacity@{get\+H\+Capacity}}
\index{get\+H\+Capacity@{get\+H\+Capacity}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+H\+Capacity()}{getHCapacity()}}
{\footnotesize\ttfamily float get\+H\+Capacity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\begin{DoxyReturn}{Returns}
The number of track that can go through the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the horizontal direction. For a detailed explanation of the computation see \mbox{\hyperlink{classKatabatic_1_1GCell_secGCellTrackComputation}{Track Computation}}. 
\end{DoxyReturn}


References Box\+::get\+Height().



Referenced by G\+Cell\+::has\+Free\+Track(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a3994e204ebccf8aa12899e0c5ef4112b}\label{classKatabatic_1_1GCell_a3994e204ebccf8aa12899e0c5ef4112b}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+V\+Capacity@{get\+V\+Capacity}}
\index{get\+V\+Capacity@{get\+V\+Capacity}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+V\+Capacity()}{getVCapacity()}}
{\footnotesize\ttfamily float get\+V\+Capacity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\begin{DoxyReturn}{Returns}
The number of track that can go through the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} in the vertical direction. For a detailed explanation of the computation see \mbox{\hyperlink{classKatabatic_1_1GCell_secGCellTrackComputation}{Track Computation}}. 
\end{DoxyReturn}


References Box\+::get\+Width().



Referenced by G\+Cell\+::has\+Free\+Track(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ad31c16c87377e164728a0df55e21f96b}\label{classKatabatic_1_1GCell_ad31c16c87377e164728a0df55e21f96b}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Density@{get\+Density}}
\index{get\+Density@{get\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Density()}{getDensity()}}
{\footnotesize\ttfamily float get\+Density (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} The average density of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}, for all the depths.

\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDensity}{Saturation \& Density Computation}}, \mbox{\hyperlink{classKatabatic_1_1GCell_secGCellLazyEvaluation}{G\+Cell Lazy Evaluation}}. 

References G\+Cell\+Grid\+::\+Average\+H\+Density, G\+Cell\+Grid\+::\+Average\+H\+V\+Density, G\+Cell\+Grid\+::\+Average\+V\+Density, G\+Cell\+Grid\+::get\+Density\+Mode(), G\+Cell\+::get\+G\+Cell\+Grid(), G\+Cell\+::is\+Valid(), G\+Cell\+Grid\+::\+Max\+Density, G\+Cell\+Grid\+::\+Max\+H\+Density, G\+Cell\+Grid\+::\+Max\+H\+V\+Density, G\+Cell\+Grid\+::\+Max\+V\+Density, and G\+Cell\+::update\+Density().



Referenced by G\+Cell\+::is\+Above\+Density(), and G\+Cell\+::is\+Saturated().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ae56b981fad5960835faef809ec282cfa}\label{classKatabatic_1_1GCell_ae56b981fad5960835faef809ec282cfa}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+C\+Density@{get\+C\+Density}}
\index{get\+C\+Density@{get\+C\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+C\+Density()}{getCDensity()}}
{\footnotesize\ttfamily float get\+C\+Density (\begin{DoxyParamCaption}\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The density of contacts.

\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDensity}{Saturation \& Density Computation}}, \mbox{\hyperlink{classKatabatic_1_1GCell_secGCellLazyEvaluation}{G\+Cell Lazy Evaluation}}. 

References G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_aa64538731e911c60eeaea557be1c7740}\label{classKatabatic_1_1GCell_aa64538731e911c60eeaea557be1c7740}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+W\+Density@{get\+W\+Density}}
\index{get\+W\+Density@{get\+W\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+W\+Density()}{getWDensity()}}
{\footnotesize\ttfamily float get\+W\+Density (\begin{DoxyParamCaption}\item[{unsigned int}]{depth,  }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The density of wires at {\ttfamily depth}.

\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDensity}{Saturation \& Density Computation}}, \mbox{\hyperlink{classKatabatic_1_1GCell_secGCellLazyEvaluation}{G\+Cell Lazy Evaluation}}. 

References G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().



Referenced by Auto\+Horizontal\+::can\+Move\+U\+Left(), Auto\+Vertical\+::can\+Move\+U\+Left(), Auto\+Horizontal\+::can\+Move\+U\+Right(), and Auto\+Vertical\+::can\+Move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ab37ffda5a2e1ba60931d32c29237bd33}\label{classKatabatic_1_1GCell_ab37ffda5a2e1ba60931d32c29237bd33}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Blockage@{get\+Blockage}}
\index{get\+Blockage@{get\+Blockage}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Blockage()}{getBlockage()}}
{\footnotesize\ttfamily \textbf{ Db\+U\+::\+Unit} get\+Blockage (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The total length of blockage wire on layer at {\ttfamily depth}. \mbox{\Hypertarget{classKatabatic_1_1GCell_a44ec8d16030b5900bd0ccc02652b727f}\label{classKatabatic_1_1GCell_a44ec8d16030b5900bd0ccc02652b727f}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Fragmentation@{get\+Fragmentation}}
\index{get\+Fragmentation@{get\+Fragmentation}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Fragmentation()}{getFragmentation()}}
{\footnotesize\ttfamily float get\+Fragmentation (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The longest free fragment size on layer {\ttfamily depth} (in percent). 

References G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().



Referenced by Auto\+Segment\+::can\+Move\+Up().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a14feed45699c8dc406251519dc08bc79}\label{classKatabatic_1_1GCell_a14feed45699c8dc406251519dc08bc79}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Feedthroughs@{get\+Feedthroughs}}
\index{get\+Feedthroughs@{get\+Feedthroughs}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Feedthroughs()}{getFeedthroughs()}}
{\footnotesize\ttfamily float get\+Feedthroughs (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The estimate number of {\itshape occupied} tracks on layer {\ttfamily depth}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellFeedthrough}{Feedthrough Computation}} 
\end{DoxySeeAlso}


References G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a4785bcc49da76fc38f6940f5b1cc5b17}\label{classKatabatic_1_1GCell_a4785bcc49da76fc38f6940f5b1cc5b17}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Globals\+Count@{get\+Globals\+Count}}
\index{get\+Globals\+Count@{get\+Globals\+Count}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Globals\+Count()}{getGlobalsCount()}}
{\footnotesize\ttfamily float get\+Globals\+Count (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} The number of global wires that go completly through the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} at layer {\ttfamily depth}. This do not includes the global wires that begins or ends in the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 

References G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a81575302a8794958c310dc101807e9c5}\label{classKatabatic_1_1GCell_a81575302a8794958c310dc101807e9c5}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+H\+Segments@{get\+H\+Segments}}
\index{get\+H\+Segments@{get\+H\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+H\+Segments()}{getHSegments()}}
{\footnotesize\ttfamily const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ $>$ \& get\+H\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The vector of all horizontal Auto\+Segments that completly goes through the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}
\mbox{\Hypertarget{classKatabatic_1_1GCell_ac3c357d72a24990494758dcc216e3b1e}\label{classKatabatic_1_1GCell_ac3c357d72a24990494758dcc216e3b1e}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+V\+Segments@{get\+V\+Segments}}
\index{get\+V\+Segments@{get\+V\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+V\+Segments()}{getVSegments()}}
{\footnotesize\ttfamily const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$ $>$ \& get\+V\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The vector of all vertical Auto\+Segments that completly goes through the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}
\mbox{\Hypertarget{classKatabatic_1_1GCell_aacf50ce6dcef3a7523453725af7feeae}\label{classKatabatic_1_1GCell_aacf50ce6dcef3a7523453725af7feeae}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Contacts@{get\+Contacts}}
\index{get\+Contacts@{get\+Contacts}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Contacts()}{getContacts()}}
{\footnotesize\ttfamily const vector$<$ \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$ $>$ \& get\+Contacts (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The vector of all Auto\+Contacts owned by the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}
\mbox{\Hypertarget{classKatabatic_1_1GCell_a79668a41675e9ba0ca59d4b91e3b70be}\label{classKatabatic_1_1GCell_a79668a41675e9ba0ca59d4b91e3b70be}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+H\+Start\+Segments@{get\+H\+Start\+Segments}}
\index{get\+H\+Start\+Segments@{get\+H\+Start\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+H\+Start\+Segments()}{getHStartSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+H\+Start\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
A Collection of the horizontal Auto\+Segments that starts from this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}


References Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Source.



Referenced by G\+Cell\+::get\+Start\+Segments().

\mbox{\Hypertarget{classKatabatic_1_1GCell_acbd17a4441905a4f5bc33a26bb338d0a}\label{classKatabatic_1_1GCell_acbd17a4441905a4f5bc33a26bb338d0a}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+V\+Start\+Segments@{get\+V\+Start\+Segments}}
\index{get\+V\+Start\+Segments@{get\+V\+Start\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+V\+Start\+Segments()}{getVStartSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+V\+Start\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
A Collection of the vertical Auto\+Segments that starts from this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}


References Katabatic\+::\+Kb\+Source, and Katabatic\+::\+Kb\+Vertical.



Referenced by G\+Cell\+::get\+Start\+Segments().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a77beccf65527a330f15bed2aba4f9dea}\label{classKatabatic_1_1GCell_a77beccf65527a330f15bed2aba4f9dea}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+H\+Stop\+Segments@{get\+H\+Stop\+Segments}}
\index{get\+H\+Stop\+Segments@{get\+H\+Stop\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+H\+Stop\+Segments()}{getHStopSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+H\+Stop\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
A Collection of the horizontal Auto\+Segments that stops in this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}


References Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Target.



Referenced by G\+Cell\+::get\+Stop\+Segments().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a2f0f038f5700b7b55f22829c5d43aa07}\label{classKatabatic_1_1GCell_a2f0f038f5700b7b55f22829c5d43aa07}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+V\+Stop\+Segments@{get\+V\+Stop\+Segments}}
\index{get\+V\+Stop\+Segments@{get\+V\+Stop\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+V\+Stop\+Segments()}{getVStopSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+V\+Stop\+Segments (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
A Collection of the vertical Auto\+Segments that stops in this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 
\end{DoxyReturn}


References Katabatic\+::\+Kb\+Target, and Katabatic\+::\+Kb\+Vertical.



Referenced by G\+Cell\+::get\+Stop\+Segments().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a1f92568d22b1384a8cdf328340fb9160}\label{classKatabatic_1_1GCell_a1f92568d22b1384a8cdf328340fb9160}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Start\+Segments@{get\+Start\+Segments}}
\index{get\+Start\+Segments@{get\+Start\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Start\+Segments()}{getStartSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+Start\+Segments (\begin{DoxyParamCaption}\item[{unsigned int}]{direction }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
A Collection of the horizontal or vertical Auto\+Segments that starts from this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} according to {\ttfamily direction}. 
\end{DoxyReturn}


References G\+Cell\+::get\+H\+Start\+Segments(), G\+Cell\+::get\+V\+Start\+Segments(), and Katabatic\+::\+Kb\+Horizontal.

\mbox{\Hypertarget{classKatabatic_1_1GCell_a80ad0f9e79bccf6aed4fb69b4b795005}\label{classKatabatic_1_1GCell_a80ad0f9e79bccf6aed4fb69b4b795005}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Stop\+Segments@{get\+Stop\+Segments}}
\index{get\+Stop\+Segments@{get\+Stop\+Segments}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Stop\+Segments()}{getStopSegments()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceKatabatic_a2221b0ddbc24f331809fc86f98e38041}{Auto\+Segments}} get\+Stop\+Segments (\begin{DoxyParamCaption}\item[{unsigned int}]{direction }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
A Collection of the horizontal or vertical Auto\+Segments that stops in this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} according to {\ttfamily direction}. 
\end{DoxyReturn}


References G\+Cell\+::get\+H\+Stop\+Segments(), G\+Cell\+::get\+V\+Stop\+Segments(), and Katabatic\+::\+Kb\+Horizontal.

\mbox{\Hypertarget{classKatabatic_1_1GCell_a3bda8c3dbb2896a0e6e57f974d0c1cad}\label{classKatabatic_1_1GCell_a3bda8c3dbb2896a0e6e57f974d0c1cad}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Routing\+Pads@{get\+Routing\+Pads}}
\index{get\+Routing\+Pads@{get\+Routing\+Pads}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Routing\+Pads()}{getRoutingPads()}}
{\footnotesize\ttfamily size\+\_\+t get\+Routing\+Pads (\begin{DoxyParamCaption}\item[{set$<$ \textbf{ Routing\+Pad} $\ast$$>$ \&}]{rps }\end{DoxyParamCaption})}

\begin{DoxyReturn}{Returns}
The size of the Routing\+Pad set.
\end{DoxyReturn}
Fills the {\ttfamily rps} set with all the Routing\+Pads that appears in this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. (looks at all the anchors of the owned \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}}) 

Referenced by G\+Cell\+::rp\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_ade1e79e88bf4f4c173ffd083dd5470c9}\label{classKatabatic_1_1GCell_ade1e79e88bf4f4c173ffd083dd5470c9}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!get\+Key@{get\+Key}}
\index{get\+Key@{get\+Key}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{get\+Key()}{getKey()}}
{\footnotesize\ttfamily const \mbox{\hyperlink{classKatabatic_1_1GCell_1_1Key}{Key}} \& get\+Key (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\begin{DoxyReturn}{Returns}
The sorting key of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellSortingKey}{G\+Cell Sorting Key}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{classKatabatic_1_1GCell_a88208864ba2268689946a8cb7a86fcb2}\label{classKatabatic_1_1GCell_a88208864ba2268689946a8cb7a86fcb2}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!check\+Density@{check\+Density}}
\index{check\+Density@{check\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{check\+Density()}{checkDensity()}}
{\footnotesize\ttfamily size\+\_\+t check\+Density (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

\begin{DoxyReturn}{Returns}
{\ttfamily 1} if the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is saturated, 0 otherwise.
\end{DoxyReturn}
Check, if the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is saturated, layer by layer. Issue a warning if that is the case. 

References Session\+::do\+Warn\+G\+Cell\+Overload(), G\+Cell\+::get\+Column(), G\+Cell\+::get\+Name(), Session\+::get\+Routing\+Gauge(), G\+Cell\+::get\+Row(), Session\+::is\+In\+Demo\+Mode(), G\+Cell\+::is\+Saturated(), G\+Cell\+::is\+Valid(), and G\+Cell\+::update\+Density().



Referenced by G\+Cell\+::update\+Density().

\mbox{\Hypertarget{classKatabatic_1_1GCell_af4dcc99733b7ea77e8c3c7da9ac3cd3c}\label{classKatabatic_1_1GCell_af4dcc99733b7ea77e8c3c7da9ac3cd3c}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!check\+Edge\+Saturation@{check\+Edge\+Saturation}}
\index{check\+Edge\+Saturation@{check\+Edge\+Saturation}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{check\+Edge\+Saturation()}{checkEdgeSaturation()}}
{\footnotesize\ttfamily bool check\+Edge\+Saturation (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{hreserved,  }\item[{size\+\_\+t}]{vreserved }\end{DoxyParamCaption}) const}

\begin{DoxyReturn}{Returns}
{\bfseries true} if the Up/\+Right edge is over the {\ttfamily threshold}.
\end{DoxyReturn}
Check if the number of Auto\+Segments crossing the Up \& Right edges of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} exceed {\ttfamily threshold}. The {\ttfamily thresold} must be expressed as a percentage of the full capacity of the edges. The overload is computed as a whole and not depth by depth. 

References G\+Cell\+::get\+G\+Cell\+Grid(), G\+Cell\+Grid\+::get\+H\+Edge\+Capacity(), G\+Cell\+::get\+Right(), G\+Cell\+::get\+Up(), G\+Cell\+Grid\+::get\+V\+Edge\+Capacity(), Auto\+Segment\+::is\+Local(), and Session\+::lookup().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a1270eab34ac57f21c0286a5455044a0d}\label{classKatabatic_1_1GCell_a1270eab34ac57f21c0286a5455044a0d}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!add\+Blockage@{add\+Blockage}}
\index{add\+Blockage@{add\+Blockage}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{add\+Blockage()}{addBlockage()}}
{\footnotesize\ttfamily void add\+Blockage (\begin{DoxyParamCaption}\item[{unsigned int}]{depth,  }\item[{\textbf{ Db\+U\+::\+Unit}}]{length }\end{DoxyParamCaption})}

Adds {\ttfamily length} of wire blockage to layer {\ttfamily depth}. 

References Db\+U\+::get\+Value\+String().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a4aad7d6f7357fd7963aab91bc2019a1b}\label{classKatabatic_1_1GCell_a4aad7d6f7357fd7963aab91bc2019a1b}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!add\+H\+Segment@{add\+H\+Segment}}
\index{add\+H\+Segment@{add\+H\+Segment}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{add\+H\+Segment()}{addHSegment()}}
{\footnotesize\ttfamily void add\+H\+Segment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}]{segment }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Adds {\ttfamily segment} to the list of horizontal feedthroughs. 

Referenced by Auto\+Horizontal\+::\+\_\+post\+Create(), Auto\+Vertical\+::move\+U\+Left(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a8aa815e9e99df8187e628f6ec9e9da77}\label{classKatabatic_1_1GCell_a8aa815e9e99df8187e628f6ec9e9da77}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!add\+V\+Segment@{add\+V\+Segment}}
\index{add\+V\+Segment@{add\+V\+Segment}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{add\+V\+Segment()}{addVSegment()}}
{\footnotesize\ttfamily void add\+V\+Segment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}]{segment }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Adds {\ttfamily segment} to the list of vertical feedthroughs. 

Referenced by Auto\+Vertical\+::\+\_\+post\+Create(), Auto\+Horizontal\+::move\+U\+Left(), and Auto\+Horizontal\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a2b84aab620bfca1064e988e94e7b9c59}\label{classKatabatic_1_1GCell_a2b84aab620bfca1064e988e94e7b9c59}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!add\+Contact@{add\+Contact}}
\index{add\+Contact@{add\+Contact}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{add\+Contact()}{addContact()}}
{\footnotesize\ttfamily void add\+Contact (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{contact }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Adds {\ttfamily contact} to the list of contacts owned by this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 

Referenced by Auto\+Contact\+::set\+G\+Cell().

\mbox{\Hypertarget{classKatabatic_1_1GCell_abe128484d8aa063198292a88c63f2bba}\label{classKatabatic_1_1GCell_abe128484d8aa063198292a88c63f2bba}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!remove\+V\+Segment@{remove\+V\+Segment}}
\index{remove\+V\+Segment@{remove\+V\+Segment}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{remove\+V\+Segment()}{removeVSegment()}}
{\footnotesize\ttfamily void remove\+V\+Segment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}]{segment }\end{DoxyParamCaption})}

Removes {\ttfamily segment} to the list of vertical feedthroughs. 

Referenced by Auto\+Vertical\+::\+\_\+make\+Dogleg(), Auto\+Vertical\+::\+\_\+pre\+Destroy(), Auto\+Horizontal\+::move\+U\+Left(), and Auto\+Horizontal\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_aff76aa96214c0efcf13186b8b3e5c852}\label{classKatabatic_1_1GCell_aff76aa96214c0efcf13186b8b3e5c852}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!remove\+H\+Segment@{remove\+H\+Segment}}
\index{remove\+H\+Segment@{remove\+H\+Segment}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{remove\+H\+Segment()}{removeHSegment()}}
{\footnotesize\ttfamily void remove\+H\+Segment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}]{segment }\end{DoxyParamCaption})}

Removes {\ttfamily segment} to the list of horizontal feedthroughs. 

Referenced by Auto\+Horizontal\+::\+\_\+make\+Dogleg(), Auto\+Horizontal\+::\+\_\+pre\+Destroy(), Auto\+Vertical\+::move\+U\+Left(), and Auto\+Vertical\+::move\+U\+Right().

\mbox{\Hypertarget{classKatabatic_1_1GCell_aa052a9427fbd4185f00567a97770f80b}\label{classKatabatic_1_1GCell_aa052a9427fbd4185f00567a97770f80b}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!remove\+Contact@{remove\+Contact}}
\index{remove\+Contact@{remove\+Contact}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{remove\+Contact()}{removeContact()}}
{\footnotesize\ttfamily void remove\+Contact (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$}]{contact }\end{DoxyParamCaption})}

Removes {\ttfamily contact} to the list of contacts owned by this \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. 

References Auto\+Contact\+::base().

\mbox{\Hypertarget{classKatabatic_1_1GCell_aa0beea2ceaa543503346967085036d1a}\label{classKatabatic_1_1GCell_aa0beea2ceaa543503346967085036d1a}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!update\+Contacts@{update\+Contacts}}
\index{update\+Contacts@{update\+Contacts}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{update\+Contacts()}{updateContacts()}}
{\footnotesize\ttfamily void update\+Contacts (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

Force a geometry update on all the \mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. \mbox{\Hypertarget{classKatabatic_1_1GCell_a9b3455dce10eb98d0496175dd586528c}\label{classKatabatic_1_1GCell_a9b3455dce10eb98d0496175dd586528c}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!update\+Density@{update\+Density}}
\index{update\+Density@{update\+Density}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{update\+Density()}{updateDensity()}}
{\footnotesize\ttfamily size\+\_\+t update\+Density (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

{\bfseries Returns\+:} {\bfseries true} if the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is saturated.

Update the various densities of the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}}. No actual computation is performed if the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is {\itshape not} invalidated. 

References G\+Cell\+::check\+Density(), G\+Cell\+::get\+H\+Capacity(), Box\+::get\+Height(), Routing\+Gauge\+::get\+Layer\+Depth(), Session\+::get\+Routing\+Gauge(), G\+Cell\+::get\+V\+Capacity(), Box\+::get\+Width(), Box\+::get\+X\+Max(), Box\+::get\+X\+Min(), Box\+::get\+Y\+Max(), Box\+::get\+Y\+Min(), G\+Cell\+::is\+Saturated(), G\+Cell\+::is\+Valid(), Katabatic\+::\+Kb\+Horizontal, and Katabatic\+::\+Kb\+Vertical.



Referenced by G\+Cell\+::check\+Density(), G\+Cell\+::get\+C\+Density(), G\+Cell\+::get\+Density(), G\+Cell\+::get\+Feedthroughs(), G\+Cell\+::get\+Fragmentation(), G\+Cell\+::get\+Globals\+Count(), G\+Cell\+::get\+W\+Density(), G\+Cell\+::has\+Free\+Track(), G\+Cell\+::is\+Above\+Density(), G\+Cell\+::step\+Desaturate(), and G\+Cell\+::step\+Net\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a11beff0f0bec06d0f3e080969516dfc3}\label{classKatabatic_1_1GCell_a11beff0f0bec06d0f3e080969516dfc3}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!update\+Key@{update\+Key}}
\index{update\+Key@{update\+Key}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{update\+Key()}{updateKey()}}
{\footnotesize\ttfamily void update\+Key (\begin{DoxyParamCaption}\item[{unsigned int}]{depth }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}

Update the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} key with the new density at layer {\ttfamily depth}.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellSortingKey}{G\+Cell Sorting Key}}. 
\end{DoxySeeAlso}


References G\+Cell\+::\+Key\+::update().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a11f07f57cc33fcd4b2d310145c778801}\label{classKatabatic_1_1GCell_a11f07f57cc33fcd4b2d310145c778801}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!rp\+Desaturate@{rp\+Desaturate}}
\index{rp\+Desaturate@{rp\+Desaturate}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{rp\+Desaturate()}{rpDesaturate()}}
{\footnotesize\ttfamily bool rp\+Desaturate (\begin{DoxyParamCaption}\item[{set$<$ \textbf{ Net} $\ast$$>$ \&}]{nets }\end{DoxyParamCaption})}

If the number of Routing\+Pad in the first routing layer exceed the \mbox{\hyperlink{classKatabatic_1_1Session_adfdaa8b3e81de14fce1f99444b35fcda}{Session\+::get\+Saturate\+Rp()}} threshold, force a desaturation of layer {\ttfamily depth} 1 until it is below 0.\+5.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDesaturation}{G\+Cell Desaturation / Layer Assignment}} 
\end{DoxySeeAlso}


References Session\+::get\+Routing\+Layer(), G\+Cell\+::get\+Routing\+Pads(), Session\+::get\+Saturate\+Rp(), Katabatic\+::\+Kb\+Force\+Move, and G\+Cell\+::step\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_a5ae4d250ebecf59aa98fb068d848be14}\label{classKatabatic_1_1GCell_a5ae4d250ebecf59aa98fb068d848be14}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!step\+Desaturate@{step\+Desaturate}}
\index{step\+Desaturate@{step\+Desaturate}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{step\+Desaturate()}{stepDesaturate()}}
{\footnotesize\ttfamily bool step\+Desaturate (\begin{DoxyParamCaption}\item[{unsigned int}]{depth,  }\item[{set$<$ \textbf{ Net} $\ast$$>$ \&}]{global\+Nets,  }\item[{\mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$\&}]{moved,  }\item[{unsigned int}]{flags = {\ttfamily 0} }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em depth} & The depth to desaturate. \\
\hline
{\em global\+Nets} & The set of Nets of which at least one segment has been moved up. \\
\hline
{\em moved} & The moved up \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}}. \\
\hline
{\em flags} & If Kb\+Force\+Move is set, force one \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} to move up, event if the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is not saturated in the relevant depth.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} {\bfseries true} if an \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} has actually been moved up.

Perform the atomic desaturation, that is move up one \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} from layer {\ttfamily depth} to layer {\ttfamily depth+2}, longuests Auto\+Segments are moved first. Only global feedthrough Auto\+Segments are candidates to be moved up. The Net owning the moved up segment is added to the {\ttfamily global\+Nets} set. If the \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} is not saturated on layer {\ttfamily depth}, nothing is done. If the {\ttfamily forced} flag is set, one global \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} is moved up regardless of the saturation status.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDesaturation}{G\+Cell Desaturation / Layer Assignment}} 
\end{DoxySeeAlso}


References G\+Cell\+::get\+Index(), Routing\+Gauge\+::get\+Layer\+Depth(), Session\+::get\+Routing\+Gauge(), G\+Cell\+::is\+Saturated(), Katabatic\+::\+Kb\+Force\+Move, Katabatic\+::\+Kb\+Horizontal, Katabatic\+::\+Kb\+Vertical, and G\+Cell\+::update\+Density().



Referenced by G\+Cell\+::rp\+Desaturate().

\mbox{\Hypertarget{classKatabatic_1_1GCell_abe4cf4a81bb78e9b479992336a999a07}\label{classKatabatic_1_1GCell_abe4cf4a81bb78e9b479992336a999a07}} 
\index{Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}!step\+Net\+Desaturate@{step\+Net\+Desaturate}}
\index{step\+Net\+Desaturate@{step\+Net\+Desaturate}!Katabatic\+::\+G\+Cell@{Katabatic\+::\+G\+Cell}}
\subsubsection{\texorpdfstring{step\+Net\+Desaturate()}{stepNetDesaturate()}}
{\footnotesize\ttfamily bool step\+Net\+Desaturate (\begin{DoxyParamCaption}\item[{unsigned int}]{depth,  }\item[{set$<$ \textbf{ Net} $\ast$$>$ \&}]{global\+Nets,  }\item[{\mbox{\hyperlink{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}{G\+Cell\+::\+Set\+Index}} \&}]{invalidateds }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em depth} & The depth to desaturate. \\
\hline
{\em global\+Nets} & The set of Nets of which at least one segment has been moved up. \\
\hline
{\em invalidateds} & The set of \mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} ids that have been invalidateds.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} {\bfseries true} if a Net has been moved up.

Perform a desaturation by whole Net trunk. Select the longest feedthrough \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} in layer {\ttfamily depth}, then attempt to move up the whole Net (all it\textquotesingle{}s global Auto\+Segments are moved up).

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{classKatabatic_1_1GCell_secGCellDesaturation}{G\+Cell Desaturation / Layer Assignment}} 
\end{DoxySeeAlso}


References G\+Cell\+::get\+G\+Cell\+Grid(), Routing\+Gauge\+::get\+Layer\+Depth(), Session\+::get\+Routing\+Gauge(), Katabatic\+::\+Kb\+Horizontal, Katabatic\+::\+Kb\+Vertical, and G\+Cell\+::update\+Density().



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
G\+Cell.\+h\item 
G\+Cell.\+cpp\item 
G\+Cell.\+dox\end{DoxyCompactItemize}
