2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn} { \section { Auto\- Contact\- Turn Class Reference}
\label { classKatabatic_ 1_ 1AutoContactTurn} \index { Auto\- Contact\- Turn@{ Auto\- Contact\- Turn} }
}
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} Turn (one H, one V)
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Inheritance diagram for Auto\- Contact\- Turn\- :\nopagebreak
2018-06-06 11:42:26 -05:00
\begin { figure} [H]
\begin { center}
\leavevmode
\includegraphics [width=170pt] { classKatabatic_ 1_ 1AutoContactTurn_ _ inherit_ _ graph}
\end { center}
\end { figure}
\subsection * { Public Member Functions}
\begin { DoxyCompactItemize}
\item
2018-08-19 06:27:09 -05:00
virtual \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} $ \ast $ \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ aaf175a76573a5e3505b24fb2a8b0414f} { get\- Opposite} (const \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} $ \ast $ ) const
2018-06-06 11:42:26 -05:00
\item
2018-08-19 06:27:09 -05:00
virtual \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} $ \ast $ \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a68e80545d3d25400be8f08d059ba21f5} { get\- Perpandicular} (const \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} $ \ast $ ) const
2018-06-06 11:42:26 -05:00
\item
2018-08-19 06:27:09 -05:00
virtual \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} $ \ast $ \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a2f7d64767002f3bf2bbdf2f8f0e80105} { get\- Segment} (unsigned int) const
2018-06-06 11:42:26 -05:00
\item
2018-08-19 06:27:09 -05:00
virtual void \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a3e218f6934c51380fb15d0e2bd380071} { update\- Geometry} ()
2018-06-06 11:42:26 -05:00
\item
2018-08-19 06:27:09 -05:00
virtual void \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ af5bf1f5e71204ef84346e4e036175431} { update\- Topology} ()
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection * { Static Public Member Functions}
\begin { DoxyCompactItemize}
\item
2018-08-19 06:27:09 -05:00
static \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\- Contact\- Turn} $ \ast $ \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3} { create} (\hyperlink { classKatabatic_ 1_ 1GCell} { G\- Cell} $ \ast $ , { \bf Net} $ \ast $ , const { \bf Layer} $ \ast $ )
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection * { Additional Inherited Members}
\subsection { Detailed Description}
2018-08-19 06:27:09 -05:00
\hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} Turn (one H, one V)
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} to make a turn (one H, one V).
2018-06-06 11:42:26 -05:00
\subsection { Member Function Documentation}
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !create@{ create} }
\index { create@{ create} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\subsubsection [{create}] { \setlength { \rightskip } { 0pt plus 5cm} { \bf Auto\- Contact\- Turn} $ \ast $ create (
\begin { DoxyParamCaption}
\item [{{\bf G\-Cell} $\ast$}] { gcell, }
\item [{{\bf Net} $\ast$}] { net, }
\item [{const {\bf Layer} $\ast$}] { layer}
\end { DoxyParamCaption}
)\hspace { 0.3cm} { \ttfamily [static]} } } \label { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3}
2018-06-06 11:42:26 -05:00
\begin { DoxyParams} { Parameters}
2018-08-19 06:27:09 -05:00
{ \em gcell} & The \hyperlink { classKatabatic_ 1_ 1GCell} { G\- Cell} into which create the \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} . \\
2018-06-06 11:42:26 -05:00
\hline
2018-08-19 06:27:09 -05:00
{ \em net} & The Net to which this \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} belongs. \\
2018-06-06 11:42:26 -05:00
\hline
2018-08-19 06:27:09 -05:00
{ \em layer} & The Layer of the \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\- Contact} . \\
2018-06-06 11:42:26 -05:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2018-08-19 06:27:09 -05:00
The created \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\- Contact\- Turn} .
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-08-19 06:27:09 -05:00
Create a new \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\- Contact\- Turn} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
References Katabatic\- ::\- Cnt\- In\- Creation\- Stage, and Contact\- ::create().
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Referenced by G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- 1\- G\- \_ \- 1\- M3(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- 1\- G\- \_ \- x\- M1(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- x\- G(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- x\- G\- \_ \- 1\- M1\- \_ \- 1\- M2(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- x\- G\- \_ \- 1\- Pad(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- x\- G\- \_ \- x\- M1\- \_ \- x\- M3(), G\- Cell\- Topology\- ::\- \_ \- do\- \_ \- x\- G\- \_ \- x\- M3(), Auto\- Horizontal\- ::\- \_ \- make\- Dogleg(), Auto\- Vertical\- ::\- \_ \- make\- Dogleg(), G\- Cell\- Topology\- ::do\- Rp\- \_ \- \- Access(), G\- Cell\- Topology\- ::do\- Rp\- \_ \- \- Stair\- Case\- H(), G\- Cell\- Topology\- ::do\- Rp\- \_ \- \- Stair\- Case\- V(), and anonymous\- \_ \- namespace\{ \- Load\- Gr\- By\- Net.\- cpp\} \- ::single\- G\- Cell().
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ aaf175a76573a5e3505b24fb2a8b0414f} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !get\- Opposite@{ get\- Opposite} }
\index { get\- Opposite@{ get\- Opposite} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\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_ 1AutoContactTurn_ 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.
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Implements \hyperlink { classKatabatic_ 1_ 1AutoContact_ a48ab1d3bdf85712e4784ef83ef136939} { Auto\- Contact} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a68e80545d3d25400be8f08d059ba21f5} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !get\- Perpandicular@{ get\- Perpandicular} }
\index { get\- Perpandicular@{ get\- Perpandicular} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\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_ 1AutoContactTurn_ 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.
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Implements \hyperlink { classKatabatic_ 1_ 1AutoContact_ a994371005874f946cc0ac78005d38423} { Auto\- Contact} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a2f7d64767002f3bf2bbdf2f8f0e80105} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !get\- Segment@{ get\- Segment} }
\index { get\- Segment@{ get\- Segment} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\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_ 1AutoContactTurn_ a2f7d64767002f3bf2bbdf2f8f0e80105}
{ \bfseries Returns\- :} The nth anchored \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\- Segment} . The index is significant\- :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-08-19 06:27:09 -05:00
\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} ).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-08-19 06:27:09 -05:00
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} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Implements \hyperlink { classKatabatic_ 1_ 1AutoContact_ a50531ded68cc5206fe104b8d8bf3bd87} { Auto\- Contact} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a3e218f6934c51380fb15d0e2bd380071} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !update\- Geometry@{ update\- Geometry} }
\index { update\- Geometry@{ update\- Geometry} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\subsubsection [{update\-Geometry}] { \setlength { \rightskip } { 0pt plus 5cm} void update\- Geometry (
\begin { DoxyParamCaption}
{ }
\end { DoxyParamCaption}
)\hspace { 0.3cm} { \ttfamily [virtual]} } } \label { classKatabatic_ 1_ 1AutoContactTurn_ 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.
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Implements \hyperlink { classKatabatic_ 1_ 1AutoContact_ af6a2454547eeb7f5a519970dcb467e90} { Auto\- Contact} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
References Auto\- Contact\- ::base(), Debug\- Session\- ::close(), Katabatic\- ::\- Cnt\- Invalidated, Auto\- Contact\- ::get\- Net(), Auto\- Contact\- ::get\- X(), Auto\- Contact\- ::get\- Y(), Auto\- Contact\- ::has\- Bad\- Topology(), Go\- ::invalidate(), Auto\- Contact\- ::is\- Invalidated\- Cache(), Debug\- Session\- ::open(), Auto\- Contact\- ::set\- X(), and Auto\- Contact\- ::set\- Y().
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
\hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ af5bf1f5e71204ef84346e4e036175431} { \index { Katabatic\- ::\- Auto\- Contact\- Turn@{ Katabatic\- ::\- Auto\- Contact\- Turn} !update\- Topology@{ update\- Topology} }
\index { update\- Topology@{ update\- Topology} !Katabatic::AutoContactTurn@{ Katabatic\- ::\- Auto\- Contact\- Turn} }
\subsubsection [{update\-Topology}] { \setlength { \rightskip } { 0pt plus 5cm} void update\- Topology (
\begin { DoxyParamCaption}
{ }
\end { DoxyParamCaption}
)\hspace { 0.3cm} { \ttfamily [virtual]} } } \label { classKatabatic_ 1_ 1AutoContactTurn_ af5bf1f5e71204ef84346e4e036175431}
Restore the topology (i.\- e. connexity) of the contact after one or both connected segments has changed layer.
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
Based on the layer depth delta between the two perpandiculars segments. Three case can occurs\- :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item The delta is { \bfseries zero} , then just sets the layer of the contact to the common metal layer (turn in same layer).
2018-08-19 06:27:09 -05:00
\item The delta is { \bfseries one} , then sets the contact layer to V\- I\- A connecting the two layers.
2018-06-06 11:42:26 -05:00
\item The delta { \bfseries cannot be equal to two} , due to the alternatives routing directions, it would mean a { \itshape turn} connecting two { \itshape horizontals} (or verticals) in different layers.
\item The delta is { \bfseries three} , then create a dogleg to restore the connexity. The dogleg will be created on the connected segment which as been { \itshape layer invalidated} . If both of them have been invalidated, the horizontal one is preferred.
\item A delta of more than { \bfseries three} is an error, and must never occurs.
\end { DoxyItemize}
2018-08-19 06:27:09 -05:00
Implements \hyperlink { classKatabatic_ 1_ 1AutoContact_ a690764ddc997fe9766a79c4b8e0c3e2f} { Auto\- Contact} .
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
References Debug\- Session\- ::close(), Katabatic\- ::\- Cnt\- Bad\- Topology, 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\- Contact\- ::has\- Bad\- Topology(), Auto\- Segment\- ::invalidate(), Auto\- Contact\- ::is\- Invalidated\- Cache(), Auto\- Segment\- ::is\- Invalidated\- Layer(), Auto\- Segment\- ::make\- Dogleg(), Debug\- Session\- ::open(), Auto\- Contact\- ::set\- Layer(), and Auto\- Contact\- ::show\- Topology\- Error().
2018-06-06 11:42:26 -05:00
2018-08-19 06:27:09 -05:00
The documentation for this class was generated from the following files\- :\begin { DoxyCompactItemize}
2018-06-06 11:42:26 -05:00
\item
2018-08-19 06:27:09 -05:00
Auto\- Contact\- Turn.\- h\item
Auto\- Contact\- Turn.\- cpp\item
Auto\- Contact\- Turn.\- dox\end { DoxyCompactItemize}