coriolis/katabatic/doc/html/classKatabatic_1_1GCell.html

1824 lines
131 KiB
HTML

<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Katabatic Documentation</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="SoC.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head>
<h1 id="pagetop" class="header">Katabatic - Routing Toolbox</h1>
<!--
<center class="header">
<table class="header">
<tr>
<td><a href="customSummary.html">Summary</a></td>
<td><a href="namespaces.html">Namespaces</a></td>
<td><a href="customHierarchy.html">Class Hierarchy</a></td>
<td><a href="annotated.html">Classes</a></td>
<td><a href="functions.html">Member Index</a></td>
</tr>
</table>
</center>
-->
<br>
<body onload="javascript:toggleLevel(1)">
<!-- Generated by Doxygen 1.8.5 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceKatabatic.html">Katabatic</a></li><li class="navelem"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="classKatabatic_1_1GCell-members.html">List of all members</a> &#124;
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> </div>
<div class="headertitle">
<div class="title">GCell Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Routing Global Cell.
<a href="classKatabatic_1_1GCell.html#details">More...</a></p>
<p>Inherits ExtensionGo.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell_1_1CompareByDensity.html">CompareByDensity</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> Density Comparison Functor. <a href="classKatabatic_1_1GCell_1_1CompareByDensity.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell_1_1CompareByIndex.html">CompareByIndex</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> Index Comparison Functor. <a href="classKatabatic_1_1GCell_1_1CompareByIndex.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell_1_1Key.html">Key</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> <a class="el" href="classKatabatic_1_1GCell_1_1Key.html" title="GCell Key - Density Cache. ">Key</a> - Density Cache. <a href="classKatabatic_1_1GCell_1_1Key.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aacb1c215b203bfba5729f135b3221d40"><td class="memItemLeft" align="right" valign="top">typedef set&lt; <a class="el" href="classKatabatic_1_1GCell.html">GCell</a> <br class="typebreak"/>
*, <a class="el" href="classKatabatic_1_1GCell_1_1CompareByIndex.html">CompareByIndex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aacb1c215b203bfba5729f135b3221d40">SetIndex</a></td></tr>
<tr class="separator:aacb1c215b203bfba5729f135b3221d40"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5e23c46b801d3049b349b68774a0d298"><td class="memItemLeft" align="right" valign="top">virtual const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Name.html">Name</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a5e23c46b801d3049b349b68774a0d298">getName</a> () const </td></tr>
<tr class="separator:a5e23c46b801d3049b349b68774a0d298"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e283a15a7f03a2e4184f6c8bd4e9340"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a9e283a15a7f03a2e4184f6c8bd4e9340">isSaturated</a> () const </td></tr>
<tr class="separator:a9e283a15a7f03a2e4184f6c8bd4e9340"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18ae2575758a4a5e4a42f145309a34de"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a18ae2575758a4a5e4a42f145309a34de">isSaturated</a> (unsigned int depth) const </td></tr>
<tr class="separator:a18ae2575758a4a5e4a42f145309a34de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1b70a2ed67ead038c4d3f5ac4d8a81"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">isValid</a> () const </td></tr>
<tr class="separator:aac1b70a2ed67ead038c4d3f5ac4d8a81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed5c1b0b1a63be3064f3eff2d24b4abd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aed5c1b0b1a63be3064f3eff2d24b4abd">isAboveDensity</a> (float threshold) const </td></tr>
<tr class="separator:aed5c1b0b1a63be3064f3eff2d24b4abd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe5a85792463184f487b42efd80cc25e"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">hasFreeTrack</a> (size_t depth, float reserve) const </td></tr>
<tr class="separator:abe5a85792463184f487b42efd80cc25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0702328522e94ca9705222cd5b9e9c6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKatabatic_1_1GCellGrid.html">GCellGrid</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">getGCellGrid</a> () const </td></tr>
<tr class="separator:a0702328522e94ca9705222cd5b9e9c6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad43be8bb2a3c8247405feef4fa973734"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ad43be8bb2a3c8247405feef4fa973734">getDepth</a> () const </td></tr>
<tr class="separator:ad43be8bb2a3c8247405feef4fa973734"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d2cc17c5b9eb2ca96ab10b6313391ad"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a3d2cc17c5b9eb2ca96ab10b6313391ad">getIndex</a> () const </td></tr>
<tr class="separator:a3d2cc17c5b9eb2ca96ab10b6313391ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14db4e8542de7da785abec87fa65d6a4"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a14db4e8542de7da785abec87fa65d6a4">getRow</a> () const </td></tr>
<tr class="separator:a14db4e8542de7da785abec87fa65d6a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0035603802c53109ab0581ac39239932"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a0035603802c53109ab0581ac39239932">getColumn</a> () const </td></tr>
<tr class="separator:a0035603802c53109ab0581ac39239932"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0aba3a4c02ade1a0af6d4956b2d4d944"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a0aba3a4c02ade1a0af6d4956b2d4d944">getLeft</a> () const </td></tr>
<tr class="separator:a0aba3a4c02ade1a0af6d4956b2d4d944"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23fdbef3699158d88da408ad8c23d091"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a23fdbef3699158d88da408ad8c23d091">getRight</a> () const </td></tr>
<tr class="separator:a23fdbef3699158d88da408ad8c23d091"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43374e26fb08fb4a4d47599e1f81e293"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a43374e26fb08fb4a4d47599e1f81e293">getUp</a> () const </td></tr>
<tr class="separator:a43374e26fb08fb4a4d47599e1f81e293"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a303e94e8090f008b434e785af9a34eb5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a303e94e8090f008b434e785af9a34eb5">getDown</a> () const </td></tr>
<tr class="separator:a303e94e8090f008b434e785af9a34eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a819f3ffbba69e4de2a19c827676b5aee"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a819f3ffbba69e4de2a19c827676b5aee">translate</a> (const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> &amp;, const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> &amp;)</td></tr>
<tr class="separator:a819f3ffbba69e4de2a19c827676b5aee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b9694bf093e3ea16e4a8c8126a8d4db"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a3b9694bf093e3ea16e4a8c8126a8d4db">getBoundingBox</a> () const </td></tr>
<tr class="separator:a3b9694bf093e3ea16e4a8c8126a8d4db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a852afe759ce2cb8cb9c0524fc1e23387"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a852afe759ce2cb8cb9c0524fc1e23387">getX</a> () const </td></tr>
<tr class="separator:a852afe759ce2cb8cb9c0524fc1e23387"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac597d25a34a79fb4393211c70f5a1bc3"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ac597d25a34a79fb4393211c70f5a1bc3">getY</a> () const </td></tr>
<tr class="separator:ac597d25a34a79fb4393211c70f5a1bc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae58d4705ca2370ad5e0912d9e92e94da"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ae58d4705ca2370ad5e0912d9e92e94da">getXMax</a> () const </td></tr>
<tr class="separator:ae58d4705ca2370ad5e0912d9e92e94da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98f8c479d4789850a926d87443e56e00"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a98f8c479d4789850a926d87443e56e00">getYMax</a> () const </td></tr>
<tr class="separator:a98f8c479d4789850a926d87443e56e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46861e2e666df89cd2e6eaa7ee146bcf"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a46861e2e666df89cd2e6eaa7ee146bcf">getSide</a> (unsigned int) const </td></tr>
<tr class="separator:a46861e2e666df89cd2e6eaa7ee146bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75e5f7e9b993087270e8b21eb1e71e8d"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a75e5f7e9b993087270e8b21eb1e71e8d">getHCapacity</a> () const </td></tr>
<tr class="separator:a75e5f7e9b993087270e8b21eb1e71e8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f58e38dbcd75ae549f3ce9526ce97e1"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a4f58e38dbcd75ae549f3ce9526ce97e1">getVCapacity</a> () const </td></tr>
<tr class="separator:a4f58e38dbcd75ae549f3ce9526ce97e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdc872b796225ad9d6414f59b6d503c1"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">getDensity</a> (unsigned int flags=0) const </td></tr>
<tr class="separator:abdc872b796225ad9d6414f59b6d503c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35c9f813f00788d8093faa5c37c846e3"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a35c9f813f00788d8093faa5c37c846e3">getCDensity</a> (unsigned int flags=0) const </td></tr>
<tr class="separator:a35c9f813f00788d8093faa5c37c846e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfacab8f1d78e38ece30b4d2c63cf6d9"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#acfacab8f1d78e38ece30b4d2c63cf6d9">getWDensity</a> (unsigned int depth, unsigned int flags=0) const </td></tr>
<tr class="separator:acfacab8f1d78e38ece30b4d2c63cf6d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3cd78c51e165f5242bb99ab5033ff871"><td class="memItemLeft" align="right" valign="top"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a3cd78c51e165f5242bb99ab5033ff871">getBlockage</a> (unsigned int depth) const </td></tr>
<tr class="separator:a3cd78c51e165f5242bb99ab5033ff871"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab154601770f4c29260c19364f130d534"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ab154601770f4c29260c19364f130d534">getFragmentation</a> (unsigned int depth) const </td></tr>
<tr class="separator:ab154601770f4c29260c19364f130d534"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b246f4d67f6a21d391d2f366d184092"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a1b246f4d67f6a21d391d2f366d184092">getFeedthroughs</a> (unsigned int depth) const </td></tr>
<tr class="separator:a1b246f4d67f6a21d391d2f366d184092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a315f23abf15d879459eab98a6eeece12"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a315f23abf15d879459eab98a6eeece12">getGlobalsCount</a> (unsigned int depth) const </td></tr>
<tr class="separator:a315f23abf15d879459eab98a6eeece12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad885baf0428b0ffa73738e60b9fb6956"><td class="memItemLeft" align="right" valign="top">const vector&lt; <a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ad885baf0428b0ffa73738e60b9fb6956">getHSegments</a> () const </td></tr>
<tr class="separator:ad885baf0428b0ffa73738e60b9fb6956"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c54706769cb88ca13d233726ded6f2f"><td class="memItemLeft" align="right" valign="top">const vector&lt; <a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a2c54706769cb88ca13d233726ded6f2f">getVSegments</a> () const </td></tr>
<tr class="separator:a2c54706769cb88ca13d233726ded6f2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2d662a9bbf5b80eb92776e4bce06ec5"><td class="memItemLeft" align="right" valign="top">const vector&lt; <a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> * &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ac2d662a9bbf5b80eb92776e4bce06ec5">getContacts</a> () const </td></tr>
<tr class="separator:ac2d662a9bbf5b80eb92776e4bce06ec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a79668a41675e9ba0ca59d4b91e3b70be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a79668a41675e9ba0ca59d4b91e3b70be">getHStartSegments</a> ()</td></tr>
<tr class="separator:a79668a41675e9ba0ca59d4b91e3b70be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbd17a4441905a4f5bc33a26bb338d0a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#acbd17a4441905a4f5bc33a26bb338d0a">getVStartSegments</a> ()</td></tr>
<tr class="separator:acbd17a4441905a4f5bc33a26bb338d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77beccf65527a330f15bed2aba4f9dea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a77beccf65527a330f15bed2aba4f9dea">getHStopSegments</a> ()</td></tr>
<tr class="separator:a77beccf65527a330f15bed2aba4f9dea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f0f038f5700b7b55f22829c5d43aa07"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a2f0f038f5700b7b55f22829c5d43aa07">getVStopSegments</a> ()</td></tr>
<tr class="separator:a2f0f038f5700b7b55f22829c5d43aa07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f92568d22b1384a8cdf328340fb9160"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a1f92568d22b1384a8cdf328340fb9160">getStartSegments</a> (unsigned int direction)</td></tr>
<tr class="separator:a1f92568d22b1384a8cdf328340fb9160"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80ad0f9e79bccf6aed4fb69b4b795005"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a80ad0f9e79bccf6aed4fb69b4b795005">getStopSegments</a> (unsigned int direction)</td></tr>
<tr class="separator:a80ad0f9e79bccf6aed4fb69b4b795005"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63d53a84324e393e7d7b3e73548ed6bf"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a63d53a84324e393e7d7b3e73548ed6bf">getRoutingPads</a> (set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1RoutingPad.html">RoutingPad</a> * &gt; &amp;)</td></tr>
<tr class="separator:a63d53a84324e393e7d7b3e73548ed6bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab17b3f4c7e2558bc29ea026925fd6fd6"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classKatabatic_1_1GCell_1_1Key.html">Key</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ab17b3f4c7e2558bc29ea026925fd6fd6">getKey</a> () const </td></tr>
<tr class="separator:ab17b3f4c7e2558bc29ea026925fd6fd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f5167eb40def2cfa878913743079f03"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">checkDensity</a> () const </td></tr>
<tr class="separator:a8f5167eb40def2cfa878913743079f03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fb331311568ccb14d2005065575dc28"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a0fb331311568ccb14d2005065575dc28">checkEdgeSaturation</a> (size_t hreserved, size_t vreserved) const </td></tr>
<tr class="separator:a0fb331311568ccb14d2005065575dc28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1270eab34ac57f21c0286a5455044a0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a1270eab34ac57f21c0286a5455044a0d">addBlockage</a> (unsigned int depth, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>)</td></tr>
<tr class="separator:a1270eab34ac57f21c0286a5455044a0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4aad7d6f7357fd7963aab91bc2019a1b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a4aad7d6f7357fd7963aab91bc2019a1b">addHSegment</a> (<a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *)</td></tr>
<tr class="separator:a4aad7d6f7357fd7963aab91bc2019a1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8aa815e9e99df8187e628f6ec9e9da77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a8aa815e9e99df8187e628f6ec9e9da77">addVSegment</a> (<a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *)</td></tr>
<tr class="separator:a8aa815e9e99df8187e628f6ec9e9da77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b84aab620bfca1064e988e94e7b9c59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a2b84aab620bfca1064e988e94e7b9c59">addContact</a> (<a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> *)</td></tr>
<tr class="separator:a2b84aab620bfca1064e988e94e7b9c59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe128484d8aa063198292a88c63f2bba"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#abe128484d8aa063198292a88c63f2bba">removeVSegment</a> (<a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *)</td></tr>
<tr class="separator:abe128484d8aa063198292a88c63f2bba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff76aa96214c0efcf13186b8b3e5c852"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aff76aa96214c0efcf13186b8b3e5c852">removeHSegment</a> (<a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *)</td></tr>
<tr class="separator:aff76aa96214c0efcf13186b8b3e5c852"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa052a9427fbd4185f00567a97770f80b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aa052a9427fbd4185f00567a97770f80b">removeContact</a> (<a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> *)</td></tr>
<tr class="separator:aa052a9427fbd4185f00567a97770f80b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0beea2ceaa543503346967085036d1a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aa0beea2ceaa543503346967085036d1a">updateContacts</a> ()</td></tr>
<tr class="separator:aa0beea2ceaa543503346967085036d1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b3455dce10eb98d0496175dd586528c"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">updateDensity</a> ()</td></tr>
<tr class="separator:a9b3455dce10eb98d0496175dd586528c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11beff0f0bec06d0f3e080969516dfc3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a11beff0f0bec06d0f3e080969516dfc3">updateKey</a> (unsigned int depth)</td></tr>
<tr class="separator:a11beff0f0bec06d0f3e080969516dfc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8785f0ae0bc6de278281c353734b67b7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a8785f0ae0bc6de278281c353734b67b7">rpDesaturate</a> (set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;)</td></tr>
<tr class="separator:a8785f0ae0bc6de278281c353734b67b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1256c28423a9a260d320e25b3fc1bf57"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">stepDesaturate</a> (unsigned int depth, set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;, <a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&amp;moved, unsigned int flags=0)</td></tr>
<tr class="separator:a1256c28423a9a260d320e25b3fc1bf57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab5b30c49b0453db495337931cf284a9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#aab5b30c49b0453db495337931cf284a9">stepNetDesaturate</a> (unsigned int depth, set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;globalNets, <a class="el" href="classKatabatic_1_1GCell.html#aacb1c215b203bfba5729f135b3221d40">SetIndex</a> &amp;invalidateds)</td></tr>
<tr class="separator:aab5b30c49b0453db495337931cf284a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a91c8bc1a6bdb1b15c3c084ebfd38af47"><td class="memItemLeft" align="right" valign="top">static size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a91c8bc1a6bdb1b15c3c084ebfd38af47">getAllocateds</a> ()</td></tr>
<tr class="separator:a91c8bc1a6bdb1b15c3c084ebfd38af47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac594cb2832ee7ef410c89499258d38fd"><td class="memItemLeft" align="right" valign="top">static <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#ac594cb2832ee7ef410c89499258d38fd">getTopRightShrink</a> ()</td></tr>
<tr class="separator:ac594cb2832ee7ef410c89499258d38fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00e56270cfb31f56e52e31afbc33ba71"><td class="memItemLeft" align="right" valign="top">static const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Name.html">Name</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKatabatic_1_1GCell.html#a00e56270cfb31f56e52e31afbc33ba71">getStaticName</a> ()</td></tr>
<tr class="separator:a00e56270cfb31f56e52e31afbc33ba71"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Routing Global Cell. </p>
<h1><a class="anchor" id="secGCellDescription"></a>
GCell Description</h1>
<p>Please note that there are two kind of Global Cells (or <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> for short):</p>
<ul>
<li>The <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> used by the global router Knik.</li>
<li>The <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> used by the detailed router (<a class="el" href="namespaceKatabatic.html" title="The namespace dedicated to Katabatic. ">Katabatic</a> &amp; Kite). Although the information they hold is obviously related, they are two separate kind of objects.</li>
</ul>
<p>The area of the design to be routed is divided in a regular grid of rectangular area, the <a class="el" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. ">GCellGrid</a>. Each rectangular area is a <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>.</p>
<p>The <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> contains the following informations:</p>
<ul>
<li>The AutoSegments that begins or ends in it. The list of segments is not avalaible directly but through the AutoContacts that are owned by the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>.</li>
<li>The AutoSegments that go straight <em>through</em> it (or <em>over</em> it). Horizontal &amp; Vertical segments are stored in two separeted list. Those two lists are sorted by layer depth (the deepest layers first).</li>
<li>A lot of synthetic information about the density of tracks used in the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>.</li>
</ul>
<p>AutoContacts are affected to GCells, the area of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is the one into which the <a class="el" href="classKatabatic_1_1AutoContact.html" title="Abstract base class for AutoContact. ">AutoContact</a> is allowed to be placed. It is this that way that the respect of the global routing choosen by Knik is enforced. See the <a class="el" href="classKatabatic_1_1AutoContact.html" title="Abstract base class for AutoContact. ">AutoContact</a> constraint box.</p>
<p>When tracks are aligned with the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> boundaries they one exactly on the boundary can belong to the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> on either side of the boundary. But we want a clear and mutually exclusive ownership of each <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> area. So, we choose that one <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> do not own the topmost and rightmost track. And to implement it, we shrink top and right coordinates by the amount of <a class="el" href="classKatabatic_1_1GCell.html#ac594cb2832ee7ef410c89499258d38fd">GCell::getTopRightShrink()</a>, which must be less than the track spacing.</p>
<h2><a class="anchor" id="secGCellDensity"></a>
Saturation &amp; Density Computation</h2>
<p>At any depth (i.e. layer), in the preferred routing direction, a <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> can pass a finite length of wire. For example on an horizontal preferred layer: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ WL_{max} = width(GCell) \times Htracks(GCell) \]" src="form_0.png"/>
</p>
<p> Then the density, is the ratio between <img class="formulaInl" alt="$WL_{max}$" src="form_1.png"/> and the actually used wirelength: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ Wdensity(depth) = \frac{WL_{used}(depth)}{WL_{max}(depth)} \]" src="form_2.png"/>
</p>
<p> Normally, the ratio musn't exceed 1.0, but the occupied wire length computation, for now, doesn'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.</p>
<p>A Cell is considered as <em>saturated</em> if the overall density is above the saturation ratio given by <a class="el" href="classKatabatic_1_1Session.html#a266a4079ca235e8fdb622ef4996d324d">Session::getSaturateRatio()</a>.</p>
<p>Contact density is calculated as follow: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ Cont_{density} = \frac{|Contacts|}{Htracks \times Vtracks \times 4} \]" src="form_3.png"/>
</p>
<p> It is a ratio over the number of actual contacts in the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> 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).</p>
<p>Should not be hardwired... <span class="red"><em>To be corrected in future versions.</em></span></p>
<h2><a class="anchor" id="secGCellFeedthrough"></a>
Feedthrough Computation</h2>
<p>The feedtrough value is an estimate is of how many complete tracks have been used on a given layer of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. It varies between zero and the number of track on the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> (complete saturation). As an estimate, it doesn't tell you the actual number of free track, but how many you <em>may expect</em> assuming the routing is reasonably well done.</p>
<p>Computation is done as follow: </p>
<table class="DoxUser">
<tr>
<th>Wire type</th><th>Estimated Cost </th></tr>
<tr>
<td>Straight wire (feedthrough) </td><td><b>1.0</b> </td></tr>
<tr>
<td>Beginning or ending global wire </td><td><b>0.5</b> </td></tr>
<tr>
<td>Local wire. </td><td><b>1/3</b> </td></tr>
<tr>
<td>Blockage wire </td><td>The exact percentage of the track </td></tr>
</table>
<h2><a class="anchor" id="secGCellTrackComputation"></a>
Track Computation</h2>
<p>The number of track that can go through a <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the horizontal direction is computed as follow: </p>
<p class="formulaDsp">
<img class="formulaDsp" alt="\[ Htracks = \frac{heigth(GCell)}{Vpitch} + 1 \]" src="form_4.png"/>
</p>
<p>The pitch is assumed to be the same for every layer and is hardwired to 5.0 lambda.</p>
<p>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... <span class="red"><em>To be corrected in future versions</em></span>.</p>
<h1><a class="anchor" id="secGCellLazyEvaluation"></a>
GCell Lazy Evaluation</h1>
<p>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 <em>and</em> the lazy evaluation <em>not</em> explicitly disabled (flag NoUpdate).</p>
<h1><a class="anchor" id="secGCellSortingKey"></a>
GCell Sorting Key</h1>
<p>In order to perform a lexicographical sort on the tuple <img class="formulaInl" alt="$(density(depth),id)$" src="form_5.png"/> of a <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>, a specific slave object <a class="el" href="classKatabatic_1_1GCell_1_1Key.html" title="GCell Key - Density Cache. ">GCell::Key</a> is introduced. It is the density on one specific depth, not the average density.</p>
<h1><a class="anchor" id="secGCellDesaturation"></a>
GCell Desaturation / Layer Assignment</h1>
<p>In addition to it's geometrical and density functionality, the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> provides <em>desaturation</em> capabilities. Desaturation is the operation of moving up feedthough <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> 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.</p>
<p>Two strategies are avalaibles, moving one global <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> at a time with <a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">GCell::stepDesaturate()</a> or, when one <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> is moved up, move up the whole net trunk with <a class="el" href="classKatabatic_1_1GCell.html#aab5b30c49b0453db495337931cf284a9">GCell::stepNetDesaturate()</a>.</p>
<h1><a class="anchor" id="secGCellImplantation"></a>
GCell Implantation</h1>
<p><a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> derives from Hurricane::ExtensionGo to allow a graphical rendering of the routing density. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="aacb1c215b203bfba5729f135b3221d40"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef set&lt; <a class="el" href="classKatabatic_1_1GCell.html">GCell</a> *, <a class="el" href="classKatabatic_1_1GCell_1_1CompareByIndex.html">CompareByIndex</a> &gt; <a class="el" href="classKatabatic_1_1GCell.html#aacb1c215b203bfba5729f135b3221d40">SetIndex</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Shorthand for a set of <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> sorted on their index. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a91c8bc1a6bdb1b15c3c084ebfd38af47"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">size_t getAllocateds </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The number of allocated GCells. </p>
</div>
</div>
<a class="anchor" id="ac594cb2832ee7ef410c89499258d38fd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getTopRightShrink </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The amount of shrink on the top and right boundaries. </p>
</div>
</div>
<a class="anchor" id="a00e56270cfb31f56e52e31afbc33ba71"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Name.html">Name</a> &amp; getStaticName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The name of the Go slice: <code>"Katabatic::GCell"</code>.</p>
<dl class="section see"><dt>See Also</dt><dd>Hurricane::ExtensionGo </dd></dl>
</div>
</div>
<a class="anchor" id="a5e23c46b801d3049b349b68774a0d298"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Name.html">Name</a> &amp; getName </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The name of the Go slice: <code>"Katabatic::GCell"</code>.</p>
<dl class="section see"><dt>See Also</dt><dd>Hurricane::ExtensionGo </dd></dl>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a9e283a15a7f03a2e4184f6c8bd4e9340"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isSaturated </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if at least one layer exceed a saturation of <code>1.0</code> (more wirelength that it can hold). </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">GCell::stepDesaturate()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a18ae2575758a4a5e4a42f145309a34de"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool isSaturated </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if the saturation ratio of layer <code>depth</code> is over the threshold defined for the GCells. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">GCell::getDensity()</a>, and <a class="el" href="classKatabatic_1_1Session.html#a266a4079ca235e8fdb622ef4996d324d">Session::getSaturateRatio()</a>.</p>
</div>
</div>
<a class="anchor" id="aac1b70a2ed67ead038c4d3f5ac4d8a81"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool isValid </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if all the AutoContact/AutoSegment of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> are valids. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a35c9f813f00788d8093faa5c37c846e3">GCell::getCDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">GCell::getDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a1b246f4d67f6a21d391d2f366d184092">GCell::getFeedthroughs()</a>, <a class="el" href="classKatabatic_1_1GCell.html#ab154601770f4c29260c19364f130d534">GCell::getFragmentation()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a315f23abf15d879459eab98a6eeece12">GCell::getGlobalsCount()</a>, <a class="el" href="classKatabatic_1_1GCell.html#acfacab8f1d78e38ece30b4d2c63cf6d9">GCell::getWDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">GCell::hasFreeTrack()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aed5c1b0b1a63be3064f3eff2d24b4abd">GCell::isAboveDensity()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="aed5c1b0b1a63be3064f3eff2d24b4abd"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool isAboveDensity </td>
<td>(</td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>threshold</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if the overall saturation ratio greater than <code>threshold</code>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">GCell::getDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="abe5a85792463184f487b42efd80cc25e"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool hasFreeTrack </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>depth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float&#160;</td>
<td class="paramname"><em>reserve</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if there should be enough wire length to pass a wire completly trough this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a75e5f7e9b993087270e8b21eb1e71e8d">GCell::getHCapacity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a3d2cc17c5b9eb2ca96ab10b6313391ad">GCell::getIndex()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/crlcore/doc/crlcore/html/crlcore.tag:../crlcore" href="../crlcore/classCRL_1_1RoutingGauge.html#a40e8127ea7a26b26c3e797571b03121a">RoutingGauge::getLayerDepth()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Layer.html#a3625264cf1cd8ca8ba8220441fc7e067">Layer::getName()</a>, <a class="el" href="classKatabatic_1_1Session.html#a9a05289b33122f312aa2c88c4b023292">Session::getRoutingGauge()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/crlcore/doc/crlcore/html/crlcore.tag:../crlcore" href="../crlcore/classCRL_1_1RoutingGauge.html#aaa35c92a1bd8fdf022014b684eab9b40">RoutingGauge::getRoutingLayer()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a4f58e38dbcd75ae549f3ce9526ce97e1">GCell::getVCapacity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a0702328522e94ca9705222cd5b9e9c6d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1GCellGrid.html">GCellGrid</a> * getGCellGrid </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The <a class="el" href="classKatabatic_1_1Grid.html" title="Template Class for Regular Grid. ">Grid</a> of which <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is part of. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a0fb331311568ccb14d2005065575dc28">GCell::checkEdgeSaturation()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">GCell::getDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a303e94e8090f008b434e785af9a34eb5">GCell::getDown()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a0aba3a4c02ade1a0af6d4956b2d4d944">GCell::getLeft()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a23fdbef3699158d88da408ad8c23d091">GCell::getRight()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a43374e26fb08fb4a4d47599e1f81e293">GCell::getUp()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#aab5b30c49b0453db495337931cf284a9">GCell::stepNetDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="ad43be8bb2a3c8247405feef4fa973734"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getDepth </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The depth (i.e. number of routing layers) of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
</div>
</div>
<a class="anchor" id="a3d2cc17c5b9eb2ca96ab10b6313391ad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">unsigned int getIndex </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The linear index of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the <a class="el" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. ">GCellGrid</a> vector.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. ">GCellGrid</a> for the meaning of the index. </dd></dl>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoSegment.html#a02e6ec81411b250d60dccc0da39964a6">AutoSegment::canMoveUp()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">GCell::hasFreeTrack()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">GCell::stepDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="a14db4e8542de7da785abec87fa65d6a4"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int getRow </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The row of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the <a class="el" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. ">GCellGrid</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#a3a813e40c392fb62c5b1b86d11f1dcb4">BaseGrid::getRow()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, and <a class="el" href="classKatabatic_1_1AutoSegment.html#a7654ca2b0787b8a9eac8629bf9218761">AutoSegment::computeOptimal()</a>.</p>
</div>
</div>
<a class="anchor" id="a0035603802c53109ab0581ac39239932"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned int getColumn </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The Column of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the <a class="el" href="classKatabatic_1_1GCellGrid.html" title="GCell Grid. ">GCellGrid</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1BaseGrid.html#a3ae31ad99809b916f386fe9bde67c6f2">BaseGrid::getColumn()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, and <a class="el" href="classKatabatic_1_1AutoSegment.html#a7654ca2b0787b8a9eac8629bf9218761">AutoSegment::computeOptimal()</a>.</p>
</div>
</div>
<a class="anchor" id="a0aba3a4c02ade1a0af6d4956b2d4d944"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> * getLeft </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The left neighbor of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> (<code>NULL</code> if it is the leftmost <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>). </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, and <a class="el" href="classKatabatic_1_1Grid.html#a2ae58a243a3f62f0f28e4e2b4b2bb308">Grid&lt; GCellT &gt;::getGCellLeft()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#aa9e85f38a842d1966eb72afccb446676">AutoVertical::canMoveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoVertical::moveULeft()</a>.</p>
</div>
</div>
<a class="anchor" id="a23fdbef3699158d88da408ad8c23d091"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> * getRight </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The right neighbor of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> (<code>NULL</code> if it is the rightmost <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>). </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, and <a class="el" href="classKatabatic_1_1Grid.html#a71483ce8b6a02771e89b410711179740">Grid&lt; GCellT &gt;::getGCellRight()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a36c0eecad40d3559b5378caefec6a7e0">AutoHorizontal::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a3715b38135ca24745f610bebd3407c10">AutoHorizontal::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7c13d9795eafd477994961f8a0d962d0">AutoHorizontal::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa9e85f38a842d1966eb72afccb446676">AutoHorizontal::canMoveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7559a856712400a9325665842e0bcd64">AutoHorizontal::canMoveURight()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a7559a856712400a9325665842e0bcd64">AutoVertical::canMoveURight()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a0fb331311568ccb14d2005065575dc28">GCell::checkEdgeSaturation()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#ab681dca7dc930e06cacc2de85bf99166">AutoHorizontal::getGCells()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a5ca22c853ee33a2b26367eaf29457766">AutoSegment::makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoHorizontal::moveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa469e37853e31f8b1bc817518c896d62">AutoHorizontal::moveURight()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#aa469e37853e31f8b1bc817518c896d62">AutoVertical::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="a43374e26fb08fb4a4d47599e1f81e293"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> * getUp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The top neighbor of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> (<code>NULL</code> if it is the topmost <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>). </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, and <a class="el" href="classKatabatic_1_1Grid.html#a6af56d56284dd6fde6e3a6c781cb4faf">Grid&lt; GCellT &gt;::getGCellUp()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#a36c0eecad40d3559b5378caefec6a7e0">AutoVertical::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a3715b38135ca24745f610bebd3407c10">AutoVertical::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a7c13d9795eafd477994961f8a0d962d0">AutoVertical::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#aa9e85f38a842d1966eb72afccb446676">AutoVertical::canMoveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7559a856712400a9325665842e0bcd64">AutoHorizontal::canMoveURight()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a7559a856712400a9325665842e0bcd64">AutoVertical::canMoveURight()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a0fb331311568ccb14d2005065575dc28">GCell::checkEdgeSaturation()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#ab681dca7dc930e06cacc2de85bf99166">AutoVertical::getGCells()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a5ca22c853ee33a2b26367eaf29457766">AutoSegment::makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoVertical::moveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa469e37853e31f8b1bc817518c896d62">AutoHorizontal::moveURight()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#aa469e37853e31f8b1bc817518c896d62">AutoVertical::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="a303e94e8090f008b434e785af9a34eb5"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classKatabatic_1_1GCell.html">GCell</a> * getDown </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The bottom neighbor of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> (<code>NULL</code> if it is the bottommost <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>). </p>
<p>References <a class="el" href="classKatabatic_1_1Grid.html#a594f0986971454bc9655d9943126ae8c">Grid&lt; GCellT &gt;::getGCellDown()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa9e85f38a842d1966eb72afccb446676">AutoHorizontal::canMoveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoHorizontal::moveULeft()</a>.</p>
</div>
</div>
<a class="anchor" id="a819f3ffbba69e4de2a19c827676b5aee"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void translate </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> &amp;&#160;</td>
<td class="paramname">, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> &amp;&#160;</td>
<td class="paramname">&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Required to exists as a <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Go.html">Hurricane::Go</a> derived class. But must never be used... </p>
</div>
</div>
<a class="anchor" id="a3b9694bf093e3ea16e4a8c8126a8d4db"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html">Box</a> getBoundingBox </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The bounding box of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>, with the top right shrink applied. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoSegment.html#ae64a61508d148cb4a0ee9b5ffb177659">AutoSegment::AutoSegment()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a7654ca2b0787b8a9eac8629bf9218761">AutoSegment::computeOptimal()</a>, and <a class="el" href="classKatabatic_1_1AutoContactTerminal.html#a762d33db26927e6db939a7420bb95743">AutoContactTerminal::getNativeConstraintBox()</a>.</p>
</div>
</div>
<a class="anchor" id="a852afe759ce2cb8cb9c0524fc1e23387"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getX </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The lower left X coordinate of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> box. </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#aface811f07334748f81b547336bb7658">Box::getXMin()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a36c0eecad40d3559b5378caefec6a7e0">AutoHorizontal::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a3715b38135ca24745f610bebd3407c10">AutoHorizontal::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7c13d9795eafd477994961f8a0d962d0">AutoHorizontal::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#a20ab0da1716ecd002f3abc76285dd5a1">AutoContact::getCBXMax()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#a0c391297a64d0ae15c14a6e803b0316e">AutoContact::getCBXMin()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#acedb5dbab9d0c872dc476fdbefff431c">AutoSegment::getOrigin()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#aaa7652f5db46cab9edb066d06ea979f9">AutoContact::setCBXMax()</a>, and <a class="el" href="classKatabatic_1_1AutoContact.html#a9fcb986110e79bc0044f7bfe503acc0c">AutoContact::setCBXMin()</a>.</p>
</div>
</div>
<a class="anchor" id="ac597d25a34a79fb4393211c70f5a1bc3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getY </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The lower left Y coordinate of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> box. </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#a42ba8048c9dedabd808e7c567264a092">Box::getYMin()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#a36c0eecad40d3559b5378caefec6a7e0">AutoVertical::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a3715b38135ca24745f610bebd3407c10">AutoVertical::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a7c13d9795eafd477994961f8a0d962d0">AutoVertical::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#a25bae06d071e2e19696d3e950956d785">AutoContact::getCBYMax()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#acd040eea296d73195a2065819ba02ebc">AutoContact::getCBYMin()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#acedb5dbab9d0c872dc476fdbefff431c">AutoSegment::getOrigin()</a>, <a class="el" href="classKatabatic_1_1AutoContact.html#a1fdb3737d910a966e150a86d885f3c05">AutoContact::setCBYMax()</a>, and <a class="el" href="classKatabatic_1_1AutoContact.html#a5b598929b39ad3ec202405b31ac02b1d">AutoContact::setCBYMin()</a>.</p>
</div>
</div>
<a class="anchor" id="ae58d4705ca2370ad5e0912d9e92e94da"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getXMax </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The upper right X coordinate of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> box (top right shrink applied). </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#acc5d2a8bd02e55b7dd89b2e3eb978574">Box::getXMax()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a36c0eecad40d3559b5378caefec6a7e0">AutoHorizontal::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a6cf0ef9d591a27428ad29332e188b616">AutoSegment::getExtremity()</a>, and <a class="el" href="classKatabatic_1_1AutoContact.html#aaa7652f5db46cab9edb066d06ea979f9">AutoContact::setCBXMax()</a>.</p>
</div>
</div>
<a class="anchor" id="a98f8c479d4789850a926d87443e56e00"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getYMax </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The upper right Y coordinate of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> box (top right shrink applied). </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#ab694cc5f242e0fe8f8e13ad64d1fd780">Box::getYMax()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#a36c0eecad40d3559b5378caefec6a7e0">AutoVertical::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a6cf0ef9d591a27428ad29332e188b616">AutoSegment::getExtremity()</a>, and <a class="el" href="classKatabatic_1_1AutoContact.html#a1fdb3737d910a966e150a86d885f3c05">AutoContact::setCBYMax()</a>.</p>
</div>
</div>
<a class="anchor" id="a46861e2e666df89cd2e6eaa7ee146bcf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Interval.html">Interval</a> getSide </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>direction</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The interval corresponding to the side position of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> box, in <code>direction</code>. </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#acc5d2a8bd02e55b7dd89b2e3eb978574">Box::getXMax()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#aface811f07334748f81b547336bb7658">Box::getXMin()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#ab694cc5f242e0fe8f8e13ad64d1fd780">Box::getYMax()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#a42ba8048c9dedabd808e7c567264a092">Box::getYMin()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#ab0c6fe24404afe19268a7b796fa74bec">AutoHorizontal::_canSlacken()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#ab0c6fe24404afe19268a7b796fa74bec">AutoVertical::_canSlacken()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a5ca22c853ee33a2b26367eaf29457766">AutoSegment::makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoHorizontal::moveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoVertical::moveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa469e37853e31f8b1bc817518c896d62">AutoHorizontal::moveURight()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#aa469e37853e31f8b1bc817518c896d62">AutoVertical::moveURight()</a>, and <a class="el" href="classKatabatic_1_1AutoSegment.html#a8ab41a962e18810808f4f065863b5a73">AutoSegment::toConstraintAxis()</a>.</p>
</div>
</div>
<a class="anchor" id="a75e5f7e9b993087270e8b21eb1e71e8d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float getHCapacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of track that can go through the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the horizontal direction. For a detailed explanation of the computation see <a class="el" href="classKatabatic_1_1GCell.html#secGCellTrackComputation">Track Computation</a>. </dd></dl>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#ab2e56af782505200c3bcb69ae6cbe16c">Box::getHeight()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">GCell::hasFreeTrack()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a4f58e38dbcd75ae549f3ce9526ce97e1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float getVCapacity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of track that can go through the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> in the vertical direction. For a detailed explanation of the computation see <a class="el" href="classKatabatic_1_1GCell.html#secGCellTrackComputation">Track Computation</a>. </dd></dl>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#a4a07dbb15af2e1a44a88a2e502a1e312">Box::getWidth()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">GCell::hasFreeTrack()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="abdc872b796225ad9d6414f59b6d503c1"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">float getDensity </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em> = <code>0</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The average density of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>, for all the depths.</p>
<p><a class="el" href="classKatabatic_1_1GCell.html#secGCellDensity">Saturation &amp; Density Computation</a>, <a class="el" href="classKatabatic_1_1GCell.html#secGCellLazyEvaluation">GCell Lazy Evaluation</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40feaec0ad06385eae8d1e2dee4f3c9f9f4ed">GCellGrid::AverageHDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fead15bf3e5b63f398d76d717a088acd310">GCellGrid::AverageHVDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fead1a1d89017d10aeb63d1c05b6fb650dd">GCellGrid::AverageVDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a412fc9ba0a5d19ee3e7949c1ed6199ee">GCellGrid::getDensityMode()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fea90a2f4a4ee8558de9f99458ddeab852c">GCellGrid::MaxDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fea2a6d29b012cc89026c3c0061f87a4f03">GCellGrid::MaxHDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fea8265e053af0708a508ecbce86d1a8165">GCellGrid::MaxHVDensity</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a07884f5e1af410e98208fed76a2b40fea5f0a89ca367ef98550eaa86c1e32c873">GCellGrid::MaxVDensity</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#aed5c1b0b1a63be3064f3eff2d24b4abd">GCell::isAboveDensity()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a18ae2575758a4a5e4a42f145309a34de">GCell::isSaturated()</a>.</p>
</div>
</div>
<a class="anchor" id="a35c9f813f00788d8093faa5c37c846e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float getCDensity </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em> = <code>0</code></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The density of contacts.</p>
<p><a class="el" href="classKatabatic_1_1GCell.html#secGCellDensity">Saturation &amp; Density Computation</a>, <a class="el" href="classKatabatic_1_1GCell.html#secGCellLazyEvaluation">GCell Lazy Evaluation</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="acfacab8f1d78e38ece30b4d2c63cf6d9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float getWDensity </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The density of wires at <code>depth</code>.</p>
<p><a class="el" href="classKatabatic_1_1GCell.html#secGCellDensity">Saturation &amp; Density Computation</a>, <a class="el" href="classKatabatic_1_1GCell.html#secGCellLazyEvaluation">GCell Lazy Evaluation</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa9e85f38a842d1966eb72afccb446676">AutoHorizontal::canMoveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#aa9e85f38a842d1966eb72afccb446676">AutoVertical::canMoveULeft()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7559a856712400a9325665842e0bcd64">AutoHorizontal::canMoveURight()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#a7559a856712400a9325665842e0bcd64">AutoVertical::canMoveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="a3cd78c51e165f5242bb99ab5033ff871"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a> getBlockage </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The total length of blockage wire on layer at <code>depth</code>. </p>
</div>
</div>
<a class="anchor" id="ab154601770f4c29260c19364f130d534"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float getFragmentation </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The longest free fragment size on layer <code>depth</code> (in percent). </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoSegment.html#a02e6ec81411b250d60dccc0da39964a6">AutoSegment::canMoveUp()</a>.</p>
</div>
</div>
<a class="anchor" id="a1b246f4d67f6a21d391d2f366d184092"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float getFeedthroughs </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The estimate number of <em>occupied</em> tracks on layer <code>depth</code>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellFeedthrough">Feedthrough Computation</a> </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a315f23abf15d879459eab98a6eeece12"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">float getGlobalsCount </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> The number of global wires that go completly through the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> at layer <code>depth</code>. This do not includes the global wires that begins or ends in the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="ad885baf0428b0ffa73738e60b9fb6956"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const vector&lt; <a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> * &gt; &amp; getHSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The vector of all horizontal AutoSegments that completly goes through the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="a2c54706769cb88ca13d233726ded6f2f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const vector&lt; <a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> * &gt; &amp; getVSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The vector of all vertical AutoSegments that completly goes through the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="ac2d662a9bbf5b80eb92776e4bce06ec5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const vector&lt; <a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> * &gt; &amp; getContacts </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The vector of all AutoContacts owned by the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
</div>
</div>
<a class="anchor" id="a79668a41675e9ba0ca59d4b91e3b70be"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getHStartSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the horizontal AutoSegments that starts from this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
<p>References <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a8c8fd7a68cd428639057fbc6dbb8c46a">Katabatic::KbSource</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a1f92568d22b1384a8cdf328340fb9160">GCell::getStartSegments()</a>.</p>
</div>
</div>
<a class="anchor" id="acbd17a4441905a4f5bc33a26bb338d0a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getVStartSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the vertical AutoSegments that starts from this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
<p>References <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a8c8fd7a68cd428639057fbc6dbb8c46a">Katabatic::KbSource</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a1f92568d22b1384a8cdf328340fb9160">GCell::getStartSegments()</a>.</p>
</div>
</div>
<a class="anchor" id="a77beccf65527a330f15bed2aba4f9dea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getHStopSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the horizontal AutoSegments that stops in this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
<p>References <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a041350b28d805a40d048fa0be9994a26">Katabatic::KbTarget</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a80ad0f9e79bccf6aed4fb69b4b795005">GCell::getStopSegments()</a>.</p>
</div>
</div>
<a class="anchor" id="a2f0f038f5700b7b55f22829c5d43aa07"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getVStopSegments </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the vertical AutoSegments that stops in this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </dd></dl>
<p>References <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a041350b28d805a40d048fa0be9994a26">Katabatic::KbTarget</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a80ad0f9e79bccf6aed4fb69b4b795005">GCell::getStopSegments()</a>.</p>
</div>
</div>
<a class="anchor" id="a1f92568d22b1384a8cdf328340fb9160"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getStartSegments </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>direction</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the horizontal or vertical AutoSegments that starts from this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> according to <code>direction</code>. </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a79668a41675e9ba0ca59d4b91e3b70be">GCell::getHStartSegments()</a>, <a class="el" href="classKatabatic_1_1GCell.html#acbd17a4441905a4f5bc33a26bb338d0a">GCell::getVStartSegments()</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>.</p>
</div>
</div>
<a class="anchor" id="a80ad0f9e79bccf6aed4fb69b4b795005"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="namespaceKatabatic.html#a2221b0ddbc24f331809fc86f98e38041">AutoSegments</a> getStopSegments </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>direction</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A Collection of the horizontal or vertical AutoSegments that stops in this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> according to <code>direction</code>. </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a77beccf65527a330f15bed2aba4f9dea">GCell::getHStopSegments()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a2f0f038f5700b7b55f22829c5d43aa07">GCell::getVStopSegments()</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>.</p>
</div>
</div>
<a class="anchor" id="a63d53a84324e393e7d7b3e73548ed6bf"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t getRoutingPads </td>
<td>(</td>
<td class="paramtype">set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1RoutingPad.html">RoutingPad</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>rps</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The size of the RoutingPad set.</dd></dl>
<p>Fills the <code>rps</code> set with all the RoutingPads that appears in this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. (looks at all the anchors of the owned <a class="el" href="classKatabatic_1_1AutoContact.html" title="Abstract base class for AutoContact. ">AutoContact</a>) </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8785f0ae0bc6de278281c353734b67b7">GCell::rpDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="ab17b3f4c7e2558bc29ea026925fd6fd6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="classKatabatic_1_1GCell_1_1Key.html">Key</a> &amp; getKey </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The sorting key of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellSortingKey">GCell Sorting Key</a> </dd></dl>
</div>
</div>
<a class="anchor" id="a8f5167eb40def2cfa878913743079f03"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t checkDensity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><code>1</code> if the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is saturated, 0 otherwise.</dd></dl>
<p>Check, if the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is saturated, layer by layer. Issue a warning if that is the case. </p>
<p>References <a class="el" href="classKatabatic_1_1Session.html#ad41e6fb02bd7bb01c27fb6aae36f0ddc">Session::doWarnGCellOverload()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a0035603802c53109ab0581ac39239932">GCell::getColumn()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a5e23c46b801d3049b349b68774a0d298">GCell::getName()</a>, <a class="el" href="classKatabatic_1_1Session.html#a9a05289b33122f312aa2c88c4b023292">Session::getRoutingGauge()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a14db4e8542de7da785abec87fa65d6a4">GCell::getRow()</a>, <a class="el" href="classKatabatic_1_1Session.html#a037c7ec3b18ec43973f2e6fe3a172000">Session::isInDemoMode()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a9e283a15a7f03a2e4184f6c8bd4e9340">GCell::isSaturated()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<a class="anchor" id="a0fb331311568ccb14d2005065575dc28"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool checkEdgeSaturation </td>
<td>(</td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>hreserved</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>vreserved</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd><b>true</b> if the Up/Right edge is over the <code>threshold</code>.</dd></dl>
<p>Check if the number of AutoSegments crossing the Up &amp; Right edges of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> exceed <code>threshold</code>. The <code>thresold</code> 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. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#a09721f6fc7df7727a63ddbc4552ad0d9">GCellGrid::getHEdgeCapacity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a23fdbef3699158d88da408ad8c23d091">GCell::getRight()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a43374e26fb08fb4a4d47599e1f81e293">GCell::getUp()</a>, <a class="el" href="classKatabatic_1_1GCellGrid.html#aee0cab79d66553ad9b2a7fc2bf8725be">GCellGrid::getVEdgeCapacity()</a>, <a class="el" href="classKatabatic_1_1AutoSegment.html#a69fb7e260ed2bc6fa82bfe12c2aeec5a">AutoSegment::isLocal()</a>, and <a class="el" href="classKatabatic_1_1Session.html#acc20c1f675cc59f9a0068aba727eca47">Session::lookup()</a>.</p>
</div>
</div>
<a class="anchor" id="a1270eab34ac57f21c0286a5455044a0d"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void addBlockage </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#ga4fbfa3e8c89347af76c9628ea06c4146">DbU::Unit</a>&#160;</td>
<td class="paramname"><em>length</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <code>length</code> of wire blockage to layer <code>depth</code>. </p>
<p>References <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/group__DbUGroup.html#gadc9c1a06b4296dbddcf711077113f4bd">DbU::getValueString()</a>.</p>
</div>
</div>
<a class="anchor" id="a4aad7d6f7357fd7963aab91bc2019a1b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addHSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <code>segment</code> to the list of horizontal feedthroughs. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a3715b38135ca24745f610bebd3407c10">AutoHorizontal::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoVertical::moveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#aa469e37853e31f8b1bc817518c896d62">AutoVertical::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="a8aa815e9e99df8187e628f6ec9e9da77"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addVSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <code>segment</code> to the list of vertical feedthroughs. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#a3715b38135ca24745f610bebd3407c10">AutoVertical::_postCreate()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoHorizontal::moveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa469e37853e31f8b1bc817518c896d62">AutoHorizontal::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="a2b84aab620bfca1064e988e94e7b9c59"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void addContact </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> *&#160;</td>
<td class="paramname"><em>contact</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds <code>contact</code> to the list of contacts owned by this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoContact.html#aa1a02e206437f1371a74cafc724b00d7">AutoContact::setGCell()</a>.</p>
</div>
</div>
<a class="anchor" id="abe128484d8aa063198292a88c63f2bba"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void removeVSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes <code>segment</code> to the list of vertical feedthroughs. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoVertical.html#a36c0eecad40d3559b5378caefec6a7e0">AutoVertical::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a7c13d9795eafd477994961f8a0d962d0">AutoVertical::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoHorizontal::moveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoHorizontal.html#aa469e37853e31f8b1bc817518c896d62">AutoHorizontal::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="aff76aa96214c0efcf13186b8b3e5c852"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void removeHSegment </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&#160;</td>
<td class="paramname"><em>segment</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes <code>segment</code> to the list of horizontal feedthroughs. </p>
<p>Referenced by <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a36c0eecad40d3559b5378caefec6a7e0">AutoHorizontal::_makeDogleg()</a>, <a class="el" href="classKatabatic_1_1AutoHorizontal.html#a7c13d9795eafd477994961f8a0d962d0">AutoHorizontal::_preDestroy()</a>, <a class="el" href="classKatabatic_1_1AutoVertical.html#a1fa2421b74bf0eb934b7002fd3da2321">AutoVertical::moveULeft()</a>, and <a class="el" href="classKatabatic_1_1AutoVertical.html#aa469e37853e31f8b1bc817518c896d62">AutoVertical::moveURight()</a>.</p>
</div>
</div>
<a class="anchor" id="aa052a9427fbd4185f00567a97770f80b"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void removeContact </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoContact.html">AutoContact</a> *&#160;</td>
<td class="paramname"><em>contact</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes <code>contact</code> to the list of contacts owned by this <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
<p>References <a class="el" href="classKatabatic_1_1AutoContact.html#a7f6571edacd5e4120cc9b87abd23082a">AutoContact::base()</a>.</p>
</div>
</div>
<a class="anchor" id="aa0beea2ceaa543503346967085036d1a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void updateContacts </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Force a geometry update on all the <a class="el" href="classKatabatic_1_1AutoContact.html" title="Abstract base class for AutoContact. ">AutoContact</a> of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. </p>
</div>
</div>
<a class="anchor" id="a9b3455dce10eb98d0496175dd586528c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">size_t updateDensity </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><b>Returns:</b> <b>true</b> if the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is saturated.</p>
<p>Update the various densities of the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a>. No actual computation is performed if the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is <em>not</em> invalidated. </p>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a75e5f7e9b993087270e8b21eb1e71e8d">GCell::getHCapacity()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#ab2e56af782505200c3bcb69ae6cbe16c">Box::getHeight()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/crlcore/doc/crlcore/html/crlcore.tag:../crlcore" href="../crlcore/classCRL_1_1RoutingGauge.html#a40e8127ea7a26b26c3e797571b03121a">RoutingGauge::getLayerDepth()</a>, <a class="el" href="classKatabatic_1_1Session.html#a9a05289b33122f312aa2c88c4b023292">Session::getRoutingGauge()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a4f58e38dbcd75ae549f3ce9526ce97e1">GCell::getVCapacity()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#a4a07dbb15af2e1a44a88a2e502a1e312">Box::getWidth()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#acc5d2a8bd02e55b7dd89b2e3eb978574">Box::getXMax()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#aface811f07334748f81b547336bb7658">Box::getXMin()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#ab694cc5f242e0fe8f8e13ad64d1fd780">Box::getYMax()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Box.html#a42ba8048c9dedabd808e7c567264a092">Box::getYMin()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a9e283a15a7f03a2e4184f6c8bd4e9340">GCell::isSaturated()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aac1b70a2ed67ead038c4d3f5ac4d8a81">GCell::isValid()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, and <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8f5167eb40def2cfa878913743079f03">GCell::checkDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a35c9f813f00788d8093faa5c37c846e3">GCell::getCDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abdc872b796225ad9d6414f59b6d503c1">GCell::getDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a1b246f4d67f6a21d391d2f366d184092">GCell::getFeedthroughs()</a>, <a class="el" href="classKatabatic_1_1GCell.html#ab154601770f4c29260c19364f130d534">GCell::getFragmentation()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a315f23abf15d879459eab98a6eeece12">GCell::getGlobalsCount()</a>, <a class="el" href="classKatabatic_1_1GCell.html#acfacab8f1d78e38ece30b4d2c63cf6d9">GCell::getWDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#abe5a85792463184f487b42efd80cc25e">GCell::hasFreeTrack()</a>, <a class="el" href="classKatabatic_1_1GCell.html#aed5c1b0b1a63be3064f3eff2d24b4abd">GCell::isAboveDensity()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">GCell::stepDesaturate()</a>, and <a class="el" href="classKatabatic_1_1GCell.html#aab5b30c49b0453db495337931cf284a9">GCell::stepNetDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="a11beff0f0bec06d0f3e080969516dfc3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void updateKey </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Update the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> key with the new density at layer <code>depth</code>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellSortingKey">GCell Sorting Key</a>. </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell_1_1Key.html#a1b9cfb06a645d2b0d93024bc6ff82e9e">GCell::Key::update()</a>.</p>
</div>
</div>
<a class="anchor" id="a8785f0ae0bc6de278281c353734b67b7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool rpDesaturate </td>
<td>(</td>
<td class="paramtype">set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>nets</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>If the number of RoutingPad in the first routing layer exceed the <a class="el" href="classKatabatic_1_1Session.html#adfdaa8b3e81de14fce1f99444b35fcda">Session::getSaturateRp()</a> threshold, force a desaturation of layer <code>depth</code> 1 until it is below 0.5.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellDesaturation">GCell Desaturation / Layer Assignment</a> </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1Session.html#a3efd0f0d87be640dc566c1afd821e5e6">Session::getRoutingLayer()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a63d53a84324e393e7d7b3e73548ed6bf">GCell::getRoutingPads()</a>, <a class="el" href="classKatabatic_1_1Session.html#adfdaa8b3e81de14fce1f99444b35fcda">Session::getSaturateRp()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217acf76914f1ec05633965f0ac6b1c89959">Katabatic::KbForceMove</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a1256c28423a9a260d320e25b3fc1bf57">GCell::stepDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="a1256c28423a9a260d320e25b3fc1bf57"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool stepDesaturate </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>globalNets</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1AutoSegment.html">AutoSegment</a> *&amp;&#160;</td>
<td class="paramname"><em>moved</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>flags</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">depth</td><td>The depth to desaturate. </td></tr>
<tr><td class="paramname">globalNets</td><td>The set of Nets of which at least one segment has been moved up. </td></tr>
<tr><td class="paramname">moved</td><td>The moved up <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a>. </td></tr>
<tr><td class="paramname">flags</td><td>If KbForceMove is set, force one <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> to move up, event if the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is not saturated in the relevant depth.</td></tr>
</table>
</dd>
</dl>
<p><b>Returns:</b> <b>true</b> if an <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> has actually been moved up.</p>
<p>Perform the atomic desaturation, that is move up one <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> from layer <code>depth</code> to layer <code>depth+2</code>, longuests AutoSegments are moved first. Only global feedthrough AutoSegments are candidates to be moved up. The Net owning the moved up segment is added to the <code>globalNets</code> set. If the <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> is not saturated on layer <code>depth</code>, nothing is done. If the <code>forced</code> flag is set, one global <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> is moved up regardless of the saturation status.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellDesaturation">GCell Desaturation / Layer Assignment</a> </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a3d2cc17c5b9eb2ca96ab10b6313391ad">GCell::getIndex()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/crlcore/doc/crlcore/html/crlcore.tag:../crlcore" href="../crlcore/classCRL_1_1RoutingGauge.html#a40e8127ea7a26b26c3e797571b03121a">RoutingGauge::getLayerDepth()</a>, <a class="el" href="classKatabatic_1_1Session.html#a9a05289b33122f312aa2c88c4b023292">Session::getRoutingGauge()</a>, <a class="el" href="classKatabatic_1_1GCell.html#a9e283a15a7f03a2e4184f6c8bd4e9340">GCell::isSaturated()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217acf76914f1ec05633965f0ac6b1c89959">Katabatic::KbForceMove</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
<p>Referenced by <a class="el" href="classKatabatic_1_1GCell.html#a8785f0ae0bc6de278281c353734b67b7">GCell::rpDesaturate()</a>.</p>
</div>
</div>
<a class="anchor" id="aab5b30c49b0453db495337931cf284a9"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool stepNetDesaturate </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>depth</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">set&lt; <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/html/hurricane.tag:../hurricane/" href="../hurricane/classHurricane_1_1Net.html">Net</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>globalNets</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classKatabatic_1_1GCell.html#aacb1c215b203bfba5729f135b3221d40">GCell::SetIndex</a> &amp;&#160;</td>
<td class="paramname"><em>invalidateds</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">depth</td><td>The depth to desaturate. </td></tr>
<tr><td class="paramname">globalNets</td><td>The set of Nets of which at least one segment has been moved up. </td></tr>
<tr><td class="paramname">invalidateds</td><td>The set of <a class="el" href="classKatabatic_1_1GCell.html" title="Routing Global Cell. ">GCell</a> ids that have been invalidateds.</td></tr>
</table>
</dd>
</dl>
<p><b>Returns:</b> <b>true</b> if a Net has been moved up.</p>
<p>Perform a desaturation by whole Net trunk. Select the longest feedthrough <a class="el" href="classKatabatic_1_1AutoSegment.html" title="Abstract base class for AutoSegment. ">AutoSegment</a> in layer <code>depth</code>, then attempt to move up the whole Net (all it's global AutoSegments are moved up).</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classKatabatic_1_1GCell.html#secGCellDesaturation">GCell Desaturation / Layer Assignment</a> </dd></dl>
<p>References <a class="el" href="classKatabatic_1_1GCell.html#a0702328522e94ca9705222cd5b9e9c6d">GCell::getGCellGrid()</a>, <a class="elRef" doxygen="/dsk/l1/jpc/coriolis-2.x/src/coriolis/crlcore/doc/crlcore/html/crlcore.tag:../crlcore" href="../crlcore/classCRL_1_1RoutingGauge.html#a40e8127ea7a26b26c3e797571b03121a">RoutingGauge::getLayerDepth()</a>, <a class="el" href="classKatabatic_1_1Session.html#a9a05289b33122f312aa2c88c4b023292">Session::getRoutingGauge()</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a1a9045673c5d3c30b067100f1440ae1b">Katabatic::KbHorizontal</a>, <a class="el" href="namespaceKatabatic.html#a2af2ad6b6441614038caf59d04b3b217a284cad95203a27172838b09e396e3590">Katabatic::KbVertical</a>, and <a class="el" href="classKatabatic_1_1GCell.html#a9b3455dce10eb98d0496175dd586528c">GCell::updateDensity()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="GCell_8h_source.html">GCell.h</a></li>
<li>GCell.cpp</li>
<li>GCell.dox</li>
</ul>
</div><!-- contents -->
<br>
<hr>
<table class="footer1">
<tr>
<td class="LFooter"><small>Generated by doxygen 1.8.5 on Mon Oct 1 2018</small></td>
<td class="RFooter"><a href='#pagetop'><small>Return to top of page</small></a></td>
</tr>
</table>
<table class="footer2">
<tr>
<td class="LFooter">Katabatic - Routing Toolbox</td>
<td class="RFooter"><small>Copyright &#169; 2008-2016 UPMC. All rights reserved</small></td>
</tr>
</table>
</body>
</html>