2018-10-18 11:10:01 -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-10-18 11:10:01 -05:00
\mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } Turn (one H, one V)
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -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-10-18 11:10:01 -05:00
virtual \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ ac9c9b04e245a1109e297510a3968b7ac} { get\+ Opposite} } (const \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ ) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ ad99dd549214e43b6509fd8e3aefae919} { get\+ Perpandicular} } (const \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ ) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a99fa8a78e97a29f2fb5730eaaa59acfc} { get\+ Segment} } (unsigned int) const
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a3e218f6934c51380fb15d0e2bd380071} { update\+ Geometry} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
virtual void \mbox { \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-10-18 11:10:01 -05:00
static \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\+ Contact\+ Turn} } $ \ast $ \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3} { create} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , \textbf { Net} $ \ast $ , const \textbf { Layer} $ \ast $ )
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection * { Additional Inherited Members}
\subsection { Detailed Description}
2018-10-18 11:10:01 -05:00
\mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } Turn (one H, one V)
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \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-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3} \label { classKatabatic_ 1_ 1AutoContactTurn_ a9d4adb00ccea486f5478bb24e171bdb3} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !create@{ create} }
\index { create@{ create} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { create()} { create()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\+ Contact\+ Turn} } $ \ast $ create (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { gcell, } \item [{\textbf{ Net} $\ast$}] { net, } \item [{const \textbf{ Layer} $\ast$}] { layer } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [static]} }
2018-06-06 11:42:26 -05:00
\begin { DoxyParams} { Parameters}
2018-10-18 11:10:01 -05:00
{ \em gcell} & The \mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } into which create the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } . \\
2018-06-06 11:42:26 -05:00
\hline
2018-10-18 11:10:01 -05:00
{ \em net} & The Net to which this \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } belongs. \\
2018-06-06 11:42:26 -05:00
\hline
2018-10-18 11:10:01 -05:00
{ \em layer} & The Layer of the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } . \\
2018-06-06 11:42:26 -05:00
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
The created \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\+ Contact\+ Turn} } .
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
Create a new \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTurn} { Auto\+ Contact\+ Turn} } .
References Katabatic\+ ::\+ Cnt\+ In\+ Creation\+ Stage, and Contact\+ ::create().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -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-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ ac9c9b04e245a1109e297510a3968b7ac} \label { classKatabatic_ 1_ 1AutoContactTurn_ ac9c9b04e245a1109e297510a3968b7ac} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !get\+ Opposite@{ get\+ Opposite} }
\index { get\+ Opposite@{ get\+ Opposite} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { get\+ Opposite()} { getOpposite()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ get\+ Opposite (\begin { DoxyParamCaption} \item [{const \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}] { reference } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The other \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } the { \itshape same} direction as { \ttfamily reference} , this is only meaningful on \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactHTee} { Auto\+ Contact\+ H\+ Tee} } or \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactVTee} { Auto\+ Contact\+ V\+ Tee} } . If there is no opposite, { \ttfamily N\+ U\+ LL} is returned.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact_ a48ab1d3bdf85712e4784ef83ef136939} { Auto\+ Contact} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ ad99dd549214e43b6509fd8e3aefae919} \label { classKatabatic_ 1_ 1AutoContactTurn_ ad99dd549214e43b6509fd8e3aefae919} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !get\+ Perpandicular@{ get\+ Perpandicular} }
\index { get\+ Perpandicular@{ get\+ Perpandicular} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { get\+ Perpandicular()} { getPerpandicular()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ get\+ Perpandicular (\begin { DoxyParamCaption} \item [{const \mbox{\hyperlink{classKatabatic_1_1AutoSegment}{Auto\+Segment}} $\ast$}] { reference } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
{ \bfseries Returns\+ :} The \mbox { \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\+ LL} is returned.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact_ a994371005874f946cc0ac78005d38423} { Auto\+ Contact} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a99fa8a78e97a29f2fb5730eaaa59acfc} \label { classKatabatic_ 1_ 1AutoContactTurn_ a99fa8a78e97a29f2fb5730eaaa59acfc} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !get\+ Segment@{ get\+ Segment} }
\index { get\+ Segment@{ get\+ Segment} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { get\+ Segment()} { getSegment()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } $ \ast $ get\+ Segment (\begin { DoxyParamCaption} \item [{unsigned int}] { index } \end { DoxyParamCaption} ) const\hspace { 0.3cm} { \ttfamily [virtual]} }
{ \bfseries Returns\+ :} The nth anchored \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } . The index is significant\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -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-10-18 11:10:01 -05:00
Not all the indexes are filled for every \mbox { \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 \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact_ a50531ded68cc5206fe104b8d8bf3bd87} { Auto\+ Contact} } .
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ a3e218f6934c51380fb15d0e2bd380071} \label { classKatabatic_ 1_ 1AutoContactTurn_ a3e218f6934c51380fb15d0e2bd380071} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !update\+ Geometry@{ update\+ Geometry} }
\index { update\+ Geometry@{ update\+ Geometry} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { update\+ Geometry()} { updateGeometry()} }
{ \footnotesize \ttfamily void update\+ Geometry (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Compute the new position of the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } based on the \mbox { \hyperlink { classKatabatic_ 1_ 1AutoSegment} { Auto\+ Segment} } positions. The \mbox { \hyperlink { classKatabatic_ 1_ 1Session} { Session} } mechanism ensure that all \mbox { \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-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact_ af6a2454547eeb7f5a519970dcb467e90} { Auto\+ Contact} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -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-10-18 11:10:01 -05:00
\mbox { \Hypertarget { classKatabatic_ 1_ 1AutoContactTurn_ af5bf1f5e71204ef84346e4e036175431} \label { classKatabatic_ 1_ 1AutoContactTurn_ af5bf1f5e71204ef84346e4e036175431} }
\index { Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} !update\+ Topology@{ update\+ Topology} }
\index { update\+ Topology@{ update\+ Topology} !Katabatic\+ ::\+ Auto\+ Contact\+ Turn@{ Katabatic\+ ::\+ Auto\+ Contact\+ Turn} }
\subsubsection { \texorpdfstring { update\+ Topology()} { updateTopology()} }
{ \footnotesize \ttfamily void update\+ Topology (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [virtual]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
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-10-18 11:10:01 -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-10-18 11:10:01 -05:00
\item The delta is { \bfseries one} , then sets the contact layer to V\+ IA 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-10-18 11:10:01 -05:00
Implements \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact_ a690764ddc997fe9766a79c4b8e0c3e2f} { Auto\+ Contact} } .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -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-10-18 11:10:01 -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-10-18 11:10:01 -05:00
Auto\+ Contact\+ Turn.\+ h\item
Auto\+ Contact\+ Turn.\+ cpp\item
Auto\+ Contact\+ Turn.\+ dox\end { DoxyCompactItemize}