14561 lines
768 KiB
Plaintext
14561 lines
768 KiB
Plaintext
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033
|
|
{\fonttbl {\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
|
|
{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
|
|
{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
|
|
{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}
|
|
}
|
|
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}
|
|
{\stylesheet
|
|
{\widctlpar\adjustright \fs20\cgrid \snext0 Normal;}
|
|
{\paperw11900\paperh16840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect}
|
|
{\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid \sbasedon0 \snext0 heading 1;}
|
|
{\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 2;}
|
|
{\s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid \sbasedon0 \snext0 heading 3;}
|
|
{\s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 4;}{\*\cs10 \additive Default Paragraph Font;}
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;}
|
|
{\s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid \sbasedon0 \snext15 Title;}
|
|
{\s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \sbasedon0 \snext16 Subtitle;}
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \sbasedon0 \snext17 BodyText;}
|
|
{\s18\widctlpar\fs22\cgrid \sbasedon0 \snext18 DenseText;}
|
|
{\s28\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext28 header;}
|
|
{\s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid \sbasedon0 \snext29 footer;}
|
|
{\s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext30 GroupHeader;}
|
|
{\s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext41 Code Example 0;}
|
|
{\s41\li360\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext42 Code Example 1;}
|
|
{\s42\li720\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext43 Code Example 2;}
|
|
{\s43\li1080\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext44 Code Example 3;}
|
|
{\s44\li1440\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext45 Code Example 4;}
|
|
{\s45\li1800\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext46 Code Example 5;}
|
|
{\s46\li2160\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext47 Code Example 6;}
|
|
{\s47\li2520\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext48 Code Example 7;}
|
|
{\s48\li2880\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 8;}
|
|
{\s49\li3240\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 9;}
|
|
{\s50\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext51 List Continue 0;}
|
|
{\s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext52 List Continue 1;}
|
|
{\s52\li720\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext53 List Continue 2;}
|
|
{\s53\li1080\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext54 List Continue 3;}
|
|
{\s54\li1440\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext55 List Continue 4;}
|
|
{\s55\li1800\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext56 List Continue 5;}
|
|
{\s56\li2160\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext57 List Continue 6;}
|
|
{\s57\li2520\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext58 List Continue 7;}
|
|
{\s58\li2880\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 8;}
|
|
{\s59\li3240\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 9;}
|
|
{\s60\li0\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext61 DescContinue 0;}
|
|
{\s61\li360\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext62 DescContinue 1;}
|
|
{\s62\li720\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext63 DescContinue 2;}
|
|
{\s63\li1080\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext64 DescContinue 3;}
|
|
{\s64\li1440\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext65 DescContinue 4;}
|
|
{\s65\li1800\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext66 DescContinue 5;}
|
|
{\s66\li2160\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext67 DescContinue 6;}
|
|
{\s67\li2520\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext68 DescContinue 7;}
|
|
{\s68\li2880\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 8;}
|
|
{\s69\li3240\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 9;}
|
|
{\s70\li0\sa30\sb30\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext81 LatexTOC 0;}
|
|
{\s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext82 LatexTOC 1;}
|
|
{\s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext83 LatexTOC 2;}
|
|
{\s73\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext84 LatexTOC 3;}
|
|
{\s74\li1440\sa18\sb18\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext85 LatexTOC 4;}
|
|
{\s75\li1800\sa15\sb15\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext86 LatexTOC 5;}
|
|
{\s76\li2160\sa12\sb12\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext87 LatexTOC 6;}
|
|
{\s77\li2520\sa9\sb9\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext88 LatexTOC 7;}
|
|
{\s78\li2880\sa6\sb6\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 8;}
|
|
{\s79\li3240\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 9;}
|
|
{\s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext81 \sautoupd List Bullet 0;}
|
|
{\s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid \sbasedon0 \snext82 \sautoupd List Bullet 1;}
|
|
{\s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid \sbasedon0 \snext83 \sautoupd List Bullet 2;}
|
|
{\s83\fi-360\li1440\widctlpar\jclisttab\tx1440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec }\ls4\adjustright \fs20\cgrid \sbasedon0 \snext84 \sautoupd List Bullet 3;}
|
|
{\s84\fi-360\li1800\widctlpar\jclisttab\tx1800{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\ls5\adjustright \fs20\cgrid \sbasedon0 \snext85 \sautoupd List Bullet 4;}
|
|
{\s85\fi-360\li2160\widctlpar\jclisttab\tx2160{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec }\ls6\adjustright \fs20\cgrid \sbasedon0 \snext86 \sautoupd List Bullet 5;}
|
|
{\s86\fi-360\li2520\widctlpar\jclisttab\tx2520{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\ls7\adjustright \fs20\cgrid \sbasedon0 \snext87 \sautoupd List Bullet 6;}
|
|
{\s87\fi-360\li2880\widctlpar\jclisttab\tx2880{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\ls8\adjustright \fs20\cgrid \sbasedon0 \snext88 \sautoupd List Bullet 7;}
|
|
{\s88\fi-360\li3240\widctlpar\jclisttab\tx3240{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pndec }\ls9\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 8;}
|
|
{\s89\fi-360\li3600\widctlpar\jclisttab\tx3600{\*\pn \pnlvlbody\ilvl0\ls10\pnrnot0\pndec }\ls10\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 9;}
|
|
{\s90\fi-360\li360\widctlpar\fs20\cgrid \sbasedon0 \snext91 \sautoupd List Enum 0;}
|
|
{\s91\fi-360\li720\widctlpar\fs20\cgrid \sbasedon0 \snext92 \sautoupd List Enum 1;}
|
|
{\s92\fi-360\li1080\widctlpar\fs20\cgrid \sbasedon0 \snext93 \sautoupd List Enum 2;}
|
|
{\s93\fi-360\li1440\widctlpar\fs20\cgrid \sbasedon0 \snext94 \sautoupd List Enum 3;}
|
|
{\s94\fi-360\li1800\widctlpar\fs20\cgrid \sbasedon0 \snext95 \sautoupd List Enum 4;}
|
|
{\s95\fi-360\li2160\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;}
|
|
{\s96\fi-360\li2520\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;}
|
|
{\s97\fi-360\li2880\widctlpar\fs20\cgrid \sbasedon0 \snext98 \sautoupd List Enum 7;}
|
|
{\s98\fi-360\li3240\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 8;}
|
|
{\s99\fi-360\li3600\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 9;}
|
|
}
|
|
{\info
|
|
{\title {\comment Katabatic - Routing Toolbox {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
1.0 \par
|
|
}}Katabatic - Routing Toolbox}
|
|
{\comment Generated byDoxgyen. }
|
|
{\creatim \yr2020\mo11\dy12\hr13\min59\sec30}
|
|
}\pard\plain
|
|
\sectd\pgnlcrm
|
|
{\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}}
|
|
\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid
|
|
\vertalc\qc\par\par\par\par\par\par\par
|
|
\pard\plain \s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid
|
|
{\field\fldedit {\*\fldinst TITLE \\*MERGEFORMAT}{\fldrslt Katabatic - Routing Toolbox}}\par
|
|
\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid
|
|
\par
|
|
\par\par\par\par\par\par\par\par\par\par\par\par
|
|
\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid
|
|
{\field\fldedit {\*\fldinst AUTHOR \\*MERGEFORMAT}{\fldrslt AUTHOR}}\par
|
|
Version 1.0\par{\field\fldedit {\*\fldinst CREATEDATE \\*MERGEFORMAT}{\fldrslt Thu Nov 12 2020 }}\par
|
|
\page\page\vertalt
|
|
\pard\plain
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Table of Contents\par
|
|
\pard\plain \par
|
|
{\field\fldedit {\*\fldinst TOC \\f \\*MERGEFORMAT}{\fldrslt Table of contents}}\par
|
|
\pard\plain
|
|
\sect \sbkpage \pgndec \pgnrestart
|
|
\sect \sectd \sbknone
|
|
{\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}}
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Katabatic Documentation\par \pard\plain
|
|
{\tc \v Katabatic Documentation}
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Additionnal documents:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Synthetic Class Hierarchy} \par}
|
|
}}
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Module Index\par \pard\plain
|
|
{\tc \v Module Index}
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Modules\par \pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here is a list of all modules:}
|
|
{
|
|
\par
|
|
\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
Synthetic Class Hierarchy\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
Global Routing Loading\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAB \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
Generalities
|
|
{\f2 [external]}\par
|
|
\par
|
|
JSON Support
|
|
{\f2 [external]}\par
|
|
\par
|
|
DbU/Unit description
|
|
{\f2 [external]}\par
|
|
\par
|
|
Graphics
|
|
{\f2 [external]}\par
|
|
\par}
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Namespace Index\par \pard\plain
|
|
{\tc \v Namespace Index}
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Namespace List\par \pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here is a list of all documented namespaces with brief descriptions:}
|
|
{
|
|
\par
|
|
\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
{\b {\b anonymous_namespace\{AutoSegment.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b anonymous_namespace\{ChipTools.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABB \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b anonymous_namespace\{GCell.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABC \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b anonymous_namespace\{KatabaticEngine.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABD \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b anonymous_namespace\{LoadGrByNet.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABE \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b anonymous_namespace\{Session.cpp\}} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABG \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b Katabatic} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The namespace dedicated to {\b Katabatic} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABH \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
\par}
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Hierarchical Index\par \pard\plain
|
|
{\tc \v Hierarchical Index}
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Class Hierarchy\par \pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid This inheritance list is sorted roughly, but not completely, alphabetically:}
|
|
{
|
|
\par
|
|
\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
AutoContact\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
AutoContactHTee\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHV \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoContactTerminal\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHX \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoContactTurn\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoContactVTee\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIC \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
AutoSegment\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKH \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
AutoHorizontal\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIE \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoVertical\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQQ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
BaseGrid::Axis\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARD \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
BaseGrid\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQR \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
Grid< GCell >\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAWF \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
{
|
|
\par
|
|
\pard\plain \s73\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
GCellGrid\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAVJ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
Grid< GCellT >\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAWF \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
BaseObserver\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARJ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
Observer< T >\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAZA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
ChipTools\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARL \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
Collection< Type >
|
|
{\f2 [external]}{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
AutoSegments_Aligneds\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPP \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoSegments_AnchorOnGCell\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPU \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoSegments_OnContact\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQG \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoSegments_Perpandiculars\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQL \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
GCell::CompareByDensity\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUQ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
GCell::CompareByIndex\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUS \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
DBo
|
|
{\f2 [external]}{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
ToolEngine
|
|
{\f2 [external]}{
|
|
\par
|
|
\pard\plain \s73\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
KatabaticEngine\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAWR \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
}\par
|
|
Filter< Type >
|
|
{\f2 [external]}{
|
|
\par
|
|
\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
AutoSegments_InDirection\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPZ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
AutoSegments_IsAccountable\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQD \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}\par
|
|
GCell\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARY \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
GCellDensitySet\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUY \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
GCellTopology\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABF \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
GCell::Key\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUT \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
LocatorHelper\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAYO \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
Observable\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAYU \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
Session\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAZE \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
}
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Class Index\par \pard\plain
|
|
{\tc \v Class Index}
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Class List\par \pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here are the classes, structs, unions and interfaces with brief descriptions:}
|
|
{
|
|
\par
|
|
\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid
|
|
{\b {\b AutoContact} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoContact} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoContactHTee} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} H-Tee (two H, one V) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHV \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoContactTerminal} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Terminal (S/T is a Terminal) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHX \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoContactTurn} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Turn (one H, one V) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoContactVTee} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} V-Tee (one H, two V) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIC \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoHorizontal} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Horizontal {\b AutoSegment} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIE \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegment} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoSegment} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKH \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_Aligneds} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All aligned {\b AutoSegment} of a set })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPP \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_AnchorOnGCell} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} Beginning and/or Stopping in a {\b GCell} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPU \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_InDirection} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select {\b AutoSegment} in a given direction })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPZ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_IsAccountable} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select accoutable {\b AutoSegment} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQD \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_OnContact} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} anchored on a Contact })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQG \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoSegments_Perpandiculars} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All perpandicular {\b AutoSegment} to a set of aligneds })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQL \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b AutoVertical} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Vertical {\b AutoSegment} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQQ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b BaseGrid::Axis} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Graduations on a {\b BaseGrid} {\b Axis} (H or V) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARD \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b BaseGrid} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract Base Class for Irregular {\b Grid} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQR \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b BaseObserver} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARJ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b ChipTools} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Utilities for Chip Level Design })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARL \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCell::CompareByDensity} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Density Comparison Functor })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUQ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCell::CompareByIndex} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Index Comparison Functor })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUS \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCell} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Routing Global Cell })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARY \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCellDensitySet} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Set, sorted by density })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUY \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCellGrid} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Grid} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAVJ \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCellTopology} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring for a Net inside a GCell ({\b internal} ) })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABF \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b Grid< GCellT >} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Template Class for Regular {\b Grid} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAWF \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b KatabaticEngine} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b Katabatic} Tool })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAWR \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b GCell::Key} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Key} - Density Cache })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAUT \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b LocatorHelper} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Locator Helper Collection's Locators })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAYO \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b Observable} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, Subject part })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAYU \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b Observer< T >} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAZA \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
{\b {\b Session} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Modification {\b Session} for {\b Katabatic} })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAZE \\*MERGEFORMAT}{\fldrslt pagenum}}
|
|
\par
|
|
\par}
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Module Documentation{\tc \v Module Documentation}
|
|
\par \pard\plain
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Synthetic Class Hierarchy\par \pard\plain
|
|
{\tc\tcl2 \v Synthetic Class Hierarchy}
|
|
{\xe \v Synthetic Class Hierarchy}
|
|
{\bkmkstart AAAAAAAAAA}
|
|
{\bkmkend AAAAAAAAAA}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Simplificated class hierarchy. }}\par
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Simplificated class hierarchy. \par
|
|
}{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
}\par \pard\plain
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Global Routing Loading\par \pard\plain
|
|
{\tc\tcl2 \v Global Routing Loading}
|
|
{\xe \v Global Routing Loading}
|
|
{\bkmkstart AAAAAAAAAB}
|
|
{\bkmkend AAAAAAAAAB}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Translation rules to build detailed routing from global. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Classes\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b GCellTopology}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring for a Net inside a GCell ({\b internal} ). }\par}}}
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Enumerations\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b LocalFunctionFlag} \{ {\b NoFlags} = 0x00000000
|
|
, {\b HAccess} = 0x00000002,
|
|
{\b VSmall} = 0x00000004,
|
|
{\b HSmall} = 0x00000008,
|
|
{\b Punctual} = 0x00000010
|
|
, {\b DoSourceContact} = 0x00000100,
|
|
{\b DoTargetContact} = 0x00000200
|
|
\}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b checkRoutingPadSize} ({\b Component} *anchor)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_AutoContacts} ({\b GCell} *, {\b Component} *, {\b AutoContact} *&source, {\b AutoContact} *&target, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContact} * {\b doRp_Access} ({\b GCell} *, {\b Component} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContact} * {\b doRp_AccessPad} ({\b RoutingPad} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_StairCaseH} ({\b GCell} *, {\b Component} *rp1, {\b Component} *rp2)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_StairCaseV} ({\b GCell} *, {\b Component} *rp1, {\b Component} *rp2)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_1Pad} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_1M1} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_xM1} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_1M1_1M2} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM1_xM3} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM2} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_1M3} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM3} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b singleGCell} ({\b KatabaticEngine} *ktbt, {\b Net} *net)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Translation rules to build detailed routing from global. \par
|
|
}{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This module documents how the global routing built by {\f2 Knik} is loaded into the {\f2 {\b Katabatic}} data-base. It is intented for developpers only. \par
|
|
}{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Enumeration Type Documentation\par
|
|
\pard\plain
|
|
{\xe \v LocalFunctionFlag\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:LocalFunctionFlag}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b LocalFunctionFlag}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAC}
|
|
{\bkmkend AAAAAAAAAC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A set of flags for all functions of the LoadGrByNet module. They can be combined to form the {\i flags} argument of functions. the functions will ignore flags that are not intended to them.\par
|
|
For {\f2 HSmall} , {\f2 VSmall} & {\f2 Punctual} see {\b checkRoutingPadSize()}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v NoFlags\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:NoFlags}
|
|
{\qr NoFlags{\bkmkstart AAAAAAAAAD}
|
|
{\bkmkend AAAAAAAAAD}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A simple alias over zero to explicitly tell that no flag at all is passed to the function. \par
|
|
}\cell }{\row }
|
|
{\xe \v HAccess\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:HAccess}
|
|
{\qr HAccess{\bkmkstart AAAAAAAAAE}
|
|
{\bkmkend AAAAAAAAAE}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The constructed topology will be accessed through an horizontal segment. The absence of this flag tell that the access will be done trough a vertical. \par
|
|
}\cell }{\row }
|
|
{\xe \v VSmall\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:VSmall}
|
|
{\qr VSmall{\bkmkstart AAAAAAAAAF}
|
|
{\bkmkend AAAAAAAAAF}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The RoutingPad vertically covers a very small number of access points, so it is likely overconstrained for direct horizontal connexion. \par
|
|
}\cell }{\row }
|
|
{\xe \v HSmall\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:HSmall}
|
|
{\qr HSmall{\bkmkstart AAAAAAAAAG}
|
|
{\bkmkend AAAAAAAAAG}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The RoutingPad horizontally covers a very small number of access points, so it is likely overconstrained for direct vertical connexion. \par
|
|
}\cell }{\row }
|
|
{\xe \v Punctual\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:Punctual}
|
|
{\qr Punctual{\bkmkstart AAAAAAAAAH}
|
|
{\bkmkend AAAAAAAAAH}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The RoutingPad covers only an access point in either direction. \par
|
|
}\cell }{\row }
|
|
{\xe \v DoSourceContact\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:DoSourceContact}
|
|
{\qr DoSourceContact{\bkmkstart AAAAAAAAAI}
|
|
{\bkmkend AAAAAAAAAI}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
When creating {\b Katabatic::AutoContactTerminal} on non-punctual RoutingPad, this flag request the creation of a contact {\i on the source point} . \par
|
|
}\cell }{\row }
|
|
{\xe \v DoTargetContact\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:DoTargetContact}
|
|
{\qr DoTargetContact{\bkmkstart AAAAAAAAAJ}
|
|
{\bkmkend AAAAAAAAAJ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
When creating {\b Katabatic::AutoContactTerminal} on non-punctual RoutingPad, this flag request the creation of a contact {\i on the target point} . \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v checkRoutingPadSize\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:checkRoutingPadSize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int checkRoutingPadSize ({\b Component} * {\i rp})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAK}
|
|
{\bkmkend AAAAAAAAAK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Look at the geometrical size of the Component and assess if it's span is too narrow either horizontally or vertically. Return a combination of flags indicating it's state:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
HSmall : less than 3 pitches in horizontal direction.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
VSmall : less than 3 pitches in vertical direction.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Punctual : one pitch in either directions.\par}
|
|
The component can be a RoutingPad, a Vertical or an Horizontal.\par
|
|
\par
|
|
}{
|
|
References Component::getLayer(), anonymous_namespace\{LoadGrByNet.cpp\}::HSmall, anonymous_namespace\{LoadGrByNet.cpp\}::Punctual, toLambda(), and anonymous_namespace\{LoadGrByNet.cpp\}::VSmall.}\par
|
|
{
|
|
Referenced by GCellTopology::doRp_Access().}\par
|
|
}
|
|
{\xe \v doRp_AutoContacts\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:doRp_AutoContacts}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void doRp_AutoContacts ({\b GCell} * {\i gcell}, {\b Component} * {\i rp}, {\b AutoContact} *& {\i source}, {\b AutoContact} *& {\i target}, unsigned int {\i flags}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAL}
|
|
{\bkmkend AAAAAAAAAL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The GCell into which create the AutoContact. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i rp} \cell }{The Component we want to access. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i source} \cell }{The AutoContact created on the {\f2 source} ({\i returned} ). \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i target} \cell }{The AutoContact created on the {\f2 target} ({\i returned} ). \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Managed by this function:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
LocalFunctionFlag::DoSourceContact\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
LocalFunctionFlag::DoTargetContact\par}
|
|
\cell }
|
|
{\row }
|
|
}
|
|
Create the AutoContact directly anchored on the Component (terminal). Three cases are manageds:{
|
|
\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
1.\tab {\b Ordinary (non-punctual) {\f2 METAL1} terminal} : an AutoContactTerminal is anchored on the RoutingPad.\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
2.\tab {\b Punctual {\f2 METAL1} terminal} , the access must never be blocked by other routing. To ensure it, we create a fixed AutoSegment (anchored on two AutoContactTerminal) to cover it. The {\i normal} AutoContactTerminal is also created.\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
3.\tab {\b non {\f2 METAL1} terminal} , as for the punctual {\f2 METAL1} , a fixed protection is added over the RoutingPad. If we access horizontally a vertical RoutingPad or vertically an horizontal one, an extra AutoContactTerminal is added (to allow is displacement along the RoutingPad).\par}
|
|
To avoid creating a fixed protection over a RoutingPad multiple times, the RoutingPad and it's associated protection is stored in a static {\f2 map} : {\f2 __routingPadAutoSegments} .\par
|
|
Conversely, because an AutoContactTerminal can only be connected to one segment, each time this function is called a new terminal will be created (or maybe two in case of non-punctual terminals). If only one AutoContact is requested, it is created centered on the RoutingPad. The initial position of AutoContact {\i do not prevent them to move afterwards} , even those created on source/target on a non-punctual RoutingPad.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: For clarity we describe the layer management of this function in term\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid of {\f2 METAL} , but it is the RoutingGauge depth which is actually used.\par
|
|
} \par
|
|
}{
|
|
References Katabatic::CntFixed, AutoContactTerminal::create(), AutoSegment::create(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), Grid< GCellT >::getGCell(), KatabaticEngine::getGCellGrid(), Session::getKatabatic(), Component::getLayer(), Katabatic::KbHorizontal, Katabatic::SegFixed, and AutoSegment::setFlags().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), GCellTopology::_do_xG_xM3(), GCellTopology::doRp_Access(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v doRp_Access\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:doRp_Access}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * doRp_Access ({\b GCell} * {\i gcell}, {\b Component} * {\i rp}, unsigned int {\i flags}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAM}
|
|
{\bkmkend AAAAAAAAAM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The GCell into which create the AutoContact. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i rp} \cell }{The Component onto which anchor the access contact. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Relevant flags are:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
HAccess, the terminal is to be accessed through an horizontal segment.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
VSmall, force the terminal to be considered as small in the vertical direction.\par}
|
|
\cell }
|
|
{\row }
|
|
}
|
|
If {\f2 HAccess} is set, the Component is to be accessed trough an horizontal segment. If unset, the access is done vertically.\par
|
|
Create an AutoContact to access a Component (terminal). If the Component is not to be accessed through an horizontal segment, and do not cover a large span in the horizontal direction (flag {\f2 VSmall} ), a local horizontal AutoSegment is added to slacken the vertical constraints.\par
|
|
\par
|
|
}{
|
|
References anonymous_namespace\{LoadGrByNet.cpp\}::checkRoutingPadSize(), AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), Session::getContactLayer(), Component::getNet(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, anonymous_namespace\{LoadGrByNet.cpp\}::HSmall, Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::VSmall.}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M1(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), and GCellTopology::_do_xG_xM3().}\par
|
|
}
|
|
{\xe \v doRp_AccessPad\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:doRp_AccessPad}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * doRp_AccessPad ({\b RoutingPad} * {\i rp}, unsigned int {\i flags}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAN}
|
|
{\bkmkend AAAAAAAAAN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i rp} \cell }{The Component onto which anchor the access contact. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Relevant flags are:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
HAccess, the terminal is to be accessed through an horizontal segment.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
VSmall, force the terminal to be considered as small in the vertical direction. \par}
|
|
\cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A {\b Katabatic::AutoContactTerminal} .\par
|
|
}The Component {\f2 rp} is a RoutingPad which belongs to a pad cell. This case occurs when we are routing a complete chip. This method build, from the {\f2 rp} a stack of articulated punctual segments and contacts to reach the default H/V routing layers (usually {\f2 METAL2} & {\f2 METAL3} ). This may be needed when the pad terminal is in {\f2 METAL5} , for instance.\par
|
|
The returned AutoContactTerminal is anchored on the last punctual segment build.\par
|
|
The GCell into which the AutoContactTerminal is created may be under the pads area. However, it will be right on the border of the GCell. The global router vertexes of GCell under the pad area are marked as blocked so will never be used for routing.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: The segments and contacts added to ensure the layer connexity are not\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid put into the {\b Katabatic} database. They are plain Hurricane objects, invisibles from it. \par
|
|
}}{
|
|
References Contact::create(), Horizontal::create(), Vertical::create(), AutoContactTerminal::create(), Hook::detach(), Component::getBodyHook(), RoutingPad::getBoundingBox(), RoutingPad::getCenter(), Session::getContactLayer(), Grid< GCellT >::getGCell(), KatabaticEngine::getGCellGrid(), Box::getHeight(), Session::getKatabatic(), RoutingPad::getLayer(), Component::getNet(), RoutingPad::getOccurrence(), Transformation::getOrientation(), Occurrence::getPath(), Session::getRoutingLayer(), Path::getTransformation(), Box::getWidth(), Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, Point::setX(), and Point::setY().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_1Pad().}\par
|
|
}
|
|
{\xe \v doRp_StairCaseH\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:doRp_StairCaseH}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void doRp_StairCaseH ({\b GCell} * {\i gcell}, {\b Component} * {\i rp1}, {\b Component} * {\i rp2}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAO}
|
|
{\bkmkend AAAAAAAAAO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring to connect to horizontal Component. Two cases:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The Component are aligneds, then only a straight wire is created.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
They are {\i not} aligned, then a complete dogleg is created.\par}
|
|
\par
|
|
}{
|
|
References AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), Component::getLayer(), Component::getNet(), Component::getX(), AutoContact::getY(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_xM2().}\par
|
|
}
|
|
{\xe \v doRp_StairCaseV\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:doRp_StairCaseV}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void doRp_StairCaseV ({\b GCell} * {\i gcell}, {\b Component} * {\i rp1}, {\b Component} * {\i rp2}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAP}
|
|
{\bkmkend AAAAAAAAAP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring to connect to vertical Components. Two cases:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The Components are aligneds, then only a straight wire is created.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
They are {\i not} aligned, then a complete dogleg is created.\par}
|
|
\par
|
|
}{
|
|
References AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), Component::getLayer(), Component::getNet(), AutoContact::getX(), Component::getY(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_xM3().}\par
|
|
}
|
|
{\xe \v _do_xG_1Pad\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG_1Pad}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG_1Pad (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAQ}
|
|
{\bkmkend AAAAAAAAAQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct the topology, when there is only global wires and one local terminal, but coming from a Pad. As thoses connectors will always be on one border of the GCell they can be considered as a kind of global.\par
|
|
So this method mostly calls {\b GCellTopology::doRp_AccessPad()} to create the AutoContactTerminal, then calls {\b GCellTopology::_do_xG()}, except for straight lines which are managed directly. \par
|
|
}{
|
|
References GCellTopology::_do_xG(), AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AccessPad(), AutoContact::getBodyHook(), Session::getContactLayer(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_xG\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAR}
|
|
{\bkmkend AAAAAAAAAR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct the topology, when there is only global wires (no local terminals).\par
|
|
Some topology are not handled because they must not be managed by this function: {
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
One global: nonsensical because there also must be a terminal. \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Two aligned globals: in that case we do a straight wire without any AutoContact (handled by the source/target of the wire). \par}
|
|
\par
|
|
}{
|
|
References AutoContactVTee::create(), AutoContactTurn::create(), AutoContactHTee::create(), AutoSegment::create(), Session::getContactLayer(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_1Pad().}\par
|
|
}
|
|
{\xe \v _do_1G_1M1\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_1G_1M1}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_1G_1M1 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAS}
|
|
{\bkmkend AAAAAAAAAS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is {\i one} global and one RoutingPad in {\f2 METAL1} . The {\f2 METAL1} is assumed to be vertical.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: When accessing the RoutingPad through an horizontal global segment\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid and the vertical extension of the segment is small, the global is still directly attached to the terminal, inducing a high constraint on it. We left to job of slackening it to the router.\par
|
|
} \par
|
|
}{
|
|
References GCellTopology::doRp_Access(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags, and anonymous_namespace\{LoadGrByNet.cpp\}::VSmall.}\par
|
|
}
|
|
{\xe \v _do_1G_xM1\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_1G_xM1}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_1G_xM1 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAT}
|
|
{\bkmkend AAAAAAAAAT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is {\i one} global and any number of RoutingPad in {\f2 METAL1} . The {\f2 METAL1} is assumed to be vertical.\par
|
|
The RoutingPads are linked together two by two. If the horizontal segments are not aligned by the router, part of the routage will be done through the RoutingPad itself. The global incoming segment will connected to the leftmost, rightmost or centermost RoutingPad according from wich side it comes from.\par
|
|
\par
|
|
}{
|
|
References AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_Access(), Component::getBoundingBox(), Session::getContactLayer(), Box::getHeight(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_xG_1M1_1M2\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG_1M1_1M2}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG_1M1_1M2 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAU}
|
|
{\bkmkend AAAAAAAAAU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is at least one global (and up to 4), one {\f2 METAL1} RoutingPad (assumed V) and one {\f2 METAL2} RoutingPad (assumed H).\par
|
|
In this topology, we want to try to reuse the {\f2 METAL2} RoutingPad as a feedtrough in the horizontal routage. Thus:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The {\f2 METAL1} and {\f2 METAL2} RoutingPad are connected through a separate wiring.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The south & west global wiring is attached to the leftmost contact of the {\f2 METAL2} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The north & east global wiring is attached to the rightmost contact of the {\f2 METAL2} .\par}
|
|
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Nothing (no south nor west).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An AutoContact (west present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An horizontal plus a turn (south present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An horizontal plus a HTee (south & west present).\par}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Not all configurations are represented below.\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
} \par
|
|
}{
|
|
References AutoContactTurn::create(), AutoContactHTee::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), Session::getRoutingLayer(), Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_xG_xM1_xM3\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG_xM1_xM3}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG_xM1_xM3 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAV}
|
|
{\bkmkend AAAAAAAAAV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is at least one global (and up to 4), at least one {\f2 METAL1} RoutingPad (assumed V) and at least one {\f2 METAL3} RoutingPad (assumed V).\par
|
|
In this topology, we want to try to reuse the {\f2 METAL3} RoutingPad as a feedtrough in the vertical routage. Thus:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The {\f2 METAL1} and {\f2 METAL3} RoutingPad are connected through a separate wiring made of separate horizontals.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The south-west global wiring is attached to the leftmost RoutingPad if there isn't south or to the first {\f2 METAL3} otherwise.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The north-east global wiring is attached to the rightmost RoutingPad if there isn't north or to the first {\f2 METAL3} otherwise.\par}
|
|
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Nothing (no south nor west).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An AutoContact on the leftmost RoutingPad (west present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An AutoContact on the first {\f2 METAL3} (only south present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An AutoContact plus a vertical plus a VTee (south & west present).\par}
|
|
\par
|
|
}{
|
|
References AutoContactVTee::create(), AutoContactTurn::create(), AutoContactHTee::create(), AutoSegment::create(), GCellTopology::doRp_Access(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Component::getBoundingBox(), Session::getContactLayer(), Box::getHeight(), Session::getRoutingLayer(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_xG_xM2\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG_xM2}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG_xM2 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAW}
|
|
{\bkmkend AAAAAAAAAW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is at least one global (and up to 4), and any number of {\f2 METAL2} RoutingPads (assumeds H).\par
|
|
In this topology, we want to try to reuse the {\f2 METAL2} RoutingPad as a feedtrough in the horizontal routage. Thus:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The RoutingPad are connecteds trough a separate staircase (or straight wire if aligneds).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The south-west global wiring is attached to the leftmost RoutingPad if there isn't south or to the biggest horizontal RoutingPad otherwise.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The north-east global wiring is attached to the rightmost RoutingPad if there isn't south or to the biggest horizontal RoutingPad otherwise.\par}
|
|
\par
|
|
}{
|
|
References AutoContactVTee::create(), AutoSegment::create(), GCellTopology::doRp_Access(), GCellTopology::doRp_AutoContacts(), GCellTopology::doRp_StairCaseH(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, Component::getBoundingBox(), Session::getContactLayer(), Box::getWidth(), Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_1G_1M3\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_1G_1M3}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_1G_1M3 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAX}
|
|
{\bkmkend AAAAAAAAAX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there is one global and one {\f2 METAL3} RoutingPad (assumeds V).\par
|
|
In this topology, we reuse the {\f2 METAL3} RoutingPad as a feedtrough in the vertical routage. Thus:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the global is either north or south, we directly connect to the north end or south end of the RoutingPad. The vertical global will have no slack at all we assume that METAL3 terminals are only from blocks and are aligneds vertically.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the global is east or west {\i and} the RoutingPad is sufficiently extended in the vertical direction, we connect an horizontal in the normal way.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the global is not sufficiently extended, we add a turn to give some slack to the global.\par}
|
|
\par
|
|
}{
|
|
References AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), AutoContact::getX(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v _do_xG_xM3\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:_do_xG_xM3}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _do_xG_xM3 (){\f2 [private]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAY}
|
|
{\bkmkend AAAAAAAAAY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a topology where there at least one global and two {\f2 METAL3} RoutingPad (assumed V).\par
|
|
In this topology, we reuse the {\f2 METAL3} RoutingPad as a feedtrough in the vertical routage. We assume that the most likely relative position of the RoutingPads is to be aligned vertically. Thus:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
All RoutingPads are linked two by two trough vertical staircases.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The south-west global wiring is attached to the bottommost RoutingPad (without vertical slack). If a misalignment is detected, then a dogleg is added.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The north-east global wiring is attached to the topmost RoutingPad (without vertical slack).\par}
|
|
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Nothing (no south nor west).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An sliding AutoContact on the bottommost RoutingPad (west present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An fixed AutoContact on the bottommost RoutingPad (only south present).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
An fixed AutoContact plus a vertical plus a VTee (south & west present).\par}
|
|
\par
|
|
}{
|
|
References AutoContactVTee::create(), AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_Access(), GCellTopology::doRp_AutoContacts(), GCellTopology::doRp_StairCaseV(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, anonymous_namespace\{LoadGrByNet.cpp\}::DoTargetContact, Session::getContactLayer(), DbU::getValueString(), AutoContact::getX(), anonymous_namespace\{LoadGrByNet.cpp\}::HAccess, Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
{\xe \v singleGCell\:Global Routing Loading}
|
|
{\xe \v Global Routing Loading\:singleGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void singleGCell ({\b KatabaticEngine} * {\i ktbt}, {\b Net} * {\i net})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAAZ}
|
|
{\bkmkend AAAAAAAAAZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All the RoutingPads of the net are concentrated under a single GCell. This function assumes that all the terminals are in {\f2 METAL1} (vertical), and link them two by two by horizontal wires. \par
|
|
}{
|
|
References AutoContactTurn::create(), AutoSegment::create(), GCellTopology::doRp_AutoContacts(), anonymous_namespace\{LoadGrByNet.cpp\}::DoSourceContact, Session::getContactLayer(), Grid< GCellT >::getGCell(), KatabaticEngine::getGCellGrid(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), Net::getRoutingPads(), Katabatic::KbHorizontal, Katabatic::KbVertical, and anonymous_namespace\{LoadGrByNet.cpp\}::NoFlags.}\par
|
|
}
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Namespace Documentation\par \pard\plain
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{AutoSegment.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{AutoSegment.cpp\}}
|
|
{\xe \v anonymous_namespace\{AutoSegment.cpp\}}
|
|
{\bkmkstart AAAAAAAABA}
|
|
{\bkmkend AAAAAAAABA}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{ChipTools.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{ChipTools.cpp\}}
|
|
{\xe \v anonymous_namespace\{ChipTools.cpp\}}
|
|
{\bkmkstart AAAAAAAABB}
|
|
{\bkmkend AAAAAAAABB}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{GCell.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{GCell.cpp\}}
|
|
{\xe \v anonymous_namespace\{GCell.cpp\}}
|
|
{\bkmkstart AAAAAAAABC}
|
|
{\bkmkend AAAAAAAABC}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{KatabaticEngine.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{KatabaticEngine.cpp\}}
|
|
{\xe \v anonymous_namespace\{KatabaticEngine.cpp\}}
|
|
{\bkmkstart AAAAAAAABD}
|
|
{\bkmkend AAAAAAAABD}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{LoadGrByNet.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{LoadGrByNet.cpp\}}
|
|
{\xe \v anonymous_namespace\{LoadGrByNet.cpp\}}
|
|
{\bkmkstart AAAAAAAABE}
|
|
{\bkmkend AAAAAAAABE}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Classes\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b GCellTopology}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring for a Net inside a GCell ({\b internal} ). }\par}}}
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Enumerations\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b LocalFunctionFlag} \{ {\b NoFlags} = 0x00000000
|
|
, {\b HAccess} = 0x00000002,
|
|
{\b VSmall} = 0x00000004,
|
|
{\b HSmall} = 0x00000008,
|
|
{\b Punctual} = 0x00000010
|
|
, {\b DoSourceContact} = 0x00000100,
|
|
{\b DoTargetContact} = 0x00000200
|
|
\}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b checkRoutingPadSize} ({\b Component} *anchor)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b singleGCell} ({\b KatabaticEngine} *ktbt, {\b Net} *net)\par
|
|
}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
anonymous_namespace\{Session.cpp\} Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v anonymous_namespace\{Session.cpp\}}
|
|
{\xe \v anonymous_namespace\{Session.cpp\}}
|
|
{\bkmkstart AAAAAAAABG}
|
|
{\bkmkend AAAAAAAABG}
|
|
\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Katabatic Namespace Reference\par \pard\plain
|
|
{\tc\tcl2 \v Katabatic}
|
|
{\xe \v Katabatic}
|
|
{\bkmkstart AAAAAAAABH}
|
|
{\bkmkend AAAAAAAABH}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The namespace dedicated to {\b Katabatic}. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Classes\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoContact}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoContact}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoContactHTee}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} H-Tee (two H, one V) }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoContactTerminal}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Terminal (S/T is a Terminal) }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoContactTurn}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Turn (one H, one V) }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoContactVTee}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} V-Tee (one H, two V) }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoHorizontal}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Horizontal {\b AutoSegment}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegment}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoSegment}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_Aligneds}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All aligned {\b AutoSegment} of a set. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_AnchorOnGCell}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} Beginning and/or Stopping in a {\b GCell}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_InDirection}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select {\b AutoSegment} in a given direction. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_IsAccountable}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select accoutable {\b AutoSegment}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_OnContact}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} anchored on a Contact. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoSegments_Perpandiculars}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All perpandicular {\b AutoSegment} to a set of aligneds. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b AutoVertical}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Vertical {\b AutoSegment}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b BaseGrid}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract Base Class for Irregular {\b Grid}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b BaseObserver}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b ChipTools}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Utilities for Chip Level Design. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b GCell}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Routing Global Cell. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b GCellDensitySet}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Set, sorted by density. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b GCellGrid}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Grid}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Grid}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Template Class for Regular {\b Grid}. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b KatabaticEngine}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b Katabatic} Tool. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b LocatorHelper}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Locator Helper Collection's Locators. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Observable}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, Subject part. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Observer}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Session}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Modification {\b Session} for {\b Katabatic}. }\par}}}
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Typedefs\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b Hurricane::Filter}< {\b AutoSegment} * > {\b AutoSegmentHF}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b Hurricane::Locator}< {\b AutoSegment} * > {\b AutoSegmentHL}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b Hurricane::Collection}< {\b AutoSegment} * > {\b AutoSegmentHC}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericCollection}< {\b AutoSegment} * > {\b AutoSegments}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericLocator}< {\b AutoSegment} * > {\b AutoSegmentLocator}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericFilter}< {\b AutoSegment} * > {\b AutoSegmentFilter}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericCollection}< {\b GCell} * > {\b GCells}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericLocator}< {\b GCell} * > {\b GCellLocator}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef {\b GenericFilter}< {\b GCell} * > {\b GCellFilter}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Enumerations\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b FunctionFlag} \{ , {\b KbOpenSession} = 0x00000001,
|
|
{\b KbRealignate} = 0x00000002,
|
|
{\b KbNativeConstraints} = 0x00000004,
|
|
{\b KbForceMove} = 0x00000008,
|
|
{\b KbHorizontal} = 0x00000010,
|
|
{\b KbVertical} = 0x00000020,
|
|
{\b KbWithPerpands} = 0x00000040,
|
|
{\b KbSource} = 0x00000080,
|
|
{\b KbTarget} = 0x00000100,
|
|
{\b KbWarnOnError} = 0x00000200
|
|
, {\b KbPropagate} = 0x00008000
|
|
, {\b KbUseAboveLayer} = 0x00020000,
|
|
{\b KbUseBelowLayer} = 0x00040000,
|
|
{\b KbDoglegOnLeft} = 0x00080000,
|
|
{\b KbDoglegOnRight} = 0x00100000
|
|
, {\b KbHalfSlacken} = 0x00800000
|
|
\}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b EngineState} \{ {\b EngineCreation} = 1,
|
|
{\b EngineGlobalLoaded} = 2,
|
|
{\b EngineActive} = 3,
|
|
{\b EngineDriving} = 4,
|
|
{\b EnginePreDestroying} = 5,
|
|
{\b EngineGutted} = 6
|
|
\}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b AutoContactFlag} \{ {\b CntFixed} = 0x00000001,
|
|
{\b CntTerminal} = 0x00000002,
|
|
{\b CntTurn} = 0x00000004,
|
|
{\b CntHTee} = 0x00000008,
|
|
{\b CntVTee} = 0x00000010,
|
|
{\b CntInvalidated} = 0x00000020,
|
|
{\b CntInvalidatedCache} = 0x00000040,
|
|
{\b CntInCreationStage} = 0x00000080,
|
|
{\b CntBadTopology} = 0x00000100
|
|
\}\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b AutoSegmentFlag} \{ , {\b SegHorizontal} = (1<< 0),
|
|
{\b SegFixed} = (1<< 1),
|
|
{\b SegGlobal} = (1<< 2),
|
|
{\b SegWeakGlobal} = (1<< 3),
|
|
{\b SegCanonical} = (1<< 4),
|
|
{\b SegBipoint} = (1<< 5),
|
|
{\b SegDogleg} = (1<< 6),
|
|
{\b SegStrap} = (1<< 7),
|
|
{\b SegSourceTop} = (1<< 8),
|
|
{\b SegSourceBottom} = (1<< 9),
|
|
{\b SegTargetTop} = (1<<10),
|
|
{\b SegTargetBottom} = (1<<11),
|
|
{\b SegIsReduced} = (1<<12),
|
|
{\b SegLayerChange} = (1<<13)
|
|
, {\b SegStrongTerminal} = SegSourceTerminal|SegTargetTerminal,
|
|
{\b SegWeakTerminal1} = (1<<16),
|
|
{\b SegWeakTerminal2} = (1<<17),
|
|
{\b SegNotSourceAligned} = (1<<18),
|
|
{\b SegNotTargetAligned} = (1<<19)
|
|
, {\b SegSlackened} = (1<<22),
|
|
{\b SegAxisSet} = (1<<23),
|
|
{\b SegInvalidated} = (1<<24)
|
|
, {\b SegInvalidatedLayer} = (1<<27),
|
|
{\b SegCreated} = (1<<28)
|
|
, {\b SegWeakTerminal} = SegStrongTerminal|SegWeakTerminal1|SegWeakTerminal2,
|
|
{\b SegNotAligned} = SegNotSourceAligned|SegNotTargetAligned
|
|
\}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The namespace dedicated to {\b Katabatic}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Typedef Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegmentHF\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentHF}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b Hurricane::Filter}< {\b AutoSegment} * > {\b AutoSegmentHF}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABI}
|
|
{\bkmkend AAAAAAAABI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Filter. \par
|
|
}}
|
|
{\xe \v AutoSegmentHL\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentHL}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b Hurricane::Locator}< {\b AutoSegment} * > {\b AutoSegmentHL}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABJ}
|
|
{\bkmkend AAAAAAAABJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Locator. \par
|
|
}}
|
|
{\xe \v AutoSegmentHC\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentHC}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b Hurricane::Collection}< {\b AutoSegment} * > {\b AutoSegmentHC}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABK}
|
|
{\bkmkend AAAAAAAABK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Collection. \par
|
|
}}
|
|
{\xe \v AutoSegments\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericCollection}< {\b AutoSegment} * > {\b AutoSegments}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABL}
|
|
{\bkmkend AAAAAAAABL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Generic Collection (collection with {\f2 unique_ptr<>} like support). \par
|
|
}}
|
|
{\xe \v AutoSegmentLocator\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericLocator}< {\b AutoSegment} * > {\b AutoSegmentLocator}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABM}
|
|
{\bkmkend AAAAAAAABM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Generic Locator (locator with {\f2 unique_ptr<>} like support). \par
|
|
}}
|
|
{\xe \v AutoSegmentFilter\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentFilter}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericFilter}< {\b AutoSegment} * > {\b AutoSegmentFilter}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABN}
|
|
{\bkmkend AAAAAAAABN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for {\b AutoSegment} Hurricane Generic Filter (filter with {\f2 unique_ptr<>} like support). \par
|
|
}}
|
|
{\xe \v GCells\:Katabatic}
|
|
{\xe \v Katabatic\:GCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericCollection}< {\b GCell} * > {\b GCells}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABO}
|
|
{\bkmkend AAAAAAAABO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Collection with auto-pointer like support. \par
|
|
}}
|
|
{\xe \v GCellLocator\:Katabatic}
|
|
{\xe \v Katabatic\:GCellLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericLocator}< {\b GCell} * > {\b GCellLocator}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABP}
|
|
{\bkmkend AAAAAAAABP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Locator with auto-pointer like support. \par
|
|
}}
|
|
{\xe \v GCellFilter\:Katabatic}
|
|
{\xe \v Katabatic\:GCellFilter}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef {\b GenericFilter}< {\b GCell} * > {\b GCellFilter}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABQ}
|
|
{\bkmkend AAAAAAAABQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Filter with auto-pointer like support. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Enumeration Type Documentation\par
|
|
\pard\plain
|
|
{\xe \v FunctionFlag\:Katabatic}
|
|
{\xe \v Katabatic\:FunctionFlag}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b FunctionFlag}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAABR}
|
|
{\bkmkend AAAAAAAABR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A set of flags to that can be passed to functions/methods througout all {\b Katabatic}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v KbOpenSession\:Katabatic}
|
|
{\xe \v Katabatic\:KbOpenSession}
|
|
{\qr KbOpenSession{\bkmkstart AAAAAAAABS}
|
|
{\bkmkend AAAAAAAABS}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Tells the function to open it's own {\b Session}, otherwise use the one that should already have been opened. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbRealignate\:Katabatic}
|
|
{\xe \v Katabatic\:KbRealignate}
|
|
{\qr KbRealignate{\bkmkstart AAAAAAAABT}
|
|
{\bkmkend AAAAAAAABT}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
On {\b AutoSegment} axis manipulation, force the realignment of all the segment on an aligned set, even is the axis of the canonical is already at the right coordinate. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbNativeConstraints\:Katabatic}
|
|
{\xe \v Katabatic\:KbNativeConstraints}
|
|
{\qr KbNativeConstraints{\bkmkstart AAAAAAAABU}
|
|
{\bkmkend AAAAAAAABU}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Ignore user-defined constraints or terminal induced ones (for AutoContacts anchored on terminals) and return the owning {\b GCell} alone. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbForceMove\:Katabatic}
|
|
{\xe \v Katabatic\:KbForceMove}
|
|
{\qr KbForceMove{\bkmkstart AAAAAAAABV}
|
|
{\bkmkend AAAAAAAABV}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Tells the function to force move, even if it is not needed. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbHorizontal\:Katabatic}
|
|
{\xe \v Katabatic\:KbHorizontal}
|
|
{\qr KbHorizontal{\bkmkstart AAAAAAAABW}
|
|
{\bkmkend AAAAAAAABW}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request some action to be done in the horizontal direction. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbVertical\:Katabatic}
|
|
{\xe \v Katabatic\:KbVertical}
|
|
{\qr KbVertical{\bkmkstart AAAAAAAABX}
|
|
{\bkmkend AAAAAAAABX}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request some action to be done in the vertical direction. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbWithPerpands\:Katabatic}
|
|
{\xe \v Katabatic\:KbWithPerpands}
|
|
{\qr KbWithPerpands{\bkmkstart AAAAAAAABY}
|
|
{\bkmkend AAAAAAAABY}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request that AutoSegments in perpandicular direction should be includeds. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbSource\:Katabatic}
|
|
{\xe \v Katabatic\:KbSource}
|
|
{\qr KbSource{\bkmkstart AAAAAAAABZ}
|
|
{\bkmkend AAAAAAAABZ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request AutoSegments anchored by their source anchor or that some operation has to be performed on the source. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbTarget\:Katabatic}
|
|
{\xe \v Katabatic\:KbTarget}
|
|
{\qr KbTarget{\bkmkstart AAAAAAAACA}
|
|
{\bkmkend AAAAAAAACA}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request AutoSegments anchored by their target anchor or that some operation has to be performed on the target. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbWarnOnError\:Katabatic}
|
|
{\xe \v Katabatic\:KbWarnOnError}
|
|
{\qr KbWarnOnError{\bkmkstart AAAAAAAACB}
|
|
{\bkmkend AAAAAAAACB}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Display a warning if something has gone wrong. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbPropagate\:Katabatic}
|
|
{\xe \v Katabatic\:KbPropagate}
|
|
{\qr KbPropagate{\bkmkstart AAAAAAAACC}
|
|
{\bkmkend AAAAAAAACC}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The action will affect all the segments on an aligned set. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbUseAboveLayer\:Katabatic}
|
|
{\xe \v Katabatic\:KbUseAboveLayer}
|
|
{\qr KbUseAboveLayer{\bkmkstart AAAAAAAACD}
|
|
{\bkmkend AAAAAAAACD}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request/tell the a above layer has been used. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbUseBelowLayer\:Katabatic}
|
|
{\xe \v Katabatic\:KbUseBelowLayer}
|
|
{\qr KbUseBelowLayer{\bkmkstart AAAAAAAACE}
|
|
{\bkmkend AAAAAAAACE}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Request/tell the a below layer has been used. \par
|
|
}\cell }{\row }
|
|
{\xe \v KbDoglegOnLeft\:Katabatic}
|
|
{\xe \v Katabatic\:KbDoglegOnLeft}
|
|
{\qr KbDoglegOnLeft{\bkmkstart AAAAAAAACF}
|
|
{\bkmkend AAAAAAAACF}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The dogleg has occured on the left {\i of something} \par
|
|
}\cell }{\row }
|
|
{\xe \v KbDoglegOnRight\:Katabatic}
|
|
{\xe \v Katabatic\:KbDoglegOnRight}
|
|
{\qr KbDoglegOnRight{\bkmkstart AAAAAAAACG}
|
|
{\bkmkend AAAAAAAACG}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The dogleg has occured on the right {\i of something} \par
|
|
}\cell }{\row }
|
|
{\xe \v KbHalfSlacken\:Katabatic}
|
|
{\xe \v Katabatic\:KbHalfSlacken}
|
|
{\qr KbHalfSlacken{\bkmkstart AAAAAAAACH}
|
|
{\bkmkend AAAAAAAACH}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
For {\b AutoSegment::slacken()}, change the overconstrained limit from 10 tracks down to 3 (hard-wired). \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
{\xe \v EngineState\:Katabatic}
|
|
{\xe \v Katabatic\:EngineState}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b EngineState}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAACI}
|
|
{\bkmkend AAAAAAAACI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Describe the current state of the {\b KatabaticEngine}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v EngineCreation\:Katabatic}
|
|
{\xe \v Katabatic\:EngineCreation}
|
|
{\qr EngineCreation{\bkmkstart AAAAAAAACJ}
|
|
{\bkmkend AAAAAAAACJ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The tool is created, but still in the {\f2 _postCreate} stage. \par
|
|
}\cell }{\row }
|
|
{\xe \v EngineGlobalLoaded\:Katabatic}
|
|
{\xe \v Katabatic\:EngineGlobalLoaded}
|
|
{\qr EngineGlobalLoaded{\bkmkstart AAAAAAAACK}
|
|
{\bkmkend AAAAAAAACK}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The global routing has been loaded from Knik. \par
|
|
}\cell }{\row }
|
|
{\xe \v EngineActive\:Katabatic}
|
|
{\xe \v Katabatic\:EngineActive}
|
|
{\qr EngineActive{\bkmkstart AAAAAAAACL}
|
|
{\bkmkend AAAAAAAACL}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The Engine is in normal running mode (routing ordinary wires). \par
|
|
}\cell }{\row }
|
|
{\xe \v EngineDriving\:Katabatic}
|
|
{\xe \v Katabatic\:EngineDriving}
|
|
{\qr EngineDriving{\bkmkstart AAAAAAAACM}
|
|
{\bkmkend AAAAAAAACM}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The Engine is transforming the AutoContact/AutoSegment into normal Contact/Segment (prior to tool deletion). \par
|
|
}\cell }{\row }
|
|
{\xe \v EnginePreDestroying\:Katabatic}
|
|
{\xe \v Katabatic\:EnginePreDestroying}
|
|
{\qr EnginePreDestroying{\bkmkstart AAAAAAAACN}
|
|
{\bkmkend AAAAAAAACN}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This state is used whenever the tool is destroyed without passing through the EngineDriving state. \par
|
|
}\cell }{\row }
|
|
{\xe \v EngineGutted\:Katabatic}
|
|
{\xe \v Katabatic\:EngineGutted}
|
|
{\qr EngineGutted{\bkmkstart AAAAAAAACO}
|
|
{\bkmkend AAAAAAAACO}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
After the EngineDriving state, all the working structures are removed and the tool can no longer be used. It only awaits clean destruction. \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
{\xe \v AutoContactFlag\:Katabatic}
|
|
{\xe \v Katabatic\:AutoContactFlag}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b AutoContactFlag}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAACP}
|
|
{\bkmkend AAAAAAAACP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set of flags to describe the internal state of an {\b AutoContact}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v CntFixed\:Katabatic}
|
|
{\xe \v Katabatic\:CntFixed}
|
|
{\qr CntFixed{\bkmkstart AAAAAAAACQ}
|
|
{\bkmkend AAAAAAAACQ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This contact cannot be moved. \par
|
|
}\cell }{\row }
|
|
{\xe \v CntTerminal\:Katabatic}
|
|
{\xe \v Katabatic\:CntTerminal}
|
|
{\qr CntTerminal{\bkmkstart AAAAAAAACR}
|
|
{\bkmkend AAAAAAAACR}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This contact is anchored on a terminal ({\b AutoContactTerminal}), {\b must not be changed} . \par
|
|
}\cell }{\row }
|
|
{\xe \v CntTurn\:Katabatic}
|
|
{\xe \v Katabatic\:CntTurn}
|
|
{\qr CntTurn{\bkmkstart AAAAAAAACS}
|
|
{\bkmkend AAAAAAAACS}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The object true class is {\b AutoContactTurn}, {\b must not be changed} . \par
|
|
}\cell }{\row }
|
|
{\xe \v CntHTee\:Katabatic}
|
|
{\xe \v Katabatic\:CntHTee}
|
|
{\qr CntHTee{\bkmkstart AAAAAAAACT}
|
|
{\bkmkend AAAAAAAACT}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The object true class is {\b AutoContactHTee}, {\b must not be changed} . \par
|
|
}\cell }{\row }
|
|
{\xe \v CntVTee\:Katabatic}
|
|
{\xe \v Katabatic\:CntVTee}
|
|
{\qr CntVTee{\bkmkstart AAAAAAAACU}
|
|
{\bkmkend AAAAAAAACU}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The object true class is {\b AutoContactVTee}, {\b must not be changed} . \par
|
|
}\cell }{\row }
|
|
{\xe \v CntInvalidated\:Katabatic}
|
|
{\xe \v Katabatic\:CntInvalidated}
|
|
{\qr CntInvalidated{\bkmkstart AAAAAAAACV}
|
|
{\bkmkend AAAAAAAACV}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
At least one {\b AutoSegment} of this contact has been moved, the contact position must be recomputed (in the {\b Session} revalidation). \par
|
|
}\cell }{\row }
|
|
{\xe \v CntInvalidatedCache\:Katabatic}
|
|
{\xe \v Katabatic\:CntInvalidatedCache}
|
|
{\qr CntInvalidatedCache{\bkmkstart AAAAAAAACW}
|
|
{\bkmkend AAAAAAAACW}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
At least one {\b AutoSegment} has been broken or moved up, the connexity must be checked and possibly corrected (in {\b Session} revalidation). \par
|
|
}\cell }{\row }
|
|
{\xe \v CntInCreationStage\:Katabatic}
|
|
{\xe \v Katabatic\:CntInCreationStage}
|
|
{\qr CntInCreationStage{\bkmkstart AAAAAAAACX}
|
|
{\bkmkend AAAAAAAACX}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets only during the initial creation process. \par
|
|
}\cell }{\row }
|
|
{\xe \v CntBadTopology\:Katabatic}
|
|
{\xe \v Katabatic\:CntBadTopology}
|
|
{\qr CntBadTopology{\bkmkstart AAAAAAAACY}
|
|
{\bkmkend AAAAAAAACY}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Something wrong has happened and the connexity of the {\b AutoContact} is no longer ensured (too much or too less AutoSegments, too wide span of {\b AutoSegment} layers). \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
{\xe \v AutoSegmentFlag\:Katabatic}
|
|
{\xe \v Katabatic\:AutoSegmentFlag}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b AutoSegmentFlag}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAACZ}
|
|
{\bkmkend AAAAAAAACZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set of flags to describe the internal state of an {\b AutoSegment}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v SegHorizontal\:Katabatic}
|
|
{\xe \v Katabatic\:SegHorizontal}
|
|
{\qr SegHorizontal{\bkmkstart AAAAAAAADA}
|
|
{\bkmkend AAAAAAAADA}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} is associated to a {\b Hurricane::Horizontal}, if not set, it is associated to a {\b Hurricane::Vertical}. Set when the object is constructed. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegFixed\:Katabatic}
|
|
{\xe \v Katabatic\:SegFixed}
|
|
{\qr SegFixed{\bkmkstart AAAAAAAADB}
|
|
{\bkmkend AAAAAAAADB}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b Hurricane::Segment} associated must/cannot be moved. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegGlobal\:Katabatic}
|
|
{\xe \v Katabatic\:SegGlobal}
|
|
{\qr SegGlobal{\bkmkstart AAAAAAAADC}
|
|
{\bkmkend AAAAAAAADC}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b AutoSegment} span between at least two GCells (i.e. not fully enclosed in one). \par
|
|
}\cell }{\row }
|
|
{\xe \v SegWeakGlobal\:Katabatic}
|
|
{\xe \v Katabatic\:SegWeakGlobal}
|
|
{\qr SegWeakGlobal{\bkmkstart AAAAAAAADD}
|
|
{\bkmkend AAAAAAAADD}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b AutoSegment} is part of an aligned set which contains at least a global. The global segment is itself tagged as weak global. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegCanonical\:Katabatic}
|
|
{\xe \v Katabatic\:SegCanonical}
|
|
{\qr SegCanonical{\bkmkstart AAAAAAAADE}
|
|
{\bkmkend AAAAAAAADE}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} is the designated representant of a set of aligned {\b AutoSegment}. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegBipoint\:Katabatic}
|
|
{\xe \v Katabatic\:SegBipoint}
|
|
{\qr SegBipoint{\bkmkstart AAAAAAAADF}
|
|
{\bkmkend AAAAAAAADF}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} is a straight wire between two terminal {\b AutoContact}. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegDogleg\:Katabatic}
|
|
{\xe \v Katabatic\:SegDogleg}
|
|
{\qr SegDogleg{\bkmkstart AAAAAAAADG}
|
|
{\bkmkend AAAAAAAADG}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} has been created as the perpandicular part of a dogleg. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegStrap\:Katabatic}
|
|
{\xe \v Katabatic\:SegStrap}
|
|
{\qr SegStrap{\bkmkstart AAAAAAAADH}
|
|
{\bkmkend AAAAAAAADH}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} has been created to to reconnect parts of an {\b AutoSegment} after slackening. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegSourceTop\:Katabatic}
|
|
{\xe \v Katabatic\:SegSourceTop}
|
|
{\qr SegSourceTop{\bkmkstart AAAAAAAADI}
|
|
{\bkmkend AAAAAAAADI}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The source contact of this segment is connected to the {\i top} layer. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegSourceBottom\:Katabatic}
|
|
{\xe \v Katabatic\:SegSourceBottom}
|
|
{\qr SegSourceBottom{\bkmkstart AAAAAAAADJ}
|
|
{\bkmkend AAAAAAAADJ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The source contact of this segment is connected to the {\i bottom} layer. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegTargetTop\:Katabatic}
|
|
{\xe \v Katabatic\:SegTargetTop}
|
|
{\qr SegTargetTop{\bkmkstart AAAAAAAADK}
|
|
{\bkmkend AAAAAAAADK}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The target contact of this segment is connected to the {\i top} layer. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegTargetBottom\:Katabatic}
|
|
{\xe \v Katabatic\:SegTargetBottom}
|
|
{\qr SegTargetBottom{\bkmkstart AAAAAAAADL}
|
|
{\bkmkend AAAAAAAADL}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The target contact of this segment is connected to the {\i bottom} layer. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegIsReduced\:Katabatic}
|
|
{\xe \v Katabatic\:SegIsReduced}
|
|
{\qr SegIsReduced{\bkmkstart AAAAAAAADM}
|
|
{\bkmkend AAAAAAAADM}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This segment is the perpandicular part of a dogleg which will use the {\i same} layer as the parallels. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegLayerChange\:Katabatic}
|
|
{\xe \v Katabatic\:SegLayerChange}
|
|
{\qr SegLayerChange{\bkmkstart AAAAAAAADN}
|
|
{\bkmkend AAAAAAAADN}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} has been created to to reconnect parts of an {\b AutoSegment} after a layer change. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegStrongTerminal\:Katabatic}
|
|
{\xe \v Katabatic\:SegStrongTerminal}
|
|
{\qr SegStrongTerminal{\bkmkstart AAAAAAAADO}
|
|
{\bkmkend AAAAAAAADO}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} directly connected to a terminal. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegWeakTerminal1\:Katabatic}
|
|
{\xe \v Katabatic\:SegWeakTerminal1}
|
|
{\qr SegWeakTerminal1{\bkmkstart AAAAAAAADP}
|
|
{\bkmkend AAAAAAAADP}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} indirectly connected to a terminal with medium strength. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegWeakTerminal2\:Katabatic}
|
|
{\xe \v Katabatic\:SegWeakTerminal2}
|
|
{\qr SegWeakTerminal2{\bkmkstart AAAAAAAADQ}
|
|
{\bkmkend AAAAAAAADQ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} indirectly connected to a terminal with weak strength. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegNotSourceAligned\:Katabatic}
|
|
{\xe \v Katabatic\:SegNotSourceAligned}
|
|
{\qr SegNotSourceAligned{\bkmkstart AAAAAAAADR}
|
|
{\bkmkend AAAAAAAADR}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This source contact of the segment is not the aligned part of a tee ({\f2 h1} or {\f2 h2} for a {\f2 HTee} , {\f2 v1} or {\f2 v2} for a {\f2 VTee} ).\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid AutoSegmentFlag::SegNotAligned \par
|
|
}}\cell }{\row }
|
|
{\xe \v SegNotTargetAligned\:Katabatic}
|
|
{\xe \v Katabatic\:SegNotTargetAligned}
|
|
{\qr SegNotTargetAligned{\bkmkstart AAAAAAAADS}
|
|
{\bkmkend AAAAAAAADS}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This target contact of the segment is not the aligned part of a tee ({\f2 h1} or {\f2 h2} for a {\f2 HTee} , {\f2 v1} or {\f2 v2} for a {\f2 VTee} ).\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid AutoSegmentFlag::SegNotAligned \par
|
|
}}\cell }{\row }
|
|
{\xe \v SegSlackened\:Katabatic}
|
|
{\xe \v Katabatic\:SegSlackened}
|
|
{\qr SegSlackened{\bkmkstart AAAAAAAADT}
|
|
{\bkmkend AAAAAAAADT}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} has been slackened, that is freed from any constraints from source or target through the insertion of straps. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegAxisSet\:Katabatic}
|
|
{\xe \v Katabatic\:SegAxisSet}
|
|
{\qr SegAxisSet{\bkmkstart AAAAAAAADU}
|
|
{\bkmkend AAAAAAAADU}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This {\b AutoSegment} has been explicitly positionned at least once. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegInvalidated\:Katabatic}
|
|
{\xe \v Katabatic\:SegInvalidated}
|
|
{\qr SegInvalidated{\bkmkstart AAAAAAAADV}
|
|
{\bkmkend AAAAAAAADV}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This position or topology of this {\b AutoSegment} has been changed, needing a revalidation. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegInvalidatedLayer\:Katabatic}
|
|
{\xe \v Katabatic\:SegInvalidatedLayer}
|
|
{\qr SegInvalidatedLayer{\bkmkstart AAAAAAAADW}
|
|
{\bkmkend AAAAAAAADW}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The segment has been chenged of layer, but the source & target {\b AutoContact} have not been topologicaly checked yet. This flag {\b must} be used in whith AutoSegmentFlag::SegInvalidated. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegCreated\:Katabatic}
|
|
{\xe \v Katabatic\:SegCreated}
|
|
{\qr SegCreated{\bkmkstart AAAAAAAADX}
|
|
{\bkmkend AAAAAAAADX}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b AutoSegment} has just been created. This flag is set only from the contruction of the object until is {\i first} revalidation. Used to disable some tests that cannot be satisfied initially. \par
|
|
}\cell }{\row }
|
|
{\xe \v SegWeakTerminal\:Katabatic}
|
|
{\xe \v Katabatic\:SegWeakTerminal}
|
|
{\qr SegWeakTerminal{\bkmkstart AAAAAAAADY}
|
|
{\bkmkend AAAAAAAADY}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A mask composed of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegStrongTerminal}\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegWeakTerminal1}\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegWeakTerminal2} \par}
|
|
}\cell }{\row }
|
|
{\xe \v SegNotAligned\:Katabatic}
|
|
{\xe \v Katabatic\:SegNotAligned}
|
|
{\qr SegNotAligned{\bkmkstart AAAAAAAADZ}
|
|
{\bkmkend AAAAAAAADZ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A mask composed of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegNotSourceAligned}\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegNotTargetAligned}\par}
|
|
This mask is a quick way to know if a segment is {\b not} part of an aligned set. It means that the segment is, on both ends, either connected to a terminal, a turn {\i or the stem part of a tee} . \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
Class Documentation{\tc \v Class Documentation}
|
|
\par \pard\plain
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoContact Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoContact}
|
|
{\xe \v AutoContact}
|
|
{\bkmkstart AAAAAAAAEA}
|
|
{\bkmkend AAAAAAAAEA}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoContact}. }}\par
|
|
Inheritance diagram for AutoContact:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoContact__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Hook} * {\b getBodyHook} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Hook} * {\b getAnchorHook} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Component} * {\b getAnchor} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Net} * {\b getNet} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Layer} * {\b getLayer} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getX} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getY} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getDx} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getDy} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Point} {\b getCenter} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Point} {\b getPosition} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getWidth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getHalfWidth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getHeight} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getHalfHeight} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Components} {\b getSlaveComponents} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setLayer} (const {\b Layer} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setWidth} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setHeight} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setSizes} ({\b DbU::Unit} width, {\b DbU::Unit} height)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setX} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setY} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setPosition} ({\b DbU::Unit} width, {\b DbU::Unit} height)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setPosition} (const {\b Point} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setDx} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setDy} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setOffset} ({\b DbU::Unit} dx, {\b DbU::Unit} dy)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b translate} (const {\b DbU::Unit} &tx, const {\b DbU::Unit} &ty)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInCreationStage} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInvalidated} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInvalidatedCache} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isTurn} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isTee} (unsigned int direction) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isHTee} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isVTee} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isFixed} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b hasBadTopology} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canDestroy} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canMoveUp} (const {\b AutoSegment} *moved) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Contact} * {\b base} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual const {\b Name} & {\b getName} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getId} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Box} {\b getBoundingBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getGCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getOpposite} (const {\b AutoSegment} *) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getPerpandicular} (const {\b AutoSegment} *) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getSegment} (unsigned int) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getMinDepth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getMaxDepth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b getLengths} ({\b DbU::Unit} *lengths, AutoSegment::DepthLengthSet &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Box} {\b getNativeConstraintBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Interval} {\b getUConstraints} (unsigned int direction) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getCBXMin} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getCBXMax} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getCBYMin} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getCBYMax} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Box} {\b getConstraintBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Box} & {\b intersectConstraintBox} ({\b Box} &box) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b invalidate} (unsigned int flags=0)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateGeometry} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateTopology} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b showTopologyError} (const std::string &, unsigned int flags=0)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b checkTopology} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setGCell} ({\b GCell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setCBXMin} ({\b DbU::Unit} xMin)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setCBXMax} ({\b DbU::Unit} xMax)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setCBYMin} ({\b DbU::Unit} yMin)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setCBYMax} ({\b DbU::Unit} yMax)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setConstraintBox} (const {\b Box} &box)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b restrictConstraintBox} ({\b DbU::Unit} constraintMin, {\b DbU::Unit} constraintMax, unsigned int flags={\b KbWarnOnError})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b migrateConstraintBox} ({\b AutoContact} *other)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b getAllocateds} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const {\b Name} & {\b getStaticName} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b _getTopology} ({\b Contact} *, {\b Component} *&anchor, {\b Horizontal} **&, {\b Vertical} **&, size_t)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoContact}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{\bkmkstart AAAAAAAAEB}
|
|
{\bkmkend AAAAAAAAEB}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Caching Mechanism
|
|
\par}
|
|
{\tc\tcl2 \v Caching Mechanism}
|
|
To bypass the Ring/Hook mechanism {\i and} the subsequent Session::Lookup() call, the AutoSegments anchored on an {\b AutoContact} are cached in the {\b AutoContact} itself. They can be accessed through {\f2 getHorizontalN()} and getVerticalN() accessors {\f2 N} depending on the subtype of {\b AutoContact}.\par
|
|
Cached AutoSegments are updated in the {\b AutoContact::updateTopology()} function only.\par}
|
|
{\bkmkstart AAAAAAAAEC}
|
|
{\bkmkend AAAAAAAAEC}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Invalidate on AutoContacts
|
|
\par}
|
|
{\tc\tcl2 \v Invalidate on AutoContacts}
|
|
The invalidation of an {\b AutoContact} invalidate all the segments that are anchored on it.\par
|
|
{\b Special Case of HTee & VTee} \par
|
|
When invalidating an HTee or VTee, two out of the three anchored segments are parallels. The {\i aligned} constraint is passed on those two. By default, when we invalidate an {\b AutoSegment}, the invalidation is applied to the whole aligned set through the {\b AutoSegment::getAligneds()} collection. So if one of the parallel is invalidated and the other not, it should only be because we are already in {\f2 getAligneds()} , then we do not want to invalidate again the whole aligned set. In that case, we perform an atomic only invalidation (reset {\b Katabatic::KbPropagate}).\par
|
|
For the complete invalidation/revalidation mechanism see {\b Session Algorithm}.\par}
|
|
{\bkmkstart AAAAAAAAED}
|
|
{\bkmkend AAAAAAAAED}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Notes - Differences from Katabatic 2
|
|
\par}
|
|
{\tc\tcl2 \v Notes - Differences from Katabatic 2}
|
|
From the previous version of {\b Katabatic}, {\b AutoContact} have been greatly stripped down (again). They are now always punctual objetcs with stricly fixed topologies: {
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContactTerminal} to connect to a terminal (one segment). \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContactTurn} to make a turn: two perpandiculars segments. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContactHTee} an horizontal tee: two {\i aligned} horizonals and one vertical. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContactVTee} an horizontal tee: two {\i aligned} verticals and one horizontal. \par}
|
|
\par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getBodyHook\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getBodyHook}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Hook} * getBodyHook (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEE}
|
|
{\bkmkend AAAAAAAAEE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getBodyHook().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_1Pad(), and AutoSegment::create().}\par
|
|
}
|
|
{\xe \v getAnchorHook\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getAnchorHook}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Hook} * getAnchorHook (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEF}
|
|
{\bkmkend AAAAAAAAEF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getAnchorHook().}\par
|
|
}
|
|
{\xe \v getAnchor\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getAnchor}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Component} * getAnchor () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEG}
|
|
{\bkmkend AAAAAAAAEG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getAnchor().}\par
|
|
{
|
|
Referenced by AutoContactTerminal::getNativeConstraintBox(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v getNet\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getNet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Net} * getNet () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEH}
|
|
{\bkmkend AAAAAAAAEH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getNet().}\par
|
|
{
|
|
Referenced by AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), AutoContactTerminal::updateGeometry(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v getLayer\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Layer} * getLayer () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEI}
|
|
{\bkmkend AAAAAAAAEI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getLayer().}\par
|
|
{
|
|
Referenced by AutoSegment::makeDogleg(), AutoSegment::revalidate(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v getX\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getX () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEJ}
|
|
{\bkmkend AAAAAAAAEJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getX().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_xG_xM3(), AutoSegment::create(), GCellTopology::doRp_StairCaseV(), AutoSegment::makeDogleg(), AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), and AutoContactHTee::updateGeometry().}\par
|
|
}
|
|
{\xe \v getY\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getY () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEK}
|
|
{\bkmkend AAAAAAAAEK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getY().}\par
|
|
{
|
|
Referenced by AutoSegment::create(), GCellTopology::doRp_StairCaseH(), AutoSegment::makeDogleg(), AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), and AutoContactHTee::updateGeometry().}\par
|
|
}
|
|
{\xe \v getDx\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getDx}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDx () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEL}
|
|
{\bkmkend AAAAAAAAEL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getDx().}\par
|
|
}
|
|
{\xe \v getDy\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getDy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDy () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEM}
|
|
{\bkmkend AAAAAAAAEM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getDy().}\par
|
|
}
|
|
{\xe \v getCenter\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getCenter}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Point} getCenter () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEN}
|
|
{\bkmkend AAAAAAAAEN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}}
|
|
{\xe \v getPosition\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getPosition}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Point} getPosition () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEO}
|
|
{\bkmkend AAAAAAAAEO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getPosition().}\par
|
|
}
|
|
{\xe \v getWidth\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getWidth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getWidth () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEP}
|
|
{\bkmkend AAAAAAAAEP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getWidth().}\par
|
|
}
|
|
{\xe \v getHalfWidth\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getHalfWidth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getHalfWidth () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEQ}
|
|
{\bkmkend AAAAAAAAEQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getHalfWidth().}\par
|
|
}
|
|
{\xe \v getHeight\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getHeight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getHeight () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAER}
|
|
{\bkmkend AAAAAAAAER}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getHeight().}\par
|
|
}
|
|
{\xe \v getHalfHeight\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getHalfHeight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getHalfHeight () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAES}
|
|
{\bkmkend AAAAAAAAES}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::getHalfHeight().}\par
|
|
}
|
|
{\xe \v getSlaveComponents\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getSlaveComponents}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Components} getSlaveComponents () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAET}
|
|
{\bkmkend AAAAAAAAET}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Component::getSlaveComponents().}\par
|
|
}
|
|
{\xe \v setLayer\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setLayer (const {\b Layer} * {\i layer}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEU}
|
|
{\bkmkend AAAAAAAAEU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setLayer().}\par
|
|
{
|
|
Referenced by AutoSegment::reduceDoglegLayer(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v setWidth\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setWidth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setWidth ({\b DbU::Unit} {\i w}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEV}
|
|
{\bkmkend AAAAAAAAEV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setWidth().}\par
|
|
}
|
|
{\xe \v setHeight\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setHeight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setHeight ({\b DbU::Unit} {\i h}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEW}
|
|
{\bkmkend AAAAAAAAEW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setHeight().}\par
|
|
}
|
|
{\xe \v setSizes\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setSizes}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setSizes ({\b DbU::Unit} {\i w}, {\b DbU::Unit} {\i h}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEX}
|
|
{\bkmkend AAAAAAAAEX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setSizes().}\par
|
|
}
|
|
{\xe \v setX\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setX ({\b DbU::Unit} {\i x}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEY}
|
|
{\bkmkend AAAAAAAAEY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setX().}\par
|
|
{
|
|
Referenced by AutoVertical::_postCreate(), AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v setY\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setY ({\b DbU::Unit} {\i y}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAEZ}
|
|
{\bkmkend AAAAAAAAEZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setY().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_postCreate(), AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v setPosition\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setPosition}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setPosition ({\b DbU::Unit} {\i w}, {\b DbU::Unit} {\i h}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFA}
|
|
{\bkmkend AAAAAAAAFA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setPosition().}\par
|
|
}
|
|
{\xe \v setPosition\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setPosition}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setPosition (const {\b Point} & {\i p}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFB}
|
|
{\bkmkend AAAAAAAAFB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setPosition().}\par
|
|
}
|
|
{\xe \v setDx\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setDx}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDx ({\b DbU::Unit} {\i dx}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFC}
|
|
{\bkmkend AAAAAAAAFC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setDx().}\par
|
|
}
|
|
{\xe \v setDy\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setDy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDy ({\b DbU::Unit} {\i dy}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFD}
|
|
{\bkmkend AAAAAAAAFD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setDy().}\par
|
|
}
|
|
{\xe \v setOffset\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setOffset}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setOffset ({\b DbU::Unit} {\i w}, {\b DbU::Unit} {\i h}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFE}
|
|
{\bkmkend AAAAAAAAFE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}{
|
|
References Contact::setOffset().}\par
|
|
}
|
|
{\xe \v translate\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:translate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void translate (const {\b DbU::Unit} & {\i dx}, const {\b DbU::Unit} & {\i dy}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFF}
|
|
{\bkmkend AAAAAAAAFF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\i Base class method proxy.} \par
|
|
}}
|
|
{\xe \v isInCreationStage\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isInCreationStage}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInCreationStage () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFG}
|
|
{\bkmkend AAAAAAAAFG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b AutoContact} is still in it's initial creation stage. \par
|
|
}{
|
|
References Katabatic::CntInCreationStage.}\par
|
|
}
|
|
{\xe \v isInvalidated\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isInvalidated}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInvalidated () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFH}
|
|
{\bkmkend AAAAAAAAFH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the some {\b AutoSegment} has changed and the {\b AutoContact} needs to be repositionned (through a call to {\b AutoContact::updateGeometry()}). \par
|
|
}{
|
|
References Katabatic::CntInvalidated.}\par
|
|
}
|
|
{\xe \v isInvalidatedCache\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isInvalidatedCache}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInvalidatedCache () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFI}
|
|
{\bkmkend AAAAAAAAFI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the some {\b AutoSegment} has changed and the {\b AutoContact} topology needs to be restored, as a gap may have appeared (through a call to AutoSegment::updateTopology()). \par
|
|
}{
|
|
References Katabatic::CntInvalidatedCache.}\par
|
|
{
|
|
Referenced by AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), AutoContactTerminal::updateGeometry(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v isTurn\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isTurn}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isTurn () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFJ}
|
|
{\bkmkend AAAAAAAAFJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the dynamic type of the {\b AutoContact} is of type Turn. \par
|
|
}{
|
|
References Katabatic::CntTurn.}\par
|
|
{
|
|
Referenced by AutoSegment::canReduce(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v isTee\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isTee}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isTee (unsigned int {\i direction}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFK}
|
|
{\bkmkend AAAAAAAAFK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the dynamic type of the {\b AutoContact} is either of type {\b AutoContactHTee} or {\b AutoContactVTee}, according to {\f2 direction} . \par
|
|
}{
|
|
References Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
}
|
|
{\xe \v isHTee\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isHTee}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isHTee () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFL}
|
|
{\bkmkend AAAAAAAAFL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the dynamic type of the {\b AutoContact} is of type {\b AutoContactHTee}. \par
|
|
}{
|
|
References Katabatic::CntHTee.}\par
|
|
}
|
|
{\xe \v isVTee\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isVTee}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isVTee () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFM}
|
|
{\bkmkend AAAAAAAAFM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the dynamic type of the {\b AutoContact} is of type {\b AutoContactHTee}. \par
|
|
}{
|
|
References Katabatic::CntVTee.}\par
|
|
}
|
|
{\xe \v isFixed\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:isFixed}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isFixed () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFN}
|
|
{\bkmkend AAAAAAAAFN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b AutoContact} cannot be moved. \par
|
|
}{
|
|
References Katabatic::CntFixed.}\par
|
|
{
|
|
Referenced by AutoSegment::create(), AutoContact::getCBXMax(), AutoContact::getCBXMin(), AutoContact::getCBYMax(), and AutoContact::getCBYMin().}\par
|
|
}
|
|
{\xe \v hasBadTopology\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:hasBadTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool hasBadTopology () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFO}
|
|
{\bkmkend AAAAAAAAFO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b AutoContact} topology has been broken and a gap has appeared. (sould not happen...) \par
|
|
}{
|
|
References Katabatic::CntBadTopology.}\par
|
|
{
|
|
Referenced by AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), AutoContactTerminal::updateGeometry(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), and AutoContactHTee::updateTopology().}\par
|
|
}
|
|
{\xe \v canDestroy\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:canDestroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canDestroy (unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFP}
|
|
{\bkmkend AAAAAAAAFP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b AutoContact} could be destroyed, that is, no segments remains anchored on it. If {\f2 flags} contains {\b Katabatic::KbWarnOnError}, issue an error message. \par
|
|
}{
|
|
References Katabatic::KbWarnOnError.}\par
|
|
}
|
|
{\xe \v canMoveUp\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:canMoveUp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveUp (const {\b AutoSegment} * {\i moved}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFQ}
|
|
{\bkmkend AAAAAAAAFQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if {\f2 segment} can be moved up without triggering a topological modification. It meaans that:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Without {\f2 moved} , the {\b AutoContact} needs only one layer.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 moved} go from {\i below} the {\b AutoContact} to {\i above} . \par}
|
|
}{
|
|
References Component::getLayer(), AutoSegment::getLayer(), and RoutingGauge::getLayerDepth().}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Contact} * base () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFR}
|
|
{\bkmkend AAAAAAAAFR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b Hurricane::Contact} which is decorated. \par
|
|
}{
|
|
Referenced by AutoVertical::_makeDogleg(), AutoSegment::create(), AutoSegment::getOppositeAnchor(), GCell::removeContact(), AutoContactVTee::updateGeometry(), AutoContactTurn::updateGeometry(), AutoContactHTee::updateGeometry(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v getAllocateds\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getAllocateds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getAllocateds (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFS}
|
|
{\bkmkend AAAAAAAAFS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The total number of {\b AutoContact} currently allocateds. \par
|
|
}}
|
|
{\xe \v getStaticName\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getStaticName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getStaticName (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFT}
|
|
{\bkmkend AAAAAAAAFT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The name of the Hurricane::ExtensionGo slice. \par
|
|
}}
|
|
{\xe \v getName\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getName () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFU}
|
|
{\bkmkend AAAAAAAAFU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The name of the Hurricane::ExtensionGo slice. \par
|
|
}}
|
|
{\xe \v getId\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getId}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getId () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFV}
|
|
{\bkmkend AAAAAAAAFV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The unique {\f2 identifer} of the {\b AutoSegment}. \par
|
|
}}
|
|
{\xe \v getBoundingBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getBoundingBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} getBoundingBox () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFW}
|
|
{\bkmkend AAAAAAAAFW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Contact::getBoundingBox()}. \par
|
|
}}}
|
|
{\xe \v getGCell\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getGCell () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFX}
|
|
{\bkmkend AAAAAAAAFX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b GCell} into which the {\b AutoContact} is located. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_canSlacken(), AutoVertical::_canSlacken(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::_postCreate(), AutoVertical::_postCreate(), AutoHorizontal::_preDestroy(), AutoVertical::_preDestroy(), AutoSegment::AutoSegment(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoHorizontal::getGCells(), AutoVertical::getGCells(), AutoSegment::makeDogleg(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), and AutoSegment::toConstraintAxis().}\par
|
|
}
|
|
{\xe \v getOpposite\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getOpposite}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getOpposite (const {\b AutoSegment} * {\i reference}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFY}
|
|
{\bkmkend AAAAAAAAFY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The other {\b AutoSegment} the {\i same} direction as {\f2 reference} , this is only meaningful on {\b AutoContactHTee} or {\b AutoContactVTee}. If there is no opposite, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFZ \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactHTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGA \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactTurn} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGB \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoContactVTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGC \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getPerpandicular\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getPerpandicular}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getPerpandicular (const {\b AutoSegment} * {\i reference}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGD}
|
|
{\bkmkend AAAAAAAAGD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} in the {\i perpandicular} direction to {\f2 reference} , this is only meaningful on AutoContacTurn. It there is no unique perpandicular, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGE \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactHTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGF \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactTurn} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGG \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoContactVTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGH \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::raise(), AutoSegment::reduce(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v getSegment\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment (unsigned int {\i index}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGI}
|
|
{\bkmkend AAAAAAAAGI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The nth anchored {\b AutoSegment}. The index is significant:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 0} : first horizontal ({\b h1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 1} : second horizontal ({\b h2} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 2} : first vertical ({\b b1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 3} : second vertical ({\b b2} ).\par}
|
|
Not all the indexes are filled for every {\b AutoContact}. For example {\f2 Turn} have {\b h1} and {\b b1} , and {\f2 HTee} have {\b h1} , {\b h2} and {\b v1} . \par
|
|
}{
|
|
Implemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGJ \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactHTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGK \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactTurn} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGL \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoContactVTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), LocatorHelper::getSegment(), LocatorHelper::LocatorHelper(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), and LocatorHelper::progress().}\par
|
|
}
|
|
{\xe \v getMinDepth\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getMinDepth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getMinDepth () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGN}
|
|
{\bkmkend AAAAAAAAGN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The layer depth of the bottom layer of the {\b AutoContact}. \par
|
|
}{
|
|
References Component::getLayer().}\par
|
|
{
|
|
Referenced by AutoSegment::canPivotUp().}\par
|
|
}
|
|
{\xe \v getMaxDepth\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getMaxDepth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getMaxDepth () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGO}
|
|
{\bkmkend AAAAAAAAGO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The layer depth of the top layer of the {\b AutoContact}. \par
|
|
}{
|
|
References Component::getLayer().}\par
|
|
{
|
|
Referenced by AutoSegment::canPivotDown().}\par
|
|
}
|
|
{\xe \v getLengths\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getLengths}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void getLengths ({\b DbU::Unit} * {\i lengths}, AutoSegment::DepthLengthSet & {\i processeds})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGP}
|
|
{\bkmkend AAAAAAAAGP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i lengths} \cell }{A table of {\b DbU::Unit}, the size of all routing layers used. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i processeds} \cell }{An {\b AutoSegment} sorted set holding all the already processeds AutoSegments.\cell }
|
|
{\row }
|
|
}
|
|
Compute the lengths over the owning {\b GCell} of all the AutoSegments anchored on this {\b AutoContact}. The lengths are added to the total length table {\f2 lengths} . To avoid double accounting of the local AutoSegments that have both source & target in the same {\b GCell}, we keep a set of already processeds AutoSegments in {\f2 processeds} . \par
|
|
}{
|
|
References Katabatic::KbHorizontal, Katabatic::KbVertical, and toLambda().}\par
|
|
}
|
|
{\xe \v getNativeConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getNativeConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} getNativeConstraintBox () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGQ}
|
|
{\bkmkend AAAAAAAAGQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The native constraint box (that is, whithout any user constraints applied). For {\b AutoContactTerminal}, this is the Box of the supporting external component, and for all others the bounding box of the owning {\b GCell}. \par
|
|
}{
|
|
Reimplemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGR \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getUConstraints\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getUConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getUConstraints (unsigned int {\i direction}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGS}
|
|
{\bkmkend AAAAAAAAGS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The constraint interval in {\f2 direction} (that is, the relevant side of the constraint box). \par
|
|
}{
|
|
References Interval::inflate(), and Katabatic::KbHorizontal.}\par
|
|
{
|
|
Referenced by AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v getCBXMin\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getCBXMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getCBXMin () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGT}
|
|
{\bkmkend AAAAAAAAGT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The X coordinate of the bottom left corner of the constraint box. \par
|
|
}{
|
|
References DbU::fromLambda(), Component::getX(), GCell::getX(), and AutoContact::isFixed().}\par
|
|
{
|
|
Referenced by AutoContact::getConstraintBox(), and AutoVertical::getConstraints().}\par
|
|
}
|
|
{\xe \v getCBXMax\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getCBXMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getCBXMax () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGU}
|
|
{\bkmkend AAAAAAAAGU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The X coordinate of the top right corner of the constraint box. \par
|
|
}{
|
|
References DbU::fromLambda(), Component::getX(), GCell::getX(), and AutoContact::isFixed().}\par
|
|
{
|
|
Referenced by AutoContact::getConstraintBox(), and AutoVertical::getConstraints().}\par
|
|
}
|
|
{\xe \v getCBYMin\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getCBYMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getCBYMin () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGV}
|
|
{\bkmkend AAAAAAAAGV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Y coordinate of the bottom left corner of the constraint box. \par
|
|
}{
|
|
References DbU::fromLambda(), Component::getY(), GCell::getY(), and AutoContact::isFixed().}\par
|
|
{
|
|
Referenced by AutoContact::getConstraintBox(), and AutoHorizontal::getConstraints().}\par
|
|
}
|
|
{\xe \v getCBYMax\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getCBYMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getCBYMax () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGW}
|
|
{\bkmkend AAAAAAAAGW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Y coordinate of the top right corner of the constraint box. \par
|
|
}{
|
|
References DbU::fromLambda(), Component::getY(), GCell::getY(), and AutoContact::isFixed().}\par
|
|
{
|
|
Referenced by AutoContact::getConstraintBox(), and AutoHorizontal::getConstraints().}\par
|
|
}
|
|
{\xe \v getConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:getConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} getConstraintBox () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGX}
|
|
{\bkmkend AAAAAAAAGX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The current constraint box: the native constraint box with all the user's contraints applieds. \par
|
|
}{
|
|
References AutoContact::getCBXMax(), AutoContact::getCBXMin(), AutoContact::getCBYMax(), and AutoContact::getCBYMin().}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal(), and AutoContact::migrateConstraintBox().}\par
|
|
}
|
|
{\xe \v intersectConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:intersectConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} & intersectConstraintBox ({\b Box} & {\i box}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGY}
|
|
{\bkmkend AAAAAAAAGY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The intersection between {\f2 box} and the constraint box. The result is stored into {\f2 box} and a reference to it is returned. \par
|
|
}{
|
|
References Box::getIntersection().}\par
|
|
}
|
|
{\xe \v invalidate\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void invalidate (unsigned int {\i flags} = {\f2 0})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGZ}
|
|
{\bkmkend AAAAAAAAGZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Invalidate the {\b AutoContact}, schedule it for revalidation in the {\b Session}. If flag containt Katabatic::CntInvalidTopology, the topology of the {\b AutoContact} will also be checked and possible gap closeds.\par
|
|
The revalidations methods associated are:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegment::updateGeometry(), recompute the punctual contact position.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegment::updateTopology(), restore the connexity. \par}
|
|
}{
|
|
References Katabatic::CntInvalidated, and Katabatic::CntInvalidatedCache.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), and AutoSegment::AutoSegment().}\par
|
|
}
|
|
{\xe \v updateGeometry\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:updateGeometry}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateGeometry (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHA}
|
|
{\bkmkend AAAAAAAAHA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the new position of the {\b AutoContact} based on the {\b AutoSegment} positions. The {\b Session} mechanism ensure that all {\b AutoSegment} are set into their final positions before calling this updator. \par
|
|
}{
|
|
Implemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHB \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactHTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHC \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactTurn} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHD \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoContactVTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHE \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateTopology\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:updateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateTopology (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHF}
|
|
{\bkmkend AAAAAAAAHF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Modificate the {\b AutoContact} topology to close any gap. This could be by changing layer or creating a new dogleg on an incident {\b AutoSegment}. \par
|
|
}{
|
|
Implemented in {\b AutoContactTerminal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHG \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactHTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHH \\*MERGEFORMAT}{\fldrslt pagenum}}}), {\b AutoContactTurn} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHI \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoContactVTee} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHJ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v showTopologyError\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:showTopologyError}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void showTopologyError (const std::string & {\i message}, unsigned int {\i flags} = {\f2 0})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHK}
|
|
{\bkmkend AAAAAAAAHK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Comprensive display of the topology of the {\b AutoContact} to ease the debug work. Prepend with the error message {\f2 message} . Do no throw an error. \par
|
|
}{
|
|
References AutoSegment::isGlobal().}\par
|
|
{
|
|
Referenced by AutoContactTerminal::updateGeometry(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v checkTopology\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:checkTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void checkTopology (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHL}
|
|
{\bkmkend AAAAAAAAHL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Check for topology correctness (no gaps), display an error message if needed. \par
|
|
}}
|
|
{\xe \v setGCell\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setGCell ({\b GCell} * {\i gcell})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHM}
|
|
{\bkmkend AAAAAAAAHM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the owning {\b GCell}. \par
|
|
}{
|
|
References GCell::addContact(), and toLambda().}\par
|
|
{
|
|
Referenced by AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v setCBXMin\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setCBXMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setCBXMin ({\b DbU::Unit} {\i xMin}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHN}
|
|
{\bkmkend AAAAAAAAHN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the lower left X coordinate of the constraint box.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: It cannot go outside the GCell bounding box. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References GCell::getX().}\par
|
|
}
|
|
{\xe \v setCBXMax\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setCBXMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setCBXMax ({\b DbU::Unit} {\i xMax}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHO}
|
|
{\bkmkend AAAAAAAAHO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the upper right X coordinate of the constraint box.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: It cannot go outside the GCell bounding box. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References GCell::getX(), and GCell::getXMax().}\par
|
|
}
|
|
{\xe \v setCBYMin\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setCBYMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setCBYMin ({\b DbU::Unit} {\i yMin}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHP}
|
|
{\bkmkend AAAAAAAAHP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the lower left Y coordinate of the constraint box.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: It cannot go outside the GCell bounding box. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References GCell::getY().}\par
|
|
}
|
|
{\xe \v setCBYMax\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setCBYMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setCBYMax ({\b DbU::Unit} {\i yMax}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHQ}
|
|
{\bkmkend AAAAAAAAHQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the upper right Y coordinate of the constraint box.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: It cannot go outside the GCell bounding box. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References GCell::getY(), and GCell::getYMax().}\par
|
|
}
|
|
{\xe \v setConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:setConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setConstraintBox (const {\b Box} & {\i box})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHR}
|
|
{\bkmkend AAAAAAAAHR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the constraint box.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: It cannot go outside the GCell bounding box. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References Box::getXMax(), Box::getXMin(), Box::getYMax(), and Box::getYMin().}\par
|
|
}
|
|
{\xe \v restrictConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:restrictConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool restrictConstraintBox ({\b DbU::Unit} {\i min}, {\b DbU::Unit} {\i max}, unsigned int {\i flags} = {\f2 {\b KbWarnOnError}})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHS}
|
|
{\bkmkend AAAAAAAAHS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i min} \cell }{The minimum of the restriction interval. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i max} \cell }{The maximum of the restriction interval. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Gives the direction of the restriction. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the restriction was actually applied.\par
|
|
}Restrict the current constraint box but check if the restriction will not lead to an empty interval, in that case, do nothing and return {\b false} . \par
|
|
}{
|
|
References Katabatic::KbHorizontal, Katabatic::KbVertical, Katabatic::KbWarnOnError, and toLambda().}\par
|
|
}
|
|
{\xe \v migrateConstraintBox\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:migrateConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void migrateConstraintBox ({\b AutoContact} * {\i other})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHT}
|
|
{\bkmkend AAAAAAAAHT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Transfer the user constraint box from {\f2 other} to the current object {\f2 this} . The constraints of {\f2 other} are restored to their native values. The two contacts must belong to the same {\b GCell} for this method to take effect. \par
|
|
}{
|
|
References AutoContact::getConstraintBox().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v _getTopology\:Katabatic::AutoContact}
|
|
{\xe \v Katabatic::AutoContact\:_getTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _getTopology ({\b Contact} * {\i support}, {\b Component} *& {\i anchor}, {\b Horizontal} **& {\i horizontals}, {\b Vertical} **& {\i verticals}, size_t {\i size}){\f2 [static]}, {\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHU}
|
|
{\bkmkend AAAAAAAAHU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i anchor} \cell }{The anchor, if any. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i hs} \cell }{The {\b Hurricane::Horizontal} anchored. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i vs} \cell }{The {\b Hurricane::Vertical} anchored. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i sz} \cell }{The size of boths {\f2 hs} & {\f2 vs} table passed as arguments.\cell }
|
|
{\row }
|
|
}
|
|
Fill {\f2 anchor} , {\f2 hs} and {\f2 vs} with the components anchored on this {\b AutoContact}. \par
|
|
}{
|
|
References Contact::getAnchor(), and Component::getSlaveComponents().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContact.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContact.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContact.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoContactHTee Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoContactHTee}
|
|
{\xe \v AutoContactHTee}
|
|
{\bkmkstart AAAAAAAAHV}
|
|
{\bkmkend AAAAAAAAHV}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} H-Tee (two H, one V) }}\par
|
|
Inheritance diagram for AutoContactHTee:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoContactHTee__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getOpposite} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getPerpandicular} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getSegment} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateGeometry} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateTopology} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContactHTee} * {\b create} ({\b GCell} *, {\b Net} *, const {\b Layer} *)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} H-Tee (two H, one V) \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} to build an horizontal tee (two H, one V). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContactHTee} * create ({\b GCell} * {\i gcell}, {\b Net} * {\i net}, const {\b Layer} * {\i layer}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHW}
|
|
{\bkmkend AAAAAAAAHW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The {\b GCell} into which create the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i net} \cell }{The Net to which this {\b AutoContact} belongs. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i layer} \cell }{The Layer of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The created {\b AutoContactHTee}.\par
|
|
}Create a new {\b AutoContactHTee}. \par
|
|
}{
|
|
References Katabatic::CntInCreationStage, and Contact::create().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), and GCellTopology::_do_xG_xM1_xM3().}\par
|
|
}
|
|
{\xe \v getOpposite\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:getOpposite}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getOpposite (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGA}
|
|
{\bkmkend AAAAAAAAGA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The other {\b AutoSegment} the {\i same} direction as {\f2 reference} , this is only meaningful on {\b AutoContactHTee} or {\b AutoContactVTee}. If there is no opposite, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getPerpandicular\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:getPerpandicular}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getPerpandicular (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGF}
|
|
{\bkmkend AAAAAAAAGF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} in the {\i perpandicular} direction to {\f2 reference} , this is only meaningful on AutoContacTurn. It there is no unique perpandicular, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getSegment\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment (unsigned int {\i index}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGK}
|
|
{\bkmkend AAAAAAAAGK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The nth anchored {\b AutoSegment}. The index is significant:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 0} : first horizontal ({\b h1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 1} : second horizontal ({\b h2} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 2} : first vertical ({\b b1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 3} : second vertical ({\b b2} ).\par}
|
|
Not all the indexes are filled for every {\b AutoContact}. For example {\f2 Turn} have {\b h1} and {\b b1} , and {\f2 HTee} have {\b h1} , {\b h2} and {\b v1} . \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateGeometry\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:updateGeometry}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateGeometry (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHC}
|
|
{\bkmkend AAAAAAAAHC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the new position of the {\b AutoContact} based on the {\b AutoSegment} positions. The {\b Session} mechanism ensure that all {\b AutoSegment} are set into their final positions before calling this updator. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::base(), DebugSession::close(), Katabatic::CntInvalidated, AutoContact::getNet(), AutoContact::getX(), AutoContact::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setX(), and AutoContact::setY().}\par
|
|
}
|
|
{\xe \v updateTopology\:Katabatic::AutoContactHTee}
|
|
{\xe \v Katabatic::AutoContactHTee\:updateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateTopology (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHH}
|
|
{\bkmkend AAAAAAAAHH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Restore the topology (i.e. connexity) of the contact after any number of connected segments has changed layer (at least one, up to three).\par
|
|
For any configuration, the connexity can be restored by making only one dogleg.\par
|
|
We distinguish two kind of layer changes:{
|
|
\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
1.\tab The two horizontals ({\f2 h1} and {\f2 h2} ) are still on the same layer (either they both moved or the vertical only has moved, see figures 2 & 4). In that case, the dogleg is made on the vertical.\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
2.\tab The two horizontals no longer are on the same layer (figures 1 & 3). In that case, the dogleg is made on the horizontal which is at the greater distance (in a layer sense) from the vertical.\par}
|
|
\par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References DebugSession::close(), Katabatic::CntBadTopology, RoutingGauge::getContactLayer(), AutoContact::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoContact::hasBadTopology(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactHTee.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactHTee.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactHTee.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoContactTerminal Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoContactTerminal}
|
|
{\xe \v AutoContactTerminal}
|
|
{\bkmkstart AAAAAAAAHX}
|
|
{\bkmkend AAAAAAAAHX}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Terminal (S/T is a Terminal) }}\par
|
|
Inheritance diagram for AutoContactTerminal:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoContactTerminal__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Box} {\b getNativeConstraintBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getSegment} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getOpposite} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getPerpandicular} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateGeometry} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateTopology} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContactTerminal} * {\b create} ({\b GCell} *gcell, {\b Component} *anchor, const {\b Layer} *layer, {\b Point} point, {\b DbU::Unit} width, {\b DbU::Unit} height)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContactTerminal} * {\b create} ({\b GCell} *gcell, {\b Component} *anchor, const {\b Layer} *layer, const {\b DbU::Unit} dx, const {\b DbU::Unit} dy, const {\b DbU::Unit} width, const {\b DbU::Unit} height)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Terminal (S/T is a Terminal) \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} that are directly attached by either source or target or both to a terminal. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContactTerminal} * create ({\b GCell} * {\i gcell}, {\b Component} * {\i rp}, const {\b Layer} * {\i layer}, {\b Point} {\i point}, {\b DbU::Unit} {\i width}, {\b DbU::Unit} {\i height}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHY}
|
|
{\bkmkend AAAAAAAAHY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The {\b GCell} into which create the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i rp} \cell }{The RoutingPad on which to anchor the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i layer} \cell }{The Layer of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i point} \cell }{The absolute position. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i width} \cell }{The width of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i height} \cell }{The height of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The created {\b AutoContact}.\par
|
|
}Create a new {\b AutoContactTerminal} anchored on {\f2 rp} . {\f2 point} gives the {\i absolute} position. \par
|
|
}{
|
|
References Hook::detach(), and Component::getBodyHook().}\par
|
|
{
|
|
Referenced by GCellTopology::doRp_AccessPad(), and GCellTopology::doRp_AutoContacts().}\par
|
|
}
|
|
{\xe \v create\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContactTerminal} * create ({\b GCell} * {\i gcell}, {\b Component} * {\i rp}, const {\b Layer} * {\i layer}, const {\b DbU::Unit} {\i x}, const {\b DbU::Unit} {\i y}, const {\b DbU::Unit} {\i width}, const {\b DbU::Unit} {\i height}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHZ}
|
|
{\bkmkend AAAAAAAAHZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The {\b GCell} into which create the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i rp} \cell }{The Component on which to anchor the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i layer} \cell }{The Layer of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i x} \cell }{The absolute X position. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i y} \cell }{The absolute Y position. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i width} \cell }{The width of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i height} \cell }{The height of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The created {\b AutoContact}.\par
|
|
}Create a new {\b AutoContactTerminal} anchored on {\f2 rp} . {\f2 (x,y)} gives the {\i absolute} position.\par
|
|
The anchor component {\f2 rp} is most often a {\b Hurricane::RoutingPad} (occurrencing a {\b Hurricane::Segment}) or directly a {\b Hurricane::Segment}, in case of RoutingPad layer promotion. \par
|
|
}{
|
|
References Katabatic::CntInCreationStage, Contact::create(), Component::getPosition(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v getNativeConstraintBox\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:getNativeConstraintBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} getNativeConstraintBox () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGR}
|
|
{\bkmkend AAAAAAAAGR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The native constraint box (that is, whithout any user constraints applied). For {\b AutoContactTerminal}, this is the Box of the supporting external component, and for all others the bounding box of the owning {\b GCell}. \par
|
|
}{
|
|
Reimplemented from {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGQ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::getAnchor(), GCell::getBoundingBox(), Occurrence::getEntity(), RoutingPad::getOccurrence(), Transformation::getOrientation(), Occurrence::getPath(), Component::getPosition(), RoutingPad::getSourcePosition(), Segment::getSourcePosition(), RoutingPad::getTargetPosition(), Segment::getTargetPosition(), Path::getTransformation(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v getSegment\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment (unsigned int {\i index}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGJ}
|
|
{\bkmkend AAAAAAAAGJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The nth anchored {\b AutoSegment}. The index is significant:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 0} : first horizontal ({\b h1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 1} : second horizontal ({\b h2} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 2} : first vertical ({\b b1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 3} : second vertical ({\b b2} ).\par}
|
|
Not all the indexes are filled for every {\b AutoContact}. For example {\f2 Turn} have {\b h1} and {\b b1} , and {\f2 HTee} have {\b h1} , {\b h2} and {\b v1} . \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::isHorizontal(), and AutoSegment::isVertical().}\par
|
|
}
|
|
{\xe \v getOpposite\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:getOpposite}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getOpposite (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAFZ}
|
|
{\bkmkend AAAAAAAAFZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The other {\b AutoSegment} the {\i same} direction as {\f2 reference} , this is only meaningful on {\b AutoContactHTee} or {\b AutoContactVTee}. If there is no opposite, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getPerpandicular\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:getPerpandicular}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getPerpandicular (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGE}
|
|
{\bkmkend AAAAAAAAGE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} in the {\i perpandicular} direction to {\f2 reference} , this is only meaningful on AutoContacTurn. It there is no unique perpandicular, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateGeometry\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:updateGeometry}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateGeometry (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHB}
|
|
{\bkmkend AAAAAAAAHB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the new position of the {\b AutoContact} based on the {\b AutoSegment} positions. The {\b Session} mechanism ensure that all {\b AutoSegment} are set into their final positions before calling this updator. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::base(), DebugSession::close(), Katabatic::CntInvalidated, Interval::contains(), AutoContact::getNet(), AutoContact::getUConstraints(), DbU::getValueString(), AutoSegment::getX(), AutoSegment::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoSegment::isCreated(), AutoSegment::isHorizontal(), AutoContact::isInvalidatedCache(), Katabatic::KbHorizontal, Katabatic::KbVertical, DebugSession::open(), AutoContact::setX(), AutoContact::setY(), and AutoContact::showTopologyError().}\par
|
|
}
|
|
{\xe \v updateTopology\:Katabatic::AutoContactTerminal}
|
|
{\xe \v Katabatic::AutoContactTerminal\:updateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateTopology (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHG}
|
|
{\bkmkend AAAAAAAAHG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Restore the topology (i.e. connexity) of the contact after the incident segment has changed layer.\par
|
|
Based on the layer depth delta between the terminal and the segment three case can occurs:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b zero} , then just sets the layer of the contact to the common metal layer.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b one} , then sets the contact layer to VIA connecting the two layers.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b two} , then create a dogleg to restore the connexity. Depending on whether the terminal was attached to the source or target, sets the layer of the segments.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
A delta of more than {\b two} is an error, and must never occurs.\par}
|
|
As, by default, the perpandicular is set in the layer above the parallel, it may be necessary to adjust his layer as well (to the one below).\par
|
|
\par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References DebugSession::close(), Katabatic::CntBadTopology, AutoContact::getAnchor(), RoutingGauge::getContactLayer(), AutoContact::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoSegment::invalidate(), AutoContact::isInvalidatedCache(), AutoSegment::makeDogleg(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTerminal.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTerminal.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTerminal.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoContactTurn Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoContactTurn}
|
|
{\xe \v AutoContactTurn}
|
|
{\bkmkstart AAAAAAAAIA}
|
|
{\bkmkend AAAAAAAAIA}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Turn (one H, one V) }}\par
|
|
Inheritance diagram for AutoContactTurn:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoContactTurn__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getOpposite} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getPerpandicular} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getSegment} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateGeometry} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateTopology} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContactTurn} * {\b create} ({\b GCell} *, {\b Net} *, const {\b Layer} *)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} Turn (one H, one V) \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} to make a turn (one H, one V). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContactTurn} * create ({\b GCell} * {\i gcell}, {\b Net} * {\i net}, const {\b Layer} * {\i layer}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIB}
|
|
{\bkmkend AAAAAAAAIB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The {\b GCell} into which create the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i net} \cell }{The Net to which this {\b AutoContact} belongs. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i layer} \cell }{The Layer of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The created {\b AutoContactTurn}.\par
|
|
}Create a new {\b AutoContactTurn}. \par
|
|
}{
|
|
References Katabatic::CntInCreationStage, and Contact::create().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_1Pad(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM3(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), GCellTopology::doRp_Access(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v getOpposite\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:getOpposite}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getOpposite (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGB}
|
|
{\bkmkend AAAAAAAAGB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The other {\b AutoSegment} the {\i same} direction as {\f2 reference} , this is only meaningful on {\b AutoContactHTee} or {\b AutoContactVTee}. If there is no opposite, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getPerpandicular\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:getPerpandicular}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getPerpandicular (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGG}
|
|
{\bkmkend AAAAAAAAGG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} in the {\i perpandicular} direction to {\f2 reference} , this is only meaningful on AutoContacTurn. It there is no unique perpandicular, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getSegment\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment (unsigned int {\i index}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGL}
|
|
{\bkmkend AAAAAAAAGL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The nth anchored {\b AutoSegment}. The index is significant:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 0} : first horizontal ({\b h1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 1} : second horizontal ({\b h2} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 2} : first vertical ({\b b1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 3} : second vertical ({\b b2} ).\par}
|
|
Not all the indexes are filled for every {\b AutoContact}. For example {\f2 Turn} have {\b h1} and {\b b1} , and {\f2 HTee} have {\b h1} , {\b h2} and {\b v1} . \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateGeometry\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:updateGeometry}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateGeometry (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHD}
|
|
{\bkmkend AAAAAAAAHD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the new position of the {\b AutoContact} based on the {\b AutoSegment} positions. The {\b Session} mechanism ensure that all {\b AutoSegment} are set into their final positions before calling this updator. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::base(), DebugSession::close(), Katabatic::CntInvalidated, AutoContact::getNet(), AutoContact::getX(), AutoContact::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setX(), and AutoContact::setY().}\par
|
|
}
|
|
{\xe \v updateTopology\:Katabatic::AutoContactTurn}
|
|
{\xe \v Katabatic::AutoContactTurn\:updateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateTopology (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHI}
|
|
{\bkmkend AAAAAAAAHI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Restore the topology (i.e. connexity) of the contact after one or both connected segments has changed layer.\par
|
|
Based on the layer depth delta between the two perpandiculars segments. Three case can occurs:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b zero} , then just sets the layer of the contact to the common metal layer (turn in same layer).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b one} , then sets the contact layer to VIA connecting the two layers.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta {\b cannot be equal to two} , due to the alternatives routing directions, it would mean a {\i turn} connecting two {\i horizontals} (or verticals) in different layers.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The delta is {\b three} , then create a dogleg to restore the connexity. The dogleg will be created on the connected segment which as been {\i layer invalidated} . If both of them have been invalidated, the horizontal one is preferred.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
A delta of more than {\b three} is an error, and must never occurs.\par}
|
|
\par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References DebugSession::close(), Katabatic::CntBadTopology, RoutingGauge::getContactLayer(), AutoContact::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoContact::hasBadTopology(), AutoSegment::invalidate(), AutoContact::isInvalidatedCache(), AutoSegment::isInvalidatedLayer(), AutoSegment::makeDogleg(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTurn.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTurn.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactTurn.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoContactVTee Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoContactVTee}
|
|
{\xe \v AutoContactVTee}
|
|
{\bkmkstart AAAAAAAAIC}
|
|
{\bkmkend AAAAAAAAIC}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} V-Tee (one H, two V) }}\par
|
|
Inheritance diagram for AutoContactVTee:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoContactVTee__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getOpposite} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getPerpandicular} (const {\b AutoSegment} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getSegment} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateGeometry} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateTopology} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContactVTee} * {\b create} ({\b GCell} *, {\b Net} *, const {\b Layer} *)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} V-Tee (one H, two V) \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoContact} to build a vertical tee (two V, one H). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContactVTee} * create ({\b GCell} * {\i gcell}, {\b Net} * {\i net}, const {\b Layer} * {\i layer}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAID}
|
|
{\bkmkend AAAAAAAAID}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcell} \cell }{The {\b GCell} into which create the {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i net} \cell }{The Net to which this {\b AutoContact} belongs. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i layer} \cell }{The Layer of the {\b AutoContact}. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The created {\b AutoContactVTee}.\par
|
|
}Create a new {\b AutoContactVTee}. \par
|
|
}{
|
|
References Katabatic::CntInCreationStage, and Contact::create().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), and GCellTopology::_do_xG_xM3().}\par
|
|
}
|
|
{\xe \v getOpposite\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:getOpposite}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getOpposite (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGC}
|
|
{\bkmkend AAAAAAAAGC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The other {\b AutoSegment} the {\i same} direction as {\f2 reference} , this is only meaningful on {\b AutoContactHTee} or {\b AutoContactVTee}. If there is no opposite, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getPerpandicular\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:getPerpandicular}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getPerpandicular (const {\b AutoSegment} * {\i reference}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGH}
|
|
{\bkmkend AAAAAAAAGH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} in the {\i perpandicular} direction to {\f2 reference} , this is only meaningful on AutoContacTurn. It there is no unique perpandicular, {\f2 NULL} is returned. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getSegment\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment (unsigned int {\i index}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAGM}
|
|
{\bkmkend AAAAAAAAGM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The nth anchored {\b AutoSegment}. The index is significant:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 0} : first horizontal ({\b h1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 1} : second horizontal ({\b h2} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 2} : first vertical ({\b b1} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b 3} : second vertical ({\b b2} ).\par}
|
|
Not all the indexes are filled for every {\b AutoContact}. For example {\f2 Turn} have {\b h1} and {\b b1} , and {\f2 HTee} have {\b h1} , {\b h2} and {\b v1} . \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateGeometry\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:updateGeometry}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateGeometry (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHE}
|
|
{\bkmkend AAAAAAAAHE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the new position of the {\b AutoContact} based on the {\b AutoSegment} positions. The {\b Session} mechanism ensure that all {\b AutoSegment} are set into their final positions before calling this updator. \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::base(), DebugSession::close(), Katabatic::CntInvalidated, AutoContact::getNet(), AutoContact::getX(), AutoContact::getY(), AutoContact::hasBadTopology(), Go::invalidate(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setX(), and AutoContact::setY().}\par
|
|
}
|
|
{\xe \v updateTopology\:Katabatic::AutoContactVTee}
|
|
{\xe \v Katabatic::AutoContactVTee\:updateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateTopology (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAHJ}
|
|
{\bkmkend AAAAAAAAHJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Restore the topology (i.e. connexity) of the contact after any number of connected segments has changed layer (at least one, up to three).\par
|
|
For a detailed explanation, see {\b AutoContactHTee::updateTopology()} and sawp horizontal & vertical... \par
|
|
}{
|
|
Implements {\b AutoContact} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAHF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References DebugSession::close(), Katabatic::CntBadTopology, RoutingGauge::getContactLayer(), AutoContact::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoContact::hasBadTopology(), AutoSegment::invalidate(), AutoContact::isInvalidatedCache(), DebugSession::open(), AutoContact::setLayer(), and AutoContact::showTopologyError().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactVTee.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactVTee.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContactVTee.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoHorizontal Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoHorizontal}
|
|
{\xe \v AutoHorizontal}
|
|
{\bkmkstart AAAAAAAAIE}
|
|
{\bkmkend AAAAAAAAIE}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Horizontal {\b AutoSegment}. }}\par
|
|
Inheritance diagram for AutoHorizontal:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoHorizontal__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b _canSlacken} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveULeft} (float reserve=0.0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveURight} (float reserve=0.0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Horizontal} * {\b getHorizontal} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getSourceU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getTargetU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuSource} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuTarget} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSpanU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b getConstraints} ({\b DbU::Unit} &min, {\b DbU::Unit} &max) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSourceConstraints} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getTargetConstraints} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b getDirection} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual size_t {\b getGCells} (vector< {\b GCell} *> &) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuSource} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuTarget} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateOrient} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updatePositions} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkPositions} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkConstraints} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b _makeDogleg} ({\b GCell} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveULeft} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveURight} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _postCreate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _preDestroy} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Horizontal {\b AutoSegment}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v _canSlacken\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:_canSlacken}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool _canSlacken () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIF}
|
|
{\bkmkend AAAAAAAAIF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment can be slackened. That is, source or target constraints are less than three pitches. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Interval::contains(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getSide(), Interval::getSize(), DbU::getValueString(), Interval::inflate(), and Katabatic::KbVertical.}\par
|
|
}
|
|
{\xe \v canMoveULeft\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:canMoveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveULeft (float {\i reserve} = {\f2 0.0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIH}
|
|
{\bkmkend AAAAAAAAIH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the left {\b GCell} (for a vertical) or down (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i target} . That is, it's a global which extends toward left.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAII \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), GCell::getDown(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getRight(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getWDensity(), and AutoSegment::isGlobal().}\par
|
|
}
|
|
{\xe \v canMoveURight\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:canMoveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveURight (float {\i reserve} = {\f2 0.0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIJ}
|
|
{\bkmkend AAAAAAAAIJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the right {\b GCell} (for a vertical) or up (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i source} . That is, it's a global which extends toward right.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIK \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getRight(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getUp(), GCell::getWDensity(), and AutoSegment::isGlobal().}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIL}
|
|
{\bkmkend AAAAAAAAIL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment}. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIN}
|
|
{\bkmkend AAAAAAAAIN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment} (const flavor). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIO \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getHorizontal\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getHorizontal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Horizontal} * getHorizontal (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIP}
|
|
{\bkmkend AAAAAAAAIP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} If the decorated segment is a {\b Hurricane::Horizontal}, return it. {\f2 NULL} otherwise. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIQ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getSourceU\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getSourceU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourceU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIR}
|
|
{\bkmkend AAAAAAAAIR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} source position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIS \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceX().}\par
|
|
}
|
|
{\xe \v getTargetU\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getTargetU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIT}
|
|
{\bkmkend AAAAAAAAIT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} target position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIU \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getTargetX().}\par
|
|
}
|
|
{\xe \v getDuSource\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuSource () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIV}
|
|
{\bkmkend AAAAAAAAIV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIW \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Horizontal::getDxSource().}\par
|
|
}
|
|
{\xe \v getDuTarget\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuTarget () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIX}
|
|
{\bkmkend AAAAAAAAIX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Horizontal::getDxTarget().}\par
|
|
}
|
|
{\xe \v getSpanU\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getSpanU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSpanU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIZ}
|
|
{\bkmkend AAAAAAAAIZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} occupying interval (on X for horizontal and on Y for vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceX(), and Segment::getTargetX().}\par
|
|
}
|
|
{\xe \v getConstraints\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool getConstraints ({\b DbU::Unit} & {\i min}, {\b DbU::Unit} & {\i max}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJB}
|
|
{\bkmkend AAAAAAAAJB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} in {\f2 min} & {\f2 max} the allowed range for the segment axis. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJC \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getCBYMax(), AutoContact::getCBYMin(), AutoSegment::getUserConstraints(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v getSourceConstraints\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getSourceConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSourceConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJD}
|
|
{\bkmkend AAAAAAAAJD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the source {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJE \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), Box::getYMax(), Box::getYMin(), and Katabatic::KbNativeConstraints.}\par
|
|
}
|
|
{\xe \v getTargetConstraints\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getTargetConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getTargetConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJF}
|
|
{\bkmkend AAAAAAAAJF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the target {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoTarget(), Box::getYMax(), Box::getYMin(), and Katabatic::KbNativeConstraints.}\par
|
|
}
|
|
{\xe \v getDirection\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getDirection}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getDirection () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJH}
|
|
{\bkmkend AAAAAAAAJH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b Katabatic::KbHorizontal} or {\b Katabatic::KbVertical} according to the decorated segment. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Katabatic::KbHorizontal.}\par
|
|
}
|
|
{\xe \v getGCells\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:getGCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getGCells (vector< {\b GCell} *> & {\i gcells}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJJ}
|
|
{\bkmkend AAAAAAAAJJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcells} \cell }{A vector that will be filled by all the GCells that the segment overlap. In increasing order, from source to target. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector's size. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJK \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), and GCell::getRight().}\par
|
|
}
|
|
{\xe \v setDuSource\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:setDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuSource ({\b DbU::Unit} {\i du}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJL}
|
|
{\bkmkend AAAAAAAAJL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from source anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v setDuTarget\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:setDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuTarget ({\b DbU::Unit} {\i du}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJN}
|
|
{\bkmkend AAAAAAAAJN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from target anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJO \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateOrient\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:updateOrient}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateOrient (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJP}
|
|
{\bkmkend AAAAAAAAJP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Ensure that source is lower than target. Swap them if needed. Swap never occurs on global segment because their source and target anchors are from different {\b GCell}, which are already ordered. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJQ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceX(), Segment::getTargetX(), Segment::invert(), Katabatic::SegSourceBottom, Katabatic::SegSourceTop, Katabatic::SegStrongTerminal, Katabatic::SegTargetBottom, Katabatic::SegTargetTop, AutoSegment::setFlags(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v updatePositions\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:updatePositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updatePositions (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJR}
|
|
{\bkmkend AAAAAAAAJR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Update the segment begenning and ending positions. The positions takes into account the extension caps and reflect the real space used by the segment under it's long axis. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJS \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceX(), and Segment::getTargetX().}\par
|
|
}
|
|
{\xe \v checkPositions\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:checkPositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkPositions () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJT}
|
|
{\bkmkend AAAAAAAAJT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the relative positions of source & target are coherent. (source <= target). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJU \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceX(), Segment::getTargetX(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v checkConstraints\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:checkConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkConstraints () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJV}
|
|
{\bkmkend AAAAAAAAJV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the constraint intervel is coherent (non-empty or punctual in the worst case). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJW \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), and Interval::intersect().}\par
|
|
}
|
|
{\xe \v _makeDogleg\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:_makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int _makeDogleg ({\b GCell} * {\i doglegGCell}, unsigned int {\i flags}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJX}
|
|
{\bkmkend AAAAAAAAJX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This method is the workhorse for the various dogleg and topology restauration methods.} It is the atomic method that actually make the dogleg on {\b this} segment.\par
|
|
{\b Returns:} {\b Katabatic::KbUseAboveLayer} if the dogleg is using the {\i above} layer ({\b Katabatic::KbUseBelowLayer} for the below layer).\par
|
|
Break the current segment in two (a.k.a. making a dogleg).{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment is broken inside {\f2 doglegGCell} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Two new segments are createds, one perpandicular and one parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The original segment is always kept attached to the {\i source} . (the new parallel fragment is attached to the {\i target} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular segment is in the layer {\i above} by default. If we are already on the topmost routing layer, the {\i below} layer is used.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment pass through the breaking {\b GCell}, it's axis is set into the center. If the segment is local, the axis is the middle of the segment.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The Local/Global kind of the original segment is updated. The local/global status is computed by the constructor of the {\b AutoSegment} for the perpandicular and the new parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The terminal state is updated. If the segment is a strong terminal the part that is no longer directly connected to the terminal is demoted to {\b Katabatic::SegWeakTerminal1}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular is obviously a canonical. If the broken segment is canonical, the original {\b is} left canonical and only the new parallel is re-canonized. Otherwise, we re-canonise both sets of aligned segments (the one on the source and the one on the target).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The three segments are added to the session dogleg stack.\par}
|
|
After this method call the net topology is guarantee to be valid.\par
|
|
\par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::canonize(), DebugSession::close(), AutoContactTurn::create(), AutoSegment::create(), Session::dogleg(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Session::getConfiguration(), RoutingGauge::getContactLayer(), AutoContact::getGCell(), Component::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), Component::getNet(), AutoSegment::getNet(), GCell::getRight(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoSegment::getSourceX(), AutoSegment::getTargetX(), GCell::getX(), GCell::getXMax(), AutoSegment::getY(), AutoContact::invalidate(), AutoSegment::invalidate(), AutoSegment::isCanonical(), AutoSegment::isLocal(), AutoSegment::isSlackened(), AutoSegment::isWeakTerminal(), Katabatic::KbHorizontal, Katabatic::KbUseAboveLayer, Katabatic::KbUseBelowLayer, Katabatic::KbVertical, AutoContact::migrateConstraintBox(), DebugSession::open(), GCell::removeHSegment(), Katabatic::SegCanonical, Katabatic::SegDogleg, Katabatic::SegGlobal, Katabatic::SegNotAligned, Katabatic::SegSlackened, Katabatic::SegWeakTerminal1, AutoSegment::setFlags(), AutoSegment::setLayer(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v moveULeft\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:moveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveULeft (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJZ}
|
|
{\bkmkend AAAAAAAAJZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} below (a.k.a. lower or inferior). Rules for displacement:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment must be connected at both end to a turn contact (we do not want to manage more complex cases for the time beeing).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
And, of course, the segment must not already by on the bottomost {\b GCell}...\par}
|
|
The displacement take care of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Managing the status of the various perpandiculars. The stretched one are made global if needed. The shrinked one made local, if needed.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The supporting {\b AutoContact} (source & target) are changed of {\b GCell}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment is global, the go-through GCells are updateds.\par}
|
|
{\b Returns:} {\b true} if the move has succeeded.\par
|
|
\par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References GCell::addVSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), GCell::getDown(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getRight(), AutoContact::getSegment(), GCell::getSide(), Interval::getVMax(), AutoSegment::isLocal(), Katabatic::KbVertical, GCell::removeVSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v moveURight\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:moveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveURight (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKB}
|
|
{\bkmkend AAAAAAAAKB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} above (a.k.a. upper or superior). Rules for displacement:\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b AutoSegment::moveULeft()} for a complete description. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKC \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References GCell::addVSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getRight(), AutoContact::getSegment(), GCell::getSide(), GCell::getUp(), Interval::getVMin(), AutoSegment::isLocal(), Katabatic::KbVertical, GCell::removeVSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v _postCreate\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:_postCreate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _postCreate (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKD}
|
|
{\bkmkend AAAAAAAAKD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
In addition to {\b AutoSegment::_postCreate()}, detect whether the segment is global or local and register it in the relevant GCells (if needed).\par
|
|
If the segment is anchored directly on a terminal, adjust the axis so it's connected. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKE \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::_postCreate(), GCell::addHSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getRight(), GCell::getX(), Component::getY(), Katabatic::SegGlobal, AutoSegment::setFlags(), and AutoContact::setY().}\par
|
|
}
|
|
{\xe \v _preDestroy\:Katabatic::AutoHorizontal}
|
|
{\xe \v Katabatic::AutoHorizontal\:_preDestroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _preDestroy (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKF}
|
|
{\bkmkend AAAAAAAAKF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform operations that must be done before the actual destructor is called. Merely whidrawn the {\b AutoSegment} from the lookup/Session mechanism. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::_preDestroy(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getId(), GCell::getRight(), GCell::getX(), and GCell::removeHSegment().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoHorizontal.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoHorizontal.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoHorizontal.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegment Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegment}
|
|
{\xe \v AutoSegment}
|
|
{\bkmkstart AAAAAAAAKH}
|
|
{\bkmkend AAAAAAAAKH}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoSegment}. }}\par
|
|
Inheritance diagram for AutoSegment:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegment__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Horizontal} * {\b getHorizontal} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Vertical} * {\b getVertical} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Cell} * {\b getCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Net} * {\b getNet} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Layer} * {\b getLayer} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Box} {\b getBoundingBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Hook} * {\b getSourceHook} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Hook} * {\b getTargetHook} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Contact} * {\b getSource} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Contact} * {\b getTarget} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Component} * {\b getOppositeAnchor} ({\b Component} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Components} {\b getAnchors} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getX} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getY} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getWidth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getLength} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getSourcePosition} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getTargetPosition} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getSourceX} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getSourceY} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getTargetX} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getTargetY} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b invert} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setLayer} (const {\b Layer} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isHorizontal} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isVertical} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isGlobal} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isLocal} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isFixed} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isBipoint} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isWeakTerminal} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isStrongTerminal} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isLayerChange} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSpinTop} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSpinBottom} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSpinTopOrBottom} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isReduced} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isStrap} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isDogleg} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInvalidated} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInvalidatedLayer} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isCreated} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isCanonical} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isUnsetAxis} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSlackened} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b _canSlacken} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canReduce} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b mustRaise} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b canDogleg} ({\b Interval})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveULeft} (float reserve=0.0) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveURight} (float reserve=0.0) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canMoveUp} (float reserve=0.0, unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canPivotUp} (float reserve=0.0, unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canPivotDown} (float reserve=0.0, unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b canSlacken} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkPositions} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkConstraints} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned long {\b getId} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b getDirection} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getGCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual size_t {\b getGCells} (vector< {\b GCell} *> &) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContact} * {\b getAutoSource} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContact} * {\b getAutoTarget} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoContact} * {\b getOppositeAnchor} ({\b AutoContact} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getPerpandicularsBound} (set< {\b AutoSegment} *> &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} * {\b getParent} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getAxis} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getSourceU} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getTargetU} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuSource} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuTarget} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getOrigin} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getExtremity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSpanU} () const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Interval} {\b getMinSpanU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSourceConstraints} (unsigned int flags=0) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getTargetConstraints} (unsigned int flags=0) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b getConstraints} ({\b DbU::Unit} &min, {\b DbU::Unit} &max) const =0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b getConstraints} ({\b Interval} &i) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Interval} & {\b getUserConstraints} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getSlack} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getOptimalMin} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getOptimalMax} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Interval} & {\b getOptimal} ({\b Interval} &i) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getCost} ({\b DbU::Unit} axis) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegment} * {\b getCanonical} ({\b DbU::Unit} &min, {\b DbU::Unit} &max)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} * {\b getCanonical} ({\b Interval} &i)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b unsetFlags} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setFlags} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuSource} ({\b DbU::Unit} du)=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuTarget} ({\b DbU::Unit} du)=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b computeTerminal} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateOrient} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updatePositions} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b mergeUserConstraints} (const {\b Interval} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b resetUserConstraints} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setOptimalMin} ({\b DbU::Unit} min)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setOptimalMax} ({\b DbU::Unit} max)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b revalidate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} * {\b makeDogleg} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b makeDogleg} ({\b Interval}, unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b makeDogleg} ({\b GCell} *, unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b _makeDogleg} ({\b GCell} *, unsigned int flags)=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveULeft} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveURight} ()=0\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b slacken} (unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b reduceDoglegLayer} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b reduce} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b raise} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} * {\b canonize} (unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b invalidate} (unsigned int flags={\b KbPropagate})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b computeOptimal} (set< {\b AutoSegment} *> &processeds)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setAxis} ({\b DbU::Unit}, unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b toConstraintAxis} (unsigned int flags={\b KbRealignate})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b toOptimalAxis} (unsigned int flags={\b KbRealignate})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getOnSourceContact} (unsigned int direction)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getOnTargetContact} (unsigned int direction)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getAligneds} (unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getPerpandiculars} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoSegment} * {\b create} ({\b AutoContact} *source, {\b AutoContact} *target, {\b Segment} *hurricaneSegment)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoSegment} * {\b create} ({\b AutoContact} *source, {\b AutoContact} *target, unsigned int dir, size_t depth=RoutingGauge::nlayerdepth)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} ({\b Segment} *segment)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b ~AutoSegment} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _postCreate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _preDestroy} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _invalidate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b _getFlags} () const\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b _preCreate} ({\b AutoContact} *source, {\b AutoContact} *target)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract base class for {\b AutoSegment}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{\bkmkstart AAAAAAAAKI}
|
|
{\bkmkend AAAAAAAAKI}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Creating AutoHorizontal & AutoVertical
|
|
\par}
|
|
{\tc\tcl2 \v Creating AutoHorizontal & AutoVertical}
|
|
{\b AutoSegment} is the abstract base class for {\b AutoHorizontal} and {\b AutoVertical}. They are must be created only through the factory method: {\b AutoSegment::create()}.\par}
|
|
{\bkmkstart AAAAAAAAKJ}
|
|
{\bkmkend AAAAAAAAKJ}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Characteristics of AutoSegments
|
|
\par}
|
|
{\tc\tcl2 \v Characteristics of AutoSegments}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Unique ID: to ease the enforcing of a deterministic behavior and to gain some independance from the pointers, each {\b AutoSegment} is associated with an unique identifier. {\b IDs} are now directly taken from the {\b Hurricane::Segment}. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Source contact is always lesser than Target contact {\f2 (Xs,Ys) < (Xt,Yt)} . \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
When assembled through {\b AutoContactVTee} or {\b AutoContactHTee}, AutoSegments became (i.e. must be kept) aligneds. Among a set of aligned AutoSegments, we distinguish a representative trough which we can manipulate the whole set. This representative is called the {\i canonical} {\b AutoSegment} and is the one with the lowest {\f2 id} ). \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
When an aligned set contains at least one global, all the segments of the set are tagged {\b Katabatic::SegWeakGlobal}. This is especially useful on local ones to know if they are part of a much longer wire.\par
|
|
Conversely, a set of aligned may contains only local segments and thus will not have the flag set. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
To allow some optimization, the {\b Katabatic::SegNotAligned} tells if a segment is part of an aligned set. It is deduced from the type of both source and target contact: not on the parallel branch of a tee. \par}
|
|
{\b The Ever Fragmenting Data Structure} \par
|
|
All the transformations applied to the database, after it's initial building, can be reduced to making new doglegs (and layer changes). Another way to put it, is that no Tee is ever created after the initial stage. The consequence is that the segments are only fragmenting more and more (up to a certain limit). The aligneds sets are progessively broken apart as needed, and until there remains only one tee per set (the two segments on the aligned branch).\par}
|
|
{\bkmkstart AAAAAAAAKK}
|
|
{\bkmkend AAAAAAAAKK}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Operations on AutoSegments
|
|
\par}
|
|
{\tc\tcl2 \v Operations on AutoSegments}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Slackening.} Constraints transmited through either source or target {\b AutoContact} are too tight (tighter than the {\b GCell}), by adding straps in the perpandicular direction, the full slack of the segment is restored. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Layer Change.} One or two layers above or below the current layer. One up/down may means into the perpandicular routing direction. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Dogleg Creation.} Mean breaking the segment in two. This operation is used to slacken the constraints on a segment or restore connexity on source/target contact after a layer change. The new segment is always created on the source. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Reduction/Raising.} When a segment is a short dogleg, no greater than one picth, it can use the layer of the perpandiculars. \par}
|
|
\par}
|
|
{\bkmkstart AAAAAAAAKL}
|
|
{\bkmkend AAAAAAAAKL}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Invalidate on AutoSegments
|
|
\par}
|
|
{\tc\tcl2 \v Invalidate on AutoSegments}
|
|
The simple invalidation of an {\b AutoSegment} {\b do not} invalidate it's source & target contact.\par
|
|
An axis position change or a layer change both invalidate the {\b AutoSegment} {\b and} it's source & target contacts.\par
|
|
For the complete invalidation/revalidation mechanism see {\b Session Algorithm}.\par}
|
|
{\bkmkstart AAAAAAAAKM}
|
|
{\bkmkend AAAAAAAAKM}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Main Attributes of AutoSegments
|
|
\par}
|
|
{\tc\tcl2 \v Main Attributes of AutoSegments}
|
|
{\b AutoSegment} retains all attributes from Segment. The Segment itself beeing accessible through the {\b base()} methods. {
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
An unique {\f2 Id} (for determinism). \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
The {\b GCell} from wich it starts from. It is the {\b GCell} of the source {\b AutoContact}. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
A state, combination of flags from {\b Katabatic::AutoSegmentFlag}. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
An interval for the optimal range of the {\b AutoSegment} axis. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
An interval for user's defined constraint on the axis. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
The interval giving the complete length of the {\b AutoSegment}, that is, with all extentions cap taken into account. This interval is refered as the {\i span} . \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
A small counter, of the number of reduced neighbors (never exceed two). \par}
|
|
\par}
|
|
{\bkmkstart AAAAAAAAKN}
|
|
{\bkmkend AAAAAAAAKN}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Implementation Details
|
|
\par}
|
|
{\tc\tcl2 \v Implementation Details}
|
|
{\b AutoSegment} / {\b AutoHorizontal} & {\b AutoVertical} are kind of decorators of {\b Hurricane::Segment} (they do not scrictly respect the pattern).\par
|
|
Canonical {\b AutoSegment} can should be considered as a kind of Composite.\par
|
|
Thoses objects are created using a Factory method.\par}
|
|
{\bkmkstart AAAAAAAAKO}
|
|
{\bkmkend AAAAAAAAKO}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Methods Classification
|
|
\par}
|
|
{\tc\tcl2 \v Methods Classification}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\i Wrapper methods} on the underlying {\b Hurricane::Segment}. \par}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\i Atomic methods} on {\b AutoSegment}, that is, which applies exactly on the current {\b AutoSegment}. \par}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\i Canonical methods} that applies on the set of aligned AutoSegments. There are two kind of those, the methods part of the API, and the ones that make the link with the atomic methods. Those intermediate methods hide some cumbersome {\b AutoSegment} list parameters. {
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::invalidate()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::computeOptimal()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::setAxis()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::toConstraintAxis()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::toOptimalAxis()} \par}
|
|
\par}
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\i Uniform access} , to simplify the managment of {\b AutoHorizontal} and {\b AutoVertical} through {\b AutoSegment}, a set of uniformized methods is introduced. For instance, to avoid to check the dynamic type to choose to call {\b getSourceX()} or {\b getSourceY()}, we may call {\b getSourceU()}. Uniform methods are named by replacing {\f2 X/Y} with {\f2 U} . {
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::getSourceU()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::getTargetU()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::getDuSource()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::getDuTarget()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::getSpanU()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::setDuSource()} \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b AutoSegment::setDuTarget()} \par}
|
|
\par}
|
|
\par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegment\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:AutoSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} ({\b Segment} * {\i segment}){\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKP}
|
|
{\bkmkend AAAAAAAAKP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoSegment} constructor. It is not directly accessible, instead use one flavor of the {\b AutoSegment::create()}. \par
|
|
}{
|
|
References GCell::getBoundingBox(), AutoContact::getGCell(), Segment::getSource(), Segment::getTarget(), Box::getXMax(), Box::getYMax(), AutoContact::invalidate(), AutoSegment::isGlobal(), AutoSegment::isHorizontal(), Session::lookup(), Katabatic::SegCreated, Katabatic::SegHorizontal, AutoSegment::setFlags(), and AutoSegment::setOptimalMax().}\par
|
|
}
|
|
{\xe \v ~AutoSegment\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:~AutoSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
~{\b AutoSegment} (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKQ}
|
|
{\bkmkend AAAAAAAAKQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b AutoSegment} destructor. It is not directly accessible, instead use one flavor of the {\b AutoSegment::create()}. \par
|
|
}{
|
|
References AutoSegment::isGlobal().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * create ({\b AutoContact} * {\i source}, {\b AutoContact} * {\i target}, {\b Segment} * {\i hurricaneSegment}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKR}
|
|
{\bkmkend AAAAAAAAKR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i source} \cell }{The source {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i target} \cell }{The target {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i hurricaneSegment} \cell }{The {\b Hurricane::Segment} to decorate. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The AutoHorizontal/AutoVertical decorator segment.\par
|
|
}Factory method to create {\b AutoHorizontal} or {\b AutoVertical}. It is important to note that this function may modify the underlying {\b Hurricane::Segment}.{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Layer is set to the default (bottom) routing Layers.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Source & target anchor of {\f2 hurricaneSegment} are set on {\f2 source} and {\f2 target} . If the {\f2 hurricaneSegment} is already anchored and {\f2 source} or {\f2 target} are not the one decorating the anchors, an exception is thrown. \par}
|
|
}{
|
|
References AutoSegment::_postCreate(), Hook::attach(), Hook::detach(), AutoContact::getBodyHook(), Session::getKatabatic(), Component::getLayer(), Session::getRoutingLayer(), Segment::getSource(), Segment::getSourceHook(), Segment::getTarget(), Segment::getTargetHook(), DbU::getValueString(), Segment::getWidth(), AutoContact::getX(), AutoContact::getY(), AutoContact::isFixed(), KatabaticEngine::isGMetal(), Session::lookup(), Segment::setLayer(), Segment::setWidth(), Vertical::setX(), and Horizontal::setY().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_1Pad(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), GCellTopology::_do_xG_xM3(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoSegment::create(), GCellTopology::doRp_Access(), GCellTopology::doRp_AutoContacts(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v create\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * create ({\b AutoContact} * {\i source}, {\b AutoContact} * {\i target}, unsigned int {\i dir}, size_t {\i depth} = {\f2 RoutingGauge::nlayerdepth}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKS}
|
|
{\bkmkend AAAAAAAAKS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i source} \cell }{The source {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i target} \cell }{The target {\b AutoContact}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i dir} \cell }{Specify the segment direction. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i depth} \cell }{The layer, given by it's depth in the RoutingGauge. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The AutoHorizontal/AutoVertical.\par
|
|
}Factory method to create {\b AutoHorizontal} or {\b AutoVertical}. {\f2 flags} indicate the direction (KbHorizontal or KbVertical). The underlying Hurricane segment is also created. \par
|
|
}{
|
|
References AutoContact::base(), Horizontal::create(), Vertical::create(), AutoSegment::create(), Session::getRoutingLayer(), AutoContact::getX(), AutoContact::getY(), AutoContact::isFixed(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIO}
|
|
{\bkmkend AAAAAAAAIO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment} (const flavor). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKT \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIN \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::getAxis(), AutoSegment::getBoundingBox(), AutoSegment::getCanonical(), AutoSegment::getCell(), AutoSegment::getLayer(), AutoSegment::getLength(), AutoSegment::getNet(), AutoSegment::getOppositeAnchor(), AutoSegment::getSource(), AutoSegment::getSourceHook(), AutoSegment::getSourceX(), AutoSegment::getSourceY(), AutoSegment::getTarget(), AutoSegment::getTargetHook(), AutoSegment::getTargetX(), AutoSegment::getTargetY(), AutoSegment::getWidth(), AutoSegment::getX(), AutoSegment::getY(), AutoSegment::invert(), and AutoSegment::setLayer().}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIM}
|
|
{\bkmkend AAAAAAAAIM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment}. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKU \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIL \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getHorizontal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getHorizontal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Horizontal} * getHorizontal (){\f2 [inline]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIQ}
|
|
{\bkmkend AAAAAAAAIQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} If the decorated segment is a {\b Hurricane::Horizontal}, return it. {\f2 NULL} otherwise. \par
|
|
}{
|
|
Reimplemented in {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIP \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getVertical\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getVertical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Vertical} * getVertical (){\f2 [inline]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKV}
|
|
{\bkmkend AAAAAAAAKV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} If the decorated segment is a {\b Hurricane::Vertical}, return it. {\f2 NULL} otherwise. \par
|
|
}{
|
|
Reimplemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKW \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getCell\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Cell} * getCell () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKX}
|
|
{\bkmkend AAAAAAAAKX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getCell()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Entity::getCell().}\par
|
|
}
|
|
{\xe \v getNet\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getNet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Net} * getNet () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKY}
|
|
{\bkmkend AAAAAAAAKY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getNet()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Component::getNet().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoSegment::_postCreate().}\par
|
|
}
|
|
{\xe \v getLayer\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Layer} * getLayer () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKZ}
|
|
{\bkmkend AAAAAAAAKZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getLayer()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Component::getLayer().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoContact::canMoveUp(), AutoSegment::canMoveUp(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), AutoHorizontal::checkPositions(), AutoVertical::checkPositions(), AutoSegment::makeDogleg(), AutoSegment::revalidate(), AutoHorizontal::updatePositions(), AutoVertical::updatePositions(), AutoContactTurn::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v getBoundingBox\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getBoundingBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
BoundingBox * getBoundingBox () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALA}
|
|
{\bkmkend AAAAAAAALA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getBoundingBox()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Component::getBoundingBox().}\par
|
|
}
|
|
{\xe \v getSourceHook\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourceHook}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Hook} * getSourceHook (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALB}
|
|
{\bkmkend AAAAAAAALB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getSourceHook()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getSourceHook().}\par
|
|
}
|
|
{\xe \v getTargetHook\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetHook}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Hook} * getTargetHook (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALC}
|
|
{\bkmkend AAAAAAAALC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getTargetHook()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getTargetHook().}\par
|
|
}
|
|
{\xe \v getSource\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Contact} * getSource () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALD}
|
|
{\bkmkend AAAAAAAALD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getSource()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getSource().}\par
|
|
{
|
|
Referenced by AutoSegment::getAutoSource(), and AutoSegment::getOnSourceContact().}\par
|
|
}
|
|
{\xe \v getTarget\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Contact} * getTarget () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALE}
|
|
{\bkmkend AAAAAAAALE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getTarget()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getTarget().}\par
|
|
{
|
|
Referenced by AutoSegment::getAutoTarget(), and AutoSegment::getOnTargetContact().}\par
|
|
}
|
|
{\xe \v getOppositeAnchor\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOppositeAnchor}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Component} * getOppositeAnchor ({\b Component} * {\i anchor}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALF}
|
|
{\bkmkend AAAAAAAALF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getNet()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getOppositeAnchor().}\par
|
|
{
|
|
Referenced by AutoSegment::getOppositeAnchor().}\par
|
|
}
|
|
{\xe \v getAnchors\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getAnchors}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Components} getAnchors () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALG}
|
|
{\bkmkend AAAAAAAALG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getAnchors()}. \par
|
|
}}}
|
|
{\xe \v getX\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getX () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALH}
|
|
{\bkmkend AAAAAAAALH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getX()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Component::getX().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v getY\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getY () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALI}
|
|
{\bkmkend AAAAAAAALI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getY()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Component::getY().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v getWidth\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getWidth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getWidth () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALJ}
|
|
{\bkmkend AAAAAAAALJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getWidth()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getWidth().}\par
|
|
}
|
|
{\xe \v getLength\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getLength}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getLength () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALK}
|
|
{\bkmkend AAAAAAAALK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getLength()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getLength().}\par
|
|
{
|
|
Referenced by AutoSegment::canReduce(), and AutoSegment::mustRaise().}\par
|
|
}
|
|
{\xe \v getSourcePosition\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourcePosition}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourcePosition () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALL}
|
|
{\bkmkend AAAAAAAALL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getSourcePosition()}. \par
|
|
}}{
|
|
Referenced by AutoSegment::getCanonical().}\par
|
|
}
|
|
{\xe \v getTargetPosition\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetPosition}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetPosition () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALM}
|
|
{\bkmkend AAAAAAAALM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getTargetPosition()}. \par
|
|
}}{
|
|
Referenced by AutoSegment::getCanonical().}\par
|
|
}
|
|
{\xe \v getSourceX\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourceX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourceX () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALN}
|
|
{\bkmkend AAAAAAAALN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getSourceX()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getSourceX().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg().}\par
|
|
}
|
|
{\xe \v getSourceY\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourceY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourceY () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALO}
|
|
{\bkmkend AAAAAAAALO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getSourceY()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getSourceY().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v getTargetX\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetX () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALP}
|
|
{\bkmkend AAAAAAAALP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getTargetX()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getTargetX().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg().}\par
|
|
}
|
|
{\xe \v getTargetY\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetY () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALQ}
|
|
{\bkmkend AAAAAAAALQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::getTargetY()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::getTargetY().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v invert\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:invert}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} invert (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALR}
|
|
{\bkmkend AAAAAAAALR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::invert()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::invert().}\par
|
|
}
|
|
{\xe \v setLayer\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setLayer (const {\b Layer} * {\i layer}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALS}
|
|
{\bkmkend AAAAAAAALS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Segment::setLayer()}. \par
|
|
}}{
|
|
References AutoSegment::base(), and Segment::setLayer().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), and AutoSegment::reduceDoglegLayer().}\par
|
|
}
|
|
{\xe \v isHorizontal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isHorizontal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isHorizontal () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALT}
|
|
{\bkmkend AAAAAAAALT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b Hurricane::Segment} is Horizontal. \par
|
|
}{
|
|
References Katabatic::SegHorizontal.}\par
|
|
{
|
|
Referenced by AutoSegment::AutoSegment(), AutoSegment::computeOptimal(), AutoSegment::getAxis(), AutoSegment::getExtremity(), AutoSegment::getOrigin(), AutoContactTerminal::getSegment(), AutoSegment::makeDogleg(), AutoSegment::setAxis(), AutoSegment::toConstraintAxis(), and AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v isVertical\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isVertical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isVertical () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALU}
|
|
{\bkmkend AAAAAAAALU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b Hurricane::Segment} is Vertical. \par
|
|
}{
|
|
References Katabatic::SegHorizontal.}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal(), and AutoContactTerminal::getSegment().}\par
|
|
}
|
|
{\xe \v isGlobal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isGlobal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isGlobal () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALV}
|
|
{\bkmkend AAAAAAAALV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment is global (span over more than one {\b GCell}). \par
|
|
}{
|
|
References Katabatic::SegGlobal.}\par
|
|
{
|
|
Referenced by AutoSegment::AutoSegment(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canonize(), AutoSegment::canReduce(), AutoSegment::canSlacken(), AutoContact::showTopologyError(), and AutoSegment::~AutoSegment().}\par
|
|
}
|
|
{\xe \v isLocal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isLocal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isLocal () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALW}
|
|
{\bkmkend AAAAAAAALW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment is local (fully enclosed in one {\b GCell}). \par
|
|
}{
|
|
References Katabatic::SegGlobal.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoSegment::canMoveUp(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), GCell::checkEdgeSaturation(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v isFixed\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isFixed}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isFixed () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALX}
|
|
{\bkmkend AAAAAAAALX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment must not be moved by the router. \par
|
|
}{
|
|
References Katabatic::SegFixed.}\par
|
|
{
|
|
Referenced by AutoSegment::canMoveUp(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), and AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v isBipoint\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isBipoint}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isBipoint () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALY}
|
|
{\bkmkend AAAAAAAALY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment straigh join two terminals. \par
|
|
}{
|
|
References Katabatic::SegBipoint.}\par
|
|
}
|
|
{\xe \v isWeakTerminal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isWeakTerminal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isWeakTerminal () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAALZ}
|
|
{\bkmkend AAAAAAAALZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is indirectly connected to a terminal. \par
|
|
}{
|
|
References Katabatic::SegWeakTerminal.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v isStrongTerminal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isStrongTerminal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isStrongTerminal (unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMA}
|
|
{\bkmkend AAAAAAAAMA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is directly connected to a terminal. \par
|
|
}{
|
|
References AutoSegment::getAligneds(), Katabatic::KbPropagate, and Katabatic::SegStrongTerminal.}\par
|
|
{
|
|
Referenced by AutoSegment::canMoveUp(), AutoSegment::canPivotDown(), and AutoSegment::canPivotUp().}\par
|
|
}
|
|
{\xe \v isLayerChange\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isLayerChange}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isLayerChange () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMB}
|
|
{\bkmkend AAAAAAAAMB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is a strap used only to connect between two different metal layers on the way up or down. \par
|
|
}{
|
|
References Katabatic::SegLayerChange.}\par
|
|
{
|
|
Referenced by AutoSegment::canMoveUp(), AutoSegment::canPivotDown(), and AutoSegment::canPivotUp().}\par
|
|
}
|
|
{\xe \v isSpinTop\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isSpinTop}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSpinTop () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMC}
|
|
{\bkmkend AAAAAAAAMC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is connected to turns and both perpandiculars segments are in the {\i top} layer (candidate for reduction). \par
|
|
}{
|
|
Referenced by AutoSegment::canReduce(), AutoSegment::isSpinTopOrBottom(), AutoSegment::mustRaise(), and AutoSegment::reduceDoglegLayer().}\par
|
|
}
|
|
{\xe \v isSpinBottom\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isSpinBottom}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSpinBottom () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMD}
|
|
{\bkmkend AAAAAAAAMD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is connected to turns and both perpandiculars segments are in the {\i bottom} layer (candidate for reduction). \par
|
|
}{
|
|
Referenced by AutoSegment::canReduce(), AutoSegment::isSpinTopOrBottom(), AutoSegment::mustRaise(), and AutoSegment::reduceDoglegLayer().}\par
|
|
}
|
|
{\xe \v isSpinTopOrBottom\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isSpinTopOrBottom}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSpinTopOrBottom () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAME}
|
|
{\bkmkend AAAAAAAAME}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is either {\i spin top} or {\i spin bottom} (candidate for reduction). \par
|
|
}{
|
|
References AutoSegment::isSpinBottom(), and AutoSegment::isSpinTop().}\par
|
|
{
|
|
Referenced by AutoSegment::canReduce().}\par
|
|
}
|
|
{\xe \v isReduced\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isReduced}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isReduced () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMF}
|
|
{\bkmkend AAAAAAAAMF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is actually in a reduced state: it's effective layer will be the one of it's perpandiculars. \par
|
|
}{
|
|
References Katabatic::SegIsReduced.}\par
|
|
{
|
|
Referenced by AutoSegment::reduceDoglegLayer(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v isStrap\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isStrap}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isStrap () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMG}
|
|
{\bkmkend AAAAAAAAMG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment has been created from a slackening operation to restore the slack of another segment. \par
|
|
}{
|
|
References Katabatic::SegStrap.}\par
|
|
}
|
|
{\xe \v isDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isDogleg () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMH}
|
|
{\bkmkend AAAAAAAAMH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment has been created as the perpandicular part of a dogleg. \par
|
|
}{
|
|
References Katabatic::SegDogleg.}\par
|
|
{
|
|
Referenced by AutoSegment::toConstraintAxis().}\par
|
|
}
|
|
{\xe \v isInvalidated\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isInvalidated}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInvalidated () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMI}
|
|
{\bkmkend AAAAAAAAMI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment has been moved or topologicaly altered. \par
|
|
}{
|
|
References Katabatic::SegInvalidated.}\par
|
|
{
|
|
Referenced by AutoSegment::_invalidate(), AutoSegment::invalidate(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v isInvalidatedLayer\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isInvalidatedLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInvalidatedLayer () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMJ}
|
|
{\bkmkend AAAAAAAAMJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment has been changed of layer. Source and Target {\b AutoContact} may need to be altered. \par
|
|
}{
|
|
References Katabatic::SegInvalidatedLayer.}\par
|
|
{
|
|
Referenced by AutoContactTurn::updateTopology().}\par
|
|
}
|
|
{\xe \v isCreated\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isCreated}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isCreated () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMK}
|
|
{\bkmkend AAAAAAAAMK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment has just been created and is not revalidated for the first time \par
|
|
}{
|
|
References Katabatic::SegCreated.}\par
|
|
{
|
|
Referenced by AutoContactTerminal::updateGeometry().}\par
|
|
}
|
|
{\xe \v isCanonical\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isCanonical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isCanonical () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAML}
|
|
{\bkmkend AAAAAAAAML}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if segment is the representant of an aligned set. \par
|
|
}{
|
|
References Katabatic::SegCanonical.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoSegment::canonize(), AutoSegment::getCanonical(), AutoSegment::setAxis(), AutoSegment::toConstraintAxis(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v isUnsetAxis\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isUnsetAxis}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isUnsetAxis () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMM}
|
|
{\bkmkend AAAAAAAAMM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment axis has never been set. \par
|
|
}{
|
|
References Katabatic::SegAxisSet.}\par
|
|
}
|
|
{\xe \v isSlackened\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:isSlackened}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSlackened () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMN}
|
|
{\bkmkend AAAAAAAAMN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment has already been slackened. \par
|
|
}{
|
|
References Katabatic::SegSlackened.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v _canSlacken\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_canSlacken}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool _canSlacken () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIG}
|
|
{\bkmkend AAAAAAAAIG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment can be slackened. That is, source or target constraints are less than three pitches. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMO \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::canSlacken().}\par
|
|
}
|
|
{\xe \v canReduce\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canReduce}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canReduce () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMP}
|
|
{\bkmkend AAAAAAAAMP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment can be reduced. That is:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Source & target are {\b AutoContactTurn}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
It is either {\i spin top} or {\i spin bottom} , that is connecting perpandiculars both in the same layer.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Has a length less or equal one pitch in the perpandicular direction.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Neither of the perpandicular are also reduceds. \par}
|
|
}{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getLength(), AutoSegment::isGlobal(), AutoSegment::isSpinBottom(), AutoSegment::isSpinTop(), AutoSegment::isSpinTopOrBottom(), and AutoContact::isTurn().}\par
|
|
{
|
|
Referenced by AutoSegment::reduce().}\par
|
|
}
|
|
{\xe \v mustRaise\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:mustRaise}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool mustRaise () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMQ}
|
|
{\bkmkend AAAAAAAAMQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment must {\i be} reduced. That is:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
It is in reduced state...\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
It is no longer {\i spin top} or {\i spin bottom} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
It's length exceed one pitch in the perpandicular direction. \par}
|
|
}{
|
|
References AutoSegment::getLength(), AutoSegment::isSpinBottom(), AutoSegment::isSpinTop(), and Katabatic::SegIsReduced.}\par
|
|
}
|
|
{\xe \v canDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int canDogleg ({\b Interval} {\i interval})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMR}
|
|
{\bkmkend AAAAAAAAMR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} non-zero if the aligned set of segment can be broken {\i outside} {\f2 interval} . The returned value could be zero (failure) or {\b Katabatic::KbDoglegOnLeft} or {\b Katabatic::KbDoglegOnRight} menaing that the aligned set could be broken on the left of the {\f2 interval} (resp. right of it). \par
|
|
}{
|
|
References Interval::contains(), AutoSegment::getAligneds(), AutoSegment::getSpanU(), Interval::getVMax(), Interval::getVMin(), Katabatic::KbDoglegOnLeft, and Katabatic::KbDoglegOnRight.}\par
|
|
}
|
|
{\xe \v canMoveULeft\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canMoveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveULeft (float {\i reserve} = {\f2 0.0}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAII}
|
|
{\bkmkend AAAAAAAAII}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the left {\b GCell} (for a vertical) or down (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i target} . That is, it's a global which extends toward left.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMS \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIH \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v canMoveURight\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canMoveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveURight (float {\i reserve} = {\f2 0.0}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIK}
|
|
{\bkmkend AAAAAAAAIK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the right {\b GCell} (for a vertical) or up (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i source} . That is, it's a global which extends toward right.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMT \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIJ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v canMoveUp\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canMoveUp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveUp (float {\i reserve} = {\f2 0.0}, unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMU}
|
|
{\bkmkend AAAAAAAAMU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i reserve} \cell }{Number of track that must remains free {\i after} the move. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Modificate the method behavior, see below. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the segment can be moved up, that is to the next layer above in the same preferred routing direction. This method will check that in every {\b GCell} of the segment, at least {\f2 reserve} tracks are still avalaible {\i after} the segment has been moved up ({\f2 reserve} can be less than {\f2 1.0} ).\par
|
|
}Possible (bitwise) value for {\f2 flags} :{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbAllowTerminal} : allow strong terminal to be moved up.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbAllowLocal} : allow local segments to be moved up.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbPropagate} : perform the check on the whole aligned set.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbWithPerpands} : also check the density on the perpandiculars begin & end {\b GCell}, there must be at least a {\f2 0.5} density reserve on them. \par}
|
|
}{
|
|
References AutoSegment::getAligneds(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Session::getConfiguration(), GCell::getFragmentation(), AutoSegment::getGCells(), GCell::getIndex(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), AutoSegment::isFixed(), AutoSegment::isLayerChange(), AutoSegment::isLocal(), AutoSegment::isStrongTerminal(), Katabatic::KbPropagate, and Katabatic::KbWithPerpands.}\par
|
|
}
|
|
{\xe \v canPivotUp\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canPivotUp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canPivotUp (float {\i reserve} = {\f2 0.0}, unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMV}
|
|
{\bkmkend AAAAAAAAMV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i reserve} \cell }{Number of track that must remains free {\i after} the move. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Modificate the method behavior, see below.\cell }
|
|
{\row }
|
|
}
|
|
Checks of the segment can be {\i pivoted} up. The difference between {\f2 {\b canMoveUp()}} and {\f2 {\b canPivotUp()}} lies in the fact that no perpandicular segment needs to be altered if the current segment is moved up. For example an {\b M3} segment connected to only {\b M4} can be pivoted up (in {\b M5} ), but if connected to {\b M2} , it cannot.\par
|
|
Possible (bitwise) value for {\f2 flags} :{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbPropagate} : perform the check on the whole aligned set.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbIgnoreContacts} : do not check the source & target layers to know if the segment can be pivoted up. \par}
|
|
}{
|
|
References AutoSegment::getAligneds(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getGCells(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getMinDepth(), Session::getRoutingGauge(), AutoSegment::isFixed(), AutoSegment::isLayerChange(), AutoSegment::isLocal(), AutoSegment::isStrongTerminal(), and Katabatic::KbPropagate.}\par
|
|
}
|
|
{\xe \v canPivotDown\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canPivotDown}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canPivotDown (float {\i reserve} = {\f2 0.0}, unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMW}
|
|
{\bkmkend AAAAAAAAMW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i reserve} \cell }{Number of track that must remains free {\i after} the move. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Modificate the method behavior, see below.\cell }
|
|
{\row }
|
|
}
|
|
Checks of the segment can be {\i pivoted} down. The difference between {\f2 canMoveDown()} and {\f2 {\b canPivotDown()}} lies in the fact that no perpandicular segment needs to be altered if the current segment is moved down.\par
|
|
Possible (bitwise) value for {\f2 flags} :{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 KbPropagate} : perform the check on the whole aligned set. \par}
|
|
}{
|
|
References AutoSegment::getAligneds(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getGCells(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), AutoContact::getMaxDepth(), Session::getRoutingGauge(), AutoSegment::isFixed(), AutoSegment::isLayerChange(), AutoSegment::isLocal(), AutoSegment::isStrongTerminal(), and Katabatic::KbPropagate.}\par
|
|
}
|
|
{\xe \v canSlacken\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canSlacken}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canSlacken (unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMX}
|
|
{\bkmkend AAAAAAAAMX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment can be slackened. That is, source or target constraints are less than three pitches.\par
|
|
If {\f2 flags} contains KbPropagate, look on the whole aligned set. \par
|
|
}{
|
|
References AutoSegment::_canSlacken(), AutoSegment::getAligneds(), AutoSegment::isGlobal(), and Katabatic::KbPropagate.}\par
|
|
}
|
|
{\xe \v checkPositions\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:checkPositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkPositions () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJU}
|
|
{\bkmkend AAAAAAAAJU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the relative positions of source & target are coherent. (source <= target). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMY \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJT \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v checkConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:checkConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkConstraints () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJW}
|
|
{\bkmkend AAAAAAAAJW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the constraint intervel is coherent (non-empty or punctual in the worst case). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMZ \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJV \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getId\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getId}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned long getId () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANA}
|
|
{\bkmkend AAAAAAAANA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} unique identifier. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_preDestroy(), and AutoVertical::_preDestroy().}\par
|
|
}
|
|
{\xe \v getDirection\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getDirection}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getDirection () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJI}
|
|
{\bkmkend AAAAAAAAJI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b Katabatic::KbHorizontal} or {\b Katabatic::KbVertical} according to the decorated segment. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANB \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJH \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::getMinSpanU(), AutoSegment::getPerpandicularsBound(), and AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v getGCell\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getGCell () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANC}
|
|
{\bkmkend AAAAAAAANC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b GCell} into which the {\b AutoSegment} starts (the one of the source). \par
|
|
}{
|
|
Referenced by AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoHorizontal::getGCells(), AutoVertical::getGCells(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v getGCells\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getGCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getGCells (vector< {\b GCell} *> & {\i gcells}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJK}
|
|
{\bkmkend AAAAAAAAJK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcells} \cell }{A vector that will be filled by all the GCells that the segment overlap. In increasing order, from source to target. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector's size. \par
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAND \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJJ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::canMoveUp(), AutoSegment::canPivotDown(), and AutoSegment::canPivotUp().}\par
|
|
}
|
|
{\xe \v getAutoSource\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getAutoSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * getAutoSource () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANE}
|
|
{\bkmkend AAAAAAAANE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The source {\b AutoContact}. \par
|
|
}{
|
|
References AutoSegment::getSource(), and Session::lookup().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_canSlacken(), AutoVertical::_canSlacken(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::_postCreate(), AutoVertical::_postCreate(), AutoHorizontal::_preDestroy(), AutoVertical::_preDestroy(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoSegment::canMoveUp(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), AutoSegment::canReduce(), AutoHorizontal::checkConstraints(), AutoVertical::checkConstraints(), AutoSegment::computeOptimal(), AutoSegment::computeTerminal(), AutoHorizontal::getConstraints(), AutoVertical::getConstraints(), AutoHorizontal::getGCells(), AutoVertical::getGCells(), AutoHorizontal::getSourceConstraints(), AutoVertical::getSourceConstraints(), AutoSegment::makeDogleg(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), AutoSegment::raise(), AutoSegment::reduce(), AutoSegment::reduceDoglegLayer(), AutoSegment::revalidate(), and AutoSegment::toConstraintAxis().}\par
|
|
}
|
|
{\xe \v getAutoTarget\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getAutoTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * getAutoTarget () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANF}
|
|
{\bkmkend AAAAAAAANF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The target {\b AutoContact}. \par
|
|
}{
|
|
References AutoSegment::getTarget(), and Session::lookup().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_canSlacken(), AutoVertical::_canSlacken(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::_postCreate(), AutoVertical::_postCreate(), AutoHorizontal::_preDestroy(), AutoVertical::_preDestroy(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoSegment::canMoveUp(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), AutoSegment::canReduce(), AutoHorizontal::checkConstraints(), AutoVertical::checkConstraints(), AutoSegment::computeOptimal(), AutoSegment::computeTerminal(), AutoHorizontal::getConstraints(), AutoVertical::getConstraints(), AutoHorizontal::getGCells(), AutoVertical::getGCells(), AutoHorizontal::getTargetConstraints(), AutoVertical::getTargetConstraints(), AutoSegment::makeDogleg(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), AutoSegment::raise(), AutoSegment::reduce(), AutoSegment::reduceDoglegLayer(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v getOppositeAnchor\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOppositeAnchor}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * getOppositeAnchor ({\b AutoContact} * {\i contact}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANG}
|
|
{\bkmkend AAAAAAAANG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The source or target {\b AutoContact} opposite to {\f2 contact} . \par
|
|
}{
|
|
References AutoContact::base(), AutoSegment::getOppositeAnchor(), and Session::lookup().}\par
|
|
}
|
|
{\xe \v getPerpandicularsBound\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getPerpandicularsBound}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getPerpandicularsBound (set< {\b AutoSegment} *> & {\i bounds})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANH}
|
|
{\bkmkend AAAAAAAANH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i bounds} \cell }{A vector that will be filled by all the AutoSegments perpandicular to this one that induce a constraint. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector's size. \par
|
|
}}{
|
|
References AutoSegment::getDirection(), Component::getSlaveComponents(), Collection< Type >::getSubSet(), and Session::lookup().}\par
|
|
}
|
|
{\xe \v getParent\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getParent}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getParent () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANI}
|
|
{\bkmkend AAAAAAAANI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} If this segment has been created by a dogleg operation, the parent is the one from which we fragmented. \par
|
|
}}
|
|
{\xe \v getAxis\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getAxis}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getAxis () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANJ}
|
|
{\bkmkend AAAAAAAANJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} axis position. \par
|
|
}{
|
|
References AutoSegment::base(), Component::getX(), Component::getY(), and AutoSegment::isHorizontal().}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal(), AutoSegment::setAxis(), AutoSegment::toConstraintAxis(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v getSourceU\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourceU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourceU () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIS}
|
|
{\bkmkend AAAAAAAAIS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} source position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANK \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIR \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getTargetU\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetU () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIU}
|
|
{\bkmkend AAAAAAAAIU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} target position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANL \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIT \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getDuSource\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuSource () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIW}
|
|
{\bkmkend AAAAAAAAIW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANM \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIV \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getDuTarget\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuTarget () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAIY}
|
|
{\bkmkend AAAAAAAAIY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANN \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIX \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getOrigin\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOrigin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getOrigin () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANO}
|
|
{\bkmkend AAAAAAAANO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} source (lowest) {\b GCell} coordinate. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
References GCell::getX(), GCell::getY(), and AutoSegment::isHorizontal().}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal(), AutoSegment::getOptimalMax(), AutoSegment::getOptimalMin(), AutoSegment::setOptimalMax(), and AutoSegment::setOptimalMin().}\par
|
|
}
|
|
{\xe \v getExtremity\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getExtremity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getExtremity () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANP}
|
|
{\bkmkend AAAAAAAANP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} target (greatest) {\b GCell} coordinate. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
References GCell::getXMax(), GCell::getYMax(), and AutoSegment::isHorizontal().}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v getSpanU\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSpanU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSpanU () const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJA}
|
|
{\bkmkend AAAAAAAAJA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} occupying interval (on X for horizontal and on Y for vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANQ \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIZ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::canDogleg(), and AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v getMinSpanU\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getMinSpanU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getMinSpanU () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANR}
|
|
{\bkmkend AAAAAAAANR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The {\b AutoSegment} {\i uniform} minimum occupying interval, computed from the constraints of all the supporting aligned AutoContacts. (on X for horizontal and on Y for vertical). \par
|
|
}}{
|
|
References AutoSegment::getDirection(), Interval::getVMax(), and Interval::getVMin().}\par
|
|
}
|
|
{\xe \v getSourceConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSourceConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSourceConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJE}
|
|
{\bkmkend AAAAAAAAJE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the source {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANS \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v getTargetConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getTargetConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getTargetConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJG}
|
|
{\bkmkend AAAAAAAAJG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the target {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANT \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v getConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool getConstraints ({\b DbU::Unit} & {\i min}, {\b DbU::Unit} & {\i max}) const{\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJC}
|
|
{\bkmkend AAAAAAAAJC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} in {\f2 min} & {\f2 max} the allowed range for the segment axis. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAANU \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJB \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal(), AutoSegment::getConstraints(), AutoSegment::getSlack(), AutoSegment::toConstraintAxis(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v getConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool getConstraints ({\b Interval} & {\i i}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANV}
|
|
{\bkmkend AAAAAAAANV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} in {\f2 i} the allowed range for the segment axis. \par
|
|
}{
|
|
References AutoSegment::getConstraints(), Interval::getVMax(), and Interval::getVMin().}\par
|
|
}
|
|
{\xe \v getUserConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getUserConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Interval} & getUserConstraints () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANW}
|
|
{\bkmkend AAAAAAAANW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A reference to the additional constraints added to the axis of the segment. \par
|
|
}{
|
|
Referenced by AutoHorizontal::getConstraints(), and AutoVertical::getConstraints().}\par
|
|
}
|
|
{\xe \v getSlack\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getSlack}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSlack () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANX}
|
|
{\bkmkend AAAAAAAANX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The length of the axis constraint interval. \par
|
|
}{
|
|
References AutoSegment::getConstraints().}\par
|
|
}
|
|
{\xe \v getOptimalMin\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOptimalMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getOptimalMin () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANY}
|
|
{\bkmkend AAAAAAAANY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} minimum axis optimal range. \par
|
|
}{
|
|
References AutoSegment::getOrigin(), and DbU::lambda().}\par
|
|
{
|
|
Referenced by AutoSegment::getCost(), AutoSegment::getOptimal(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v getOptimalMax\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOptimalMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getOptimalMax () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANZ}
|
|
{\bkmkend AAAAAAAANZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} maximum axis optimal range. \par
|
|
}{
|
|
References AutoSegment::getOrigin(), and DbU::lambda().}\par
|
|
{
|
|
Referenced by AutoSegment::getCost(), AutoSegment::getOptimal(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v getOptimal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOptimal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} & getOptimal ({\b Interval} & {\i i}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOA}
|
|
{\bkmkend AAAAAAAAOA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Inialize {\f2 i} with the {\b AutoSegment} axis optimal range. \par
|
|
}{
|
|
References AutoSegment::getOptimalMax(), AutoSegment::getOptimalMin(), Interval::getVMax(), and Interval::getVMin().}\par
|
|
}
|
|
{\xe \v getCost\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getCost}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getCost ({\b DbU::Unit} {\i axis}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOB}
|
|
{\bkmkend AAAAAAAAOB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The cost if this segment is placed at {\f2 axis} . The cost is null if {\f2 axis} is inside the optimal interval and is the distance toward the nearest bound outside. \par
|
|
}}{
|
|
References AutoSegment::getOptimalMax(), and AutoSegment::getOptimalMin().}\par
|
|
}
|
|
{\xe \v getCanonical\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getCanonical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getCanonical ({\b DbU::Unit} & {\i min}, {\b DbU::Unit} & {\i max}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOC}
|
|
{\bkmkend AAAAAAAAOC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The canonical segment associated to this one. Additionnaly compute the source & target position of the whole set of aligned segments. \par
|
|
}}{
|
|
References AutoSegment::base(), AutoSegment::getAligneds(), AutoSegment::getSourcePosition(), AutoSegment::getTargetPosition(), and AutoSegment::isCanonical().}\par
|
|
{
|
|
Referenced by AutoSegment::getCanonical().}\par
|
|
}
|
|
{\xe \v getCanonical\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getCanonical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getCanonical ({\b Interval} & {\i i}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOD}
|
|
{\bkmkend AAAAAAAAOD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The canonical segment associated to this one. Additionnaly compute the source & target position of the whole set of aligned segments. \par
|
|
}}{
|
|
References AutoSegment::getCanonical(), Interval::getVMax(), and Interval::getVMin().}\par
|
|
}
|
|
{\xe \v unsetFlags\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:unsetFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void unsetFlags (unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOE}
|
|
{\bkmkend AAAAAAAAOE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Unsets {\f2 flags} given as arguments. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoSegment::canonize(), AutoSegment::computeTerminal(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), AutoSegment::revalidate(), AutoHorizontal::updateOrient(), and AutoVertical::updateOrient().}\par
|
|
}
|
|
{\xe \v setFlags\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setFlags (unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOF}
|
|
{\bkmkend AAAAAAAAOF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets {\f2 flags} given as arguments. \par
|
|
}{
|
|
Referenced by AutoSegment::_invalidate(), AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::_postCreate(), AutoVertical::_postCreate(), AutoSegment::AutoSegment(), AutoSegment::canonize(), AutoSegment::computeTerminal(), GCellTopology::doRp_AutoContacts(), AutoSegment::invalidate(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), AutoSegment::revalidate(), AutoHorizontal::updateOrient(), and AutoVertical::updateOrient().}\par
|
|
}
|
|
{\xe \v setDuSource\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuSource ({\b DbU::Unit} {\i du}){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJM}
|
|
{\bkmkend AAAAAAAAJM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from source anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOG \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJL \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v setDuTarget\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuTarget ({\b DbU::Unit} {\i du}){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJO}
|
|
{\bkmkend AAAAAAAAJO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from target anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOH \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJN \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v computeTerminal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:computeTerminal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void computeTerminal ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOI}
|
|
{\bkmkend AAAAAAAAOI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Recompute the terminal status of an {\b AutoSegment}. Initially, a segment which source or target is a terminal is flagged as SegStrongTerminal. After a topological modification, if the segment is no longer directly attached to a terminal, the status is progessively weakened. Once it reaches the weakest level, it stays on it so the algorithm can work out which segments is a start to a path toward a terminal.\par
|
|
Status from stronger to weaker:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegStrongTerminal}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegWeakTerminal1}\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::SegWeakTerminal2}\par}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: The weakening is poorly done. After making a dogleg we do not\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid know which of the segment must be weakened if not directly attached on a terminal. We must examinate source & target. \par
|
|
}}{
|
|
References AutoSegment::_getFlags(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Katabatic::SegWeakTerminal, Katabatic::SegWeakTerminal1, Katabatic::SegWeakTerminal2, AutoSegment::setFlags(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v updateOrient\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:updateOrient}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateOrient (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJQ}
|
|
{\bkmkend AAAAAAAAJQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Ensure that source is lower than target. Swap them if needed. Swap never occurs on global segment because their source and target anchors are from different {\b GCell}, which are already ordered. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOJ \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJP \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::_postCreate(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v updatePositions\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:updatePositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updatePositions (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJS}
|
|
{\bkmkend AAAAAAAAJS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Update the segment begenning and ending positions. The positions takes into account the extension caps and reflect the real space used by the segment under it's long axis. \par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOK \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJR \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::_postCreate(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\xe \v mergeUserConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:mergeUserConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void mergeUserConstraints (const {\b Interval} & {\i constraints})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOL}
|
|
{\bkmkend AAAAAAAAOL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Constraints applies on the valid axis interval. Merge in {\f2 constraints} with the user's constraints. The resulting constraints is the intersection of the former user's contraints and the one given as argument. \par
|
|
}{
|
|
References Interval::intersection().}\par
|
|
}
|
|
{\xe \v resetUserConstraints\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:resetUserConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void resetUserConstraints (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOM}
|
|
{\bkmkend AAAAAAAAOM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Constraints applies on the valid axis interval. Suppress all user's constraints. \par
|
|
}}
|
|
{\xe \v setOptimalMin\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setOptimalMin}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setOptimalMin ({\b DbU::Unit} {\i min}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAON}
|
|
{\bkmkend AAAAAAAAON}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets the lower bound of the optimal axis interval. \par
|
|
}{
|
|
References DbU::getLambda(), and AutoSegment::getOrigin().}\par
|
|
{
|
|
Referenced by AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v setOptimalMax\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setOptimalMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setOptimalMax ({\b DbU::Unit} {\i max}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOO}
|
|
{\bkmkend AAAAAAAAOO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets the lower bound of the optimal axis interval. \par
|
|
}{
|
|
References DbU::getLambda(), and AutoSegment::getOrigin().}\par
|
|
{
|
|
Referenced by AutoSegment::AutoSegment(), and AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v revalidate\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:revalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} revalidate ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOP}
|
|
{\bkmkend AAAAAAAAOP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Mark this segment as valid (unset the Invalidated flag) and update positions. Unlike {\b AutoSegment::invalidate()}, it's an atomic method. \par
|
|
}{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getLayer(), AutoSegment::getLayer(), AutoContact::getPerpandicular(), Layer::getTop(), AutoSegment::isInvalidated(), AutoSegment::isReduced(), AutoContact::isTurn(), Observable::notify(), Katabatic::SegCreated, Katabatic::SegInvalidated, Katabatic::SegInvalidatedLayer, Katabatic::SegSourceBottom, Katabatic::SegSourceTop, Katabatic::SegTargetBottom, Katabatic::SegTargetTop, AutoSegment::setFlags(), AutoSegment::unsetFlags(), AutoSegment::updateOrient(), and AutoSegment::updatePositions().}\par
|
|
}
|
|
{\xe \v makeDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * makeDogleg ({\b AutoContact} * {\i from})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOQ}
|
|
{\bkmkend AAAAAAAAOQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i from} \cell }{The {\b AutoContact} {\i from} which we want to make a dogleg.\cell }
|
|
{\row }
|
|
}
|
|
This method is dedicated for the restauration of topology connexity on AutoContcact after a layer change on one of their connected {\b AutoSegment}.\par
|
|
It perform three operations:{
|
|
\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
1.\tab Create a dogleg on the {\b AutoSegment} (using the normal {\b GCell} variant).\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
2.\tab Adjust the layers of the dogleg according whether we are going {\i up} or {\i down} from the {\b AutoContact} {\f2 from} to the segment.\par
|
|
\pard\plain \s91\fi-360\li720\widctlpar\fs20\cgrid
|
|
3.\tab Returns the new {\b AutoSegment} connected to {\f2 from} (it may be the same as before, {\b if} the {\b AutoContact} is the source of the segment). \par}
|
|
}{
|
|
References Layer::contains(), AutoSegment::getAutoSource(), RoutingGauge::getContactLayer(), Session::getDoglegs(), AutoContact::getGCell(), AutoContact::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoContact::getX(), AutoContact::getY(), and AutoSegment::isHorizontal().}\par
|
|
{
|
|
Referenced by AutoContactTurn::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v makeDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int makeDogleg ({\b Interval} {\i interval}, unsigned int {\i flags} = {\f2 KbNoFlags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOR}
|
|
{\bkmkend AAAAAAAAOR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Make a dogleg {\i in a set of aligned segments} , thus the dogleg may not be created on {\f2 this} segment but in one which span intersect {\f2 interval} .\par
|
|
{\b Returns:} A set of flags telling if the break has occured on the left candidate ({\b Katabatic::KbDoglegOnLeft}) or right ({\b Katabatic::KbDoglegOnRight}). it is combined with the flag telling if the above or below layer was used for the dogleg. In case of failure, zero is returned.\par
|
|
Break the set of aligned segments so the break point is {\i outside} {\f2 interval} . The break point so can occurs on the {\i left} of the interval ({\b Katabatic::KbDoglegOnLeft}) or on the {\i right} of the interval ({\b Katabatic::KbDoglegOnRight}). When the set of aligned segments fully enclose {\f2 interval} , a choice has to be made between the left and right candidate. The rules are as follow:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
A {\i left} candidate include the {\i min} of the interval into it's span.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
A {\i right} candidate include the {\i max} of the interval into it's span.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
In certain topologies, there can be more than left or right candidates (more than one segment of the set intersect the bounds of the interval). Thoses candidates are ecludeds.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the two candidates are avalaibles, we choose the one with the greated {\i native} constraints.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
In case of strict equality, the left candidate is choosen.\par}
|
|
\par
|
|
}{
|
|
References AutoSegment::_makeDogleg(), Interval::contains(), AutoSegment::getAligneds(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getDirection(), Session::getDoglegs(), AutoContact::getGCell(), GCell::getRight(), GCell::getSide(), Interval::getSize(), AutoSegment::getSourceConstraints(), AutoSegment::getSpanU(), AutoSegment::getTargetConstraints(), GCell::getUp(), DbU::getValueString(), Interval::getVMax(), Interval::getVMin(), Katabatic::KbDoglegOnLeft, Katabatic::KbDoglegOnRight, Katabatic::KbHorizontal, and Katabatic::KbNativeConstraints.}\par
|
|
}
|
|
{\xe \v makeDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int makeDogleg ({\b GCell} * {\i doglegGCell}, unsigned int {\i flags} = {\f2 KbNoFlags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOS}
|
|
{\bkmkend AAAAAAAAOS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Make a dogleg {\i in a set of aligned segments} , thus the dogleg may not be created on {\f2 this} segment but in the one which is under {\f2 doglegGCell} .\par
|
|
{\b Returns:} A flag telling if the above or below layer was used for the perpandicular segment ({\b Katabatic::KbUseAboveLayer} or {\b Katabatic::KbUseBelowLayer}). \par
|
|
}{
|
|
References AutoSegment::_makeDogleg(), Katabatic::EngineGlobalLoaded, AutoSegment::getAligneds(), AutoSegment::getDirection(), Session::getKatabatic(), GCell::getSide(), AutoSegment::getSpanU(), Interval::intersect(), and AutoSegment::isFixed().}\par
|
|
}
|
|
{\xe \v _makeDogleg\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int _makeDogleg ({\b GCell} * {\i doglegGCell}, unsigned int {\i flags}){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAJY}
|
|
{\bkmkend AAAAAAAAJY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This method is the workhorse for the various dogleg and topology restauration methods.} It is the atomic method that actually make the dogleg on {\b this} segment.\par
|
|
{\b Returns:} {\b Katabatic::KbUseAboveLayer} if the dogleg is using the {\i above} layer ({\b Katabatic::KbUseBelowLayer} for the below layer).\par
|
|
Break the current segment in two (a.k.a. making a dogleg).{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment is broken inside {\f2 doglegGCell} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Two new segments are createds, one perpandicular and one parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The original segment is always kept attached to the {\i source} . (the new parallel fragment is attached to the {\i target} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular segment is in the layer {\i above} by default. If we are already on the topmost routing layer, the {\i below} layer is used.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment pass through the breaking {\b GCell}, it's axis is set into the center. If the segment is local, the axis is the middle of the segment.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The Local/Global kind of the original segment is updated. The local/global status is computed by the constructor of the {\b AutoSegment} for the perpandicular and the new parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The terminal state is updated. If the segment is a strong terminal the part that is no longer directly connected to the terminal is demoted to {\b Katabatic::SegWeakTerminal1}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular is obviously a canonical. If the broken segment is canonical, the original {\b is} left canonical and only the new parallel is re-canonized. Otherwise, we re-canonise both sets of aligned segments (the one on the source and the one on the target).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The three segments are added to the session dogleg stack.\par}
|
|
After this method call the net topology is guarantee to be valid.\par
|
|
\par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOT \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJX \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
Referenced by AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v moveULeft\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:moveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveULeft (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKA}
|
|
{\bkmkend AAAAAAAAKA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} below (a.k.a. lower or inferior). Rules for displacement:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment must be connected at both end to a turn contact (we do not want to manage more complex cases for the time beeing).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
And, of course, the segment must not already by on the bottomost {\b GCell}...\par}
|
|
The displacement take care of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Managing the status of the various perpandiculars. The stretched one are made global if needed. The shrinked one made local, if needed.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The supporting {\b AutoContact} (source & target) are changed of {\b GCell}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment is global, the go-through GCells are updateds.\par}
|
|
{\b Returns:} {\b true} if the move has succeeded.\par
|
|
\par
|
|
}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOU \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJZ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v moveURight\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:moveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveURight (){\f2 [pure virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKC}
|
|
{\bkmkend AAAAAAAAKC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} above (a.k.a. upper or superior). Rules for displacement:\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b AutoSegment::moveULeft()} for a complete description. \par
|
|
}}{
|
|
Implemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAOV \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKB \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v slacken\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:slacken}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void slacken (unsigned int {\i flags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOW}
|
|
{\bkmkend AAAAAAAAOW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
If the the {\b AutoSegment} is attached trough source and/or target to a terminal with too tight constraints, create a dogleg on overconstrained extremities.\par
|
|
If {\f2 flags} contains {\b Katabatic::KbPropagate}, not only the current segment will be looked up, but the whole aligned set. Note that due to the structure of the database, there can be no more than two terminal connected segments on the whole set (one on each extremity).\par
|
|
If {\f2 flags} contains {\b Katabatic::KbHalfSlacken}, the number of tracks under which the constraints are considered too tight is 3. Otherwise it is 10, that is a whole {\b GCell} side span. This flag should be used when a long set of global wire is overconstrained by only one of it's terminal, the other one offering sufficient slack (typically: 8).\par
|
|
The segment will also be slackened from it's terminal if the difference between the current slack (resulting from all the constraints of the aligned set) and the native slack is less than 3 tracks. This case means that we are already near the native slack and it not sufficent enough a degree of freedom.\par
|
|
The {\f2 {\b slacken()}} method reject the slackening of short locals as shown in figure {\b 2.a} . One way or another, we must connect to the terminal through {\b this} short local. If we cannot place it, breaking it in two other short local wouldn't help. In fact, it will only clutter more the {\b GCell} and make subsequent routing more difficult.\par
|
|
The figures {\b 2.b} and {\b 2.c} shows the special case of slackening an horizontal from an {\i horizontal} terminal. In the original configuration, the slack on segment {\f2 id:10} is null, it's only choice is to be aligned with the terminal. If a slackening is requested, it generally implies that the horizontal track is blocked, and close to the terminal. Based on thoses hypothesis, when we slacken the segment {\f2 id:10} we impose that the {\i source} contact is {\b fixed} on the terminal itself. That is, the segment {\f2 id:10} will be reduced to a zero-length and we made an immediate turn (see {\b 2.c} ).\par
|
|
\par
|
|
}{
|
|
References AutoSegment::getAligneds(), and Katabatic::KbPropagate.}\par
|
|
}
|
|
{\xe \v reduceDoglegLayer\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:reduceDoglegLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool reduceDoglegLayer ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOX}
|
|
{\bkmkend AAAAAAAAOX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform the actual layer change on a reduced segment. This method is to be called juste before destroying the {\b Katabatic} database.\par
|
|
{\b Returns:} {\b true} if a change occurs. \par
|
|
}{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Session::getRoutingLayer(), AutoSegment::isReduced(), AutoSegment::isSpinBottom(), AutoSegment::isSpinTop(), AutoContact::setLayer(), and AutoSegment::setLayer().}\par
|
|
}
|
|
{\xe \v reduce\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:reduce}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool reduce ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOY}
|
|
{\bkmkend AAAAAAAAOY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets the segment into reduced state.\par
|
|
{\b Returns:} {\b true} if the operation did succeed. The layer will not be actually changed until the {\b Katabatic} database is saved/destroyed.\par
|
|
A segment can be reduced if:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Source & target are {\b AutoContactTurn}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
It is either {\i spin top} or {\i spin bottom} , that is connecting perpandiculars both in the same layer.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Has a length less or equal one pitch in the perpandicular direction.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Neither of the perpandicular are also reduceds.\par}
|
|
If segment {\f2 id:12} is reduced, it prevents {\f2 id:10} & {\f2 id:14} to be also reduced, by increasing the {\f2 _reduced} counter. In this example {\f2 id:14} is {\i spin top} and {\f2 id:12} is {\i spin bottom} .\par
|
|
If we reduce two adjacent segments, one will go up while the other will go down (they will actually exchange their layers), it will thus defeat the purpose of creating a {\i same layer} dogleg. Besides, the turn contact between them will be changed into a pure metal one, generating a disconnexion...\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b AutoSegment::raise()} \par
|
|
}}{
|
|
References AutoSegment::canReduce(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getPerpandicular(), and Katabatic::SegIsReduced.}\par
|
|
}
|
|
{\xe \v raise\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:raise}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool raise ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOZ}
|
|
{\bkmkend AAAAAAAAOZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Get a segment out of {\i reduced} state.\par
|
|
{\b Returns:} {\b true} if a state change did really take place.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b AutoSegment::reduce()} \par
|
|
}}{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getPerpandicular(), and Katabatic::SegIsReduced.}\par
|
|
}
|
|
{\xe \v canonize\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:canonize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * canonize (unsigned int {\i flags} = {\f2 KbNoFlags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPA}
|
|
{\bkmkend AAAAAAAAPA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Find and set the canonical {\b AutoSegment} from a set of aligneds. For the time beeing we assumes that there is no merging process, so the Segments will only gets more and more fragmented. This implies that a segment can become canonical but it will never revert to normal status.\par
|
|
The canonical {\b AutoSegment} is the one with the lowest {\f2 Id} . This a way of ensuring reproductible results. Note that the canonical one may not be the {\i geometrically} lowest one.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::getAligneds(), AutoSegment::isCanonical(), AutoSegment::isGlobal(), Katabatic::SegCanonical, Katabatic::SegNotAligned, Katabatic::SegWeakGlobal, AutoSegment::setFlags(), and AutoSegment::unsetFlags().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v invalidate\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void invalidate (unsigned int {\i flags} = {\f2 {\b KbPropagate}}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPB}
|
|
{\bkmkend AAAAAAAAPB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Invalidate this {\b AutoSegment}, or if the {\b Katabatic::KbPropagate} flags is set, the whole set of aligned segments.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: If Katabatic is in the destruction stage, this function does nothing.\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::_invalidate(), AutoSegment::getAligneds(), AutoSegment::isInvalidated(), Katabatic::KbPropagate, Katabatic::KbSource, Katabatic::KbTarget, and AutoSegment::setFlags().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoSegment::_postCreate(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v computeOptimal\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:computeOptimal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} computeOptimal (set< {\b AutoSegment} *> & {\i processeds})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPC}
|
|
{\bkmkend AAAAAAAAPC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i processeds} \cell }{A set of already processeds {\b AutoSegment}. Used by the caller function to avoid doing again the computation on an {\b AutoSegment} from an already proccessed aligned set. Compute the optimal axis interval for the aligned set.\cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::getAligneds(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getAxis(), GCell::getBoundingBox(), GCell::getColumn(), AutoContact::getConstraintBox(), AutoSegment::getConstraints(), AutoSegment::getExtremity(), AutoSegment::getOrigin(), AutoSegment::getPerpandiculars(), GCell::getRow(), Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), AutoSegment::isHorizontal(), AutoSegment::isVertical(), AutoSegment::setOptimalMax(), AutoSegment::setOptimalMin(), and DbU::toLambda().}\par
|
|
}
|
|
{\xe \v setAxis\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:setAxis}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setAxis ({\b DbU::Unit} {\i axis}, unsigned int {\i flags} = {\f2 KbNoFlags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPD}
|
|
{\bkmkend AAAAAAAAPD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i axis} \cell }{The new position of the axis. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{See KbRealignate.\cell }
|
|
{\row }
|
|
}
|
|
Set the axis of an aligned set. This method does nothing if not called on the canonical {\b AutoSegment} of the set. If the new value of the axis is equal to the previous one, nothing is done (non-canonical {\b AutoSegment} are not looked after). To force an actual axis set, with invalidation of the whole {\b AutoSegment} set, set the KbRealignate flag.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::getAligneds(), AutoSegment::getAxis(), AutoSegment::isCanonical(), AutoSegment::isHorizontal(), Katabatic::KbRealignate, and DbU::toLambda().}\par
|
|
{
|
|
Referenced by AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), AutoSegment::toConstraintAxis(), and AutoSegment::toOptimalAxis().}\par
|
|
}
|
|
{\xe \v toConstraintAxis\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:toConstraintAxis}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool toConstraintAxis (unsigned int {\i flags} = {\f2 {\b KbRealignate}})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPE}
|
|
{\bkmkend AAAAAAAAPE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
If the {\b AutoSegment} axis is outside the constraint interval, put it on nearest bound. This method is active only on canonical AutoSegments.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if an actual axis change is made.\par
|
|
}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAxis(), AutoSegment::getConstraints(), AutoContact::getGCell(), Interval::getHalfSize(), GCell::getSide(), AutoSegment::isCanonical(), AutoSegment::isDogleg(), AutoSegment::isHorizontal(), Katabatic::KbHorizontal, Katabatic::KbVertical, and AutoSegment::setAxis().}\par
|
|
}
|
|
{\xe \v toOptimalAxis\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:toOptimalAxis}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool toOptimalAxis (unsigned int {\i flags} = {\f2 {\b KbRealignate}})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPF}
|
|
{\bkmkend AAAAAAAAPF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
If the {\b AutoSegment} axis is outside the optimal interval, put it on nearest bound. This method is active only on canonical AutoSegments.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if an actual axis change is made.\par
|
|
}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: Canonical aware method. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}{
|
|
References AutoSegment::getAxis(), AutoSegment::getConstraints(), AutoSegment::getOptimalMax(), AutoSegment::getOptimalMin(), AutoSegment::isCanonical(), Katabatic::KbRealignate, and AutoSegment::setAxis().}\par
|
|
}
|
|
{\xe \v getOnSourceContact\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOnSourceContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getOnSourceContact (unsigned int {\i direction})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPG}
|
|
{\bkmkend AAAAAAAAPG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Collection of {\b AutoSegment} in {\f2 direction} that are on this segment source contact. \par
|
|
}{
|
|
References AutoSegment::getSource(), and Collection< Type >::getSubSet().}\par
|
|
}
|
|
{\xe \v getOnTargetContact\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getOnTargetContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getOnTargetContact (unsigned int {\i direction})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPH}
|
|
{\bkmkend AAAAAAAAPH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Collection of {\b AutoSegment} in {\f2 direction} that are on this segment target contact. \par
|
|
}{
|
|
References Collection< Type >::getSubSet(), and AutoSegment::getTarget().}\par
|
|
}
|
|
{\xe \v getAligneds\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getAligneds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getAligneds (unsigned int {\i flags} = {\f2 KbNoFlags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPI}
|
|
{\bkmkend AAAAAAAAPI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The Collection of AutoSegments that are aligned on this one through {\b AutoContactHTee} or {\b AutoContactVTee}. If the {\f2 flags} contains {\b Katabatic::KbWithPerpands}, the Collection will also includes the AutoSegments directly perpandiculars to the whole aligned set. \par
|
|
}{
|
|
Referenced by AutoSegment::canDogleg(), AutoSegment::canMoveUp(), AutoSegment::canonize(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), AutoSegment::canSlacken(), AutoSegment::computeOptimal(), AutoSegment::getCanonical(), AutoSegment::invalidate(), AutoSegment::isStrongTerminal(), AutoSegment::makeDogleg(), AutoSegment::setAxis(), and AutoSegment::slacken().}\par
|
|
}
|
|
{\xe \v getPerpandiculars\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:getPerpandiculars}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getPerpandiculars ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPJ}
|
|
{\bkmkend AAAAAAAAPJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The Collection of all AutoSegments directly perpandiculars to the whole aligned set. \par
|
|
}{
|
|
Referenced by AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v _preCreate\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_preCreate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _preCreate ({\b AutoContact} * {\i source}, {\b AutoContact} * {\i target}){\f2 [static]}, {\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPK}
|
|
{\bkmkend AAAAAAAAPK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform sanity checks before allowing the actual creation of an {\b AutoSegment}. If an error occurs throw an exception.\par
|
|
Check for:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 source} and {\f2 target} must not be {\f2 NULL} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\f2 source} and {\f2 target} must be different. \par}
|
|
}}
|
|
{\xe \v _postCreate\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_postCreate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _postCreate (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKE}
|
|
{\bkmkend AAAAAAAAKE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform operations that, given the data structure cannot be done in the constructor. Also allows for sharing code with the derived classes. Currently:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Invalidate the whole net (topology change).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Insert the {\b AutoSegment} in the lookup/Session machanism.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Call {\b AutoSegment::invalidate()}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Call {\b AutoSegment::updateOrient()}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Call {\b AutoSegment::updatePositions()}. \par}
|
|
}{
|
|
Reimplemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPL \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKD \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getNet(), Session::invalidate(), AutoSegment::invalidate(), Session::link(), Observable::notify(), AutoSegment::updateOrient(), and AutoSegment::updatePositions().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_postCreate(), AutoVertical::_postCreate(), and AutoSegment::create().}\par
|
|
}
|
|
{\xe \v _preDestroy\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_preDestroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _preDestroy (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKG}
|
|
{\bkmkend AAAAAAAAKG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform operations that must be done before the actual destructor is called. Merely whidrawn the {\b AutoSegment} from the lookup/Session mechanism. \par
|
|
}{
|
|
Reimplemented in {\b AutoVertical} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPM \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b AutoHorizontal} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKF \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Observable::notify(), and Session::unlink().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_preDestroy(), and AutoVertical::_preDestroy().}\par
|
|
}
|
|
{\xe \v _invalidate\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} _invalidate (){\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPN}
|
|
{\bkmkend AAAAAAAAPN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Invalidate this segment. The segment is scheduled into the {\b Session} revalidation mechanism. \par
|
|
}{
|
|
References Session::invalidate(), AutoSegment::isInvalidated(), Observable::notify(), Katabatic::SegInvalidated, and AutoSegment::setFlags().}\par
|
|
{
|
|
Referenced by AutoSegment::invalidate().}\par
|
|
}
|
|
{\xe \v _getFlags\:Katabatic::AutoSegment}
|
|
{\xe \v Katabatic::AutoSegment\:_getFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int _getFlags () const{\f2 [inline]}, {\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPO}
|
|
{\bkmkend AAAAAAAAPO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets {\f2 flags} given as arguments. \par
|
|
}{
|
|
Referenced by AutoSegment::computeTerminal().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegment.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegment.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegment.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_Aligneds Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_Aligneds}
|
|
{\xe \v AutoSegments_Aligneds}
|
|
{\bkmkstart AAAAAAAAPP}
|
|
{\bkmkend AAAAAAAAPP}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All aligned {\b AutoSegment} of a set. }}\par
|
|
Inheritance diagram for AutoSegments_Aligneds:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__Aligneds__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_Aligneds} ({\b AutoSegment} *, unsigned int flags=KbNoFlags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_Aligneds} (const {\b AutoSegments_Aligneds} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHC} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHL} * {\b getLocator} () const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All aligned {\b AutoSegment} of a set. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A Collection to iterate over all the {\b AutoSegment} aligned with {\f2 master} . The {\f2 master} itself will not be included in the walkthrough. If the {\b Katabatic::KbWithPerpands} flag is passed as argument, the collection will also includes the AutoSegments directly perpandicular to the aligned set.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: AutoSegments are forced to be aligneds only when connected through\par
|
|
}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid {\b AutoContactHTee} or {\b AutoContactVTee}. \par
|
|
}}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegments_Aligneds\:Katabatic::AutoSegments_Aligneds}
|
|
{\xe \v Katabatic::AutoSegments_Aligneds\:AutoSegments_Aligneds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_Aligneds} ({\b AutoSegment} * {\i master}, unsigned int {\i flags} = {\f2 KbNoFlags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPQ}
|
|
{\bkmkend AAAAAAAAPQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a collection of all the {\b AutoSegment} aligned on {\f2 master} (master itself is excluded from the Collection). If the flag {\b Katabatic::KbWithPerpands} is given the directly perpandicular {\b AutoSegment} will also be includeds. \par
|
|
}}
|
|
{\xe \v AutoSegments_Aligneds\:Katabatic::AutoSegments_Aligneds}
|
|
{\xe \v Katabatic::AutoSegments_Aligneds\:AutoSegments_Aligneds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_Aligneds} (const {\b AutoSegments_Aligneds} & {\i autosegments}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPR}
|
|
{\bkmkend AAAAAAAAPR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Copy constructor. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_Aligneds}
|
|
{\xe \v Katabatic::AutoSegments_Aligneds\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPS}
|
|
{\bkmkend AAAAAAAAPS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\xe \v getLocator\:Katabatic::AutoSegments_Aligneds}
|
|
{\xe \v Katabatic::AutoSegments_Aligneds\:getLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getLocator () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPT}
|
|
{\bkmkend AAAAAAAAPT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection Locator. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_AnchorOnGCell Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_AnchorOnGCell}
|
|
{\xe \v AutoSegments_AnchorOnGCell}
|
|
{\bkmkstart AAAAAAAAPU}
|
|
{\bkmkend AAAAAAAAPU}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} Beginning and/or Stopping in a {\b GCell}. }}\par
|
|
Inheritance diagram for AutoSegments_AnchorOnGCell:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__AnchorOnGCell__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_AnchorOnGCell} ({\b GCell} *fcell, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_AnchorOnGCell} (const {\b AutoSegments_AnchorOnGCell} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHC} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHL} * {\b getLocator} () const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} Beginning and/or Stopping in a {\b GCell}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A Collection to iterate over all the {\b AutoSegment} that begin from and/or end in a {\b GCell}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegments_AnchorOnGCell\:Katabatic::AutoSegments_AnchorOnGCell}
|
|
{\xe \v Katabatic::AutoSegments_AnchorOnGCell\:AutoSegments_AnchorOnGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_AnchorOnGCell} ({\b GCell} * {\i fcell}, unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPV}
|
|
{\bkmkend AAAAAAAAPV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a collection of all the {\b AutoSegment} beginning from and/or ending in {\f2 fcell} . The set returned by the Collection is selected through {\f2 flags} :{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Katabatic::KbBySource : include {\b AutoSegment} starting from {\f2 fcell} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Katabatic::KbByTarget : include {\b AutoSegment} ending in {\f2 fcell} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::KbHorizontal} : include horizontal {\b AutoSegment}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Katabatic::KbVertical} : include vertical {\b AutoSegment}. \par}
|
|
}}
|
|
{\xe \v AutoSegments_AnchorOnGCell\:Katabatic::AutoSegments_AnchorOnGCell}
|
|
{\xe \v Katabatic::AutoSegments_AnchorOnGCell\:AutoSegments_AnchorOnGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_AnchorOnGCell} (const {\b AutoSegments_AnchorOnGCell} & {\i autosegments}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPW}
|
|
{\bkmkend AAAAAAAAPW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Copy constructor. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_AnchorOnGCell}
|
|
{\xe \v Katabatic::AutoSegments_AnchorOnGCell\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPX}
|
|
{\bkmkend AAAAAAAAPX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\xe \v getLocator\:Katabatic::AutoSegments_AnchorOnGCell}
|
|
{\xe \v Katabatic::AutoSegments_AnchorOnGCell\:getLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getLocator () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPY}
|
|
{\bkmkend AAAAAAAAPY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection Locator. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_InDirection Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_InDirection}
|
|
{\xe \v AutoSegments_InDirection}
|
|
{\bkmkstart AAAAAAAAPZ}
|
|
{\bkmkend AAAAAAAAPZ}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select {\b AutoSegment} in a given direction. }}\par
|
|
Inheritance diagram for AutoSegments_InDirection:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__InDirection__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_InDirection} (unsigned int direction)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHF} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b accept} ({\b AutoSegment} *segment) const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select {\b AutoSegment} in a given direction. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A Filter to select {\b AutoSegment} in a specific direction. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegments_InDirection\:Katabatic::AutoSegments_InDirection}
|
|
{\xe \v Katabatic::AutoSegments_InDirection\:AutoSegments_InDirection}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_InDirection} (unsigned int {\i direction}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQA}
|
|
{\bkmkend AAAAAAAAQA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a filter for {\b AutoSegment} in {\f2 direction} ({\b Katabatic::KbHorizontal} or {\b Katabatic::KbVertical}). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_InDirection}
|
|
{\xe \v Katabatic::AutoSegments_InDirection\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHF} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQB}
|
|
{\bkmkend AAAAAAAAQB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Filter< Type >}.}\par
|
|
}
|
|
{\xe \v accept\:Katabatic::AutoSegments_InDirection}
|
|
{\xe \v Katabatic::AutoSegments_InDirection\:accept}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool accept ({\b AutoSegment} * {\i segment}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQC}
|
|
{\bkmkend AAAAAAAAQC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\f2 segment} is in the correct direction. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_IsAccountable Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_IsAccountable}
|
|
{\xe \v AutoSegments_IsAccountable}
|
|
{\bkmkstart AAAAAAAAQD}
|
|
{\bkmkend AAAAAAAAQD}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select accoutable {\b AutoSegment}. }}\par
|
|
Inheritance diagram for AutoSegments_IsAccountable:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__IsAccountable__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHF} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b accept} ({\b AutoSegment} *) const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Filter to select accoutable {\b AutoSegment}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A Filter to select accoutable {\b AutoSegment}. An {\b AutoSegment} is said to be accountable if it is canonical (in the sense of an aligned set). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_IsAccountable}
|
|
{\xe \v Katabatic::AutoSegments_IsAccountable\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHF} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQE}
|
|
{\bkmkend AAAAAAAAQE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Filter< Type >}.}\par
|
|
}
|
|
{\xe \v accept\:Katabatic::AutoSegments_IsAccountable}
|
|
{\xe \v Katabatic::AutoSegments_IsAccountable\:accept}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool accept ({\b AutoSegment} * {\i segment}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQF}
|
|
{\bkmkend AAAAAAAAQF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\f2 segment} is accountable (i.e. canonical). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_OnContact Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_OnContact}
|
|
{\xe \v AutoSegments_OnContact}
|
|
{\bkmkstart AAAAAAAAQG}
|
|
{\bkmkend AAAAAAAAQG}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} anchored on a Contact. }}\par
|
|
Inheritance diagram for AutoSegments_OnContact:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__OnContact__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_OnContact} ({\b AutoSegment} *master, {\b Contact} *contact)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_OnContact} (const {\b AutoSegments_OnContact} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHC} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHL} * {\b getLocator} () const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} anchored on a Contact. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All {\b AutoSegment} Beginning from an {\b AutoContact}.\par
|
|
A Collection to iterate over all the {\b AutoSegment} anchored on {\f2 contact} . If supplied, the {\b AutoSegment} {\f2 master} will be excluded from the list.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: If a Hurricane::Segment is anchored on the {\f2 contact} , but is not\par
|
|
}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid associated to an {\b AutoSegment}, it will be silently skipped.\par
|
|
}A Collection to iterate over all the {\b AutoSegment} that begin from {\b AutoContact}. As AutoSegments are kept orienteds (source anchor must be lower than target), selecting source anchored AutoSegments implies that they are starting from this {\b AutoContact}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegments_OnContact\:Katabatic::AutoSegments_OnContact}
|
|
{\xe \v Katabatic::AutoSegments_OnContact\:AutoSegments_OnContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_OnContact} ({\b AutoSegment} * {\i master}, {\b Contact} * {\i contact}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQH}
|
|
{\bkmkend AAAAAAAAQH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i master} \cell }{Exclude this {\b AutoSegment} from the Collection. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i contact} \cell }{The Hurricane Contact over which to iterate.\cell }
|
|
{\row }
|
|
}
|
|
Construct a Collection of all the {\b AutoSegment} anchored on {\f2 contact} .\par
|
|
Create the collection of all AutoSegments direcly anchored on {\f2 contact} , with exclusion of {\f2 master} . \par
|
|
}}
|
|
{\xe \v AutoSegments_OnContact\:Katabatic::AutoSegments_OnContact}
|
|
{\xe \v Katabatic::AutoSegments_OnContact\:AutoSegments_OnContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_OnContact} (const {\b AutoSegments_OnContact} & {\i segments}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQI}
|
|
{\bkmkend AAAAAAAAQI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Copy constructor. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_OnContact}
|
|
{\xe \v Katabatic::AutoSegments_OnContact\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQJ}
|
|
{\bkmkend AAAAAAAAQJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\xe \v getLocator\:Katabatic::AutoSegments_OnContact}
|
|
{\xe \v Katabatic::AutoSegments_OnContact\:getLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getLocator () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQK}
|
|
{\bkmkend AAAAAAAAQK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection Locator. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoSegments_Perpandiculars Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoSegments_Perpandiculars}
|
|
{\xe \v AutoSegments_Perpandiculars}
|
|
{\bkmkstart AAAAAAAAQL}
|
|
{\bkmkend AAAAAAAAQL}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All perpandicular {\b AutoSegment} to a set of aligneds. }}\par
|
|
Inheritance diagram for AutoSegments_Perpandiculars:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoSegments__Perpandiculars__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_Perpandiculars} ({\b AutoSegment} *master)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments_Perpandiculars} (const {\b AutoSegments_Perpandiculars} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHC} * {\b getClone} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b AutoSegmentHL} * {\b getLocator} () const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
All perpandicular {\b AutoSegment} to a set of aligneds. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A Collection to iterate over all the {\b AutoSegment} perpandicular to the set of aligned {\b AutoSegment} of {\f2 master} .\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: This Collection is canonical aware (work on the aligned set).\par
|
|
}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v AutoSegments_Perpandiculars\:Katabatic::AutoSegments_Perpandiculars}
|
|
{\xe \v Katabatic::AutoSegments_Perpandiculars\:AutoSegments_Perpandiculars}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_Perpandiculars} ({\b AutoSegment} * {\i master}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQM}
|
|
{\bkmkend AAAAAAAAQM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a collection of all the {\b AutoSegment} perpandicular to the aligned set of {\f2 master} . \par
|
|
}}
|
|
{\xe \v AutoSegments_Perpandiculars\:Katabatic::AutoSegments_Perpandiculars}
|
|
{\xe \v Katabatic::AutoSegments_Perpandiculars\:AutoSegments_Perpandiculars}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments_Perpandiculars} (const {\b AutoSegments_Perpandiculars} & {\i autosegments}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQN}
|
|
{\bkmkend AAAAAAAAQN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Copy constructor. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getClone\:Katabatic::AutoSegments_Perpandiculars}
|
|
{\xe \v Katabatic::AutoSegments_Perpandiculars\:getClone}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getClone () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQO}
|
|
{\bkmkend AAAAAAAAQO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\xe \v getLocator\:Katabatic::AutoSegments_Perpandiculars}
|
|
{\xe \v Katabatic::AutoSegments_Perpandiculars\:getLocator}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegmentHC} * getLocator () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQP}
|
|
{\bkmkend AAAAAAAAQP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A deep copy of the Collection Locator. \par
|
|
}{
|
|
Implements {\b Collection< Type >}.}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoSegments.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
AutoVertical Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v AutoVertical}
|
|
{\xe \v AutoVertical}
|
|
{\bkmkstart AAAAAAAAQQ}
|
|
{\bkmkend AAAAAAAAQQ}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Vertical {\b AutoSegment}. }}\par
|
|
Inheritance diagram for AutoVertical:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1AutoVertical__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b _canSlacken} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveULeft} (float reserve=0.0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b canMoveURight} (float reserve=0.0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Segment} * {\b base} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Vertical} * {\b getVertical} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getSourceU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getTargetU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuSource} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b DbU::Unit} {\b getDuTarget} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSpanU} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b getConstraints} ({\b DbU::Unit} &min, {\b DbU::Unit} &max) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getSourceConstraints} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Interval} {\b getTargetConstraints} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b getDirection} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual size_t {\b getGCells} (vector< {\b GCell} *> &) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuSource} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b setDuTarget} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updateOrient} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b updatePositions} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkPositions} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b checkConstraints} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual unsigned int {\b _makeDogleg} ({\b GCell} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveULeft} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual bool {\b moveURight} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _postCreate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b _preDestroy} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Additional Inherited Members\par
|
|
\pard\plain
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Concrete Vertical {\b AutoSegment}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v _canSlacken\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:_canSlacken}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool _canSlacken () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMO}
|
|
{\bkmkend AAAAAAAAMO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the segment can be slackened. That is, source or target constraints are less than three pitches. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Interval::contains(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getSide(), Interval::inflate(), and Katabatic::KbHorizontal.}\par
|
|
}
|
|
{\xe \v canMoveULeft\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:canMoveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveULeft (float {\i reserve} = {\f2 0.0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMS}
|
|
{\bkmkend AAAAAAAAMS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the left {\b GCell} (for a vertical) or down (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i target} . That is, it's a global which extends toward left.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAII \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getLeft(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getUp(), GCell::getWDensity(), and AutoSegment::isGlobal().}\par
|
|
}
|
|
{\xe \v canMoveURight\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:canMoveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool canMoveURight (float {\i reserve} = {\f2 0.0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMT}
|
|
{\bkmkend AAAAAAAAMT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the {\i global} segment can be moved on the right {\b GCell} (for a vertical) or up (for an horizontal). The move is accepted only if it do not change the amount of global wiring. Thus the following conditions:{
|
|
\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment mustn't be on the leftmost {\b GCell} (obvious...).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The segment must be global.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The source and target contacts must be AutoContactTurn(s).\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
At least one of the perpandicular must be global {\b and} connected through the {\i source} . That is, it's a global which extends toward right.\par
|
|
\pard\plain \s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid
|
|
The {\b GCell} of maximum density on the left must remains below the current {\b GCell} of maximum density, with a margin of {\f2 reserve} (expressed in total saturation percentage). \par}
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIK \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), GCell::getRight(), Session::getRoutingGauge(), AutoContact::getSegment(), GCell::getUp(), GCell::getWDensity(), and AutoSegment::isGlobal().}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKU}
|
|
{\bkmkend AAAAAAAAKU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment}. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v base\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:base}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Segment} * base () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKT}
|
|
{\bkmkend AAAAAAAAKT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the decorated {\b Hurricane::Segment} (const flavor). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIO \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getVertical\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getVertical}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Vertical} * getVertical (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAKW}
|
|
{\bkmkend AAAAAAAAKW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} If the decorated segment is a {\b Hurricane::Vertical}, return it. {\f2 NULL} otherwise. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKV \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v getSourceU\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getSourceU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getSourceU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANK}
|
|
{\bkmkend AAAAAAAANK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} source position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIS \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceY().}\par
|
|
}
|
|
{\xe \v getTargetU\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getTargetU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTargetU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANL}
|
|
{\bkmkend AAAAAAAANL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} target position. (X for an horizontal and Y for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIU \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getTargetY().}\par
|
|
}
|
|
{\xe \v getDuSource\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuSource () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANM}
|
|
{\bkmkend AAAAAAAANM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIW \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Vertical::getDySource().}\par
|
|
}
|
|
{\xe \v getDuTarget\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getDuTarget () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANN}
|
|
{\bkmkend AAAAAAAANN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} delta from source. (dX for an horizontal and dY for a Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAIY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Vertical::getDyTarget().}\par
|
|
}
|
|
{\xe \v getSpanU\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getSpanU}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSpanU () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANQ}
|
|
{\bkmkend AAAAAAAANQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b AutoSegment} {\i uniform} occupying interval (on X for horizontal and on Y for vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceY(), and Segment::getTargetY().}\par
|
|
}
|
|
{\xe \v getConstraints\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool getConstraints ({\b DbU::Unit} & {\i min}, {\b DbU::Unit} & {\i max}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANU}
|
|
{\bkmkend AAAAAAAANU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} in {\f2 min} & {\f2 max} the allowed range for the segment axis. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJC \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getCBXMax(), AutoContact::getCBXMin(), AutoSegment::getUserConstraints(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v getSourceConstraints\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getSourceConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSourceConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANS}
|
|
{\bkmkend AAAAAAAANS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the source {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJE \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), Box::getXMax(), Box::getXMin(), and Katabatic::KbNativeConstraints.}\par
|
|
}
|
|
{\xe \v getTargetConstraints\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getTargetConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getTargetConstraints (unsigned int {\i flags} = {\f2 0}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANT}
|
|
{\bkmkend AAAAAAAANT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The Interval into witch the target {\b AutoContact} can vary. By default all deduced constraints and user constraints are took into account. If {\f2 flags} contains {\f2 KbNativeConstraints} the constraint returned is only the enclosing {\b GCell}. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoTarget(), Box::getXMax(), Box::getXMin(), and Katabatic::KbNativeConstraints.}\par
|
|
}
|
|
{\xe \v getDirection\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getDirection}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getDirection () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAANB}
|
|
{\bkmkend AAAAAAAANB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b Katabatic::KbHorizontal} or {\b Katabatic::KbVertical} according to the decorated segment. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Katabatic::KbVertical.}\par
|
|
}
|
|
{\xe \v getGCells\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:getGCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getGCells (vector< {\b GCell} *> & {\i gcells}) const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAND}
|
|
{\bkmkend AAAAAAAAND}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i gcells} \cell }{A vector that will be filled by all the GCells that the segment overlap. In increasing order, from source to target. \cell }
|
|
{\row }
|
|
}
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector's size. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJK \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), and GCell::getUp().}\par
|
|
}
|
|
{\xe \v setDuSource\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:setDuSource}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuSource ({\b DbU::Unit} {\i du}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOG}
|
|
{\bkmkend AAAAAAAAOG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from source anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v setDuTarget\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:setDuTarget}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDuTarget ({\b DbU::Unit} {\i du}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOH}
|
|
{\bkmkend AAAAAAAAOH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the {\i uniform} {\f2 dU} from target anchor (dX for Horizontal, dY for Vertical). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJO \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v updateOrient\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:updateOrient}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateOrient (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOJ}
|
|
{\bkmkend AAAAAAAAOJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Ensure that source is lower than target. Swap them if needed. Swap never occurs on global segment because their source and target anchors are from different {\b GCell}, which are already ordered. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJQ \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Segment::getSourceY(), Segment::getTargetY(), Segment::invert(), Katabatic::SegSourceBottom, Katabatic::SegSourceTop, Katabatic::SegTargetBottom, Katabatic::SegTargetTop, AutoSegment::setFlags(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v updatePositions\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:updatePositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updatePositions (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOK}
|
|
{\bkmkend AAAAAAAAOK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Update the segment begenning and ending positions. The positions takes into account the extension caps and reflect the real space used by the segment under it's long axis. \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJS \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceY(), and Segment::getTargetY().}\par
|
|
}
|
|
{\xe \v checkPositions\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:checkPositions}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkPositions () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMY}
|
|
{\bkmkend AAAAAAAAMY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the relative positions of source & target are coherent. (source <= target). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJU \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References Session::getExtensionCap(), AutoSegment::getLayer(), Segment::getSourceY(), Segment::getTargetY(), and DbU::getValueString().}\par
|
|
}
|
|
{\xe \v checkConstraints\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:checkConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkConstraints () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAMZ}
|
|
{\bkmkend AAAAAAAAMZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the constraint intervel is coherent (non-empty or punctual in the worst case). \par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJW \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), and Interval::intersect().}\par
|
|
}
|
|
{\xe \v _makeDogleg\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:_makeDogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int _makeDogleg ({\b GCell} * {\i doglegGCell}, unsigned int {\i flags}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOT}
|
|
{\bkmkend AAAAAAAAOT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This method is the workhorse for the various dogleg and topology restauration methods.} It is the atomic method that actually make the dogleg on {\b this} segment.\par
|
|
{\b Returns:} {\b Katabatic::KbUseAboveLayer} if the dogleg is using the {\i above} layer ({\b Katabatic::KbUseBelowLayer} for the below layer).\par
|
|
Break the current segment in two (a.k.a. making a dogleg).{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment is broken inside {\f2 doglegGCell} .\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Two new segments are createds, one perpandicular and one parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The original segment is always kept attached to the {\i source} . (the new parallel fragment is attached to the {\i target} ).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular segment is in the layer {\i above} by default. If we are already on the topmost routing layer, the {\i below} layer is used.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment pass through the breaking {\b GCell}, it's axis is set into the center. If the segment is local, the axis is the middle of the segment.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The Local/Global kind of the original segment is updated. The local/global status is computed by the constructor of the {\b AutoSegment} for the perpandicular and the new parallel.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The terminal state is updated. If the segment is a strong terminal the part that is no longer directly connected to the terminal is demoted to {\b Katabatic::SegWeakTerminal1}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The perpandicular is obviously a canonical. If the broken segment is canonical, the original {\b is} left canonical and only the new parallel is re-canonized. Otherwise, we re-canonise both sets of aligned segments (the one on the source and the one on the target).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The three segments are added to the session dogleg stack.\par}
|
|
After this method call the net topology is guarantee to be valid.\par
|
|
\par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJY \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoContact::base(), AutoSegment::canonize(), AutoContactTurn::create(), AutoSegment::create(), Session::dogleg(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), Session::getConfiguration(), RoutingGauge::getContactLayer(), AutoContact::getGCell(), Component::getLayer(), AutoSegment::getLayer(), RoutingGauge::getLayerDepth(), Component::getNet(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), AutoSegment::getSourceY(), AutoSegment::getTargetY(), GCell::getUp(), AutoSegment::getX(), GCell::getY(), GCell::getYMax(), AutoContact::invalidate(), AutoSegment::invalidate(), AutoSegment::isCanonical(), AutoSegment::isLocal(), AutoSegment::isSlackened(), AutoSegment::isWeakTerminal(), Katabatic::KbHorizontal, Katabatic::KbUseAboveLayer, Katabatic::KbUseBelowLayer, Katabatic::KbVertical, AutoContact::migrateConstraintBox(), GCell::removeVSegment(), Katabatic::SegCanonical, Katabatic::SegDogleg, Katabatic::SegGlobal, Katabatic::SegNotAligned, Katabatic::SegSlackened, Katabatic::SegWeakTerminal1, AutoSegment::setFlags(), AutoSegment::setLayer(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v moveULeft\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:moveULeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveULeft (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOU}
|
|
{\bkmkend AAAAAAAAOU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} below (a.k.a. lower or inferior). Rules for displacement:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The segment must be connected at both end to a turn contact (we do not want to manage more complex cases for the time beeing).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
And, of course, the segment must not already by on the bottomost {\b GCell}...\par}
|
|
The displacement take care of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Managing the status of the various perpandiculars. The stretched one are made global if needed. The shrinked one made local, if needed.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The supporting {\b AutoContact} (source & target) are changed of {\b GCell}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segment is global, the go-through GCells are updateds.\par}
|
|
{\b Returns:} {\b true} if the move has succeeded.\par
|
|
\par
|
|
}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKA \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References GCell::addHSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getLeft(), AutoContact::getSegment(), GCell::getSide(), GCell::getUp(), Interval::getVMax(), AutoSegment::isLocal(), Katabatic::KbHorizontal, GCell::removeHSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v moveURight\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:moveURight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveURight (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAOV}
|
|
{\bkmkend AAAAAAAAOV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b This function do not manage an aligned set. It applies on {\f2 this} segment only.} \par
|
|
Displace an Horizontal or Vertical segment to the {\b GCell} above (a.k.a. upper or superior). Rules for displacement:\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b AutoSegment::moveULeft()} for a complete description. \par
|
|
}}{
|
|
Implements {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKC \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References GCell::addHSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getGCell(), GCell::getRight(), AutoContact::getSegment(), GCell::getSide(), GCell::getUp(), DbU::getValueString(), Interval::getVMin(), AutoSegment::isLocal(), Katabatic::KbHorizontal, GCell::removeHSegment(), Katabatic::SegGlobal, AutoSegment::setAxis(), AutoSegment::setFlags(), AutoContact::setGCell(), and AutoSegment::unsetFlags().}\par
|
|
}
|
|
{\xe \v _postCreate\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:_postCreate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _postCreate (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPL}
|
|
{\bkmkend AAAAAAAAPL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
In addition to {\b AutoSegment::_postCreate()}, detect whether the segment is global or local and register it in the relevant GCells (if needed).\par
|
|
If the segment is anchored directly on a terminal, adjust the axis so it's connected. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKE \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::_postCreate(), GCell::addVSegment(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), GCell::getUp(), Component::getX(), GCell::getY(), Katabatic::SegGlobal, AutoSegment::setFlags(), and AutoContact::setX().}\par
|
|
}
|
|
{\xe \v _preDestroy\:Katabatic::AutoVertical}
|
|
{\xe \v Katabatic::AutoVertical\:_preDestroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _preDestroy (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAPM}
|
|
{\bkmkend AAAAAAAAPM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform operations that must be done before the actual destructor is called. Merely whidrawn the {\b AutoSegment} from the lookup/Session mechanism. \par
|
|
}{
|
|
Reimplemented from {\b AutoSegment} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References AutoSegment::_preDestroy(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoContact::getGCell(), AutoSegment::getId(), GCell::getUp(), GCell::getY(), and GCell::removeVSegment().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoVertical.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoVertical.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoVertical.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
BaseGrid::Axis Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v BaseGrid::Axis}
|
|
{\xe \v BaseGrid::Axis}
|
|
{\bkmkstart AAAAAAAARD}
|
|
{\bkmkend AAAAAAAARD}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Graduations on a {\b BaseGrid} {\b Axis} (H or V). }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addGraduation} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b sort} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getSize} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getGraduationNumber} ({\b DbU::Unit} pos, bool &onGraduation) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b DbU::Unit} & {\b operator[]} (unsigned int i) const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Graduations on a {\b BaseGrid} {\b Axis} (H or V). \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Describe the list of graduations on either X or Y axis of a {\b BaseGrid}. Graduations correspond to cut lines and may not be evenly spaced.\par
|
|
Graduations are internally stored into a vector that needs to be sorted whenever new graduations are added ({\b BaseGrid::Axis::sort()}). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v addGraduation\:Katabatic::BaseGrid::Axis}
|
|
{\xe \v Katabatic::BaseGrid::Axis\:addGraduation}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addGraduation ({\b DbU::Unit} {\i pos}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARE}
|
|
{\bkmkend AAAAAAAARE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds a new graduation. After adding new graduations, do not forget to perform a sort. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate().}\par
|
|
}
|
|
{\xe \v sort\:Katabatic::BaseGrid::Axis}
|
|
{\xe \v Katabatic::BaseGrid::Axis\:sort}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void sort ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARF}
|
|
{\bkmkend AAAAAAAARF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Re-order the graduations after an addition. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate().}\par
|
|
}
|
|
{\xe \v getSize\:Katabatic::BaseGrid::Axis}
|
|
{\xe \v Katabatic::BaseGrid::Axis\:getSize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getSize () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARG}
|
|
{\bkmkend AAAAAAAARG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of graduations on the axis. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate().}\par
|
|
}
|
|
{\xe \v getGraduationNumber\:Katabatic::BaseGrid::Axis}
|
|
{\xe \v Katabatic::BaseGrid::Axis\:getGraduationNumber}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getGraduationNumber ({\b DbU::Unit} {\i pos}, bool & {\i onGraduation}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARH}
|
|
{\bkmkend AAAAAAAARH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The index of the graduation which is immediatly inferior or equal to {\f2 pos} . In case of strict equality, {\f2 onGraduation} is set to {\b true} . \par
|
|
}}
|
|
{\xe \v operator[]\:Katabatic::BaseGrid::Axis}
|
|
{\xe \v Katabatic::BaseGrid::Axis\:operator[]}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} operator[] (unsigned int {\i index}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARI}
|
|
{\bkmkend AAAAAAAARI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The graduation at {\f2 index} . \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
BaseGrid Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v BaseGrid}
|
|
{\xe \v BaseGrid}
|
|
{\bkmkstart AAAAAAAAQR}
|
|
{\bkmkend AAAAAAAAQR}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract Base Class for Irregular {\b Grid}. }}\par
|
|
Inheritance diagram for BaseGrid:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1BaseGrid__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Classes\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Axis}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Graduations on a {\b BaseGrid} {\b Axis} (H or V). }\par}}}
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b destroy} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getBoundingBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getColumns} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getRows} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getRawSize} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getIndex} (unsigned int c, unsigned int r) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getRow} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getColumn} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Axis} & {\b getXGrads} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Axis} & {\b getYGrads} () const\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b BaseGrid} (const {\b Box} &)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Abstract Base Class for Irregular {\b Grid}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
An abstract class for a 2-D matrix of objects. The grid is irregular in the sense that the horizontal and vertical cut lines may not be evenly spaced.\par
|
|
The coordinates of cut lines in horizontal and vertical direction are stored {\b BaseGrid::Axis} structure.\par
|
|
The {\b BaseGrid} contains all the non-template methods of the {\b Grid}, that is that do not depend of the matrix element type.\par
|
|
The internal storage implemented in derived classes is expected to store "row by row" (rows are put one after another in the vector). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v BaseGrid\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:BaseGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b BaseGrid} (const {\b Box} & {\i bb}){\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQS}
|
|
{\bkmkend AAAAAAAAQS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Construct a new {\b BaseGrid} on area {\f2 bb} . Graduations, rows & columns are sets to zero. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v destroy\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:destroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void destroy (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQT}
|
|
{\bkmkend AAAAAAAAQT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The user-level destructor. \par
|
|
}}
|
|
{\xe \v getBoundingBox\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getBoundingBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getBoundingBox () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQU}
|
|
{\bkmkend AAAAAAAAQU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The grid bounding box. \par
|
|
}}
|
|
{\xe \v getColumns\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getColumns}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getColumns () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQV}
|
|
{\bkmkend AAAAAAAAQV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The numbers of columns in the grid. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate(), KatabaticEngine::createDetailedGrid(), BaseGrid::getColumn(), BaseGrid::getIndex(), BaseGrid::getRawSize(), and BaseGrid::getRow().}\par
|
|
}
|
|
{\xe \v getRows\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getRows}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getRows () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQW}
|
|
{\bkmkend AAAAAAAAQW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The numbers of rows in the grid. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate(), KatabaticEngine::createDetailedGrid(), and BaseGrid::getRawSize().}\par
|
|
}
|
|
{\xe \v getRawSize\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getRawSize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getRawSize () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQX}
|
|
{\bkmkend AAAAAAAAQX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The total number of elements in the grid (i.e. $ rows \times columns $) \par
|
|
}{
|
|
References BaseGrid::getColumns(), and BaseGrid::getRows().}\par
|
|
}
|
|
{\xe \v getIndex\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getIndex}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getIndex (unsigned int {\i c}, unsigned int {\i r}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQY}
|
|
{\bkmkend AAAAAAAAQY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
An helper function that compute the linear index in the element vector from a {\f2 } (c,r) coordinate pair: \[ index = c + r \times columns \] \par
|
|
}{
|
|
References BaseGrid::getColumns().}\par
|
|
{
|
|
Referenced by Grid< GCell >::getGCellDown(), Grid< GCell >::getGCellLeft(), Grid< GCell >::getGCellRight(), and Grid< GCell >::getGCellUp().}\par
|
|
}
|
|
{\xe \v getRow\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getRow}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getRow (unsigned int {\i i}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAQZ}
|
|
{\bkmkend AAAAAAAAQZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
An helper function that compute the row number from the linear index in the vector: \[ row = index / columns \] \par
|
|
}{
|
|
References BaseGrid::getColumns().}\par
|
|
{
|
|
Referenced by GCell::getRow().}\par
|
|
}
|
|
{\xe \v getColumn\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getColumn}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getColumn (unsigned int {\i i}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARA}
|
|
{\bkmkend AAAAAAAARA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
An helper function that compute the column number from the linear index in the vector: \[ column = index \div columns \] \par
|
|
}{
|
|
References BaseGrid::getColumns().}\par
|
|
{
|
|
Referenced by GCell::getColumn().}\par
|
|
}
|
|
{\xe \v getXGrads\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getXGrads}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Axis} & getXGrads () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARB}
|
|
{\bkmkend AAAAAAAARB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The graduations on the X axis. \par
|
|
}}
|
|
{\xe \v getYGrads\:Katabatic::BaseGrid}
|
|
{\xe \v Katabatic::BaseGrid\:getYGrads}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Axis} & getYGrads () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARC}
|
|
{\bkmkend AAAAAAAARC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The graduations on the Y axis. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
BaseObserver Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v BaseObserver}
|
|
{\xe \v BaseObserver}
|
|
{\bkmkstart AAAAAAAARJ}
|
|
{\bkmkend AAAAAAAARJ}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. }}\par
|
|
Inheritance diagram for BaseObserver:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1BaseObserver__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b notify} (unsigned int flags)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This class is used as a non-template base class for the templatized {\b Observer} one. It is used to avoid propagating template to the whole {\b Observable} class. It only contains the {\b Observer::notify()} virtual method. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v notify\:Katabatic::BaseObserver}
|
|
{\xe \v Katabatic::BaseObserver\:notify}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void notify (unsigned int {\i flags}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARK}
|
|
{\bkmkend AAAAAAAARK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The method which will be called whenever a change occurs on the {\b Observable}. \par
|
|
}{
|
|
Referenced by Observable::notify().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
ChipTools Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v ChipTools}
|
|
{\xe \v ChipTools}
|
|
{\bkmkstart AAAAAAAARL}
|
|
{\bkmkend AAAAAAAARL}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Utilities for Chip Level Design. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b ChipTools} ({\b Cell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isChip} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Cell} * {\b getCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Instance} * {\b getCore} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getChipBb} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getLeftPadsBb} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getRightPadsBb} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getTopPadsBb} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Box} & {\b getBottomPadsBb} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const Torus & {\b getCorona} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b intersectVPads} (const {\b Box} &) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b intersectHPads} (const {\b Box} &) const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Utilities for Chip Level Design. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b ChipTools} class provides a small set of utilities to ease the managment of a complete chip following the Alliance top hierarchical structure. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v ChipTools\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:ChipTools}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b ChipTools} ({\b Cell} * {\i cell})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARM}
|
|
{\bkmkend AAAAAAAARM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a ChipTool for {\f2 cell} . \par
|
|
}{
|
|
References Cell::getAbutmentBox(), Entity::getBoundingBox(), DataBase::getDB(), Box::getHeight(), Net::getHorizontals(), Technology::getLayer(), Instance::getMasterCell(), Instance::getName(), Cell::getName(), Cell::getNet(), DataBase::getTechnology(), Box::getWidth(), Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), Box::inflate(), and ChipTools::isChip().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v isChip\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:isChip}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isChip () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARN}
|
|
{\bkmkend AAAAAAAARN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the Cell is truly a top level design. If not, this object is useless and does nothing. \par
|
|
}{
|
|
Referenced by ChipTools::ChipTools(), KatabaticEngine::createDetailedGrid(), and KatabaticEngine::isChip().}\par
|
|
}
|
|
{\xe \v getCell\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Cell} * getCell () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARO}
|
|
{\bkmkend AAAAAAAARO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The top-level design. \par
|
|
}}
|
|
{\xe \v getCore\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getCore}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Instance} * getCore () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARP}
|
|
{\bkmkend AAAAAAAARP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The instance of the core, that is, the only instance that is {\i not} a pad... \par
|
|
}}
|
|
{\xe \v getChipBb\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getChipBb}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getChipBb () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARQ}
|
|
{\bkmkend AAAAAAAARQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The chip complete bounding box, this *is* simply the Cell bounding box. \par
|
|
}}
|
|
{\xe \v getLeftPadsBb\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getLeftPadsBb}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getLeftPadsBb () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARR}
|
|
{\bkmkend AAAAAAAARR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bounding box enclosing all the pads on the left side of the chip.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: This box is computed from the chip bounding box and the pad height. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\xe \v getRightPadsBb\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getRightPadsBb}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getRightPadsBb () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARS}
|
|
{\bkmkend AAAAAAAARS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bounding box enclosing all the pads on the right side of the chip.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: This box is computed from the chip bounding box and the pad height. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\xe \v getTopPadsBb\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getTopPadsBb}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getTopPadsBb () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAART}
|
|
{\bkmkend AAAAAAAART}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bounding box enclosing all the pads on the top side of the chip.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: This box is computed from the chip bounding box and the pad height. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\xe \v getBottomPadsBb\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getBottomPadsBb}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Box} & getBottomPadsBb () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARU}
|
|
{\bkmkend AAAAAAAARU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bounding box enclosing all the pads on the bottom side of the chip.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: This box is computed from the chip bounding box and the pad height. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\xe \v getCorona\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:getCorona}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const Torus & getCorona () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARV}
|
|
{\bkmkend AAAAAAAARV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The torus (in term of manhanttan distance) enclosed between the pad area and the core area. \par
|
|
}}
|
|
{\xe \v intersectVPads\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:intersectVPads}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool intersectVPads (const {\b Box} & {\i box}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARW}
|
|
{\bkmkend AAAAAAAARW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if {\f2 box} intersect either the left or right pad box. \par
|
|
}{
|
|
References Box::intersect().}\par
|
|
}
|
|
{\xe \v intersectHPads\:Katabatic::ChipTools}
|
|
{\xe \v Katabatic::ChipTools\:intersectHPads}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool intersectHPads (const {\b Box} & {\i box}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAARX}
|
|
{\bkmkend AAAAAAAARX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if {\f2 box} intersect either the top or bottom pad box. \par
|
|
}{
|
|
References Box::intersect().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
ChipTools.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
ChipTools.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
ChipTools.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell::CompareByDensity Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCell::CompareByDensity}
|
|
{\xe \v GCell::CompareByDensity}
|
|
{\bkmkstart AAAAAAAAUQ}
|
|
{\bkmkend AAAAAAAAUQ}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Density Comparison Functor. }}\par
|
|
{
|
|
Inherits binary_function< GCell *, GCell *, bool >.}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b CompareByDensity} (unsigned int depth)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Density Comparison Functor. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A comparison functor for {\b GCell}, compare by density on layer {\f2 depth} . \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v CompareByDensity\:Katabatic::GCell::CompareByDensity}
|
|
{\xe \v Katabatic::GCell::CompareByDensity\:CompareByDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b CompareByDensity} (unsigned int {\i depth})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUR}
|
|
{\bkmkend AAAAAAAAUR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build a density comparator for GCells on layer {\f2 depth} . \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell::CompareByIndex Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCell::CompareByIndex}
|
|
{\xe \v GCell::CompareByIndex}
|
|
{\bkmkstart AAAAAAAAUS}
|
|
{\bkmkend AAAAAAAAUS}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Index Comparison Functor. }}\par
|
|
{
|
|
Inherits binary_function< const GCell *, const GCell *, bool >.}\par
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Index Comparison Functor. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A comparison functor for {\b GCell}, compare by {\f2 index} (the linear index in the {\b GCellGrid} vector. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following file:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.h\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCell}
|
|
{\xe \v GCell}
|
|
{\bkmkstart AAAAAAAARY}
|
|
{\bkmkend AAAAAAAARY}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Routing Global Cell. }}\par
|
|
{
|
|
Inherits ExtensionGo.}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Classes\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b CompareByDensity}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Density Comparison Functor. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b CompareByIndex}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Index Comparison Functor. }\par}}}
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
class {\b Key}\par
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Key} - Density Cache. }\par}}}
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Types\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef set< {\b GCell} *, {\b CompareByIndex} > {\b SetIndex}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual const {\b Name} & {\b getName} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSaturated} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isSaturated} (unsigned int depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isValid} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isAboveDensity} (float threshold) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b hasFreeTrack} (size_t depth, float reserve) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCellGrid} * {\b getGCellGrid} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getDepth} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getIndex} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getRow} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getColumn} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getLeft} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getRight} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getUp} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getDown} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b translate} (const {\b DbU::Unit} &, const {\b DbU::Unit} &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual {\b Box} {\b getBoundingBox} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getX} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getY} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getXMax} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getYMax} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Interval} {\b getSide} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getHCapacity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getVCapacity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getDensity} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getCDensity} (unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getWDensity} (unsigned int depth, unsigned int flags=0) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getBlockage} (unsigned int depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getFragmentation} (unsigned int depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getFeedthroughs} (unsigned int depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getGlobalsCount} (unsigned int depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const vector< {\b AutoSegment} * > & {\b getHSegments} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const vector< {\b AutoSegment} * > & {\b getVSegments} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const vector< {\b AutoContact} * > & {\b getContacts} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getHStartSegments} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getVStartSegments} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getHStopSegments} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getVStopSegments} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getStartSegments} (unsigned int direction)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegments} {\b getStopSegments} (unsigned int direction)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getRoutingPads} (set< {\b RoutingPad} *> &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Key} & {\b getKey} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b checkDensity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b checkEdgeSaturation} (size_t hreserved, size_t vreserved) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addBlockage} (unsigned int depth, {\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addHSegment} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addVSegment} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addContact} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b removeVSegment} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b removeHSegment} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b removeContact} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b updateContacts} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b updateDensity} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b updateKey} (unsigned int depth)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b rpDesaturate} (set< {\b Net} *> &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b stepDesaturate} (unsigned int depth, set< {\b Net} *> &, {\b AutoSegment} *&moved, unsigned int flags=0)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b stepNetDesaturate} (unsigned int depth, set< {\b Net} *> &globalNets, {\b SetIndex} &invalidateds)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b getAllocateds} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b DbU::Unit} {\b getTopRightShrink} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const {\b Name} & {\b getStaticName} ()\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Routing Global Cell. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{\bkmkstart AAAAAAAARZ}
|
|
{\bkmkend AAAAAAAARZ}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Description
|
|
\par}
|
|
{\tc\tcl2 \v GCell Description}
|
|
Please note that there are two kind of Global Cells (or {\b GCell} for short):{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
The {\b GCell} used by the global router Knik.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
The {\b GCell} used by the detailed router ({\b Katabatic} & Kite). Although the information they hold is obviously related, they are two separate kind of objects.\par}
|
|
The area of the design to be routed is divided in a regular grid of rectangular area, the {\b GCellGrid}. Each rectangular area is a {\b GCell}.\par
|
|
The {\b GCell} contains the following informations:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
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 {\b GCell}.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
The AutoSegments that go straight {\i through} it (or {\i over} it). Horizontal & Vertical segments are stored in two separeted list. Those two lists are sorted by layer depth (the deepest layers first).\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
A lot of synthetic information about the density of tracks used in the {\b GCell}.\par}
|
|
AutoContacts are affected to GCells, the area of the {\b GCell} is the one into which the {\b AutoContact} is allowed to be placed. It is this that way that the respect of the global routing choosen by Knik is enforced. See the {\b AutoContact} constraint box.\par
|
|
When tracks are aligned with the {\b GCell} boundaries they one exactly on the boundary can belong to the {\b GCell} on either side of the boundary. But we want a clear and mutually exclusive ownership of each {\b GCell} area. So, we choose that one {\b GCell} do not own the topmost and rightmost track. And to implement it, we shrink top and right coordinates by the amount of {\b GCell::getTopRightShrink()}, which must be less than the track spacing.\par
|
|
{\bkmkstart AAAAAAAASA}
|
|
{\bkmkend AAAAAAAASA}
|
|
{{\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Saturation & Density Computation
|
|
\par}
|
|
{\tc\tcl3 \v Saturation & Density Computation}
|
|
At any depth (i.e. layer), in the preferred routing direction, a {\b GCell} can pass a finite length of wire. For example on an horizontal preferred layer: \[ WL_{max} = width(GCell) \times Htracks(GCell) \] Then the density, is the ratio between $WL_{max}$ and the actually used wirelength: \[ Wdensity(depth) = \frac{WL_{used}(depth)}{WL_{max}(depth)} \] Normally, the ratio musn'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.\par
|
|
A Cell is considered as {\i saturated} if the overall density is above the saturation ratio given by {\b Session::getSaturateRatio()}.\par
|
|
Contact density is calculated as follow: \[ Cont_{density} = \frac{|Contacts|}{Htracks \times Vtracks \times 4} \] It is a ratio over the number of actual contacts in the {\b GCell} 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).\par
|
|
Should not be hardwired... {\i To be corrected in future versions.} \par}
|
|
{\bkmkstart AAAAAAAASB}
|
|
{\bkmkend AAAAAAAASB}
|
|
{{\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Feedthrough Computation
|
|
\par}
|
|
{\tc\tcl3 \v Feedthrough Computation}
|
|
The feedtrough value is an estimate is of how many complete tracks have been used on a given layer of the {\b GCell}. It varies between zero and the number of track on the {\b GCell} (complete saturation). As an estimate, it doesn't tell you the actual number of free track, but how many you {\i may expect} assuming the routing is reasonably well done.\par
|
|
Computation is done as follow: \par
|
|
\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
|
|
\clcbpat16\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx4374
|
|
\clcbpat16\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{Wire type\cell }{Estimated Cost \cell }
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\row }
|
|
\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx4374
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{Straight wire (feedthrough) \cell }{{\b 1.0} \cell }
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\row }
|
|
\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx4374
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{Beginning or ending global wire \cell }{{\b 0.5} \cell }
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\row }
|
|
\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx4374
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{Local wire. \cell }{{\b 1/3} \cell }
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\row }
|
|
\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx4374
|
|
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr \brdrs\brdrw10 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{Blockage wire \cell }{The exact percentage of the track \cell }
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\row }
|
|
\pard\plain
|
|
\par
|
|
\par}
|
|
{\bkmkstart AAAAAAAASC}
|
|
{\bkmkend AAAAAAAASC}
|
|
{{\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Track Computation
|
|
\par}
|
|
{\tc\tcl3 \v Track Computation}
|
|
The number of track that can go through a {\b GCell} in the horizontal direction is computed as follow: \[ Htracks = \frac{heigth(GCell)}{Vpitch} + 1 \]\par
|
|
The pitch is assumed to be the same for every layer and is hardwired to 5.0 lambda.\par
|
|
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... {\i To be corrected in future versions} .\par}
|
|
\par}
|
|
{\bkmkstart AAAAAAAASD}
|
|
{\bkmkend AAAAAAAASD}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Lazy Evaluation
|
|
\par}
|
|
{\tc\tcl2 \v GCell Lazy Evaluation}
|
|
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 {\i and} the lazy evaluation {\i not} explicitly disabled (flag NoUpdate).\par}
|
|
{\bkmkstart AAAAAAAASE}
|
|
{\bkmkend AAAAAAAASE}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Sorting Key
|
|
\par}
|
|
{\tc\tcl2 \v GCell Sorting Key}
|
|
In order to perform a lexicographical sort on the tuple $(density(depth),id)$ of a {\b GCell}, a specific slave object {\b GCell::Key} is introduced. It is the density on one specific depth, not the average density.\par}
|
|
{\bkmkstart AAAAAAAASF}
|
|
{\bkmkend AAAAAAAASF}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Desaturation / Layer Assignment
|
|
\par}
|
|
{\tc\tcl2 \v GCell Desaturation / Layer Assignment}
|
|
In addition to it's geometrical and density functionality, the {\b GCell} provides {\i desaturation} capabilities. Desaturation is the operation of moving up feedthough {\b AutoSegment} 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.\par
|
|
Two strategies are avalaibles, moving one global {\b AutoSegment} at a time with {\b GCell::stepDesaturate()} or, when one {\b AutoSegment} is moved up, move up the whole net trunk with {\b GCell::stepNetDesaturate()}.\par}
|
|
{\bkmkstart AAAAAAAASG}
|
|
{\bkmkend AAAAAAAASG}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell Implantation
|
|
\par}
|
|
{\tc\tcl2 \v GCell Implantation}
|
|
{\b GCell} derives from Hurricane::ExtensionGo to allow a graphical rendering of the routing density. \par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Typedef Documentation\par
|
|
\pard\plain
|
|
{\xe \v SetIndex\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:SetIndex}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
typedef set< {\b GCell} *, {\b CompareByIndex} > {\b SetIndex}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASH}
|
|
{\bkmkend AAAAAAAASH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Shorthand for a set of {\b GCell} sorted on their index. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getAllocateds\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getAllocateds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getAllocateds (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASI}
|
|
{\bkmkend AAAAAAAASI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of allocated GCells. \par
|
|
}}
|
|
{\xe \v getTopRightShrink\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getTopRightShrink}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getTopRightShrink (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASJ}
|
|
{\bkmkend AAAAAAAASJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The amount of shrink on the top and right boundaries. \par
|
|
}}
|
|
{\xe \v getStaticName\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getStaticName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getStaticName (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASK}
|
|
{\bkmkend AAAAAAAASK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The name of the Go slice: {\f2 "Katabatic::GCell"} .\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Hurricane::ExtensionGo \par
|
|
}}}
|
|
{\xe \v getName\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getName () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASL}
|
|
{\bkmkend AAAAAAAASL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The name of the Go slice: {\f2 "Katabatic::GCell"} .\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Hurricane::ExtensionGo \par
|
|
}}{
|
|
Referenced by GCell::checkDensity().}\par
|
|
}
|
|
{\xe \v isSaturated\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:isSaturated}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSaturated () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASM}
|
|
{\bkmkend AAAAAAAASM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if at least one layer exceed a saturation of {\f2 1.0} (more wirelength that it can hold). \par
|
|
}{
|
|
Referenced by GCell::checkDensity(), GCell::stepDesaturate(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v isSaturated\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:isSaturated}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isSaturated (unsigned int {\i depth}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASN}
|
|
{\bkmkend AAAAAAAASN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the saturation ratio of layer {\f2 depth} is over the threshold defined for the GCells. \par
|
|
}{
|
|
References GCell::getDensity(), and Session::getSaturateRatio().}\par
|
|
}
|
|
{\xe \v isValid\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:isValid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isValid () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASO}
|
|
{\bkmkend AAAAAAAASO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if all the AutoContact/AutoSegment of the {\b GCell} are valids. \par
|
|
}{
|
|
Referenced by GCell::checkDensity(), GCell::getCDensity(), GCell::getDensity(), GCell::getFeedthroughs(), GCell::getFragmentation(), GCell::getGlobalsCount(), GCell::getWDensity(), GCell::hasFreeTrack(), GCell::isAboveDensity(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v isAboveDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:isAboveDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isAboveDensity (float {\i threshold}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASP}
|
|
{\bkmkend AAAAAAAASP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the overall saturation ratio greater than {\f2 threshold} . \par
|
|
}{
|
|
References GCell::getDensity(), GCell::isValid(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v hasFreeTrack\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:hasFreeTrack}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool hasFreeTrack (size_t {\i depth}, float {\i reserve}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASQ}
|
|
{\bkmkend AAAAAAAASQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if there should be enough wire length to pass a wire completly trough this {\b GCell}. \par
|
|
}{
|
|
References GCell::getHCapacity(), GCell::getIndex(), RoutingGauge::getLayerDepth(), Layer::getName(), Session::getRoutingGauge(), RoutingGauge::getRoutingLayer(), GCell::getVCapacity(), GCell::isValid(), Katabatic::KbHorizontal, Katabatic::KbVertical, and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getGCellGrid\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getGCellGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCellGrid} * getGCellGrid () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASR}
|
|
{\bkmkend AAAAAAAASR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b Grid} of which {\b GCell} is part of. \par
|
|
}{
|
|
Referenced by GCell::checkEdgeSaturation(), GCell::getDensity(), GCell::getDown(), GCell::getLeft(), GCell::getRight(), GCell::getUp(), and GCell::stepNetDesaturate().}\par
|
|
}
|
|
{\xe \v getDepth\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getDepth}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getDepth () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASS}
|
|
{\bkmkend AAAAAAAASS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The depth (i.e. number of routing layers) of the {\b GCell}. \par
|
|
}}
|
|
{\xe \v getIndex\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getIndex}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getIndex () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAST}
|
|
{\bkmkend AAAAAAAAST}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The linear index of the {\b GCell} in the {\b GCellGrid} vector.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCellGrid} for the meaning of the index. \par
|
|
}}{
|
|
Referenced by AutoSegment::canMoveUp(), GCell::hasFreeTrack(), and GCell::stepDesaturate().}\par
|
|
}
|
|
{\xe \v getRow\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getRow}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getRow () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASU}
|
|
{\bkmkend AAAAAAAASU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The row of the {\b GCell} in the {\b GCellGrid}. \par
|
|
}{
|
|
References BaseGrid::getRow().}\par
|
|
{
|
|
Referenced by GCell::checkDensity(), and AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v getColumn\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getColumn}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getColumn () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASV}
|
|
{\bkmkend AAAAAAAASV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Column of the {\b GCell} in the {\b GCellGrid}. \par
|
|
}{
|
|
References BaseGrid::getColumn().}\par
|
|
{
|
|
Referenced by GCell::checkDensity(), and AutoSegment::computeOptimal().}\par
|
|
}
|
|
{\xe \v getLeft\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getLeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getLeft () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASW}
|
|
{\bkmkend AAAAAAAASW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The left neighbor of the {\b GCell} ({\f2 NULL} if it is the leftmost {\b GCell}). \par
|
|
}{
|
|
References GCell::getGCellGrid(), and Grid< GCellT >::getGCellLeft().}\par
|
|
{
|
|
Referenced by AutoVertical::canMoveULeft(), and AutoVertical::moveULeft().}\par
|
|
}
|
|
{\xe \v getRight\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getRight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getRight () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASX}
|
|
{\bkmkend AAAAAAAASX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The right neighbor of the {\b GCell} ({\f2 NULL} if it is the rightmost {\b GCell}). \par
|
|
}{
|
|
References GCell::getGCellGrid(), and Grid< GCellT >::getGCellRight().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoHorizontal::_postCreate(), AutoHorizontal::_preDestroy(), AutoHorizontal::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), GCell::checkEdgeSaturation(), AutoHorizontal::getGCells(), AutoSegment::makeDogleg(), AutoHorizontal::moveULeft(), AutoHorizontal::moveURight(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v getUp\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getUp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getUp () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASY}
|
|
{\bkmkend AAAAAAAASY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The top neighbor of the {\b GCell} ({\f2 NULL} if it is the topmost {\b GCell}). \par
|
|
}{
|
|
References GCell::getGCellGrid(), and Grid< GCellT >::getGCellUp().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg(), AutoVertical::_postCreate(), AutoVertical::_preDestroy(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), GCell::checkEdgeSaturation(), AutoVertical::getGCells(), AutoSegment::makeDogleg(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v getDown\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getDown}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getDown () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAASZ}
|
|
{\bkmkend AAAAAAAASZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bottom neighbor of the {\b GCell} ({\f2 NULL} if it is the bottommost {\b GCell}). \par
|
|
}{
|
|
References Grid< GCellT >::getGCellDown(), and GCell::getGCellGrid().}\par
|
|
{
|
|
Referenced by AutoHorizontal::canMoveULeft(), and AutoHorizontal::moveULeft().}\par
|
|
}
|
|
{\xe \v translate\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:translate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void translate (const {\b DbU::Unit} & , const {\b DbU::Unit} & ){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATA}
|
|
{\bkmkend AAAAAAAATA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Required to exists as a {\b Hurricane::Go} derived class. But must never be used... \par
|
|
}}
|
|
{\xe \v getBoundingBox\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getBoundingBox}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Box} getBoundingBox () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATB}
|
|
{\bkmkend AAAAAAAATB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The bounding box of the {\b GCell}, with the top right shrink applied. \par
|
|
}{
|
|
Referenced by AutoSegment::AutoSegment(), AutoSegment::computeOptimal(), and AutoContactTerminal::getNativeConstraintBox().}\par
|
|
}
|
|
{\xe \v getX\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getX}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getX () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATC}
|
|
{\bkmkend AAAAAAAATC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The lower left X coordinate of the {\b GCell} box. \par
|
|
}{
|
|
References Box::getXMin().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoHorizontal::_postCreate(), AutoHorizontal::_preDestroy(), AutoContact::getCBXMax(), AutoContact::getCBXMin(), AutoSegment::getOrigin(), AutoContact::setCBXMax(), and AutoContact::setCBXMin().}\par
|
|
}
|
|
{\xe \v getY\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getY}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getY () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATD}
|
|
{\bkmkend AAAAAAAATD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The lower left Y coordinate of the {\b GCell} box. \par
|
|
}{
|
|
References Box::getYMin().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg(), AutoVertical::_postCreate(), AutoVertical::_preDestroy(), AutoContact::getCBYMax(), AutoContact::getCBYMin(), AutoSegment::getOrigin(), AutoContact::setCBYMax(), and AutoContact::setCBYMin().}\par
|
|
}
|
|
{\xe \v getXMax\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getXMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getXMax () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATE}
|
|
{\bkmkend AAAAAAAATE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The upper right X coordinate of the {\b GCell} box (top right shrink applied). \par
|
|
}{
|
|
References Box::getXMax().}\par
|
|
{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoSegment::getExtremity(), and AutoContact::setCBXMax().}\par
|
|
}
|
|
{\xe \v getYMax\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getYMax}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getYMax () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATF}
|
|
{\bkmkend AAAAAAAATF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The upper right Y coordinate of the {\b GCell} box (top right shrink applied). \par
|
|
}{
|
|
References Box::getYMax().}\par
|
|
{
|
|
Referenced by AutoVertical::_makeDogleg(), AutoSegment::getExtremity(), and AutoContact::setCBYMax().}\par
|
|
}
|
|
{\xe \v getSide\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getSide}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getSide (unsigned int {\i direction}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATG}
|
|
{\bkmkend AAAAAAAATG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The interval corresponding to the side position of the {\b GCell} box, in {\f2 direction} . \par
|
|
}{
|
|
References Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by AutoHorizontal::_canSlacken(), AutoVertical::_canSlacken(), AutoSegment::makeDogleg(), AutoHorizontal::moveULeft(), AutoVertical::moveULeft(), AutoHorizontal::moveURight(), AutoVertical::moveURight(), and AutoSegment::toConstraintAxis().}\par
|
|
}
|
|
{\xe \v getHCapacity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getHCapacity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getHCapacity () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATH}
|
|
{\bkmkend AAAAAAAATH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The number of track that can go through the {\b GCell} in the horizontal direction. For a detailed explanation of the computation see {\b Track Computation}. \par
|
|
}}{
|
|
References Box::getHeight().}\par
|
|
{
|
|
Referenced by GCell::hasFreeTrack(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getVCapacity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getVCapacity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getVCapacity () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATI}
|
|
{\bkmkend AAAAAAAATI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The number of track that can go through the {\b GCell} in the vertical direction. For a detailed explanation of the computation see {\b Track Computation}. \par
|
|
}}{
|
|
References Box::getWidth().}\par
|
|
{
|
|
Referenced by GCell::hasFreeTrack(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getDensity (unsigned int {\i flags} = {\f2 0}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATJ}
|
|
{\bkmkend AAAAAAAATJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The average density of the {\b GCell}, for all the depths.\par
|
|
{\b Saturation & Density Computation}, {\b GCell Lazy Evaluation}. \par
|
|
}{
|
|
References GCellGrid::AverageHDensity, GCellGrid::AverageHVDensity, GCellGrid::AverageVDensity, GCellGrid::getDensityMode(), GCell::getGCellGrid(), GCell::isValid(), GCellGrid::MaxDensity, GCellGrid::MaxHDensity, GCellGrid::MaxHVDensity, GCellGrid::MaxVDensity, and GCell::updateDensity().}\par
|
|
{
|
|
Referenced by GCell::isAboveDensity(), and GCell::isSaturated().}\par
|
|
}
|
|
{\xe \v getCDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getCDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getCDensity (unsigned int {\i flags} = {\f2 0}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATK}
|
|
{\bkmkend AAAAAAAATK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The density of contacts.\par
|
|
{\b Saturation & Density Computation}, {\b GCell Lazy Evaluation}. \par
|
|
}{
|
|
References GCell::isValid(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getWDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getWDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getWDensity (unsigned int {\i depth}, unsigned int {\i flags} = {\f2 0}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATL}
|
|
{\bkmkend AAAAAAAATL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The density of wires at {\f2 depth} .\par
|
|
{\b Saturation & Density Computation}, {\b GCell Lazy Evaluation}. \par
|
|
}{
|
|
References GCell::isValid(), and GCell::updateDensity().}\par
|
|
{
|
|
Referenced by AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoHorizontal::canMoveURight(), and AutoVertical::canMoveURight().}\par
|
|
}
|
|
{\xe \v getBlockage\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getBlockage}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getBlockage (unsigned int {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATM}
|
|
{\bkmkend AAAAAAAATM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The total length of blockage wire on layer at {\f2 depth} . \par
|
|
}}
|
|
{\xe \v getFragmentation\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getFragmentation}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getFragmentation (unsigned int {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATN}
|
|
{\bkmkend AAAAAAAATN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The longest free fragment size on layer {\f2 depth} (in percent). \par
|
|
}{
|
|
References GCell::isValid(), and GCell::updateDensity().}\par
|
|
{
|
|
Referenced by AutoSegment::canMoveUp().}\par
|
|
}
|
|
{\xe \v getFeedthroughs\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getFeedthroughs}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getFeedthroughs (unsigned int {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATO}
|
|
{\bkmkend AAAAAAAATO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The estimate number of {\i occupied} tracks on layer {\f2 depth} .\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Feedthrough Computation} \par
|
|
}}{
|
|
References GCell::isValid(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getGlobalsCount\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getGlobalsCount}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getGlobalsCount (unsigned int {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATP}
|
|
{\bkmkend AAAAAAAATP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of global wires that go completly through the {\b GCell} at layer {\f2 depth} . This do not includes the global wires that begins or ends in the {\b GCell}. \par
|
|
}{
|
|
References GCell::isValid(), and GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v getHSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getHSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoSegment} * > & getHSegments () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATQ}
|
|
{\bkmkend AAAAAAAATQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector of all horizontal AutoSegments that completly goes through the {\b GCell}. \par
|
|
}}}
|
|
{\xe \v getVSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getVSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoSegment} * > & getVSegments () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATR}
|
|
{\bkmkend AAAAAAAATR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector of all vertical AutoSegments that completly goes through the {\b GCell}. \par
|
|
}}}
|
|
{\xe \v getContacts\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getContacts}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoContact} * > & getContacts () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATS}
|
|
{\bkmkend AAAAAAAATS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The vector of all AutoContacts owned by the {\b GCell}. \par
|
|
}}}
|
|
{\xe \v getHStartSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getHStartSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getHStartSegments ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATT}
|
|
{\bkmkend AAAAAAAATT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the horizontal AutoSegments that starts from this {\b GCell}. \par
|
|
}}{
|
|
References Katabatic::KbHorizontal, and Katabatic::KbSource.}\par
|
|
{
|
|
Referenced by GCell::getStartSegments().}\par
|
|
}
|
|
{\xe \v getVStartSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getVStartSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getVStartSegments ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATU}
|
|
{\bkmkend AAAAAAAATU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the vertical AutoSegments that starts from this {\b GCell}. \par
|
|
}}{
|
|
References Katabatic::KbSource, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCell::getStartSegments().}\par
|
|
}
|
|
{\xe \v getHStopSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getHStopSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getHStopSegments ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATV}
|
|
{\bkmkend AAAAAAAATV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the horizontal AutoSegments that stops in this {\b GCell}. \par
|
|
}}{
|
|
References Katabatic::KbHorizontal, and Katabatic::KbTarget.}\par
|
|
{
|
|
Referenced by GCell::getStopSegments().}\par
|
|
}
|
|
{\xe \v getVStopSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getVStopSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getVStopSegments ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATW}
|
|
{\bkmkend AAAAAAAATW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the vertical AutoSegments that stops in this {\b GCell}. \par
|
|
}}{
|
|
References Katabatic::KbTarget, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCell::getStopSegments().}\par
|
|
}
|
|
{\xe \v getStartSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getStartSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getStartSegments (unsigned int {\i direction}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATX}
|
|
{\bkmkend AAAAAAAATX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the horizontal or vertical AutoSegments that starts from this {\b GCell} according to {\f2 direction} . \par
|
|
}}{
|
|
References GCell::getHStartSegments(), GCell::getVStartSegments(), and Katabatic::KbHorizontal.}\par
|
|
}
|
|
{\xe \v getStopSegments\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getStopSegments}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegments} getStopSegments (unsigned int {\i direction}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATY}
|
|
{\bkmkend AAAAAAAATY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid A Collection of the horizontal or vertical AutoSegments that stops in this {\b GCell} according to {\f2 direction} . \par
|
|
}}{
|
|
References GCell::getHStopSegments(), GCell::getVStopSegments(), and Katabatic::KbHorizontal.}\par
|
|
}
|
|
{\xe \v getRoutingPads\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getRoutingPads}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getRoutingPads (set< {\b RoutingPad} *> & {\i rps})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAATZ}
|
|
{\bkmkend AAAAAAAATZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The size of the RoutingPad set.\par
|
|
}Fills the {\f2 rps} set with all the RoutingPads that appears in this {\b GCell}. (looks at all the anchors of the owned {\b AutoContact}) \par
|
|
}{
|
|
Referenced by GCell::rpDesaturate().}\par
|
|
}
|
|
{\xe \v getKey\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:getKey}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Key} & getKey () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUA}
|
|
{\bkmkend AAAAAAAAUA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid The sorting key of the {\b GCell}.\par
|
|
}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCell Sorting Key} \par
|
|
}}}
|
|
{\xe \v checkDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:checkDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t checkDensity () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUB}
|
|
{\bkmkend AAAAAAAAUB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\f2 1} if the {\b GCell} is saturated, 0 otherwise.\par
|
|
}Check, if the {\b GCell} is saturated, layer by layer. Issue a warning if that is the case. \par
|
|
}{
|
|
References Session::doWarnGCellOverload(), GCell::getColumn(), GCell::getName(), Session::getRoutingGauge(), GCell::getRow(), Session::isInDemoMode(), GCell::isSaturated(), GCell::isValid(), and GCell::updateDensity().}\par
|
|
{
|
|
Referenced by GCell::updateDensity().}\par
|
|
}
|
|
{\xe \v checkEdgeSaturation\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:checkEdgeSaturation}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool checkEdgeSaturation (size_t {\i hreserved}, size_t {\i vreserved}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUC}
|
|
{\bkmkend AAAAAAAAUC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b true} if the Up/Right edge is over the {\f2 threshold} .\par
|
|
}Check if the number of AutoSegments crossing the Up & Right edges of the {\b GCell} exceed {\f2 threshold} . The {\f2 thresold} must be expressed as a percentage of the full capacity of the edges. The overload is computed as a whole and not depth by depth. \par
|
|
}{
|
|
References GCell::getGCellGrid(), GCellGrid::getHEdgeCapacity(), GCell::getRight(), GCell::getUp(), GCellGrid::getVEdgeCapacity(), AutoSegment::isLocal(), and Session::lookup().}\par
|
|
}
|
|
{\xe \v addBlockage\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:addBlockage}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addBlockage (unsigned int {\i depth}, {\b DbU::Unit} {\i length})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUD}
|
|
{\bkmkend AAAAAAAAUD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 length} of wire blockage to layer {\f2 depth} . \par
|
|
}{
|
|
References DbU::getValueString().}\par
|
|
}
|
|
{\xe \v addHSegment\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:addHSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addHSegment ({\b AutoSegment} * {\i segment}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUE}
|
|
{\bkmkend AAAAAAAAUE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 segment} to the list of horizontal feedthroughs. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_postCreate(), AutoVertical::moveULeft(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v addVSegment\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:addVSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addVSegment ({\b AutoSegment} * {\i segment}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUF}
|
|
{\bkmkend AAAAAAAAUF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 segment} to the list of vertical feedthroughs. \par
|
|
}{
|
|
Referenced by AutoVertical::_postCreate(), AutoHorizontal::moveULeft(), and AutoHorizontal::moveURight().}\par
|
|
}
|
|
{\xe \v addContact\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:addContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addContact ({\b AutoContact} * {\i contact}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUG}
|
|
{\bkmkend AAAAAAAAUG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 contact} to the list of contacts owned by this {\b GCell}. \par
|
|
}{
|
|
Referenced by AutoContact::setGCell().}\par
|
|
}
|
|
{\xe \v removeVSegment\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:removeVSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void removeVSegment ({\b AutoSegment} * {\i segment})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUH}
|
|
{\bkmkend AAAAAAAAUH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes {\f2 segment} to the list of vertical feedthroughs. \par
|
|
}{
|
|
Referenced by AutoVertical::_makeDogleg(), AutoVertical::_preDestroy(), AutoHorizontal::moveULeft(), and AutoHorizontal::moveURight().}\par
|
|
}
|
|
{\xe \v removeHSegment\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:removeHSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void removeHSegment ({\b AutoSegment} * {\i segment})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUI}
|
|
{\bkmkend AAAAAAAAUI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes {\f2 segment} to the list of horizontal feedthroughs. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoHorizontal::_preDestroy(), AutoVertical::moveULeft(), and AutoVertical::moveURight().}\par
|
|
}
|
|
{\xe \v removeContact\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:removeContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void removeContact ({\b AutoContact} * {\i contact})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUJ}
|
|
{\bkmkend AAAAAAAAUJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes {\f2 contact} to the list of contacts owned by this {\b GCell}. \par
|
|
}{
|
|
References AutoContact::base().}\par
|
|
}
|
|
{\xe \v updateContacts\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:updateContacts}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateContacts ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUK}
|
|
{\bkmkend AAAAAAAAUK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Force a geometry update on all the {\b AutoContact} of the {\b GCell}. \par
|
|
}}
|
|
{\xe \v updateDensity\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:updateDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t updateDensity ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUL}
|
|
{\bkmkend AAAAAAAAUL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the {\b GCell} is saturated.\par
|
|
Update the various densities of the {\b GCell}. No actual computation is performed if the {\b GCell} is {\i not} invalidated. \par
|
|
}{
|
|
References GCell::checkDensity(), GCell::getHCapacity(), Box::getHeight(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), GCell::getVCapacity(), Box::getWidth(), Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), GCell::isSaturated(), GCell::isValid(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
{
|
|
Referenced by GCell::checkDensity(), GCell::getCDensity(), GCell::getDensity(), GCell::getFeedthroughs(), GCell::getFragmentation(), GCell::getGlobalsCount(), GCell::getWDensity(), GCell::hasFreeTrack(), GCell::isAboveDensity(), GCell::stepDesaturate(), and GCell::stepNetDesaturate().}\par
|
|
}
|
|
{\xe \v updateKey\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:updateKey}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateKey (unsigned int {\i depth}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUM}
|
|
{\bkmkend AAAAAAAAUM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Update the {\b GCell} key with the new density at layer {\f2 depth} .\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCell Sorting Key}. \par
|
|
}}{
|
|
References GCell::Key::update().}\par
|
|
}
|
|
{\xe \v rpDesaturate\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:rpDesaturate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool rpDesaturate (set< {\b Net} *> & {\i nets})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUN}
|
|
{\bkmkend AAAAAAAAUN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
If the number of RoutingPad in the first routing layer exceed the {\b Session::getSaturateRp()} threshold, force a desaturation of layer {\f2 depth} 1 until it is below 0.5.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCell Desaturation / Layer Assignment} \par
|
|
}}{
|
|
References Session::getRoutingLayer(), GCell::getRoutingPads(), Session::getSaturateRp(), Katabatic::KbForceMove, and GCell::stepDesaturate().}\par
|
|
}
|
|
{\xe \v stepDesaturate\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:stepDesaturate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool stepDesaturate (unsigned int {\i depth}, set< {\b Net} *> & {\i globalNets}, {\b AutoSegment} *& {\i moved}, unsigned int {\i flags} = {\f2 0})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUO}
|
|
{\bkmkend AAAAAAAAUO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i depth} \cell }{The depth to desaturate. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i globalNets} \cell }{The set of Nets of which at least one segment has been moved up. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i moved} \cell }{The moved up {\b AutoSegment}. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{If KbForceMove is set, force one {\b AutoSegment} to move up, event if the {\b GCell} is not saturated in the relevant depth.\cell }
|
|
{\row }
|
|
}
|
|
{\b Returns:} {\b true} if an {\b AutoSegment} has actually been moved up.\par
|
|
Perform the atomic desaturation, that is move up one {\b AutoSegment} from layer {\f2 depth} to layer {\f2 depth+2} , 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 {\f2 globalNets} set. If the {\b GCell} is not saturated on layer {\f2 depth} , nothing is done. If the {\f2 forced} flag is set, one global {\b AutoSegment} is moved up regardless of the saturation status.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCell Desaturation / Layer Assignment} \par
|
|
}}{
|
|
References GCell::getIndex(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), GCell::isSaturated(), Katabatic::KbForceMove, Katabatic::KbHorizontal, Katabatic::KbVertical, and GCell::updateDensity().}\par
|
|
{
|
|
Referenced by GCell::rpDesaturate().}\par
|
|
}
|
|
{\xe \v stepNetDesaturate\:Katabatic::GCell}
|
|
{\xe \v Katabatic::GCell\:stepNetDesaturate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool stepNetDesaturate (unsigned int {\i depth}, set< {\b Net} *> & {\i globalNets}, {\b GCell::SetIndex} & {\i invalidateds})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUP}
|
|
{\bkmkend AAAAAAAAUP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i depth} \cell }{The depth to desaturate. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i globalNets} \cell }{The set of Nets of which at least one segment has been moved up. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i invalidateds} \cell }{The set of {\b GCell} ids that have been invalidateds.\cell }
|
|
{\row }
|
|
}
|
|
{\b Returns:} {\b true} if a Net has been moved up.\par
|
|
Perform a desaturation by whole Net trunk. Select the longest feedthrough {\b AutoSegment} in layer {\f2 depth} , then attempt to move up the whole Net (all it's global AutoSegments are moved up).\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b GCell Desaturation / Layer Assignment} \par
|
|
}}{
|
|
References GCell::getGCellGrid(), RoutingGauge::getLayerDepth(), Session::getRoutingGauge(), Katabatic::KbHorizontal, Katabatic::KbVertical, and GCell::updateDensity().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCellDensitySet Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCellDensitySet}
|
|
{\xe \v GCellDensitySet}
|
|
{\bkmkstart AAAAAAAAUY}
|
|
{\bkmkend AAAAAAAAUY}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Set, sorted by density. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCellDensitySet} (unsigned int depth)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCellDensitySet} (unsigned int depth, const std::vector< {\b GCell} *> &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b ~GCellDensitySet} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b empty} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b size} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const std::set< {\b GCell} *, GCell::CompareByKey > & {\b getGCells} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b insert} ({\b GCell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b erase} ({\b GCell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b unqueue} ({\b GCell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b requeue} ()\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} Set, sorted by density. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
A small container helper to manage a set of {\b GCell} sorted by density on a specific layer {\f2 depth} .\par
|
|
The helper is implemented in term of a set. Once inserted in a set an element must not have is sorting key changed. But {\b GCell} density may change due to {\b AutoSegment} modifications during the lifetime of the set. To circumvent this problem, the {\b GCell} provide a key attribute to be used specifically with {\b GCellDensitySet}. This key act as a cached copy of the {\b GCell} density which is updated {\i only} by a call to {\b GCell::updateKey()} (and {\i not} {\b GCell::updateDensity()}). {\b GCell} which density have changed and key has to be updated must be signaled to set with the GCellDensityQueue::unqueue() method. When we want to update the sorting of the set on the new densities, we call {\b GCellDensitySet::requeue()} which, for each invalidated {\b GCell} do:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Remove the {\b GCell} from the set.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Update the key (call {\b GCell::updateKey()}).\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Reinsert the {\b GCell} in the set (thus with the updated key).\par}
|
|
Typical usage: {
|
|
\par
|
|
\pard\plain \s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid GCellDensitySet gcells ( 2, *(getGCellGrid()->getGCellVector()) );\par
|
|
\par
|
|
while ( true ) \{\par
|
|
bool optimized = false;\par
|
|
\par
|
|
std::set<GCell*,GCell::CompareByKey>::const_iterator igcell = gcells.getGCells().begin();\par
|
|
for ( ; igcell != gcells.getGCells().end() ; ++igcell ) \{\par
|
|
if ( doSomeOptimization(*igcell) ) \{\par
|
|
optimized = true;\par
|
|
gcells.unqueue( *igcell );\par
|
|
\}\par
|
|
\}\par
|
|
\par
|
|
if (not optimized) break;\par
|
|
\par
|
|
gcells.requeue();\par
|
|
\}\par
|
|
}
|
|
\par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v GCellDensitySet\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:GCellDensitySet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCellDensitySet} (unsigned int {\i depth})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUZ}
|
|
{\bkmkend AAAAAAAAUZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a new empty {\b GCellDensitySet}, sorting on density of layer {\f2 depth} . \par
|
|
}}
|
|
{\xe \v GCellDensitySet\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:GCellDensitySet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCellDensitySet} (unsigned int {\i depth}, const std::vector< {\b GCell} *> & {\i gcells})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVA}
|
|
{\bkmkend AAAAAAAAVA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a new empty {\b GCellDensitySet}, sorting on density of layer {\f2 depth} . Load the queue with the GCells supplied in the {\f2 gcells} vector. \par
|
|
}{
|
|
References GCellDensitySet::requeue().}\par
|
|
}
|
|
{\xe \v ~GCellDensitySet\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:~GCellDensitySet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
~{\b GCellDensitySet} ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVB}
|
|
{\bkmkend AAAAAAAAVB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Delete a {\b GCellDensitySet}, if the queue is not empty, issue a warning. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v empty\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:empty}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool empty () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVC}
|
|
{\bkmkend AAAAAAAAVC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the queue is empty. \par
|
|
}}
|
|
{\xe \v size\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:size}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t size () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVD}
|
|
{\bkmkend AAAAAAAAVD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the numbers of elements in the queue. \par
|
|
}}
|
|
{\xe \v getGCells\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:getGCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const std::set< {\b GCell} *, GCell::CompareByKey > & getGCells () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVE}
|
|
{\bkmkend AAAAAAAAVE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} the list of GCells currently in the queue. \par
|
|
}}
|
|
{\xe \v insert\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:insert}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t insert ({\b GCell} * {\i gcell}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVF}
|
|
{\bkmkend AAAAAAAAVF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Insert {\f2 gcell} into the set. \par
|
|
}}
|
|
{\xe \v erase\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:erase}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t erase ({\b GCell} * {\i gcell}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVG}
|
|
{\bkmkend AAAAAAAAVG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Remove {\f2 gcell} from the set. \par
|
|
}}
|
|
{\xe \v unqueue\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:unqueue}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void unqueue ({\b GCell} * {\i gcell}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVH}
|
|
{\bkmkend AAAAAAAAVH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Invalidate {\f2 gcell} . The density of {\f2 gcell} may have changed and needs to be reinserted into the queue. It is temporarily set asides until the next call to {\b GCellDensitySet::requeue()}. \par
|
|
}}
|
|
{\xe \v requeue\:Katabatic::GCellDensitySet}
|
|
{\xe \v Katabatic::GCellDensitySet\:requeue}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void requeue ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVI}
|
|
{\bkmkend AAAAAAAAVI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Reinsert in the queue all the GCells that have been previously invalidated by a call to {\b GCellDensitySet::unqueue()}. This function calls {\b GCell::updateKey()} before reinserting the {\b GCell}. \par
|
|
}{
|
|
Referenced by GCellDensitySet::GCellDensitySet().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCellGrid Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCellGrid}
|
|
{\xe \v GCellGrid}
|
|
{\bkmkstart AAAAAAAAVJ}
|
|
{\bkmkend AAAAAAAAVJ}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Grid}. }}\par
|
|
Inheritance diagram for GCellGrid:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1GCellGrid__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Types\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
enum {\b DensityMode} \{ {\b AverageHVDensity} =1,
|
|
{\b AverageHDensity} =2,
|
|
{\b AverageVDensity} =3,
|
|
{\b MaxHVDensity} =4,
|
|
{\b MaxVDensity} =5,
|
|
{\b MaxHDensity} =6,
|
|
{\b MaxDensity} =7
|
|
\}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Cell} * {\b getCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b KatabaticEngine} * {\b getKatabatic} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getDensityMode} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getHEdgeCapacity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getVEdgeCapacity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Interval} {\b getUSide} (unsigned int) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b checkDensity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b updateDensity} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b updateContacts} (unsigned int flags={\b KbOpenSession})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setDensityMode} (unsigned int)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _postCreate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _preDestroy} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b GCellGrid} * {\b create} ({\b KatabaticEngine} *)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Grid}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b GCell} {\b Grid} of {\b Katabatic}. Although the base template class {\b Grid} support irregular grid, the {\b GCellGrid} is regular, following the Knik global router GCells. Only the topmost row and leftmost column may have different height or width to cope with the design real size.\par
|
|
Due to the regular nature of the grid, the horizontal & vertical edges capacities are all identical, and initialized from the {\b Katabatic} Configuration.\par
|
|
The grid is build from the Knik global routing, so obviously a KnikEngine must be attached to the Cell when building the {\b GCellGrid}. An error is thrown otherwise. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Enumeration Documentation\par
|
|
\pard\plain
|
|
{\xe \v DensityMode\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:DensityMode}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
enum {\b DensityMode}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVK}
|
|
{\bkmkend AAAAAAAAVK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Various ways of computing the overall density of a {\b GCell}. \par
|
|
}{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Enumerator:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{\xe \v AverageHVDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:AverageHVDensity}
|
|
{\qr AverageHVDensity{\bkmkstart AAAAAAAAVL}
|
|
{\bkmkend AAAAAAAAVL}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The average density all depths accounted. \par
|
|
}\cell }{\row }
|
|
{\xe \v AverageHDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:AverageHDensity}
|
|
{\qr AverageHDensity{\bkmkstart AAAAAAAAVM}
|
|
{\bkmkend AAAAAAAAVM}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The average density of horizontal layers. \par
|
|
}\cell }{\row }
|
|
{\xe \v AverageVDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:AverageVDensity}
|
|
{\qr AverageVDensity{\bkmkstart AAAAAAAAVN}
|
|
{\bkmkend AAAAAAAAVN}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The average density of horizontal layers. \par
|
|
}\cell }{\row }
|
|
{\xe \v MaxHVDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:MaxHVDensity}
|
|
{\qr MaxHVDensity{\bkmkstart AAAAAAAAVO}
|
|
{\bkmkend AAAAAAAAVO}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The maximum of the average horizontal & vertical densities taken as a whole. \par
|
|
}\cell }{\row }
|
|
{\xe \v MaxVDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:MaxVDensity}
|
|
{\qr MaxVDensity{\bkmkstart AAAAAAAAVP}
|
|
{\bkmkend AAAAAAAAVP}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The maximum of the average vertical densities taken depth by depth. \par
|
|
}\cell }{\row }
|
|
{\xe \v MaxHDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:MaxHDensity}
|
|
{\qr MaxHDensity{\bkmkstart AAAAAAAAVQ}
|
|
{\bkmkend AAAAAAAAVQ}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The maximum of the average horizontal densities taken depth by depth. \par
|
|
}\cell }{\row }
|
|
{\xe \v MaxDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:MaxDensity}
|
|
{\qr MaxDensity{\bkmkstart AAAAAAAAVR}
|
|
{\bkmkend AAAAAAAAVR}
|
|
\cell }{{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The maximum of the average horizontal & vertical densities taken depth by depth. \par
|
|
}\cell }{\row }
|
|
}
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getCell\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Cell} * getCell () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVS}
|
|
{\bkmkend AAAAAAAAVS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The associated Cell. \par
|
|
}{
|
|
Referenced by GCellGrid::_postCreate().}\par
|
|
}
|
|
{\xe \v getKatabatic\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getKatabatic}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b KatabaticEngine} * getKatabatic () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVT}
|
|
{\bkmkend AAAAAAAAVT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The associated {\b KatabaticEngine}. \par
|
|
}}
|
|
{\xe \v getDensityMode\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getDensityMode}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getDensityMode () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVU}
|
|
{\bkmkend AAAAAAAAVU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The computation mode of the {\b GCell} densities. \par
|
|
}{
|
|
Referenced by GCell::getDensity().}\par
|
|
}
|
|
{\xe \v getHEdgeCapacity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getHEdgeCapacity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getHEdgeCapacity () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVV}
|
|
{\bkmkend AAAAAAAAVV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The horizontal edge capacity. As the matrix is regular it is identical for all horizontal edges. \par
|
|
}{
|
|
Referenced by GCell::checkEdgeSaturation().}\par
|
|
}
|
|
{\xe \v getVEdgeCapacity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getVEdgeCapacity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getVEdgeCapacity () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVW}
|
|
{\bkmkend AAAAAAAAVW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The vertical edge capacity. As the matrix is regular it is identical for all vertical edges. \par
|
|
}{
|
|
Referenced by GCell::checkEdgeSaturation().}\par
|
|
}
|
|
{\xe \v getUSide\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:getUSide}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Interval} getUSide (unsigned int {\i direction}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVX}
|
|
{\bkmkend AAAAAAAAVX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The side of the whole grid in {\f2 direction} . \par
|
|
}{
|
|
References Box::getXMax(), Box::getXMin(), Box::getYMax(), Box::getYMin(), Katabatic::KbHorizontal, and Katabatic::KbVertical.}\par
|
|
}
|
|
{\xe \v checkDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:checkDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t checkDensity () const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVY}
|
|
{\bkmkend AAAAAAAAVY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of {\b GCell} saturateds.\par
|
|
Check all GCells for saturations. \par
|
|
}{
|
|
References Grid< GCell >::getGCells().}\par
|
|
}
|
|
{\xe \v updateDensity\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:updateDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t updateDensity ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAVZ}
|
|
{\bkmkend AAAAAAAAVZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of {\b GCell} saturateds.\par
|
|
Force a density update on all the GCells. \par
|
|
}{
|
|
References Grid< GCell >::getGCells().}\par
|
|
}
|
|
{\xe \v updateContacts\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:updateContacts}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void updateContacts (unsigned int {\i flags} = {\f2 {\b KbOpenSession}})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWA}
|
|
{\bkmkend AAAAAAAAWA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Force an update on all {\b AutoContact} on all the GCells. if {\f2 openSession} is {\b true} , enclose the update in a {\b Session}. \par
|
|
}{
|
|
References Session::close(), Grid< GCell >::getGCells(), Katabatic::KbOpenSession, and Session::open().}\par
|
|
{
|
|
Referenced by KatabaticEngine::refresh().}\par
|
|
}
|
|
{\xe \v setDensityMode\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:setDensityMode}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setDensityMode (unsigned int {\i mode}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWB}
|
|
{\bkmkend AAAAAAAAWB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Sets the density computation mode. \par
|
|
}}
|
|
{\xe \v _postCreate\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:_postCreate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _postCreate (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWC}
|
|
{\bkmkend AAAAAAAAWC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform the {\b GCell} & {\b GCell} vector allocation.{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Read the horizontal and vertical cut lines from Knik and translate them into {\b BaseGrid::Axis}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
From the {\b BaseGrid::Axis}, deduces the exact positions of the GCells and allocate them.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The {\b GCell} allocation is done in a "row by row" fashion consistent with {\b BaseGrid} implicit assumptions. \par}
|
|
}{
|
|
Reimplemented from {\b BaseGrid} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQR \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
{
|
|
References BaseGrid::Axis::addGraduation(), GCellGrid::getCell(), BaseGrid::getColumns(), BaseGrid::getRows(), BaseGrid::Axis::getSize(), and BaseGrid::Axis::sort().}\par
|
|
}
|
|
{\xe \v _preDestroy\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:_preDestroy}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void _preDestroy (){\f2 [protected]}, {\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWD}
|
|
{\bkmkend AAAAAAAAWD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The GCells are deleted at this point. \par
|
|
}{
|
|
Reimplemented from {\b BaseGrid} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQR \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par
|
|
}
|
|
{\xe \v create\:Katabatic::GCellGrid}
|
|
{\xe \v Katabatic::GCellGrid\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCellGrid} * create ({\b KatabaticEngine} * {\i ktbt}){\f2 [static]}, {\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWE}
|
|
{\bkmkend AAAAAAAAWE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
API-space contructor. \par
|
|
}{
|
|
References grid().}\par
|
|
{
|
|
Referenced by KatabaticEngine::createDetailedGrid().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCellGrid.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCellGrid.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCellGrid.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCellTopology Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCellTopology}
|
|
{\xe \v GCellTopology}
|
|
{\bkmkstart AAAAAAAABF}
|
|
{\bkmkend AAAAAAAABF}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring for a Net inside a GCell ({\b internal} ). }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_AutoContacts} ({\b GCell} *, {\b Component} *, {\b AutoContact} *&source, {\b AutoContact} *&target, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContact} * {\b doRp_Access} ({\b GCell} *, {\b Component} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContact} * {\b doRp_AccessPad} ({\b RoutingPad} *, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_StairCaseH} ({\b GCell} *, {\b Component} *rp1, {\b Component} *rp2)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b doRp_StairCaseV} ({\b GCell} *, {\b Component} *rp1, {\b Component} *rp2)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Private Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_1Pad} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_1M1} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_xM1} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM1_xM3} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_1M1_1M2} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM2} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_1G_1M3} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b _do_xG_xM3} ()\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Build the wiring for a Net inside a GCell ({\b internal} ). \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
As this class is called to initially construct the {\b Katabatic} wiring, it must build a {\b connex} wiring. That is without gaps in layer depth, because the topology restauration mechanism ({\b AutoContact::updateTopology()}) of the AutoContact cannot work until all AutoSegments are revalidated at least once. The topology restauration work by creating doglegs which in turn, call the canonization, which needs all the caches to be up to date. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following file:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
LoadGrByNet.cpp\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Grid< GCellT > Class Template Reference\par \pard\plain
|
|
{\tc\tcl2 \v Grid< GCellT >}
|
|
{\xe \v Grid< GCellT >}
|
|
{\bkmkstart AAAAAAAAWF}
|
|
{\bkmkend AAAAAAAAWF}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Template Class for Regular {\b Grid}. }}\par
|
|
Inheritance diagram for Grid< GCellT >:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1Grid__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCell} (unsigned int index) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCell} (const {\b Point} p) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCell} (const {\b Point} p1, const {\b Point} p2) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCellLeft} (const GCellT *gcell) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCellRight} (const GCellT *gcell) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCellUp} (const GCellT *gcell) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
GCellT * {\b getGCellDown} (const GCellT *gcell) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GenericCollection}< GCellT * > {\b getGCells} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GenericCollection}< GCellT * > {\b getGCellsColumn} (unsigned int column, unsigned int rowStart, unsigned int rowStop)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GenericCollection}< GCellT * > {\b getGCellsRow} (unsigned int row, unsigned int columnStart, unsigned int columnStop)\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Protected Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Grid} (const {\b Box} &)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
template<typename GCellT>\par
|
|
class Katabatic::Grid< GCellT >\par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Template Class for Regular {\b Grid}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Contains all general purpose methods depending on the {\b GCell} type and geometrical computations. The internal storage is still not implemented in this class. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v Grid\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:Grid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Grid} (const {\b Box} & {\i bb}){\f2 [inline]}, {\f2 [protected]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWG}
|
|
{\bkmkend AAAAAAAAWG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Grid} constructor. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getGCell\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCell (unsigned int {\i index}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWH}
|
|
{\bkmkend AAAAAAAAWH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The grid object at linear index {\f2 index} in the vector. If {\f2 index} is out of bounds, return {\f2 NULL} . \par
|
|
}{
|
|
Referenced by GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v getGCell\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCell (const {\b Point} {\i p}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWI}
|
|
{\bkmkend AAAAAAAAWI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The grid object which is under position {\f2 p} . \par
|
|
}}
|
|
{\xe \v getGCell\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCell (const {\b Point} {\i p1}, const {\b Point} {\i p2}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWJ}
|
|
{\bkmkend AAAAAAAAWJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The grid object which is under position {\f2 p1} and {\f2 p2} . Not very clear though. \par
|
|
}}
|
|
{\xe \v getGCellLeft\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellLeft}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCellLeft (const GCellT * {\i gcell}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWK}
|
|
{\bkmkend AAAAAAAAWK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The left neighbor of {\f2 gcell} , {\f2 NULL} if it is the leftmost one. \par
|
|
}{
|
|
Referenced by GCell::getLeft().}\par
|
|
}
|
|
{\xe \v getGCellRight\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellRight}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCellRight (const GCellT * {\i gcell}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWL}
|
|
{\bkmkend AAAAAAAAWL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The rigth neighbor of {\f2 gcell} , {\f2 NULL} if it is the rightmost one. \par
|
|
}{
|
|
Referenced by GCell::getRight().}\par
|
|
}
|
|
{\xe \v getGCellUp\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellUp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCellUp (const GCellT * {\i gcell}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWM}
|
|
{\bkmkend AAAAAAAAWM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The upper neighbor of {\f2 gcell} , {\f2 NULL} if it is the uppermost one. \par
|
|
}{
|
|
Referenced by GCell::getUp().}\par
|
|
}
|
|
{\xe \v getGCellDown\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellDown}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
CGellT * getGCellDown (const GCellT * {\i gcell}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWN}
|
|
{\bkmkend AAAAAAAAWN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The down neighbor of {\f2 gcell} , {\f2 NULL} if it is the downmost one. \par
|
|
}{
|
|
Referenced by GCell::getDown().}\par
|
|
}
|
|
{\xe \v getGCells\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCells}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GenericCollection}< CGellT * > getGCells (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWO}
|
|
{\bkmkend AAAAAAAAWO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A GCellT Hurricane collection built upon the linear GCellT vector of the grid. \par
|
|
}}
|
|
{\xe \v getGCellsColumn\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellsColumn}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GenericCollection}< CGellT * > getGCellsColumn (unsigned int {\i column}, unsigned int {\i rowStart}, unsigned int {\i rowStop}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWP}
|
|
{\bkmkend AAAAAAAAWP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A GCellT Hurricane collection that contains the part of {\f2 column} starting from {\f2 rowStart} to {\f2 rowStop} inclusive. \par
|
|
}{
|
|
Referenced by KatabaticEngine::createDetailedGrid().}\par
|
|
}
|
|
{\xe \v getGCellsRow\:Katabatic::Grid}
|
|
{\xe \v Katabatic::Grid\:getGCellsRow}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GenericCollection}< CGellT * > getGCellsRow (unsigned int {\i row}, unsigned int {\i columnStart}, unsigned int {\i columnStop}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWQ}
|
|
{\bkmkend AAAAAAAAWQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} A GCellT Hurricane collection that contains the part of {\f2 row} starting from {\f2 columnStart} to {\f2 columnStop} inclusive. \par
|
|
}{
|
|
Referenced by KatabaticEngine::createDetailedGrid().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Grid.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
KatabaticEngine Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v KatabaticEngine}
|
|
{\xe \v KatabaticEngine}
|
|
{\bkmkstart AAAAAAAAWR}
|
|
{\bkmkend AAAAAAAAWR}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b Katabatic} Tool. }}\par
|
|
Inheritance diagram for KatabaticEngine:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1KatabaticEngine__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Types\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
typedef set< {\b Net} *, NetCompareByName > {\b NetSet}\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isGMetal} (const {\b Layer} *) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isChip} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isInDemoMode} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b doWarnOnGCellOverload} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b doDestroyBaseContact} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b doDestroyBaseSegment} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b doDestroyTool} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual const {\b Name} & {\b getName} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineState} {\b getState} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
unsigned int {\b getFlags} (unsigned int mask) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Configuration * {\b getKatabaticConfiguration} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual Configuration * {\b getConfiguration} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b RoutingGauge} * {\b getRoutingGauge} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b RoutingLayerGauge} * {\b getLayerGauge} (size_t depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b Layer} * {\b getRoutingLayer} (size_t depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Layer} * {\b getContactLayer} (size_t depth) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCellGrid} * {\b getGCellGrid} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b NetSet} & {\b getRoutingNets} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getGlobalThreshold} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getSaturateRatio} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
size_t {\b getSaturateRp} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b DbU::Unit} {\b getExtensionCap} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
const {\b ChipTools} & {\b getChipTools} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b xmlWriteGCellGrid} (ostream &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b xmlWriteGCellGrid} (const string &)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setState} ({\b EngineState} state)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setFlags} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b unsetFlags} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setGlobalThreshold} ({\b DbU::Unit})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setSaturateRatio} (float)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b setSaturateRp} (size_t)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b printMeasures} (const string &) const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b refresh} (unsigned int flags={\b KbOpenSession})\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b createDetailedGrid} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b makePowerRails} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b loadGlobalRouting} (unsigned int method)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b slackenBorder} ({\b Box} bb, {\b Layer::Mask}, unsigned int flags)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b slackenBlockIos} ({\b Instance} *core)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b moveUpNetTrunk} ({\b AutoSegment} *, set< {\b Net} *> &globalNets, {\b GCell::SetIndex} &invalidateds)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b layerAssign} (unsigned int method)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b computeNetConstraints} ({\b Net} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b toOptimals} ({\b Net} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
virtual void {\b finalizeLayout} ()\par
|
|
}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b KatabaticEngine} * {\b create} ({\b Cell} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const {\b Name} & {\b staticGetName} ()\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The {\b Katabatic} Tool. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
\par
|
|
{\bkmkstart AAAAAAAAWS}
|
|
{\bkmkend AAAAAAAAWS}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
States of KatabaticEngine
|
|
\par}
|
|
{\tc\tcl2 \v States of KatabaticEngine}
|
|
During it's lifecycle, the engine go through a serie of states. It only can go forward between states.{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineCreation} : just after C++ object creation until the global routing is loaded.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineGlobalLoaded} : {\i after} the global routing has been done. This state must be set by an external tool, {\b Katabatic} cannot know by itself when the global routing has been done (see Kite).\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineActive} : {\i after} the global routing has been converted into the {\b Katabatic} data structure. At this point the tool is ready to run.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineDriving} : {\i during} the stage of stripping all the decorations the tool has added over the Hurricane data structure (mostly: {\b AutoContact} & {\b AutoSegment}).\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EngineGutted} : {\i after} the tool decorations have been removed. The tool is now useless and can only be destroyed.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b EnginePreDestroying} : this special state is reached when going straight from EngineActive to the destructor, that is, skipping the EngineDriving state. That means we {\i do not} want to save whatever routing has been done. In that case, not only the tool decorations are destroyeds, but also the Hurricane data-structures they relies on (Contact, Segments).\par}
|
|
\par}
|
|
{\bkmkstart AAAAAAAAWT}
|
|
{\bkmkend AAAAAAAAWT}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
KatabaticEngine Implementation Details
|
|
\par}
|
|
{\tc\tcl2 \v KatabaticEngine Implementation Details}
|
|
Due to the size of the code and the fact that the main body of some methods do not need to be present in the class, the implementation of {\b KatabaticEngine} is split in several files. The list below summarize them:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 KatabaticEngine.cpp} : the core of the class, methods that really need their bodies here.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 PowerRails.cpp} : utilities to construct an abstract from all the power rails through the hierarchy.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 LayerAssign.cpp} : layer assignement related methods and helpers.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 LoadGrByNet.cpp} : global routing loader, transform global routing into {\b Katabatic} data-structure.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 NetConstraints.cpp} : compute the topological constraints of all AutoSegment/AutoContact of a Net.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 NetOptimals.cpp} : compute the optimal positions of all {\b AutoSegment} of a Net. \par}
|
|
\par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Typedef Documentation\par
|
|
\pard\plain
|
|
{\xe \v NetSet\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:NetSet}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
set< {\b Net} *, NetCompareByName > {\b NetSet}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWU}
|
|
{\bkmkend AAAAAAAAWU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set of Net to be routed, alphabetically sorteds. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v create\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:create}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b KatabaticEngine} * create ({\b Cell} * {\i cell}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWV}
|
|
{\bkmkend AAAAAAAAWV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a {\b KatabaticEngine} on {\f2 cell} . \par
|
|
}}
|
|
{\xe \v staticGetName\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:staticGetName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & staticGetName (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWW}
|
|
{\bkmkend AAAAAAAAWW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The unique string identifier for the {\b KatabaticEngine} class of ToolEngine. \par
|
|
}}
|
|
{\xe \v isGMetal\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:isGMetal}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isGMetal (const {\b Layer} * {\i layer}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWX}
|
|
{\bkmkend AAAAAAAAWX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if {\f2 layer} is one of the special (fake) metals used to build the global routing. \par
|
|
}{
|
|
Referenced by AutoSegment::create().}\par
|
|
}
|
|
{\xe \v isChip\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:isChip}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isChip () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWY}
|
|
{\bkmkend AAAAAAAAWY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the hierarchy top-level of the Cell matches the one of a complete design (i.e. pads and one core instance). \par
|
|
}{
|
|
References ChipTools::isChip().}\par
|
|
}
|
|
{\xe \v isInDemoMode\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:isInDemoMode}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInDemoMode () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAWZ}
|
|
{\bkmkend AAAAAAAAWZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the tool is in demo mode, that is suppress almost all warning and debug messages. \par
|
|
}{
|
|
Referenced by Session::isInDemoMode().}\par
|
|
}
|
|
{\xe \v doWarnOnGCellOverload\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:doWarnOnGCellOverload}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool doWarnOnGCellOverload () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXA}
|
|
{\bkmkend AAAAAAAAXA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the tool should issue a warning when a {\b GCell} is overloaded (overload could be transient). \par
|
|
}{
|
|
Referenced by Session::doWarnGCellOverload().}\par
|
|
}
|
|
{\xe \v doDestroyBaseContact\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:doDestroyBaseContact}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool doDestroyBaseContact () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXB}
|
|
{\bkmkend AAAAAAAAXB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the EngineDestroyBaseContact is set, meaning that when an {\b AutoContact} is destroyed, the Contact it decorates is destroyed altogether. \par
|
|
}}
|
|
{\xe \v doDestroyBaseSegment\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:doDestroyBaseSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool doDestroyBaseSegment () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXC}
|
|
{\bkmkend AAAAAAAAXC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the EngineDestroyBaseSegment is set, meaning that when an {\b AutoSegment} is destroyed, the Segment it decorates is destroyed altogether. \par
|
|
}}
|
|
{\xe \v doDestroyTool\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:doDestroyTool}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool doDestroyTool () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXD}
|
|
{\bkmkend AAAAAAAAXD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if the tool state is beyond EngineStateGutted, that is, only waits for {\f2 {\b destroy()}} to be called. \par
|
|
}{
|
|
References Katabatic::EngineGutted.}\par
|
|
}
|
|
{\xe \v getName\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getName}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Name} & getName () const{\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXE}
|
|
{\bkmkend AAAAAAAAXE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The unique string identifier for the {\b KatabaticEngine} class of ToolEngine. \par
|
|
}{
|
|
Implements {\b ToolEngine}.}\par
|
|
}
|
|
{\xe \v getState\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getState}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b EngineState} getState () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXF}
|
|
{\bkmkend AAAAAAAAXF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The state the tool is currently in. \par
|
|
}}
|
|
{\xe \v getFlags\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
unsigned int getFlags (unsigned int {\i mask}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXG}
|
|
{\bkmkend AAAAAAAAXG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\i anded} combination of the tool flags and {\f2 mask} . \par
|
|
}}
|
|
{\xe \v getKatabaticConfiguration\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getKatabaticConfiguration}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
Configuration * getKatabaticConfiguration (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXH}
|
|
{\bkmkend AAAAAAAAXH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Configuration of {\b Katabatic}. In this class it is redundant with {\b getConfiguration()}, but may be useful in derived classes. \par
|
|
}}
|
|
{\xe \v getConfiguration\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getConfiguration}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
Configuration * getConfiguration (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXI}
|
|
{\bkmkend AAAAAAAAXI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The Configuration of the current ToolEngine. \par
|
|
}}
|
|
{\xe \v getRoutingGauge\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getRoutingGauge}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b RoutingGauge} * getRoutingGauge () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXJ}
|
|
{\bkmkend AAAAAAAAXJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The RoutingGauge (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getLayerGauge\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getLayerGauge}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b RoutingLayerGauge} * getLayerGauge (size_t {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXK}
|
|
{\bkmkend AAAAAAAAXK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The RoutingLayerGauge associated to {\f2 depth} (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getRoutingLayer\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getRoutingLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Layer} * getRoutingLayer (size_t {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXL}
|
|
{\bkmkend AAAAAAAAXL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The routing Layer associated to {\f2 depth} (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getContactLayer\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getContactLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Layer} * getContactLayer (size_t {\i depth}) const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXM}
|
|
{\bkmkend AAAAAAAAXM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The contact Layer associated to {\f2 depth} (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getGCellGrid\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getGCellGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCellGrid} * getGCellGrid () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXN}
|
|
{\bkmkend AAAAAAAAXN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The {\b GCellGrid}. \par
|
|
}{
|
|
Referenced by GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v getRoutingNets\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getRoutingNets}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b NetSet} & getRoutingNets () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXO}
|
|
{\bkmkend AAAAAAAAXO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The set of nets to be routeds. \par
|
|
}}
|
|
{\xe \v getGlobalThreshold\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getGlobalThreshold}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getGlobalThreshold () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXP}
|
|
{\bkmkend AAAAAAAAXP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The length above which a global wire is moved up in the layer assignment stage (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getSaturateRatio\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getSaturateRatio}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getSaturateRatio () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXQ}
|
|
{\bkmkend AAAAAAAAXQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The ratio above which a {\b GCell} is considered to be saturated (Configuration shortcut). \par
|
|
}{
|
|
Referenced by Session::getSaturateRatio().}\par
|
|
}
|
|
{\xe \v getSaturateRp\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getSaturateRp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getSaturateRp () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXR}
|
|
{\bkmkend AAAAAAAAXR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of RoutingPad above which a {\b GCell} is saturated, causing extras global segments to be moved up. (Configuration shortcut). \par
|
|
}{
|
|
Referenced by Session::getSaturateRp().}\par
|
|
}
|
|
{\xe \v getExtensionCap\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getExtensionCap}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getExtensionCap () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXS}
|
|
{\bkmkend AAAAAAAAXS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The wires extension cap, same for all layers for the time beeing (Configuration shortcut). \par
|
|
}}
|
|
{\xe \v getChipTools\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:getChipTools}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b ChipTools} & getChipTools () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXT}
|
|
{\bkmkend AAAAAAAAXT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The chip tools (for whole designs). \par
|
|
}{
|
|
Referenced by KatabaticEngine::createDetailedGrid().}\par
|
|
}
|
|
{\xe \v xmlWriteGCellGrid\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:xmlWriteGCellGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void xmlWriteGCellGrid (ostream & {\i o})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXU}
|
|
{\bkmkend AAAAAAAAXU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Write in a stream all informations on the GCells in XML format. \par
|
|
}{
|
|
Referenced by KatabaticEngine::xmlWriteGCellGrid().}\par
|
|
}
|
|
{\xe \v xmlWriteGCellGrid\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:xmlWriteGCellGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void xmlWriteGCellGrid (const string & {\i fileName})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXV}
|
|
{\bkmkend AAAAAAAAXV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Write in a file all informations on the GCells in XML format. \par
|
|
}{
|
|
References KatabaticEngine::xmlWriteGCellGrid().}\par
|
|
}
|
|
{\xe \v setState\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:setState}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setState ({\b EngineState} {\i state}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXW}
|
|
{\bkmkend AAAAAAAAXW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Force the state of the tool. Must be used with caution, as no sanity checks are performeds. This method is normally invoked from inside the {\b KatabaticEngine} various methods. \par
|
|
}}
|
|
{\xe \v setFlags\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:setFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setFlags (unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXX}
|
|
{\bkmkend AAAAAAAAXX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Set the flags given in {\f2 flags} . \par
|
|
}{
|
|
Referenced by Session::setKatabaticFlags().}\par
|
|
}
|
|
{\xe \v unsetFlags\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:unsetFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void unsetFlags (unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXY}
|
|
{\bkmkend AAAAAAAAXY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Reset the flags given in {\f2 flags} . \par
|
|
}}
|
|
{\xe \v setGlobalThreshold\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:setGlobalThreshold}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setGlobalThreshold ({\b DbU::Unit} {\i threshold}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAXZ}
|
|
{\bkmkend AAAAAAAAXZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
(Configuration shortcut). \par
|
|
}}
|
|
{\xe \v setSaturateRatio\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:setSaturateRatio}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setSaturateRatio (float {\i ratio}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYA}
|
|
{\bkmkend AAAAAAAAYA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
(Configuration shortcut). \par
|
|
}}
|
|
{\xe \v setSaturateRp\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:setSaturateRp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setSaturateRp (size_t {\i threshold}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYB}
|
|
{\bkmkend AAAAAAAAYB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
(Configuration shortcut). \par
|
|
}}
|
|
{\xe \v printMeasures\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:printMeasures}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void printMeasures (const string & {\i tag}) const}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYC}
|
|
{\bkmkend AAAAAAAAYC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Print memory & time measurement on ``cmess1``. If {\f2 tag} is not empty, also adds the measurement to the internal table (with {\f2 tag} as label). \par
|
|
}{
|
|
Referenced by KatabaticEngine::finalizeLayout().}\par
|
|
}
|
|
{\xe \v refresh\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:refresh}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void refresh (unsigned int {\i flags} = {\f2 {\b KbOpenSession}})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYD}
|
|
{\bkmkend AAAAAAAAYD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
In case the tool is associated with a graphic display, trigger a full redraw of the Cell. Slow the router but allow to see work in progress... If {\f2 flags} {\i do not} contains {\f2 KbOpenSession} the refresh operation will not be enclosed inside it's own session. This assumes that a session is already opened. \par
|
|
}{
|
|
References GCellGrid::updateContacts().}\par
|
|
}
|
|
{\xe \v createDetailedGrid\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:createDetailedGrid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void createDetailedGrid (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYE}
|
|
{\bkmkend AAAAAAAAYE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Allocate the {\b GCellGrid}. \par
|
|
}{
|
|
References GCellGrid::create(), KatabaticEngine::getChipTools(), BaseGrid::getColumns(), Grid< GCellT >::getGCellsColumn(), Grid< GCellT >::getGCellsRow(), BaseGrid::getRows(), ChipTools::isChip(), and Session::revalidate().}\par
|
|
}
|
|
{\xe \v makePowerRails\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:makePowerRails}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void makePowerRails ()}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYF}
|
|
{\bkmkend AAAAAAAAYF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Detect all the aligned segments of same width that compose power rails, unificate them and copy them at the design top level. \par
|
|
}}
|
|
{\xe \v loadGlobalRouting\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:loadGlobalRouting}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void loadGlobalRouting (unsigned int {\i method}){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYG}
|
|
{\bkmkend AAAAAAAAYG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i method} \cell }{the loading algorithm \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i nets} \cell }{the set of nets to route.\cell }
|
|
{\row }
|
|
}
|
|
Convert the global routing into the initial detailed routing. For the time beeing, only one loading algorithm is available: {\i net by net} (EngineLoadGrByNet). Only Net given in {\f2 nets} are routeds. If {\f2 nets} is empty then all ordinary nets are routeds. In either cases the set of nets to route is pruned from any power, ground or clock signals.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: The tool state must be {\b EngineGlobalLoaded} {\i before} calling this method\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid and will be set to {\b EngineActive} on exit. \par
|
|
}}{
|
|
References Katabatic::EngineActive, and Katabatic::EngineGlobalLoaded.}\par
|
|
}
|
|
{\xe \v slackenBorder\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:slackenBorder}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void slackenBorder ({\b Box} {\i bb}, {\b Layer::Mask} {\i mask}, unsigned int {\i flags})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYH}
|
|
{\bkmkend AAAAAAAAYH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i bb} \cell }{The bounding box, defines the edges. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i mask} \cell }{Consider only layers that are fully included in that mask. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i flags} \cell }{Consider only segment in that direction.\cell }
|
|
{\row }
|
|
}
|
|
Perform a preventive break on all global segments going through the {\i vertical} left and right edges of the {\f2 bb} box. The set of global segments to be broken could be further restricted using {\f2 mask} and {\f2 flags} .\par
|
|
The Semantic of {\f2 flags} is not clear, must review the code more closely. \par
|
|
}{
|
|
References Box::getXMax(), Box::getXMin(), Box::getYMax(), and Box::getYMin().}\par
|
|
}
|
|
{\xe \v slackenBlockIos\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:slackenBlockIos}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void slackenBlockIos ({\b Instance} * {\i core})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYI}
|
|
{\bkmkend AAAAAAAAYI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform a preventive break on horizontal segments in the {\b GCell} immediatly {\i outside} the instance {\f2 core} area in the routing layer of index {\f2 1} .\par
|
|
This method is too much hardwired to the {\f2 SxLib} gauge. It's effect is to break all {\b METAL2} outside the core (in a chip). \par
|
|
}{
|
|
References Entity::getBoundingBox(), Instance::getName(), Constant::Horizontal, and Box::inflate().}\par
|
|
}
|
|
{\xe \v moveUpNetTrunk\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:moveUpNetTrunk}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool moveUpNetTrunk ({\b AutoSegment} * {\i seed}, set< {\b Net} *> & {\i globalNets}, {\b GCell::SetIndex} & {\i invalidateds})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYJ}
|
|
{\bkmkend AAAAAAAAYJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i seed} \cell }{The {\b AutoSegment} to take the net from. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i globalNets} \cell }{The set of nets that has been moved up. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i invalidateds} \cell }{The set of GCells that have been invalidated. {\b Returns:} {\b true} if the net trunk have been moved up.\cell }
|
|
{\row }
|
|
}
|
|
Try to move up a whole net trunk. The net is supplied through the {\f2 seed} argument (the segment that triggers the move). If the net is actually moved up, it is added to {\f2 globalNets} and all GCells that have been invalidateds are added to {\f2 invalidateds} .\par
|
|
An individual {\b AutoSegment} of the net is moved up if it's length is greater that {\f2 150} lambdas, that is, three times the side of a {\b GCell}. This is hard-wired and should be parametrized in the future. \par
|
|
}}
|
|
{\xe \v layerAssign\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:layerAssign}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void layerAssign (unsigned int {\i method})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYK}
|
|
{\bkmkend AAAAAAAAYK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform the layer assignment. The global routing loading stage uses only the two bottom most layers, this method spread them on all the availables routing layers, according to {\b GCell} and RoutingPad density criterions.\par
|
|
Two algorithms are availables:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b EngineLayerAssignByLength} : the global wires are moved up one by one.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b EngineLayerAssignByTrunk} : if one global wire of a net is to be moved up, then all the global trunk of the net is moved along. This methods gives the best results for now. \par}
|
|
}}
|
|
{\xe \v computeNetConstraints\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:computeNetConstraints}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void computeNetConstraints ({\b Net} * {\i net})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYL}
|
|
{\bkmkend AAAAAAAAYL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Compute the box constraints on AutoContacts (and therefore those applied to AutoSegments). Constraints comes from AutoContacts anchoreds on RoutingPads and transmitted through {\b AutoContactHTee} or {\b AutoContactVTee}. Constraints are applied to all AutoContacts of an aligned set.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: The {\f2 net} must have been canonized before this function to be called. \par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid \par
|
|
}}}
|
|
{\xe \v toOptimals\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:toOptimals}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void toOptimals ({\b Net} * {\i net})}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYM}
|
|
{\bkmkend AAAAAAAAYM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Move all {\b AutoSegment} of {\f2 net} so that their axis are inside their optimals interval. If a {\b AutoSegment} is already inside the interval is not moved, otherwise it is put on the nearest bound of the optimal interval. \par
|
|
}}
|
|
{\xe \v finalizeLayout\:Katabatic::KatabaticEngine}
|
|
{\xe \v Katabatic::KatabaticEngine\:finalizeLayout}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void finalizeLayout (){\f2 [virtual]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYN}
|
|
{\bkmkend AAAAAAAAYN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Transform the {\b Katabatic} wires into the Hurricane data-structure. Mostly by removing the AutoSegment/AutoContact {\i without} removing their Hurricane conterparts. May also fill gaps that may have appeared.\par
|
|
{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Remark: The tool state must be {\b EngineActive} {\i before} calling this method\par
|
|
}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid and will be set to {\b EngineGutted} on exit. \par
|
|
}}{
|
|
References Katabatic::EngineDriving, Katabatic::EngineGutted, and KatabaticEngine::printMeasures().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
KatabaticEngine.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
ChipTools.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
LoadGrByNet.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
KatabaticEngine.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
KatabaticEngine.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
GCell::Key Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v GCell::Key}
|
|
{\xe \v GCell::Key}
|
|
{\bkmkstart AAAAAAAAUT}
|
|
{\bkmkend AAAAAAAAUT}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Key} - Density Cache. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Key} ({\b GCell} *, unsigned int depth)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
float {\b getDensity} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b GCell} * {\b getGCell} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b update} (unsigned int depth)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b GCell} {\b Key} - Density Cache. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
This class is used to create a {\b GCell} internal cache on density, mainly to be used by {\b GCellDensitySet}. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v Key\:Katabatic::GCell::Key}
|
|
{\xe \v Katabatic::GCell::Key\:Key}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Key} ({\b GCell} * {\i owner}, unsigned int {\i depth}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUU}
|
|
{\bkmkend AAAAAAAAUU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\par
|
|
{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
Parameters:\par}
|
|
\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i owner} \cell }{The {\b GCell} owning the key. \cell }
|
|
{\row }
|
|
\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187
|
|
\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748
|
|
\pard \widctlpar\intbl\adjustright
|
|
{{\i depth} \cell }{The layer {\f2 depth} of the density to use.\cell }
|
|
{\row }
|
|
}
|
|
{\b Key} constructor, with an initial value for the cached density. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getDensity\:Katabatic::GCell::Key}
|
|
{\xe \v Katabatic::GCell::Key\:getDensity}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getDensity () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUV}
|
|
{\bkmkend AAAAAAAAUV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The value of the cached density. \par
|
|
}}
|
|
{\xe \v getGCell\:Katabatic::GCell::Key}
|
|
{\xe \v Katabatic::GCell::Key\:getGCell}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b GCell} * getGCell () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUW}
|
|
{\bkmkend AAAAAAAAUW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The owning {\b GCell}. \par
|
|
}}
|
|
{\xe \v update\:Katabatic::GCell::Key}
|
|
{\xe \v Katabatic::GCell::Key\:update}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void update (unsigned int {\i depth}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAUX}
|
|
{\bkmkend AAAAAAAAUX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} Update the density \par
|
|
}{
|
|
Referenced by GCell::updateKey().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
GCell.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
LocatorHelper Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v LocatorHelper}
|
|
{\xe \v LocatorHelper}
|
|
{\bkmkstart AAAAAAAAYO}
|
|
{\bkmkend AAAAAAAAYO}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Locator Helper Collection's Locators. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b LocatorHelper} ({\b AutoContact} *, unsigned int flags=0)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
bool {\b isValid} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b AutoSegment} * {\b getSegment} () const\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b progress} ()\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Locator Helper Collection's Locators. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Provide a small uniform walktough over the AutoSegments anchored on AutoContacts. The {\f2 flags} argument allows to choose between direction and include perpandiculars (in that case all segments are processeds).\par
|
|
{\bkmkstart AAAAAAAAYP}
|
|
{\bkmkend AAAAAAAAYP}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Implementation Details
|
|
\par}
|
|
{\tc\tcl2 \v Implementation Details}
|
|
As, at most, two horizontals and two verticals may be anchored on any {\b AutoContact} subtype, the locator helper perform a walk through a virtual table of 4 elements. The two first are the horizontals, the two last the verticals. The meaning of this index is consistent whith the {\f2 index} argument of {\b AutoContact::getSegment()}. When a segment is not present in an {\b AutoContact}, the {\f2 {\b getSegment()}} returns {\f2 NULL} and the {\b LocatorHelper::progress()} function will skip it.\par
|
|
The private methods:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 LocatorHelper::_min()} \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 LocatorHelper::_max()} \par}
|
|
Computes the bounds of {\f2 _index} according to the value of {\f2 _flags:} {
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 KbHorizontal} : {\f2 0} to less than {\f2 2} .\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 KbVertical} : {\f2 2} to less than {\f2 4} .\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 KbHorizontal|KbVertical} : {\f2 0} to less than {\f2 4} . \par}
|
|
\par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v LocatorHelper\:Katabatic::LocatorHelper}
|
|
{\xe \v Katabatic::LocatorHelper\:LocatorHelper}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b LocatorHelper} ({\b AutoContact} * {\i contact}, unsigned int {\i flags} = {\f2 0}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYQ}
|
|
{\bkmkend AAAAAAAAYQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Create a helper to iterate over the AutoSegments anchored on {\f2 contact} . The {\f2 flags} arguments allow to select:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
The direction: {\b Katabatic::KbHorizontal} or {\b Katabatic::KbVertical}.\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Perpandicular inclusion: {\b Katabatic::KbWithPerpands}.\par}
|
|
When setting KbWithPerpands, all the segments will be iterated over. It may seems a somewhat contorted way of doing things, the reason is the ability to share (an pass) flags directly between different functions. \par
|
|
}{
|
|
References AutoContact::getSegment(), and LocatorHelper::progress().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v isValid\:Katabatic::LocatorHelper}
|
|
{\xe \v Katabatic::LocatorHelper\:isValid}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isValid () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYR}
|
|
{\bkmkend AAAAAAAAYR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} {\b true} if there is an {\b AutoSegment} to be processed. \par
|
|
}}
|
|
{\xe \v getSegment\:Katabatic::LocatorHelper}
|
|
{\xe \v Katabatic::LocatorHelper\:getSegment}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * getSegment () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYS}
|
|
{\bkmkend AAAAAAAAYS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The current {\b AutoSegment}. {\f2 NULL} if the loop is over. \par
|
|
}{
|
|
References AutoContact::getSegment().}\par
|
|
}
|
|
{\xe \v progress\:Katabatic::LocatorHelper}
|
|
{\xe \v Katabatic::LocatorHelper\:progress}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void progress (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYT}
|
|
{\bkmkend AAAAAAAAYT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} Go to the next {\b AutoSegment}. \par
|
|
}{
|
|
References AutoContact::getSegment().}\par
|
|
{
|
|
Referenced by LocatorHelper::LocatorHelper().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContact.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
AutoContact.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Observable Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v Observable}
|
|
{\xe \v Observable}
|
|
{\bkmkstart AAAAAAAAYU}
|
|
{\bkmkend AAAAAAAAYU}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, Subject part. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Observable} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
template<typename T > T * {\b getObserver} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b addObserver} ({\b BaseObserver} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b removeObserver} ({\b BaseObserver} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
void {\b notify} (unsigned int flags)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, Subject part. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observable} is the implementation of the {\i subject} part of the {\b Observer} design pattern. For the time beeing it's a simplificated version that allows only one {\b Observer} to watch the subject.\par
|
|
{\b Observable} is designed to be an attribute of the subject, not one of it's base class.\par
|
|
This implantation is completly generic and has nothing specific to {\b Katabatic}. It may be moved sometimes in Hurricane at Property level in {\b Hurricane::DBo}.\par
|
|
{\b Note to Myself:} {\b Observer} pattern is the one behind signal/slots. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v Observable\:Katabatic::Observable}
|
|
{\xe \v Katabatic::Observable\:Observable}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Observable} (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYV}
|
|
{\bkmkend AAAAAAAAYV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Default and only constructor. The copy constructor is disabled (made private and unimplemented). \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getObserver\:Katabatic::Observable}
|
|
{\xe \v Katabatic::Observable\:getObserver}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
T * getObserver (){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYW}
|
|
{\bkmkend AAAAAAAAYW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The (only) observer, {\f2 NULL} if there is none. It is the object of which the {\b Observer} is an attribute, that is, it's {\i owner} , and not the {\b Observer} itself which is returned. \par
|
|
}}
|
|
{\xe \v addObserver\:Katabatic::Observable}
|
|
{\xe \v Katabatic::Observable\:addObserver}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void addObserver ({\b BaseObserver} * {\i observer}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYX}
|
|
{\bkmkend AAAAAAAAYX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds an observer. If more than one is added, throw an error. \par
|
|
}}
|
|
{\xe \v removeObserver\:Katabatic::Observable}
|
|
{\xe \v Katabatic::Observable\:removeObserver}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void removeObserver ({\b BaseObserver} * {\i observer}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYY}
|
|
{\bkmkend AAAAAAAAYY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes an observer. If the observer do not belong to this observable, throw an exception. \par
|
|
}}
|
|
{\xe \v notify\:Katabatic::Observable}
|
|
{\xe \v Katabatic::Observable\:notify}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void notify (unsigned int {\i flags}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAYZ}
|
|
{\bkmkend AAAAAAAAYZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Used by the subject to signal a change in it's state to the observers. The {\f2 flags} parameter can be used to indicates what kind of change is occuring. Values for {\f2 flags} are defined between the subject and the observers. \par
|
|
}{
|
|
References BaseObserver::notify().}\par
|
|
{
|
|
Referenced by AutoSegment::_invalidate(), AutoSegment::_postCreate(), AutoSegment::_preDestroy(), and AutoSegment::revalidate().}\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Observer< T > Class Template Reference\par \pard\plain
|
|
{\tc\tcl2 \v Observer< T >}
|
|
{\xe \v Observer< T >}
|
|
{\bkmkstart AAAAAAAAZA}
|
|
{\bkmkend AAAAAAAAZA}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. }}\par
|
|
Inheritance diagram for Observer< T >:{
|
|
\pard\plain
|
|
\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "classKatabatic_1_1Observer__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par
|
|
}
|
|
\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Observer} (const T *owner)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
T * {\b getOwner} () const\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid
|
|
template<typename T>\par
|
|
class Katabatic::Observer< T >\par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Observer} Design Pattern, {\b Observer} part. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b First, a warning about names:} although this class is named {\b Observer}, it is intended to be an attribute nested inside the whole object which is indeed, the true {\b Observer}. This nesting object is called, most of the time the {\b owner} in the following. But sometimes, for simplification it may also be called the {\b Observer}.\par
|
|
{\bkmkstart AAAAAAAAZB}
|
|
{\bkmkend AAAAAAAAZB}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Observer Implementation Notes
|
|
\par}
|
|
{\tc\tcl2 \v Observer Implementation Notes}
|
|
To retrieve the {\i owner} from the {\b Observer} attribute, we uses the offset from the attribute in the {\i owner} . This offset is computed once and for all the first time the template constructor is called. \par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Constructor & Destructor Documentation\par
|
|
\pard\plain
|
|
{\xe \v Observer\:Katabatic::Observer}
|
|
{\xe \v Katabatic::Observer\:Observer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Observer} (const T * {\i owner}){\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZC}
|
|
{\bkmkend AAAAAAAAZC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
The owner of the oberver is needed to compute, on the first creation only, the offset of the {\b Observer} attribute inside the {\f2 owner} complete object. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v getOwner\:Katabatic::Observer}
|
|
{\xe \v Katabatic::Observer\:getOwner}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
T * getOwner () const{\f2 [inline]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZD}
|
|
{\bkmkend AAAAAAAAZD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The owner of the observer. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Observer.dox\par
|
|
}\par \pard\plain
|
|
|
|
\pard\plain \sect\sbkpage
|
|
\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Session Class Reference\par \pard\plain
|
|
{\tc\tcl2 \v Session}
|
|
{\xe \v Session}
|
|
{\bkmkstart AAAAAAAAZE}
|
|
{\bkmkend AAAAAAAAZE}
|
|
\par
|
|
{
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Modification {\b Session} for {\b Katabatic}. }}\par
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Static Public Member Functions\par
|
|
\pard\plain
|
|
|
|
{
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static bool {\b isInDemoMode} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static bool {\b doWarnGCellOverload} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b Session} * {\b get} (const char *message=NULL)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b Technology} * {\b getTechnology} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b KatabaticEngine} * {\b getKatabatic} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const Configuration * {\b getConfiguration} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static float {\b getSaturateRatio} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b getSaturateRp} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b DbU::Unit} {\b getExtensionCap} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b RoutingGauge} * {\b getRoutingGauge} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const {\b Layer} * {\b getRoutingLayer} (size_t)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const {\b Layer} * {\b getContactLayer} (size_t)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b getSegmentStackSize} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b getContactStackSize} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const vector< {\b AutoSegment} * > & {\b getInvalidateds} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const vector< {\b AutoSegment} * > & {\b getRevalidateds} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const vector< {\b AutoSegment} * > & {\b getDoglegs} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static const set< {\b Net} * > & {\b getNetsModificateds} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b Session} * {\b open} ({\b KatabaticEngine} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b close} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b setKatabaticFlags} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b dogleg} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b revalidateTopology} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b setInvalidateMask} (unsigned int)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b invalidate} ({\b Net} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b invalidate} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b invalidate} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static size_t {\b revalidate} ()\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b link} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b link} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b unlink} ({\b AutoContact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static void {\b unlink} ({\b AutoSegment} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoContact} * {\b lookup} ({\b Contact} *)\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
static {\b AutoSegment} * {\b lookup} ({\b Segment} *)\par
|
|
}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Detailed Description\par
|
|
\pard\plain
|
|
{
|
|
\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Modification {\b Session} for {\b Katabatic}. \par
|
|
}
|
|
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
To perform modifications, the {\b Katabatic} data structure uses a session mechanism built on top of the {\b Hurricane::UpdateSession} one. Sessions obeys very simples rules:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Only one {\b Session} can be opened at a time with {\b Session::open()}.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Subsequent calls to {\b Session::open()} returns the currently opened session until {\b Session::close()} is called.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Revalidation can take place whithout closing the {\b Session} by calling {\b Session::revalidate()}.\par}
|
|
The task of a {\b Session} is to keep track of the {\b AutoContact} and {\b AutoSegment} that have been modificateds (i.e. invalidated) and, to restore connexity and/or topology when closed.\par
|
|
Two kinds of revalidation could be performed: {
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Geometrical} : only positions of AutoContacts and AutoSegments extensions are recomputed. \par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\b Topological} : a whole net have been invalidated because of a dogleg creation or a move up/move down of a segment. {
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Dogleg} : needs to insert the newly created AutoSegments and AutoContacts. \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b Move up/Move down} : may needs to create additional dogleg to restore connexity (gaps), and then insert them like above. \par}
|
|
After a topological mofication has been done, the net needs to be re-canonized then the geometrical step takes place. \par}
|
|
The kind of revalidation needed is automatically detected by the {\b Session}.\par
|
|
In addition to it's main purpose, {\b Session} also provides cached access to frequently needed variables either from Hurricane or {\b Katabatic} Configuration and access to the {\b AutoContact} & {\b AutoSegment} LUTs of {\b KatabaticEngine}.\par
|
|
From a software point of view, {\b Session} is a singleton object.\par
|
|
{\bkmkstart AAAAAAAAZF}
|
|
{\bkmkend AAAAAAAAZF}
|
|
{{\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid
|
|
Session Algorithm
|
|
\par}
|
|
{\tc\tcl2 \v Session Algorithm}
|
|
Main attributes of a {\b Session}:{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 _netInvalidateds} , nets on which topology has changed.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 _autoSegments} , that have been moved or createds.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 _autoContacts} , that have been created or one of their slave segment has moved.\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
{\f2 _revalidateds} , the list of AutoSegments that have just been revalidated (after calling {\f2 {\b revalidate()}} ).\par}
|
|
Schematic description of how a {\b Session} works:\par
|
|
{
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
If at least one net has been invalidated, meaning that it's topology has changed, perform {\f2 _revalidateTopology()} . {
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Update net topology: correct the topology of each contacts, making dogleg when needed. The {\b AutoContact} segment caching is updated at this point. \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Compute net constraints (on AutoContacts & AutoSegments). \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Compute net optimal positions (on AutoSegments). \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Compute the state of the segments regarding to terminals. \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Canonize sets of aligneds segments. The canonical segment is the one with the lowest {\f2 id} . \par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
If the segments has just been created, put it on its optimal axis. \par}
|
|
This stage can add itself more invalidated AutoSegments and AutoContacts as it create doglegs.\par
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Revalidate geometry of AutoContacts. That is, expand or shrink the extremities of the invalidated AutoSegments. Note that AutoSegments are already at on their final axis position.\par
|
|
\par
|
|
\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid
|
|
Revalidate AutoSegments. Just before this stage, they are on the correct axis and their extensions are also correct, so we may update the caching of their characteristics (mostly the extension). \par}
|
|
\par}
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid
|
|
Member Function Documentation\par
|
|
\pard\plain
|
|
{\xe \v isInDemoMode\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:isInDemoMode}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool isInDemoMode (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZG}
|
|
{\bkmkend AAAAAAAAZG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References KatabaticEngine::isInDemoMode().}\par
|
|
{
|
|
Referenced by GCell::checkDensity().}\par
|
|
}
|
|
{\xe \v doWarnGCellOverload\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:doWarnGCellOverload}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
bool doWarnGCellOverload (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZH}
|
|
{\bkmkend AAAAAAAAZH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References KatabaticEngine::doWarnOnGCellOverload().}\par
|
|
{
|
|
Referenced by GCell::checkDensity().}\par
|
|
}
|
|
{\xe \v get\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:get}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Session} * get (const char * {\i message} = {\f2 NULL}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZI}
|
|
{\bkmkend AAAAAAAAZI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Return the {\b Session} singleton, if no session is currently open throw an exception carrying {\f2 message} . \par
|
|
}}
|
|
{\xe \v getTechnology\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getTechnology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Technology} * getTechnology (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZJ}
|
|
{\bkmkend AAAAAAAAZJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Hurricane shortcut. \par
|
|
}}
|
|
{\xe \v getKatabatic\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getKatabatic}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b KatabaticEngine} * getKatabatic (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZK}
|
|
{\bkmkend AAAAAAAAZK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
Referenced by AutoSegment::create(), GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), AutoSegment::makeDogleg(), and Session::open().}\par
|
|
}
|
|
{\xe \v getConfiguration\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getConfiguration}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const Configuration * getConfiguration (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZL}
|
|
{\bkmkend AAAAAAAAZL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), and AutoSegment::canMoveUp().}\par
|
|
}
|
|
{\xe \v getSaturateRatio\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getSaturateRatio}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
float getSaturateRatio (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZM}
|
|
{\bkmkend AAAAAAAAZM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References KatabaticEngine::getSaturateRatio().}\par
|
|
{
|
|
Referenced by GCell::isSaturated().}\par
|
|
}
|
|
{\xe \v getSaturateRp\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getSaturateRp}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getSaturateRp (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZN}
|
|
{\bkmkend AAAAAAAAZN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References KatabaticEngine::getSaturateRp().}\par
|
|
{
|
|
Referenced by GCell::rpDesaturate().}\par
|
|
}
|
|
{\xe \v getExtensionCap\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getExtensionCap}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b DbU::Unit} getExtensionCap (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZO}
|
|
{\bkmkend AAAAAAAAZO}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
Referenced by AutoHorizontal::checkPositions(), AutoVertical::checkPositions(), AutoHorizontal::updatePositions(), and AutoVertical::updatePositions().}\par
|
|
}
|
|
{\xe \v getRoutingGauge\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getRoutingGauge}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b RoutingGauge} * getRoutingGauge (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZP}
|
|
{\bkmkend AAAAAAAAZP}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_makeDogleg(), AutoVertical::_makeDogleg(), AutoHorizontal::canMoveULeft(), AutoVertical::canMoveULeft(), AutoSegment::canMoveUp(), AutoHorizontal::canMoveURight(), AutoVertical::canMoveURight(), AutoSegment::canPivotDown(), AutoSegment::canPivotUp(), GCell::checkDensity(), Session::getContactLayer(), Session::getRoutingLayer(), GCell::hasFreeTrack(), AutoSegment::makeDogleg(), anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell(), GCell::stepDesaturate(), GCell::stepNetDesaturate(), GCell::updateDensity(), AutoContactVTee::updateTopology(), AutoContactTurn::updateTopology(), AutoContactHTee::updateTopology(), and AutoContactTerminal::updateTopology().}\par
|
|
}
|
|
{\xe \v getRoutingLayer\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getRoutingLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Layer} * getRoutingLayer (size_t {\i depth}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZQ}
|
|
{\bkmkend AAAAAAAAZQ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References Session::getRoutingGauge(), and RoutingGauge::getRoutingLayer().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_xM1_xM3(), AutoSegment::create(), GCellTopology::doRp_AccessPad(), AutoSegment::reduceDoglegLayer(), and GCell::rpDesaturate().}\par
|
|
}
|
|
{\xe \v getContactLayer\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getContactLayer}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const {\b Layer} * getContactLayer (size_t {\i depth}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZR}
|
|
{\bkmkend AAAAAAAAZR}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References RoutingGauge::getContactLayer(), and Session::getRoutingGauge().}\par
|
|
{
|
|
Referenced by GCellTopology::_do_1G_1M3(), GCellTopology::_do_1G_xM1(), GCellTopology::_do_xG(), GCellTopology::_do_xG_1M1_1M2(), GCellTopology::_do_xG_1Pad(), GCellTopology::_do_xG_xM1_xM3(), GCellTopology::_do_xG_xM2(), GCellTopology::_do_xG_xM3(), GCellTopology::doRp_Access(), GCellTopology::doRp_AccessPad(), GCellTopology::doRp_AutoContacts(), GCellTopology::doRp_StairCaseH(), GCellTopology::doRp_StairCaseV(), and anonymous_namespace\{LoadGrByNet.cpp\}::singleGCell().}\par
|
|
}
|
|
{\xe \v getSegmentStackSize\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getSegmentStackSize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getSegmentStackSize (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZS}
|
|
{\bkmkend AAAAAAAAZS}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of {\b AutoSegment} in the invalidated stack. \par
|
|
}}
|
|
{\xe \v getContactStackSize\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getContactStackSize}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t getContactStackSize (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZT}
|
|
{\bkmkend AAAAAAAAZT}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The number of {\b AutoSegment} in the invalidated stack. \par
|
|
}}
|
|
{\xe \v getInvalidateds\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getInvalidateds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoSegment} * > & getInvalidateds (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZU}
|
|
{\bkmkend AAAAAAAAZU}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The stack (vector) of invalidateds AutoSegments. \par
|
|
}}
|
|
{\xe \v getRevalidateds\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getRevalidateds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoSegment} * > & getRevalidateds (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZV}
|
|
{\bkmkend AAAAAAAAZV}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The stack (vector) of AutoSegments that have been revalidateds. \par
|
|
}}
|
|
{\xe \v getDoglegs\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getDoglegs}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const vector< {\b AutoSegment} * > & getDoglegs (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZW}
|
|
{\bkmkend AAAAAAAAZW}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The vector of AutoSegments part of a newly created dogleg. The dogleg creation functions in {\b AutoHorizontal} and {\b AutoVertical} put a triplet (for example in horizontal direction {\f2 } (h1,v1,h2) ) for each dogleg composed of:{
|
|
\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b h1} the segment {\i before} the dogleg (which is also the original one).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b v1} the segment {\b perpandicular} (new).\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
{\b h2} the segment {\b after} (new). \par}
|
|
}{
|
|
Referenced by AutoSegment::makeDogleg().}\par
|
|
}
|
|
{\xe \v getNetsModificateds\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:getNetsModificateds}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
const set< {\b Net} * > & getNetsModificateds (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZX}
|
|
{\bkmkend AAAAAAAAZX}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Returns:} The set of Nets that needs either a topological update or a new canonization. \par
|
|
}}
|
|
{\xe \v open\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:open}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b Session} * open ({\b KatabaticEngine} * {\i ktbt}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZY}
|
|
{\bkmkend AAAAAAAAZY}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Opens a new session or returns the already opened one, if any. \par
|
|
}{
|
|
References Session::getKatabatic().}\par
|
|
{
|
|
Referenced by GCellGrid::updateContacts().}\par
|
|
}
|
|
{\xe \v close\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:close}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void close (){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAAAZZ}
|
|
{\bkmkend AAAAAAAAZZ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Close the {\b Session}, triggering the revalidation of the AutoSegemnts and AutoContacts. If no {\b Session} is opened, throws an execption. \par
|
|
}{
|
|
Referenced by GCellGrid::updateContacts().}\par
|
|
}
|
|
{\xe \v setKatabaticFlags\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:setKatabaticFlags}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setKatabaticFlags (unsigned int {\i flags}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAA}
|
|
{\bkmkend AAAAAAABAA}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
{\b Katabatic} shortcut. \par
|
|
}{
|
|
References KatabaticEngine::setFlags().}\par
|
|
}
|
|
{\xe \v dogleg\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:dogleg}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void dogleg ({\b AutoSegment} * {\i autoSegment}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAB}
|
|
{\bkmkend AAAAAAABAB}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds an {\b AutoSegment} to the dogleg vector. \par
|
|
}{
|
|
Referenced by AutoHorizontal::_makeDogleg(), and AutoVertical::_makeDogleg().}\par
|
|
}
|
|
{\xe \v revalidateTopology\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:revalidateTopology}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void revalidateTopology (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAC}
|
|
{\bkmkend AAAAAAABAC}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Revalidate Net that have been invalidateds and re-canonize them. \par
|
|
}}
|
|
{\xe \v setInvalidateMask\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:setInvalidateMask}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void setInvalidateMask (unsigned int {\i flags}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAD}
|
|
{\bkmkend AAAAAAABAD}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Tells what kind of revalidation must be performed. \par
|
|
}}
|
|
{\xe \v invalidate\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void invalidate ({\b Net} * {\i net}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAE}
|
|
{\bkmkend AAAAAAABAE}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Schedule {\f2 net} for a full revalidation, topological correction and canonization. \par
|
|
}{
|
|
Referenced by AutoSegment::_invalidate(), and AutoSegment::_postCreate().}\par
|
|
}
|
|
{\xe \v invalidate\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void invalidate ({\b AutoContact} * {\i contact}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAF}
|
|
{\bkmkend AAAAAAABAF}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Schedule {\f2 contact} for revalidation. \par
|
|
}}
|
|
{\xe \v invalidate\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:invalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void invalidate ({\b AutoSegment} * {\i segment}){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAG}
|
|
{\bkmkend AAAAAAABAG}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Schedule {\f2 segment} for revalidation. \par
|
|
}}
|
|
{\xe \v revalidate\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:revalidate}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
size_t revalidate (){\f2 [inline]}, {\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAH}
|
|
{\bkmkend AAAAAAABAH}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Perform the revalidation. Returns the sum of AutoContacts and AutoSegemnts that have been revalidated. \par
|
|
}{
|
|
Referenced by KatabaticEngine::createDetailedGrid().}\par
|
|
}
|
|
{\xe \v link\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:link}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void link ({\b AutoContact} * {\i ac}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAI}
|
|
{\bkmkend AAAAAAABAI}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 ac} in the {\b AutoContact} lookup table (allow to retrieve an {\b AutoContact} by it's base Contact). \par
|
|
}{
|
|
Referenced by AutoSegment::_postCreate().}\par
|
|
}
|
|
{\xe \v link\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:link}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void link ({\b AutoSegment} * {\i as}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAJ}
|
|
{\bkmkend AAAAAAABAJ}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Adds {\f2 as} in the {\b AutoSegment} lookup table (allow to retrieve an {\b AutoSegment} by it's base Segment). \par
|
|
}}
|
|
{\xe \v unlink\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:unlink}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void unlink ({\b AutoContact} * {\i ac}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAK}
|
|
{\bkmkend AAAAAAABAK}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes {\f2 ac} from the {\b AutoContact} lookup table. \par
|
|
}{
|
|
Referenced by AutoSegment::_preDestroy().}\par
|
|
}
|
|
{\xe \v unlink\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:unlink}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
void unlink ({\b AutoSegment} * {\i as}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAL}
|
|
{\bkmkend AAAAAAABAL}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Removes {\f2 as} from the {\b AutoSegment} lookup table. \par
|
|
}}
|
|
{\xe \v lookup\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:lookup}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoContact} * lookup ({\b Contact} * {\i contact}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAM}
|
|
{\bkmkend AAAAAAABAM}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Lookup the {\b AutoContact} associated with {\f2 contact} . {\f2 NULL} if not found. \par
|
|
}{
|
|
Referenced by AutoSegment::AutoSegment(), GCell::checkEdgeSaturation(), AutoSegment::create(), AutoSegment::getAutoSource(), AutoSegment::getAutoTarget(), AutoSegment::getOppositeAnchor(), and AutoSegment::getPerpandicularsBound().}\par
|
|
}
|
|
{\xe \v lookup\:Katabatic::Session}
|
|
{\xe \v Katabatic::Session\:lookup}
|
|
\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {
|
|
{\b
|
|
{\b AutoSegment} * lookup ({\b Segment} * {\i segment}){\f2 [static]}}}
|
|
\par
|
|
{\bkmkstart AAAAAAABAN}
|
|
{\bkmkend AAAAAAABAN}
|
|
{
|
|
\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid
|
|
{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid
|
|
Lookup the {\b AutoSegment} associated with {\f2 segment} . {\f2 NULL} if not found. \par
|
|
}}
|
|
{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par}
|
|
The documentation for this class was generated from the following files:{\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Session.h\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Session.cpp\par
|
|
\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid
|
|
Session.dox\par
|
|
}
|
|
\pard\plain \sect\sbkpage
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid
|
|
\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Index\par
|
|
\pard\plain
|
|
{\tc \v Index}
|
|
{\field\fldedit {\*\fldinst INDEX \\c2 \\*MERGEFORMAT}{\fldrslt INDEX}}
|
|
} |