2018-10-18 11:10:01 -05:00
\hypertarget { group_ _ LoadGlobalRouting} { } \section { Global Routing Loading}
2018-06-06 11:42:26 -05:00
\label { group_ _ LoadGlobalRouting} \index { Global Routing Loading@{ Global Routing Loading} }
Translation rules to build detailed routing from global.
\subsection * { Classes}
\begin { DoxyCompactItemize}
\item
2018-10-18 11:10:01 -05:00
class \mbox { \hyperlink { classanonymous_ _ namespace_ 02LoadGrByNet_ 8cpp_ 03_ 1_ 1GCellTopology} { G\+ Cell\+ Topology} }
\begin { DoxyCompactList} \small \item \em Build the wiring for a Net inside a G\+ Cell ({ \bfseries internal} ). \end { DoxyCompactList} \end { DoxyCompactItemize}
2018-06-06 11:42:26 -05:00
\subsection * { Enumerations}
\begin { DoxyCompactItemize}
\item
2018-10-18 11:10:01 -05:00
enum \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaec07c7f30c801c3b0f72193757250d64} { Local\+ Function\+ Flag} } \{ \newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64add44bf8d6f7bbe1393d76b940b85294b} { No\+ Flags} } = 0x00000000
, \newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a5c3692a6c886c6293a3c9f240b60a5d9} { H\+ Access} } = 0x00000002,
\newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a260f6bf57246879aed7febfe83c9dacc} { V\+ Small} } = 0x00000004,
\newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64af1a4f1cb841460f20d26dcf902247fb8} { H\+ Small} } = 0x00000008,
\newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a65b52a199afe857e3d551dbac8b293b9} { Punctual} } = 0x00000010
, \newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aece46caaf822b33d7db94bb2dd16a30d} { Do\+ Source\+ Contact} } = 0x00000100,
\newline
\mbox { \hyperlink { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aeb33c01c5e62df73de6b11888b17a5f2} { Do\+ Target\+ Contact} } = 0x00000200
2018-06-06 11:42:26 -05:00
\}
\end { DoxyCompactItemize}
\subsection * { Functions}
\begin { DoxyCompactItemize}
\item
2018-10-18 11:10:01 -05:00
unsigned int \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaad5d32b07d1d53ecc8642e4b10df9605} { check\+ Routing\+ Pad\+ Size} } (\textbf { Component} $ \ast $ anchor)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
static void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gae9cae408ea16a3f7c77c3d75f0242f19} { do\+ Rp\+ \_ \+ \+ Auto\+ Contacts} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , \textbf { Component} $ \ast $ , \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ \& source, \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ \& target, unsigned int flags)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
static \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gada6d3c694b8d741b6504b7c3da166357} { do\+ Rp\+ \_ \+ \+ Access} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , \textbf { Component} $ \ast $ , unsigned int flags)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
static \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga60edeea78b56db072fc26a58a7afbcd4} { do\+ Rp\+ \_ \+ \+ Access\+ Pad} } (\textbf { Routing\+ Pad} $ \ast $ , unsigned int flags)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
static void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga3291d84592215974fe4052c00304bdb1} { do\+ Rp\+ \_ \+ \+ Stair\+ CaseH} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , \textbf { Component} $ \ast $ rp1, \textbf { Component} $ \ast $ rp2)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
static void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga6361fb0e90f35cd59063a1ee971ef2a9} { do\+ Rp\+ \_ \+ \+ Stair\+ CaseV} } (\mbox { \hyperlink { classKatabatic_ 1_ 1GCell} { G\+ Cell} } $ \ast $ , \textbf { Component} $ \ast $ rp1, \textbf { Component} $ \ast $ rp2)
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gabe00ab10a0dab8a3d2de0709e61e4e7d} { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaaa6d4ccd2eadfb6bc3e2cc98cfaf2cca} { \+ \_ \+ do\+ \_ \+ xG} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gad24a03e87e269f16dcc28d8c2d9f1cfb} { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga97942453a1bc5b01106aa380271fd7fc} { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gae60ed4e27ad89a1e2ff2cd6415ef33f1} { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaf9b009520f54099668ac9d12f2c85257} { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga532d1c6b530e0375078ea2d6ea3c6024} { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga2519ef984b3d19f123827a9b12651672} { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga007efc725aae31782204a44949765cb4} { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3} } ()
2018-06-06 11:42:26 -05:00
\item
2018-10-18 11:10:01 -05:00
void \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga3973291866b39c10cea5ca17f7d174fb} { single\+ G\+ Cell} } (\mbox { \hyperlink { classKatabatic_ 1_ 1KatabaticEngine} { Katabatic\+ Engine} } $ \ast $ ktbt, \textbf { Net} $ \ast $ net)
2018-06-06 11:42:26 -05:00
\end { DoxyCompactItemize}
\subsection { Detailed Description}
2018-10-18 11:10:01 -05:00
Translation rules to build detailed routing from global.
This module documents how the global routing built by { \ttfamily Knik} is loaded into the { \ttfamily \mbox { \hyperlink { namespaceKatabatic} { Katabatic} } } data-\/ base. It is intented for developpers only.
2018-06-06 11:42:26 -05:00
\subsection { Enumeration Type Documentation}
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gaec07c7f30c801c3b0f72193757250d64} \label { group_ _ LoadGlobalRouting_ gaec07c7f30c801c3b0f72193757250d64} }
\index { Global Routing Loading@{ Global Routing Loading} !Local\+ Function\+ Flag@{ Local\+ Function\+ Flag} }
\index { Local\+ Function\+ Flag@{ Local\+ Function\+ Flag} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { Local\+ Function\+ Flag} { LocalFunctionFlag} }
{ \footnotesize \ttfamily enum \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaec07c7f30c801c3b0f72193757250d64} { Local\+ Function\+ Flag} } }
A set of flags for all functions of the Load\+ Gr\+ By\+ Net module. They can be combined to form the { \itshape flags} argument of functions. the functions will ignore flags that are not intended to them.
For { \ttfamily H\+ Small} , { \ttfamily V\+ Small} \& { \ttfamily Punctual} see \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaad5d32b07d1d53ecc8642e4b10df9605} { check\+ Routing\+ Pad\+ Size()} } . \begin { DoxyEnumFields} { Enumerator}
\raisebox { \heightof { T} } [0pt][0pt]{ \index { No\+ Flags@{ No\+ Flags} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !No\+ Flags@{ No\+ Flags} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64add44bf8d6f7bbe1393d76b940b85294b} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64add44bf8d6f7bbe1393d76b940b85294b} }
No\+ Flags& A simple alias over zero to explicitly tell that no flag at all is passed to the function. \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { H\+ Access@{ H\+ Access} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !H\+ Access@{ H\+ Access} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a5c3692a6c886c6293a3c9f240b60a5d9} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a5c3692a6c886c6293a3c9f240b60a5d9} }
H\+ Access& 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. \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { V\+ Small@{ V\+ Small} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !V\+ Small@{ V\+ Small} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a260f6bf57246879aed7febfe83c9dacc} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a260f6bf57246879aed7febfe83c9dacc} }
V\+ Small& The Routing\+ Pad vertically covers a very small number of access points, so it is likely overconstrained for direct horizontal connexion. \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { H\+ Small@{ H\+ Small} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !H\+ Small@{ H\+ Small} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64af1a4f1cb841460f20d26dcf902247fb8} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64af1a4f1cb841460f20d26dcf902247fb8} }
H\+ Small& The Routing\+ Pad horizontally covers a very small number of access points, so it is likely overconstrained for direct vertical connexion. \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { Punctual@{ Punctual} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !Punctual@{ Punctual} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a65b52a199afe857e3d551dbac8b293b9} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64a65b52a199afe857e3d551dbac8b293b9} }
Punctual& The Routing\+ Pad covers only an access point in either direction. \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { Do\+ Source\+ Contact@{ Do\+ Source\+ Contact} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !Do\+ Source\+ Contact@{ Do\+ Source\+ Contact} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aece46caaf822b33d7db94bb2dd16a30d} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aece46caaf822b33d7db94bb2dd16a30d} }
Do\+ Source\+ Contact& When creating \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTerminal} { Katabatic\+ ::\+ Auto\+ Contact\+ Terminal} } on non-\/ punctual Routing\+ Pad, this flag request the creation of a contact { \itshape on the source point} . \\
\hline
\raisebox { \heightof { T} } [0pt][0pt]{ \index { Do\+ Target\+ Contact@{ Do\+ Target\+ Contact} !Global Routing Loading@{ Global Routing Loading} } \index { Global Routing Loading@{ Global Routing Loading} !Do\+ Target\+ Contact@{ Do\+ Target\+ Contact} } } \mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aeb33c01c5e62df73de6b11888b17a5f2} \label { group_ _ LoadGlobalRouting_ ggaec07c7f30c801c3b0f72193757250d64aeb33c01c5e62df73de6b11888b17a5f2} }
Do\+ Target\+ Contact& When creating \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTerminal} { Katabatic\+ ::\+ Auto\+ Contact\+ Terminal} } on non-\/ punctual Routing\+ Pad, this flag request the creation of a contact { \itshape on the target point} . \\
\hline
\end { DoxyEnumFields}
2018-06-06 11:42:26 -05:00
\subsection { Function Documentation}
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gaad5d32b07d1d53ecc8642e4b10df9605} \label { group_ _ LoadGlobalRouting_ gaad5d32b07d1d53ecc8642e4b10df9605} }
\index { Global Routing Loading@{ Global Routing Loading} !check\+ Routing\+ Pad\+ Size@{ check\+ Routing\+ Pad\+ Size} }
\index { check\+ Routing\+ Pad\+ Size@{ check\+ Routing\+ Pad\+ Size} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { check\+ Routing\+ Pad\+ Size()} { checkRoutingPadSize()} }
{ \footnotesize \ttfamily unsigned int check\+ Routing\+ Pad\+ Size (\begin { DoxyParamCaption} \item [{\textbf{ Component} $\ast$}] { rp } \end { DoxyParamCaption} )}
Look at the geometrical size of the Component and assess if it\textquotesingle { } s span is too narrow either horizontally or vertically. Return a combination of flags indicating it\textquotesingle { } s state\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item H\+ Small \+ : less than 3 pitches in horizontal direction.
\item V\+ Small \+ : less than 3 pitches in vertical direction.
\item Punctual \+ : one pitch in either directions.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
The component can be a Routing\+ Pad, a Vertical or an Horizontal.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Component\+ ::get\+ Layer(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Small, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Punctual, to\+ Lambda(), and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ V\+ Small.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Referenced by G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gae9cae408ea16a3f7c77c3d75f0242f19} \label { group_ _ LoadGlobalRouting_ gae9cae408ea16a3f7c77c3d75f0242f19} }
\index { Global Routing Loading@{ Global Routing Loading} !do\+ Rp\+ \_ \+ \+ Auto\+ Contacts@{ do\+ Rp\+ \_ \+ \+ Auto\+ Contacts} }
\index { do\+ Rp\+ \_ \+ \+ Auto\+ Contacts@{ do\+ Rp\+ \_ \+ \+ Auto\+ Contacts} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { do\+ Rp\+ \_ \+ \+ Auto\+ Contacts()} { doRp\_ AutoContacts()} }
{ \footnotesize \ttfamily void do\+ Rp\+ \_ \+ \+ Auto\+ Contacts (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { gcell, } \item [{\textbf{ Component} $\ast$}] { rp, } \item [{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$\&}] { source, } \item [{\mbox{\hyperlink{classKatabatic_1_1AutoContact}{Auto\+Contact}} $\ast$\&}] { target, } \item [{unsigned int}] { flags } \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 G\+ Cell into which create the Auto\+ Contact. \\
2018-06-06 11:42:26 -05:00
\hline
{ \em rp} & The Component we want to access. \\
\hline
2018-10-18 11:10:01 -05:00
{ \em source} & The Auto\+ Contact created on the { \ttfamily source} ({ \itshape returned} ). \\
2018-06-06 11:42:26 -05:00
\hline
2018-10-18 11:10:01 -05:00
{ \em target} & The Auto\+ Contact created on the { \ttfamily target} ({ \itshape returned} ). \\
2018-06-06 11:42:26 -05:00
\hline
2018-10-18 11:10:01 -05:00
{ \em flags} & Managed by this function\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item Local\+ Function\+ Flag\+ ::\+ Do\+ Source\+ Contact
\item Local\+ Function\+ Flag\+ ::\+ Do\+ Target\+ Contact
2018-06-06 11:42:26 -05:00
\end { DoxyItemize} \\
\hline
\end { DoxyParams}
2018-10-18 11:10:01 -05:00
Create the Auto\+ Contact directly anchored on the Component (terminal). Three cases are manageds\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyEnumerate}
2018-10-18 11:10:01 -05:00
\item { \bfseries Ordinary (non-\/ punctual) { \ttfamily M\+ E\+ T\+ A\+ L1} terminal} \+ : an Auto\+ Contact\+ Terminal is anchored on the Routing\+ Pad.
\item { \bfseries Punctual { \ttfamily M\+ E\+ T\+ A\+ L1} terminal} , the access must never be blocked by other routing. To ensure it, we create a fixed Auto\+ Segment (anchored on two Auto\+ Contact\+ Terminal) to cover it. The { \itshape normal} Auto\+ Contact\+ Terminal is also created.
\item { \bfseries non { \ttfamily M\+ E\+ T\+ A\+ L1} terminal} , as for the punctual { \ttfamily M\+ E\+ T\+ A\+ L1} , a fixed protection is added over the Routing\+ Pad. If we access horizontally a vertical Routing\+ Pad or vertically an horizontal one, an extra Auto\+ Contact\+ Terminal is added (to allow is displacement along the Routing\+ Pad).
2018-06-06 11:42:26 -05:00
\end { DoxyEnumerate}
2018-10-18 11:10:01 -05:00
To avoid creating a fixed protection over a Routing\+ Pad multiple times, the Routing\+ Pad and it\textquotesingle { } s associated protection is stored in a static { \ttfamily map} \+ : { \ttfamily \+ \_ \+ \+ \_ \+ routing\+ Pad\+ Auto\+ Segments} .
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Conversely, because an Auto\+ Contact\+ Terminal 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 Auto\+ Contact is requested, it is created centered on the Routing\+ Pad. The initial position of Auto\+ Contact { \itshape do not prevent them to move afterwards} , even those created on source/target on a non-\/ punctual Routing\+ Pad.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\begin { DoxyParagraph} { Remark\+ : For clarity we describe the layer management of this function in term}
of { \ttfamily M\+ E\+ T\+ AL} , but it is the Routing\+ Gauge depth which is actually used.
2018-06-06 11:42:26 -05:00
\end { DoxyParagraph}
2018-10-18 11:10:01 -05:00
References Katabatic\+ ::\+ Cnt\+ Fixed, Auto\+ Contact\+ Terminal\+ ::create(), Auto\+ Segment\+ ::create(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Grid$ < $ G\+ Cell\+ T $ > $ \+ ::get\+ G\+ Cell(), Katabatic\+ Engine\+ ::get\+ G\+ Cell\+ Grid(), Session\+ ::get\+ Katabatic(), Component\+ ::get\+ Layer(), Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Seg\+ Fixed, and Auto\+ Segment\+ ::set\+ Flags().
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\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3(), 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 { group_ _ LoadGlobalRouting_ gada6d3c694b8d741b6504b7c3da166357} \label { group_ _ LoadGlobalRouting_ gada6d3c694b8d741b6504b7c3da166357} }
\index { Global Routing Loading@{ Global Routing Loading} !do\+ Rp\+ \_ \+ \+ Access@{ do\+ Rp\+ \_ \+ \+ Access} }
\index { do\+ Rp\+ \_ \+ \+ Access@{ do\+ Rp\+ \_ \+ \+ Access} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { do\+ Rp\+ \_ \+ \+ Access()} { doRp\_ Access()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ do\+ Rp\+ \_ \+ \+ Access (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { gcell, } \item [{\textbf{ Component} $\ast$}] { rp, } \item [{unsigned int}] { flags } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [static]} }
2018-08-19 06:27:09 -05:00
2018-06-06 11:42:26 -05:00
\begin { DoxyParams} { Parameters}
2018-10-18 11:10:01 -05:00
{ \em gcell} & The G\+ Cell into which create the Auto\+ Contact. \\
2018-06-06 11:42:26 -05:00
\hline
{ \em rp} & The Component onto which anchor the access contact. \\
\hline
2018-10-18 11:10:01 -05:00
{ \em flags} & Relevant flags are\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item H\+ Access, the terminal is to be accessed through an horizontal segment.
\item V\+ Small, force the terminal to be considered as small in the vertical direction.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize} \\
\hline
\end { DoxyParams}
2018-10-18 11:10:01 -05:00
If { \ttfamily H\+ Access} is set, the Component is to be accessed trough an horizontal segment. If unset, the access is done vertically.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Create an Auto\+ Contact 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 { \ttfamily V\+ Small} ), a local horizontal Auto\+ Segment is added to slacken the vertical constraints.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::check\+ Routing\+ Pad\+ Size(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), Session\+ ::get\+ Contact\+ Layer(), Component\+ ::get\+ Net(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Small, Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ V\+ Small.
2018-08-19 06:27:09 -05:00
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\+ M1(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3(), G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2(), and G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3().
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga60edeea78b56db072fc26a58a7afbcd4} \label { group_ _ LoadGlobalRouting_ ga60edeea78b56db072fc26a58a7afbcd4} }
\index { Global Routing Loading@{ Global Routing Loading} !do\+ Rp\+ \_ \+ \+ Access\+ Pad@{ do\+ Rp\+ \_ \+ \+ Access\+ Pad} }
\index { do\+ Rp\+ \_ \+ \+ Access\+ Pad@{ do\+ Rp\+ \_ \+ \+ Access\+ Pad} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { do\+ Rp\+ \_ \+ \+ Access\+ Pad()} { doRp\_ AccessPad()} }
{ \footnotesize \ttfamily \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContact} { Auto\+ Contact} } $ \ast $ do\+ Rp\+ \_ \+ \+ Access\+ Pad (\begin { DoxyParamCaption} \item [{\textbf{ Routing\+Pad} $\ast$}] { rp, } \item [{unsigned int}] { flags } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [static]} }
2018-08-19 06:27:09 -05:00
2018-06-06 11:42:26 -05:00
\begin { DoxyParams} { Parameters}
{ \em rp} & The Component onto which anchor the access contact. \\
\hline
2018-10-18 11:10:01 -05:00
{ \em flags} & Relevant flags are\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item H\+ Access, the terminal is to be accessed through an horizontal segment.
\item V\+ Small, force the terminal to be considered as small in the vertical direction.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize} \\
\hline
\end { DoxyParams}
\begin { DoxyReturn} { Returns}
2018-10-18 11:10:01 -05:00
A \mbox { \hyperlink { classKatabatic_ 1_ 1AutoContactTerminal} { Katabatic\+ ::\+ Auto\+ Contact\+ Terminal} } .
2018-06-06 11:42:26 -05:00
\end { DoxyReturn}
2018-10-18 11:10:01 -05:00
The Component { \ttfamily rp} is a Routing\+ Pad which belongs to a pad cell. This case occurs when we are routing a complete chip. This method build, from the { \ttfamily rp} a stack of articulated punctual segments and contacts to reach the default H/V routing layers (usually { \ttfamily M\+ E\+ T\+ A\+ L2} \& { \ttfamily M\+ E\+ T\+ A\+ L3} ). This may be needed when the pad terminal is in { \ttfamily M\+ E\+ T\+ A\+ L5} , for instance.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
The returned Auto\+ Contact\+ Terminal is anchored on the last punctual segment build.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
The G\+ Cell into which the Auto\+ Contact\+ Terminal is created may be under the pads area. However, it will be right on the border of the G\+ Cell. The global router vertexes of G\+ Cell under the pad area are marked as blocked so will never be used for routing.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\begin { DoxyParagraph} { Remark\+ : The segments and contacts added to ensure the layer connexity are not}
put into the \mbox { \hyperlink { namespaceKatabatic} { Katabatic} } database. They are plain Hurricane objects, invisibles from it.
2018-06-06 11:42:26 -05:00
\end { DoxyParagraph}
2018-10-18 11:10:01 -05:00
References Contact\+ ::create(), Horizontal\+ ::create(), Vertical\+ ::create(), Auto\+ Contact\+ Terminal\+ ::create(), Hook\+ ::detach(), Component\+ ::get\+ Body\+ Hook(), Routing\+ Pad\+ ::get\+ Bounding\+ Box(), Routing\+ Pad\+ ::get\+ Center(), Session\+ ::get\+ Contact\+ Layer(), Grid$ < $ G\+ Cell\+ T $ > $ \+ ::get\+ G\+ Cell(), Katabatic\+ Engine\+ ::get\+ G\+ Cell\+ Grid(), Box\+ ::get\+ Height(), Session\+ ::get\+ Katabatic(), Routing\+ Pad\+ ::get\+ Layer(), Component\+ ::get\+ Net(), Routing\+ Pad\+ ::get\+ Occurrence(), Transformation\+ ::get\+ Orientation(), Occurrence\+ ::get\+ Path(), Session\+ ::get\+ Routing\+ Layer(), Path\+ ::get\+ Transformation(), Box\+ ::get\+ Width(), Box\+ ::get\+ X\+ Max(), Box\+ ::get\+ X\+ Min(), Box\+ ::get\+ Y\+ Max(), Box\+ ::get\+ Y\+ Min(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, Point\+ ::set\+ X(), and Point\+ ::set\+ Y().
2018-08-19 06:27:09 -05:00
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Referenced by G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga3291d84592215974fe4052c00304bdb1} \label { group_ _ LoadGlobalRouting_ ga3291d84592215974fe4052c00304bdb1} }
\index { Global Routing Loading@{ Global Routing Loading} !do\+ Rp\+ \_ \+ \+ Stair\+ CaseH@{ do\+ Rp\+ \_ \+ \+ Stair\+ CaseH} }
\index { do\+ Rp\+ \_ \+ \+ Stair\+ CaseH@{ do\+ Rp\+ \_ \+ \+ Stair\+ CaseH} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { do\+ Rp\+ \_ \+ \+ Stair\+ Case\+ H()} { doRp\_ StairCaseH()} }
{ \footnotesize \ttfamily void do\+ Rp\+ \_ \+ \+ Stair\+ CaseH (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { gcell, } \item [{\textbf{ Component} $\ast$}] { rp1, } \item [{\textbf{ Component} $\ast$}] { rp2 } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [static]} }
2018-08-19 06:27:09 -05:00
2018-10-18 11:10:01 -05:00
Build the wiring to connect to horizontal Component. Two cases\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item The Component are aligneds, then only a straight wire is created.
\item They are { \itshape not} aligned, then a complete dogleg is created.
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Component\+ ::get\+ Layer(), Component\+ ::get\+ Net(), Component\+ ::get\+ X(), Auto\+ Contact\+ ::get\+ Y(), Katabatic\+ ::\+ Kb\+ Horizontal, and Katabatic\+ ::\+ Kb\+ Vertical.
2018-08-19 06:27:09 -05:00
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Referenced by G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2().
2018-08-19 06:27:09 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga6361fb0e90f35cd59063a1ee971ef2a9} \label { group_ _ LoadGlobalRouting_ ga6361fb0e90f35cd59063a1ee971ef2a9} }
\index { Global Routing Loading@{ Global Routing Loading} !do\+ Rp\+ \_ \+ \+ Stair\+ CaseV@{ do\+ Rp\+ \_ \+ \+ Stair\+ CaseV} }
\index { do\+ Rp\+ \_ \+ \+ Stair\+ CaseV@{ do\+ Rp\+ \_ \+ \+ Stair\+ CaseV} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { do\+ Rp\+ \_ \+ \+ Stair\+ Case\+ V()} { doRp\_ StairCaseV()} }
{ \footnotesize \ttfamily void do\+ Rp\+ \_ \+ \+ Stair\+ CaseV (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1GCell}{G\+Cell}} $\ast$}] { gcell, } \item [{\textbf{ Component} $\ast$}] { rp1, } \item [{\textbf{ Component} $\ast$}] { rp2 } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [static]} }
Build the wiring to connect to vertical Components. Two cases\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item The Components are aligneds, then only a straight wire is created.
\item They are { \itshape not} aligned, then a complete dogleg is created.
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Component\+ ::get\+ Layer(), Component\+ ::get\+ Net(), Auto\+ Contact\+ ::get\+ X(), Component\+ ::get\+ Y(), Katabatic\+ ::\+ Kb\+ Horizontal, and Katabatic\+ ::\+ Kb\+ Vertical.
2018-08-19 06:27:09 -05:00
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Referenced by G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gabe00ab10a0dab8a3d2de0709e61e4e7d} \label { group_ _ LoadGlobalRouting_ gabe00ab10a0dab8a3d2de0709e61e4e7d} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad} }
\index { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad()} { \_ do\_ xG\_ 1Pad()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
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 G\+ Cell they can be considered as a kind of global.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
So this method mostly calls \mbox { \hyperlink { group_ _ LoadGlobalRouting_ ga60edeea78b56db072fc26a58a7afbcd4} { G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access\+ Pad()} } to create the Auto\+ Contact\+ Terminal, then calls \mbox { \hyperlink { group_ _ LoadGlobalRouting_ gaaa6d4ccd2eadfb6bc3e2cc98cfaf2cca} { G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G()} } , except for straight lines which are managed directly.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access\+ Pad(), Auto\+ Contact\+ ::get\+ Body\+ Hook(), Session\+ ::get\+ Contact\+ Layer(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gaaa6d4ccd2eadfb6bc3e2cc98cfaf2cca} \label { group_ _ LoadGlobalRouting_ gaaa6d4ccd2eadfb6bc3e2cc98cfaf2cca} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ xG@{ \+ \_ \+ do\+ \_ \+ xG} }
\index { \+ \_ \+ do\+ \_ \+ xG@{ \+ \_ \+ do\+ \_ \+ xG} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G()} { \_ do\_ xG()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ xG (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
Construct the topology, when there is only global wires (no local terminals).
2018-10-18 11:10:01 -05:00
Some topology are not handled because they must not be managed by this function\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item One global\+ : nonsensical because there also must be a terminal.
\item Two aligned globals\+ : in that case we do a straight wire whithout any Auto\+ Contact (handled by the source/target of the wire).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ V\+ Tee\+ ::create(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Contact\+ H\+ Tee\+ ::create(), Auto\+ Segment\+ ::create(), Session\+ ::get\+ Contact\+ Layer(), Katabatic\+ ::\+ Kb\+ Horizontal, and Katabatic\+ ::\+ Kb\+ Vertical.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Referenced by G\+ Cell\+ Topology\+ ::\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ Pad().
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gad24a03e87e269f16dcc28d8c2d9f1cfb} \label { group_ _ LoadGlobalRouting_ gad24a03e87e269f16dcc28d8c2d9f1cfb} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1} }
\index { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1()} { \_ do\_ 1G\_ 1M1()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M1 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-08-19 06:27:09 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is { \itshape one} global and one Routing\+ Pad in { \ttfamily M\+ E\+ T\+ A\+ L1} . The { \ttfamily M\+ E\+ T\+ A\+ L1} is assumed to be vertical.
2018-08-19 06:27:09 -05:00
2018-10-18 11:10:01 -05:00
\begin { DoxyParagraph} { Remark\+ : When accessing the Routing\+ Pad through an horizontal global segment}
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.
2018-06-06 11:42:26 -05:00
\end { DoxyParagraph}
2018-10-18 11:10:01 -05:00
References G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ V\+ Small.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga97942453a1bc5b01106aa380271fd7fc} \label { group_ _ LoadGlobalRouting_ ga97942453a1bc5b01106aa380271fd7fc} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1} }
\index { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1()} { \_ do\_ 1G\_ xM1()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ x\+ M1 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is { \itshape one} global and any number of Routing\+ Pad in { \ttfamily M\+ E\+ T\+ A\+ L1} . The { \ttfamily M\+ E\+ T\+ A\+ L1} is assumed to be vertical.
The Routing\+ Pads 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 Routing\+ Pad itself. The global incoming segment will connected to the leftmost, rightmost or centermost Routing\+ Pad according from wich side it comes from.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access(), Component\+ ::get\+ Bounding\+ Box(), Session\+ ::get\+ Contact\+ Layer(), Box\+ ::get\+ Height(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gae60ed4e27ad89a1e2ff2cd6415ef33f1} \label { group_ _ LoadGlobalRouting_ gae60ed4e27ad89a1e2ff2cd6415ef33f1} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2} }
\index { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2()} { \_ do\_ xG\_ 1M1\_ 1M2()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ 1\+ M1\+ \_ \+ 1\+ M2 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is at least one global (and up to 4), one { \ttfamily M\+ E\+ T\+ A\+ L1} Routing\+ Pad (assumed V) and one { \ttfamily M\+ E\+ T\+ A\+ L2} Routing\+ Pad (assumed H).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
In this topology, we want to try to reuse the { \ttfamily M\+ E\+ T\+ A\+ L2} Routing\+ Pad as a feedtrough in the horizontal routage. Thus\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The { \ttfamily M\+ E\+ T\+ A\+ L1} and { \ttfamily M\+ E\+ T\+ A\+ L2} Routing\+ Pad are connected through a separate wiring.
\item The south \& west global wiring is attached to the leftmost contact of the { \ttfamily M\+ E\+ T\+ A\+ L2} .
\item The north \& east global wiring is attached to the rightmost contact of the { \ttfamily M\+ E\+ T\+ A\+ L2} .
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item Nothing (no south nor west).
2018-10-18 11:10:01 -05:00
\item An Auto\+ Contact (west present).
2018-06-06 11:42:26 -05:00
\item An horizontal plus a turn (south present).
2018-10-18 11:10:01 -05:00
\item An horizontal plus a H\+ Tee (south \& west present).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
\begin { DoxyParagraph} { Remark\+ : Not all configurations are represented below.}
2018-06-06 11:42:26 -05:00
\end { DoxyParagraph}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Contact\+ H\+ Tee\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Session\+ ::get\+ Routing\+ Layer(), Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ gaf9b009520f54099668ac9d12f2c85257} \label { group_ _ LoadGlobalRouting_ gaf9b009520f54099668ac9d12f2c85257} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3} }
\index { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3()} { \_ do\_ xG\_ xM1\_ xM3()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M1\+ \_ \+ x\+ M3 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is at least one global (and up to 4), at least one { \ttfamily M\+ E\+ T\+ A\+ L1} Routing\+ Pad (assumed V) and at least one { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad (assumed V).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
In this topology, we want to try to reuse the { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad as a feedtrough in the vertical routage. Thus\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The { \ttfamily M\+ E\+ T\+ A\+ L1} and { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad are connected through a separate wiring made of separate horizontals.
\item The south-\/ west global wiring is attached to the leftmost Routing\+ Pad if there isn\textquotesingle { } t south or to the first { \ttfamily M\+ E\+ T\+ A\+ L3} otherwise.
\item The north-\/ east global wiring is attached to the rightmost Routing\+ Pad if there isn\textquotesingle { } t north or to the first { \ttfamily M\+ E\+ T\+ A\+ L3} otherwise.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item Nothing (no south nor west).
2018-10-18 11:10:01 -05:00
\item An Auto\+ Contact on the leftmost Routing\+ Pad (west present).
\item An Auto\+ Contact on the first { \ttfamily M\+ E\+ T\+ A\+ L3} (only south present).
\item An Auto\+ Contact plus a vertical plus a V\+ Tee (south \& west present).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ V\+ Tee\+ ::create(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Contact\+ H\+ Tee\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Component\+ ::get\+ Bounding\+ Box(), Session\+ ::get\+ Contact\+ Layer(), Box\+ ::get\+ Height(), Session\+ ::get\+ Routing\+ Layer(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga532d1c6b530e0375078ea2d6ea3c6024} \label { group_ _ LoadGlobalRouting_ ga532d1c6b530e0375078ea2d6ea3c6024} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2} }
\index { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2()} { \_ do\_ xG\_ xM2()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M2 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is at least one global (and up to 4), and any number of { \ttfamily M\+ E\+ T\+ A\+ L2} Routing\+ Pads (assumeds H).
In this topology, we want to try to reuse the { \ttfamily M\+ E\+ T\+ A\+ L2} Routing\+ Pad as a feedtrough in the horizontal routage. Thus\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item The Routing\+ Pad are connecteds trough a separate staircase (or straight wire if aligneds).
\item The south-\/ west global wiring is attached to the leftmost Routing\+ Pad if there isn\textquotesingle { } t south or to the biggest horizontal Routing\+ Pad otherwise.
\item The north-\/ east global wiring is attached to the rightmost Routing\+ Pad if there isn\textquotesingle { } t south or to the biggest horizontal Routing\+ Pad otherwise.
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ V\+ Tee\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Stair\+ Case\+ H(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, Component\+ ::get\+ Bounding\+ Box(), Session\+ ::get\+ Contact\+ Layer(), Box\+ ::get\+ Width(), Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga2519ef984b3d19f123827a9b12651672} \label { group_ _ LoadGlobalRouting_ ga2519ef984b3d19f123827a9b12651672} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3} }
\index { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3@{ \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3()} { \_ do\_ 1G\_ 1M3()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ 1\+ G\+ \_ \+ 1\+ M3 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there is one global and one { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad (assumeds V).
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
In this topology, we reuse the { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad as a feedtrough in the vertical routage. Thus\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item If the global is either north or south, we directly connect to the north end or south end of the Routing\+ Pad. The vertical global will have no slack at all we assume that M\+ E\+ T\+ A\+ L3 terminals are only from blocks and are aligneds vertically.
\item If the global is east or west { \itshape and} the Routing\+ Pad is sufficiently extended in the vertical direction, we connect an horizontal in the normal way.
2018-06-06 11:42:26 -05:00
\item If the global is not sufficiently extended, we add a turn to give some slack to the global.
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Auto\+ Contact\+ ::get\+ X(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga007efc725aae31782204a44949765cb4} \label { group_ _ LoadGlobalRouting_ ga007efc725aae31782204a44949765cb4} }
\index { Global Routing Loading@{ Global Routing Loading} !\+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3} }
\index { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3@{ \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3()} { \_ do\_ xG\_ xM3()} }
{ \footnotesize \ttfamily void \+ \_ \+ do\+ \_ \+ x\+ G\+ \_ \+ x\+ M3 (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [private]} }
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
Construct a topology where there at least one global and two { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad (assumed V).
In this topology, we reuse the { \ttfamily M\+ E\+ T\+ A\+ L3} Routing\+ Pad as a feedtrough in the vertical routage. We assume that the most likely relative position of the Routing\+ Pads is to be aligned vertically. Thus\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
2018-10-18 11:10:01 -05:00
\item All Routing\+ Pads are linked two by two trough vertical staircases.
\item The south-\/ west global wiring is attached to the bottommost Routing\+ Pad (without vertical slack). If a misalignment is detected, then a dogleg is added.
\item The north-\/ east global wiring is attached to the topmost Routing\+ Pad (without vertical slack).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
South/west and north/south can be build independantly. Depending on the number of globals, they can consist of\+ :
2018-06-06 11:42:26 -05:00
\begin { DoxyItemize}
\item Nothing (no south nor west).
2018-10-18 11:10:01 -05:00
\item An sliding Auto\+ Contact on the bottommost Routing\+ Pad (west present).
\item An fixed Auto\+ Contact on the bottommost Routing\+ Pad (only south present).
\item An fixed Auto\+ Contact plus a vertical plus a V\+ Tee (south \& west present).
2018-06-06 11:42:26 -05:00
\end { DoxyItemize}
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ V\+ Tee\+ ::create(), Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Access(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Stair\+ Case\+ V(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Target\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Db\+ U\+ ::get\+ Value\+ String(), Auto\+ Contact\+ ::get\+ X(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ H\+ Access, Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
\mbox { \Hypertarget { group_ _ LoadGlobalRouting_ ga3973291866b39c10cea5ca17f7d174fb} \label { group_ _ LoadGlobalRouting_ ga3973291866b39c10cea5ca17f7d174fb} }
\index { Global Routing Loading@{ Global Routing Loading} !single\+ G\+ Cell@{ single\+ G\+ Cell} }
\index { single\+ G\+ Cell@{ single\+ G\+ Cell} !Global Routing Loading@{ Global Routing Loading} }
\subsubsection { \texorpdfstring { single\+ G\+ Cell()} { singleGCell()} }
{ \footnotesize \ttfamily void single\+ G\+ Cell (\begin { DoxyParamCaption} \item [{\mbox{\hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\+Engine}} $\ast$}] { ktbt, } \item [{\textbf{ Net} $\ast$}] { net } \end { DoxyParamCaption} )}
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
All the Routing\+ Pads of the net are concentrated under a single G\+ Cell. This function assumes that all the terminals are in { \ttfamily M\+ E\+ T\+ A\+ L1} (vertical), and link them two by two by horizontal wires.
2018-06-06 11:42:26 -05:00
2018-10-18 11:10:01 -05:00
References Auto\+ Contact\+ Turn\+ ::create(), Auto\+ Segment\+ ::create(), G\+ Cell\+ Topology\+ ::do\+ Rp\+ \_ \+ \+ Auto\+ Contacts(), anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ Do\+ Source\+ Contact, Session\+ ::get\+ Contact\+ Layer(), Grid$ < $ G\+ Cell\+ T $ > $ \+ ::get\+ G\+ Cell(), Katabatic\+ Engine\+ ::get\+ G\+ Cell\+ Grid(), Routing\+ Gauge\+ ::get\+ Layer\+ Depth(), Session\+ ::get\+ Routing\+ Gauge(), Net\+ ::get\+ Routing\+ Pads(), Katabatic\+ ::\+ Kb\+ Horizontal, Katabatic\+ ::\+ Kb\+ Vertical, and anonymous\+ \_ \+ namespace\{ \+ Load\+ Gr\+ By\+ Net.\+ cpp\} \+ ::\+ No\+ Flags.
2018-06-06 11:42:26 -05:00