\hypertarget{classKatabatic_1_1AutoContactTerminal}{\section{Auto\-Contact\-Terminal Class Reference} \label{classKatabatic_1_1AutoContactTerminal}\index{Auto\-Contact\-Terminal@{Auto\-Contact\-Terminal}} } \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} Terminal (S/\-T is a Terminal) Inheritance diagram for Auto\-Contact\-Terminal\-:\nopagebreak \begin{figure}[H] \begin{center} \leavevmode \includegraphics[width=188pt]{classKatabatic_1_1AutoContactTerminal__inherit__graph} \end{center} \end{figure} \subsection*{Public Member Functions} \begin{DoxyCompactItemize} \item virtual {\bf Box} \hyperlink{classKatabatic_1_1AutoContactTerminal_a762d33db26927e6db939a7420bb95743}{get\-Native\-Constraint\-Box} () const \item virtual \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ \hyperlink{classKatabatic_1_1AutoContactTerminal_a2f7d64767002f3bf2bbdf2f8f0e80105}{get\-Segment} (unsigned int) const \item virtual \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ \hyperlink{classKatabatic_1_1AutoContactTerminal_aaf175a76573a5e3505b24fb2a8b0414f}{get\-Opposite} (const \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$) const \item virtual \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$ \hyperlink{classKatabatic_1_1AutoContactTerminal_a68e80545d3d25400be8f08d059ba21f5}{get\-Perpandicular} (const \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$) const \item virtual void \hyperlink{classKatabatic_1_1AutoContactTerminal_a3e218f6934c51380fb15d0e2bd380071}{update\-Geometry} () \item virtual void \hyperlink{classKatabatic_1_1AutoContactTerminal_af5bf1f5e71204ef84346e4e036175431}{update\-Topology} () \end{DoxyCompactItemize} \subsection*{Static Public Member Functions} \begin{DoxyCompactItemize} \item static \hyperlink{classKatabatic_1_1AutoContactTerminal}{Auto\-Contact\-Terminal} $\ast$ \hyperlink{classKatabatic_1_1AutoContactTerminal_a0d440e51525b09acc843f1d345850487}{create} (\hyperlink{classKatabatic_1_1GCell}{G\-Cell} $\ast$gcell, {\bf Component} $\ast$anchor, const {\bf Layer} $\ast$layer, {\bf Point} point, {\bf Db\-U\-::\-Unit} width, {\bf Db\-U\-::\-Unit} height) \item static \hyperlink{classKatabatic_1_1AutoContactTerminal}{Auto\-Contact\-Terminal} $\ast$ \hyperlink{classKatabatic_1_1AutoContactTerminal_a60a625bca2cdfebcdcc7826ab781d1bb}{create} (\hyperlink{classKatabatic_1_1GCell}{G\-Cell} $\ast$gcell, {\bf Component} $\ast$anchor, const {\bf Layer} $\ast$layer, const {\bf Db\-U\-::\-Unit} dx, const {\bf Db\-U\-::\-Unit} dy, const {\bf Db\-U\-::\-Unit} width, const {\bf Db\-U\-::\-Unit} height) \end{DoxyCompactItemize} \subsection*{Additional Inherited Members} \subsection{Detailed Description} \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} Terminal (S/\-T is a Terminal) \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} that are directly attached by either source or target or both to a terminal. \subsection{Member Function Documentation} \hypertarget{classKatabatic_1_1AutoContactTerminal_a0d440e51525b09acc843f1d345850487}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!create@{create}} \index{create@{create}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Contact\-Terminal} $\ast$ create ( \begin{DoxyParamCaption} \item[{{\bf G\-Cell} $\ast$}]{gcell, } \item[{{\bf Component} $\ast$}]{rp, } \item[{const {\bf Layer} $\ast$}]{layer, } \item[{{\bf Point}}]{point, } \item[{{\bf Db\-U\-::\-Unit}}]{width, } \item[{{\bf Db\-U\-::\-Unit}}]{height} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1AutoContactTerminal_a0d440e51525b09acc843f1d345850487} \begin{DoxyParams}{Parameters} {\em gcell} & The \hyperlink{classKatabatic_1_1GCell}{G\-Cell} into which create the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em rp} & The Routing\-Pad on which to anchor the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em layer} & The Layer of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em point} & The absolute position. \\ \hline {\em width} & The width of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em height} & The height of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The created \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \end{DoxyReturn} Create a new \hyperlink{classKatabatic_1_1AutoContactTerminal}{Auto\-Contact\-Terminal} anchored on {\ttfamily rp}. {\ttfamily point} gives the {\itshape absolute} position. References Component\-::get\-Body\-Hook(). Referenced by G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access\-Pad(), and G\-Cell\-Topology\-::do\-Rp\-\_\-\-Auto\-Contacts(). \hypertarget{classKatabatic_1_1AutoContactTerminal_a60a625bca2cdfebcdcc7826ab781d1bb}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!create@{create}} \index{create@{create}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Contact\-Terminal} $\ast$ create ( \begin{DoxyParamCaption} \item[{{\bf G\-Cell} $\ast$}]{gcell, } \item[{{\bf Component} $\ast$}]{rp, } \item[{const {\bf Layer} $\ast$}]{layer, } \item[{const {\bf Db\-U\-::\-Unit}}]{x, } \item[{const {\bf Db\-U\-::\-Unit}}]{y, } \item[{const {\bf Db\-U\-::\-Unit}}]{width, } \item[{const {\bf Db\-U\-::\-Unit}}]{height} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1AutoContactTerminal_a60a625bca2cdfebcdcc7826ab781d1bb} \begin{DoxyParams}{Parameters} {\em gcell} & The \hyperlink{classKatabatic_1_1GCell}{G\-Cell} into which create the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em rp} & The Component on which to anchor the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em layer} & The Layer of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em x} & The absolute X position. \\ \hline {\em y} & The absolute Y position. \\ \hline {\em width} & The width of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline {\em height} & The height of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} The created \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. \end{DoxyReturn} Create a new \hyperlink{classKatabatic_1_1AutoContactTerminal}{Auto\-Contact\-Terminal} anchored on {\ttfamily rp}. {\ttfamily (x,y)} gives the {\itshape absolute} position. The anchor component {\ttfamily rp} is most often a {\bf Hurricane\-::\-Routing\-Pad} (occurrencing a {\bf Hurricane\-::\-Segment}) or directly a {\bf Hurricane\-::\-Segment}, in case of Routing\-Pad layer promotion. References Katabatic\-::\-Cnt\-In\-Creation\-Stage, Contact\-::create(), Component\-::get\-Position(), and Db\-U\-::get\-Value\-String(). \hypertarget{classKatabatic_1_1AutoContactTerminal_a762d33db26927e6db939a7420bb95743}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!get\-Native\-Constraint\-Box@{get\-Native\-Constraint\-Box}} \index{get\-Native\-Constraint\-Box@{get\-Native\-Constraint\-Box}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{get\-Native\-Constraint\-Box}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Box} get\-Native\-Constraint\-Box ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_a762d33db26927e6db939a7420bb95743} {\bfseries Returns\-:} The native constraint box (that is, whithout any user constraints applied). For \hyperlink{classKatabatic_1_1AutoContactTerminal}{Auto\-Contact\-Terminal}, this is the Box of the supporting external component, and for all others the bounding box of the owning \hyperlink{classKatabatic_1_1GCell}{G\-Cell}. Reimplemented from \hyperlink{classKatabatic_1_1AutoContact_a762d33db26927e6db939a7420bb95743}{Auto\-Contact}. References Auto\-Contact\-::get\-Anchor(), G\-Cell\-::get\-Bounding\-Box(), Occurrence\-::get\-Entity(), Routing\-Pad\-::get\-Occurrence(), Transformation\-::get\-Orientation(), Occurrence\-::get\-Path(), Component\-::get\-Position(), Routing\-Pad\-::get\-Source\-Position(), Segment\-::get\-Source\-Position(), Routing\-Pad\-::get\-Target\-Position(), Segment\-::get\-Target\-Position(), Path\-::get\-Transformation(), and Db\-U\-::get\-Value\-String(). \hypertarget{classKatabatic_1_1AutoContactTerminal_a2f7d64767002f3bf2bbdf2f8f0e80105}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!get\-Segment@{get\-Segment}} \index{get\-Segment@{get\-Segment}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{get\-Segment}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Segment} $\ast$ get\-Segment ( \begin{DoxyParamCaption} \item[{unsigned int}]{index} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_a2f7d64767002f3bf2bbdf2f8f0e80105} {\bfseries Returns\-:} The nth anchored \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment}. The index is significant\-: \begin{DoxyItemize} \item {\bfseries 0} \-: first horizontal ({\bfseries h1}). \item {\bfseries 1} \-: second horizontal ({\bfseries h2}). \item {\bfseries 2} \-: first vertical ({\bfseries b1}). \item {\bfseries 3} \-: second vertical ({\bfseries b2}). \end{DoxyItemize} Not all the indexes are filled for every \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact}. For example {\ttfamily Turn} have {\bfseries h1} and {\bfseries b1}, and {\ttfamily H\-Tee} have {\bfseries h1}, {\bfseries h2} and {\bfseries v1}. Implements \hyperlink{classKatabatic_1_1AutoContact_a50531ded68cc5206fe104b8d8bf3bd87}{Auto\-Contact}. References Auto\-Segment\-::is\-Horizontal(), and Auto\-Segment\-::is\-Vertical(). \hypertarget{classKatabatic_1_1AutoContactTerminal_aaf175a76573a5e3505b24fb2a8b0414f}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!get\-Opposite@{get\-Opposite}} \index{get\-Opposite@{get\-Opposite}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{get\-Opposite}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Segment} $\ast$ get\-Opposite ( \begin{DoxyParamCaption} \item[{const {\bf Auto\-Segment} $\ast$}]{reference} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_aaf175a76573a5e3505b24fb2a8b0414f} {\bfseries Returns\-:} The other \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} the {\itshape same} direction as {\ttfamily reference}, this is only meaningful on \hyperlink{classKatabatic_1_1AutoContactHTee}{Auto\-Contact\-H\-Tee} or \hyperlink{classKatabatic_1_1AutoContactVTee}{Auto\-Contact\-V\-Tee}. If there is no opposite, {\ttfamily N\-U\-L\-L} is returned. Implements \hyperlink{classKatabatic_1_1AutoContact_a48ab1d3bdf85712e4784ef83ef136939}{Auto\-Contact}. \hypertarget{classKatabatic_1_1AutoContactTerminal_a68e80545d3d25400be8f08d059ba21f5}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!get\-Perpandicular@{get\-Perpandicular}} \index{get\-Perpandicular@{get\-Perpandicular}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{get\-Perpandicular}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Auto\-Segment} $\ast$ get\-Perpandicular ( \begin{DoxyParamCaption} \item[{const {\bf Auto\-Segment} $\ast$}]{reference} \end{DoxyParamCaption} ) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_a68e80545d3d25400be8f08d059ba21f5} {\bfseries Returns\-:} The \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} in the {\itshape perpandicular} direction to {\ttfamily reference}, this is only meaningful on Auto\-Contac\-Turn. It there is no unique perpandicular, {\ttfamily N\-U\-L\-L} is returned. Implements \hyperlink{classKatabatic_1_1AutoContact_a994371005874f946cc0ac78005d38423}{Auto\-Contact}. \hypertarget{classKatabatic_1_1AutoContactTerminal_a3e218f6934c51380fb15d0e2bd380071}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!update\-Geometry@{update\-Geometry}} \index{update\-Geometry@{update\-Geometry}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{update\-Geometry}]{\setlength{\rightskip}{0pt plus 5cm}void update\-Geometry ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_a3e218f6934c51380fb15d0e2bd380071} Compute the new position of the \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} based on the \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} positions. The \hyperlink{classKatabatic_1_1Session}{Session} mechanism ensure that all \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} are set into their final positions before calling this updator. Implements \hyperlink{classKatabatic_1_1AutoContact_af6a2454547eeb7f5a519970dcb467e90}{Auto\-Contact}. References Auto\-Contact\-::base(), Debug\-Session\-::close(), Katabatic\-::\-Cnt\-Invalidated, Interval\-::contains(), Auto\-Contact\-::get\-Net(), Auto\-Contact\-::get\-U\-Constraints(), Db\-U\-::get\-Value\-String(), Auto\-Segment\-::get\-X(), Auto\-Segment\-::get\-Y(), Auto\-Contact\-::has\-Bad\-Topology(), Go\-::invalidate(), Auto\-Segment\-::is\-Created(), Auto\-Segment\-::is\-Horizontal(), Auto\-Contact\-::is\-Invalidated\-Cache(), Katabatic\-::\-Kb\-Horizontal, Katabatic\-::\-Kb\-Vertical, Debug\-Session\-::open(), Auto\-Contact\-::set\-X(), Auto\-Contact\-::set\-Y(), and Auto\-Contact\-::show\-Topology\-Error(). \hypertarget{classKatabatic_1_1AutoContactTerminal_af5bf1f5e71204ef84346e4e036175431}{\index{Katabatic\-::\-Auto\-Contact\-Terminal@{Katabatic\-::\-Auto\-Contact\-Terminal}!update\-Topology@{update\-Topology}} \index{update\-Topology@{update\-Topology}!Katabatic::AutoContactTerminal@{Katabatic\-::\-Auto\-Contact\-Terminal}} \subsubsection[{update\-Topology}]{\setlength{\rightskip}{0pt plus 5cm}void update\-Topology ( \begin{DoxyParamCaption} {} \end{DoxyParamCaption} )\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1AutoContactTerminal_af5bf1f5e71204ef84346e4e036175431} Restore the topology (i.\-e. connexity) of the contact after the incident segment has changed layer. Based on the layer depth delta between the terminal and the segment three case can occurs\-: \begin{DoxyItemize} \item The delta is {\bfseries zero}, then just sets the layer of the contact to the common metal layer. \item The delta is {\bfseries one}, then sets the contact layer to V\-I\-A connecting the two layers. \item The delta is {\bfseries 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. \item A delta of more than {\bfseries two} is an error, and must never occurs. \end{DoxyItemize} 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). Implements \hyperlink{classKatabatic_1_1AutoContact_a690764ddc997fe9766a79c4b8e0c3e2f}{Auto\-Contact}. References Debug\-Session\-::close(), Katabatic\-::\-Cnt\-Bad\-Topology, Auto\-Contact\-::get\-Anchor(), Routing\-Gauge\-::get\-Contact\-Layer(), Auto\-Contact\-::get\-Layer(), Auto\-Segment\-::get\-Layer(), Routing\-Gauge\-::get\-Layer\-Depth(), Auto\-Contact\-::get\-Net(), Session\-::get\-Routing\-Gauge(), Routing\-Gauge\-::get\-Routing\-Layer(), Auto\-Segment\-::invalidate(), Auto\-Contact\-::is\-Invalidated\-Cache(), Auto\-Segment\-::make\-Dogleg(), Debug\-Session\-::open(), Auto\-Contact\-::set\-Layer(), and Auto\-Contact\-::show\-Topology\-Error(). The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize} \item Auto\-Contact\-Terminal.\-h\item Auto\-Contact\-Terminal.\-cpp\item Auto\-Contact\-Terminal.\-dox\end{DoxyCompactItemize}