\hypertarget{classKatabatic_1_1KatabaticEngine}{\section{Katabatic\-Engine Class Reference}
\label{classKatabatic_1_1KatabaticEngine}\index{Katabatic\-Engine@{Katabatic\-Engine}}
}


The \hyperlink{namespaceKatabatic}{Katabatic} Tool.  




Inheritance diagram for Katabatic\-Engine\-:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=168pt]{classKatabatic_1_1KatabaticEngine__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef set$<$ {\bf Net} \\*
$\ast$, Net\-Compare\-By\-Name $>$ \hyperlink{classKatabatic_1_1KatabaticEngine_a92ed88f9aecd2f195089c4029fa8bcc7}{Net\-Set}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_a2f4d1f8df0e5dc9c7ad9ec6f31438790}{is\-G\-Metal} (const {\bf Layer} $\ast$) const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_a390b4da0f5d92dc7586dbb35fb33f105}{is\-Chip} () const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_af3c979bc4832c7e9e9b5a1e749e038ff}{is\-In\-Demo\-Mode} () const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_aef1c27657e9afe69d832ec7c31c546a8}{do\-Warn\-On\-G\-Cell\-Overload} () const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_a6ab936a51a682d97d3885fc2805531ce}{do\-Destroy\-Base\-Contact} () const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_a217f87950b30061709e80f5fce58b5a8}{do\-Destroy\-Base\-Segment} () const 
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_ae979c1db2aa0d919e58d2d7e1b246c5e}{do\-Destroy\-Tool} () const 
\item 
virtual const {\bf Name} \& \hyperlink{classKatabatic_1_1KatabaticEngine_a5e23c46b801d3049b349b68774a0d298}{get\-Name} () const 
\item 
\hyperlink{namespaceKatabatic_ab9e409db5feff0bdbc85e90e2a029cda}{Engine\-State} \hyperlink{classKatabatic_1_1KatabaticEngine_aed8728c9a7c5c82507eb717490e814d6}{get\-State} () const 
\item 
unsigned int \hyperlink{classKatabatic_1_1KatabaticEngine_af7b5043686805e83dbbd84fd687e25be}{get\-Flags} (unsigned int mask) const 
\item 
Configuration $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_adccd6ceec2c68234d3a824ad7ae3954e}{get\-Katabatic\-Configuration} ()
\item 
virtual Configuration $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_a9a7fbadfe526875680f698c76adfb128}{get\-Configuration} ()
\item 
{\bf Routing\-Gauge} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_ae03bde33b07beff91870e3922696ff8f}{get\-Routing\-Gauge} () const 
\item 
{\bf Routing\-Layer\-Gauge} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_a93f9c18075b02f7fd7ba03d951f6be56}{get\-Layer\-Gauge} (size\-\_\-t depth) const 
\item 
const {\bf Layer} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_a3dcc03dc20b0bdca03772901316ba6b3}{get\-Routing\-Layer} (size\-\_\-t depth) const 
\item 
{\bf Layer} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_a2b7ddb281e0b785b5d28d284bdd1f77c}{get\-Contact\-Layer} (size\-\_\-t depth) const 
\item 
\hyperlink{classKatabatic_1_1GCellGrid}{G\-Cell\-Grid} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_a0702328522e94ca9705222cd5b9e9c6d}{get\-G\-Cell\-Grid} () const 
\item 
const \hyperlink{classKatabatic_1_1KatabaticEngine_a92ed88f9aecd2f195089c4029fa8bcc7}{Net\-Set} \& \hyperlink{classKatabatic_1_1KatabaticEngine_a7b752887b598b0244207f36eb13b9149}{get\-Routing\-Nets} () const 
\item 
{\bf Db\-U\-::\-Unit} \hyperlink{classKatabatic_1_1KatabaticEngine_ae375ec4d6fe84babba01c056a32d5a83}{get\-Global\-Threshold} () const 
\item 
float \hyperlink{classKatabatic_1_1KatabaticEngine_a1563b5789b3cd5db8dc6fc1cc069dc82}{get\-Saturate\-Ratio} () const 
\item 
size\-\_\-t \hyperlink{classKatabatic_1_1KatabaticEngine_a929aa539d03f19c7edbf6b34d7ec30a3}{get\-Saturate\-Rp} () const 
\item 
{\bf Db\-U\-::\-Unit} \hyperlink{classKatabatic_1_1KatabaticEngine_a7b6417a63eaf4f4d3f423dbdb8c13302}{get\-Extension\-Cap} () const 
\item 
const \hyperlink{classKatabatic_1_1ChipTools}{Chip\-Tools} \& \hyperlink{classKatabatic_1_1KatabaticEngine_a53565592ca14ec9f302d068327d846c8}{get\-Chip\-Tools} () const 
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_aecbe8bdcc61024a7539de3ea932c5e06}{xml\-Write\-G\-Cell\-Grid} (ostream \&)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a78394ac380a0fa462f268dcc2becc50e}{xml\-Write\-G\-Cell\-Grid} (const string \&)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a2391b9bfcb773398b9661b5ac0ef1a30}{set\-State} (\hyperlink{namespaceKatabatic_ab9e409db5feff0bdbc85e90e2a029cda}{Engine\-State} state)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_aeb14f94914af58657a0dc2f50ec98df5}{set\-Flags} (unsigned int)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a1a6fac115cb81db48e3ac9ffa0721bb5}{unset\-Flags} (unsigned int)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a1bd1e0104b73d4c558b0e121002796a6}{set\-Global\-Threshold} ({\bf Db\-U\-::\-Unit})
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_ac2b780e06975ce8a0d6ca96f20cb971f}{set\-Saturate\-Ratio} (float)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_ade227e828b8c8fbfce478e353ca3ca59}{set\-Saturate\-Rp} (size\-\_\-t)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a1b196d124bb66595a760ccc9b901d78b}{print\-Measures} (const string \&) const 
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a1e9bb62be35c6a415a1950c72c1964ef}{refresh} (unsigned int flags=\hyperlink{namespaceKatabatic_a2af2ad6b6441614038caf59d04b3b217af314588109fcc5f5ee1c42e5fd4d0ed5}{Kb\-Open\-Session})
\item 
virtual void \hyperlink{classKatabatic_1_1KatabaticEngine_a1b7d8ed09a198f7afd6e3ac911f6eb37}{create\-Detailed\-Grid} ()
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_aaba3b9450c85634131146fb507089f2d}{make\-Power\-Rails} ()
\item 
virtual void \hyperlink{classKatabatic_1_1KatabaticEngine_a583925cfe4bbadcc1c24fe619debce09}{load\-Global\-Routing} (unsigned int method)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a145b36b18fc9149980c5d6bd4bd10e0d}{slacken\-Border} ({\bf Box} bb, {\bf Layer\-::\-Mask}, unsigned int flags)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_ac40754d4a9bd0cf327b5fa088e993897}{slacken\-Block\-Ios} ({\bf Instance} $\ast$core)
\item 
bool \hyperlink{classKatabatic_1_1KatabaticEngine_abb2b28adfaca2cc36716db41b093f355}{move\-Up\-Net\-Trunk} (\hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} $\ast$, set$<$ {\bf Net} $\ast$ $>$ \&global\-Nets, \hyperlink{classKatabatic_1_1GCell_aacb1c215b203bfba5729f135b3221d40}{G\-Cell\-::\-Set\-Index} \&invalidateds)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a77833ce938a430785ba869eedbc2300c}{layer\-Assign} (unsigned int method)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_a6957a5830a4d6f1b2daf83a7d98df601}{compute\-Net\-Constraints} ({\bf Net} $\ast$)
\item 
void \hyperlink{classKatabatic_1_1KatabaticEngine_ad6b9f7d94ee4a88f12c485e48d1e644a}{to\-Optimals} ({\bf Net} $\ast$)
\item 
virtual void \hyperlink{classKatabatic_1_1KatabaticEngine_a468eddb683c04cfeea1c5124a39e1f86}{finalize\-Layout} ()
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} $\ast$ \hyperlink{classKatabatic_1_1KatabaticEngine_ab877a64c314024602cfb04631ebfbfc4}{create} ({\bf Cell} $\ast$)
\item 
static const {\bf Name} \& \hyperlink{classKatabatic_1_1KatabaticEngine_a802eee6265da8d536db52d412f8a4afd}{static\-Get\-Name} ()
\end{DoxyCompactItemize}


\subsection{Detailed Description}
The \hyperlink{namespaceKatabatic}{Katabatic} Tool. 

\hypertarget{classKatabatic_1_1KatabaticEngine_secEngineStates}{}\subsection{States of Katabatic\-Engine}\label{classKatabatic_1_1KatabaticEngine_secEngineStates}
During it's lifecycle, the engine go through a serie of states. It only can go forward between states.
\begin{DoxyItemize}
\item {\bfseries Engine\-Creation} \-: just after C++ object creation until the global routing is loaded.
\item {\bfseries Engine\-Global\-Loaded} \-: {\itshape after} the global routing has been done. This state must be set by an external tool, \hyperlink{namespaceKatabatic}{Katabatic} cannot know by itself when the global routing has been done (see Kite).
\item {\bfseries Engine\-Active} \-: {\itshape after} the global routing has been converted into the \hyperlink{namespaceKatabatic}{Katabatic} data structure. At this point the tool is ready to run.
\item {\bfseries Engine\-Driving} \-: {\itshape during} the stage of stripping all the decorations the tool has added over the {\bf Hurricane} data structure (mostly\-: \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} \& \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment}).
\item {\bfseries Engine\-Gutted} \-: {\itshape after} the tool decorations have been removed. The tool is now useless and can only be destroyed.
\item {\bfseries Engine\-Pre\-Destroying} \-: this special state is reached when going straight from Engine\-Active to the destructor, that is, skipping the Engine\-Driving state. That means we {\itshape do not} want to save whatever routing has been done. In that case, not only the tool decorations are destroyeds, but also the {\bf Hurricane} data-\/structures they relies on (Contact, Segments).
\end{DoxyItemize}\hypertarget{classKatabatic_1_1KatabaticEngine_secEngineImpl}{}\subsection{Katabatic\-Engine Implementation Details}\label{classKatabatic_1_1KatabaticEngine_secEngineImpl}
Due to the size of the code and the fact that the main body of some methods do not need to be present in the class, the implementation of \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} is split in several files. The list below summarize them\-:
\begin{DoxyItemize}
\item {\ttfamily Katabatic\-Engine.\-cpp} \-: the core of the class, methods that really need their bodies here.
\item {\ttfamily Power\-Rails.\-cpp} \-: utilities to construct an abstract from all the power rails through the hierarchy.
\item {\ttfamily Layer\-Assign.\-cpp} \-: layer assignement related methods and helpers.
\item {\ttfamily Load\-Gr\-By\-Net.\-cpp} \-: global routing loader, transform global routing into \hyperlink{namespaceKatabatic}{Katabatic} data-\/structure.
\item {\ttfamily Net\-Constraints.\-cpp} \-: compute the topological constraints of all Auto\-Segment/\-Auto\-Contact of a Net.
\item {\ttfamily Net\-Optimals.\-cpp} \-: compute the optimal positions of all \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} of a Net. 
\end{DoxyItemize}

\subsection{Member Typedef Documentation}
\hypertarget{classKatabatic_1_1KatabaticEngine_a92ed88f9aecd2f195089c4029fa8bcc7}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!Net\-Set@{Net\-Set}}
\index{Net\-Set@{Net\-Set}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{Net\-Set}]{\setlength{\rightskip}{0pt plus 5cm}set$<$ {\bf Net} $\ast$, Net\-Compare\-By\-Name $>$ {\bf Net\-Set}}}\label{classKatabatic_1_1KatabaticEngine_a92ed88f9aecd2f195089c4029fa8bcc7}
Set of Net to be routed, alphabetically sorteds. 

\subsection{Member Function Documentation}
\hypertarget{classKatabatic_1_1KatabaticEngine_ab877a64c314024602cfb04631ebfbfc4}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!create@{create}}
\index{create@{create}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Katabatic\-Engine} $\ast$ create (
\begin{DoxyParamCaption}
\item[{{\bf Cell} $\ast$}]{cell}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1KatabaticEngine_ab877a64c314024602cfb04631ebfbfc4}
Create a \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} on {\ttfamily cell}. \hypertarget{classKatabatic_1_1KatabaticEngine_a802eee6265da8d536db52d412f8a4afd}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!static\-Get\-Name@{static\-Get\-Name}}
\index{static\-Get\-Name@{static\-Get\-Name}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{static\-Get\-Name}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Name} \& static\-Get\-Name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}}\label{classKatabatic_1_1KatabaticEngine_a802eee6265da8d536db52d412f8a4afd}
{\bfseries Returns\-:} The unique string identifier for the \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} class of Tool\-Engine. \hypertarget{classKatabatic_1_1KatabaticEngine_a2f4d1f8df0e5dc9c7ad9ec6f31438790}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!is\-G\-Metal@{is\-G\-Metal}}
\index{is\-G\-Metal@{is\-G\-Metal}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{is\-G\-Metal}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-G\-Metal (
\begin{DoxyParamCaption}
\item[{const {\bf Layer} $\ast$}]{layer}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a2f4d1f8df0e5dc9c7ad9ec6f31438790}
{\bfseries Returns\-:} {\bfseries true} if {\ttfamily layer} is one of the special (fake) metals used to build the global routing. 

Referenced by Auto\-Segment\-::create().

\hypertarget{classKatabatic_1_1KatabaticEngine_a390b4da0f5d92dc7586dbb35fb33f105}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!is\-Chip@{is\-Chip}}
\index{is\-Chip@{is\-Chip}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{is\-Chip}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-Chip (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a390b4da0f5d92dc7586dbb35fb33f105}
{\bfseries Returns\-:} {\bfseries true} if the hierarchy top-\/level of the Cell matches the one of a complete design (i.\-e. pads and one core instance). 

References Chip\-Tools\-::is\-Chip().

\hypertarget{classKatabatic_1_1KatabaticEngine_af3c979bc4832c7e9e9b5a1e749e038ff}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!is\-In\-Demo\-Mode@{is\-In\-Demo\-Mode}}
\index{is\-In\-Demo\-Mode@{is\-In\-Demo\-Mode}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{is\-In\-Demo\-Mode}]{\setlength{\rightskip}{0pt plus 5cm}bool is\-In\-Demo\-Mode (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_af3c979bc4832c7e9e9b5a1e749e038ff}
{\bfseries Returns\-:} {\bfseries true} if the tool is in demo mode, that is suppress almost all warning and debug messages. 

Referenced by Session\-::is\-In\-Demo\-Mode().

\hypertarget{classKatabatic_1_1KatabaticEngine_aef1c27657e9afe69d832ec7c31c546a8}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!do\-Warn\-On\-G\-Cell\-Overload@{do\-Warn\-On\-G\-Cell\-Overload}}
\index{do\-Warn\-On\-G\-Cell\-Overload@{do\-Warn\-On\-G\-Cell\-Overload}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{do\-Warn\-On\-G\-Cell\-Overload}]{\setlength{\rightskip}{0pt plus 5cm}bool do\-Warn\-On\-G\-Cell\-Overload (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_aef1c27657e9afe69d832ec7c31c546a8}
{\bfseries Returns\-:} {\bfseries true} if the tool should issue a warning when a \hyperlink{classKatabatic_1_1GCell}{G\-Cell} is overloaded (overload could be transient). 

Referenced by Session\-::do\-Warn\-G\-Cell\-Overload().

\hypertarget{classKatabatic_1_1KatabaticEngine_a6ab936a51a682d97d3885fc2805531ce}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!do\-Destroy\-Base\-Contact@{do\-Destroy\-Base\-Contact}}
\index{do\-Destroy\-Base\-Contact@{do\-Destroy\-Base\-Contact}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{do\-Destroy\-Base\-Contact}]{\setlength{\rightskip}{0pt plus 5cm}bool do\-Destroy\-Base\-Contact (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a6ab936a51a682d97d3885fc2805531ce}
{\bfseries Returns\-:} {\bfseries true} if the Engine\-Destroy\-Base\-Contact is set, meaning that when an \hyperlink{classKatabatic_1_1AutoContact}{Auto\-Contact} is destroyed, the Contact it decorates is destroyed altogether. \hypertarget{classKatabatic_1_1KatabaticEngine_a217f87950b30061709e80f5fce58b5a8}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!do\-Destroy\-Base\-Segment@{do\-Destroy\-Base\-Segment}}
\index{do\-Destroy\-Base\-Segment@{do\-Destroy\-Base\-Segment}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{do\-Destroy\-Base\-Segment}]{\setlength{\rightskip}{0pt plus 5cm}bool do\-Destroy\-Base\-Segment (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a217f87950b30061709e80f5fce58b5a8}
{\bfseries Returns\-:} {\bfseries true} if the Engine\-Destroy\-Base\-Segment is set, meaning that when an \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} is destroyed, the Segment it decorates is destroyed altogether. \hypertarget{classKatabatic_1_1KatabaticEngine_ae979c1db2aa0d919e58d2d7e1b246c5e}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!do\-Destroy\-Tool@{do\-Destroy\-Tool}}
\index{do\-Destroy\-Tool@{do\-Destroy\-Tool}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{do\-Destroy\-Tool}]{\setlength{\rightskip}{0pt plus 5cm}bool do\-Destroy\-Tool (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_ae979c1db2aa0d919e58d2d7e1b246c5e}
{\bfseries Returns\-:} {\bfseries true} if the tool state is beyond Engine\-State\-Gutted, that is, only waits for {\ttfamily {\bf destroy()}} to be called. 

References Katabatic\-::\-Engine\-Gutted.

\hypertarget{classKatabatic_1_1KatabaticEngine_a5e23c46b801d3049b349b68774a0d298}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Name@{get\-Name}}
\index{get\-Name@{get\-Name}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Name}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Name} \& get\-Name (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1KatabaticEngine_a5e23c46b801d3049b349b68774a0d298}
{\bfseries Returns\-:} The unique string identifier for the \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} class of Tool\-Engine. 

Implements {\bf Tool\-Engine}.

\hypertarget{classKatabatic_1_1KatabaticEngine_aed8728c9a7c5c82507eb717490e814d6}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-State@{get\-State}}
\index{get\-State@{get\-State}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-State}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Engine\-State} get\-State (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_aed8728c9a7c5c82507eb717490e814d6}
{\bfseries Returns\-:} The state the tool is currently in. \hypertarget{classKatabatic_1_1KatabaticEngine_af7b5043686805e83dbbd84fd687e25be}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Flags@{get\-Flags}}
\index{get\-Flags@{get\-Flags}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Flags}]{\setlength{\rightskip}{0pt plus 5cm}unsigned int get\-Flags (
\begin{DoxyParamCaption}
\item[{unsigned int}]{mask}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_af7b5043686805e83dbbd84fd687e25be}
{\bfseries Returns\-:} The {\itshape anded} combination of the tool flags and {\ttfamily mask}. \hypertarget{classKatabatic_1_1KatabaticEngine_adccd6ceec2c68234d3a824ad7ae3954e}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Katabatic\-Configuration@{get\-Katabatic\-Configuration}}
\index{get\-Katabatic\-Configuration@{get\-Katabatic\-Configuration}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Katabatic\-Configuration}]{\setlength{\rightskip}{0pt plus 5cm}Configuration $\ast$ get\-Katabatic\-Configuration (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_adccd6ceec2c68234d3a824ad7ae3954e}
{\bfseries Returns\-:} The Configuration of \hyperlink{namespaceKatabatic}{Katabatic}. In this class it is redundant with \hyperlink{classKatabatic_1_1KatabaticEngine_a9a7fbadfe526875680f698c76adfb128}{get\-Configuration()}, but may be useful in derived classes. \hypertarget{classKatabatic_1_1KatabaticEngine_a9a7fbadfe526875680f698c76adfb128}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Configuration@{get\-Configuration}}
\index{get\-Configuration@{get\-Configuration}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Configuration}]{\setlength{\rightskip}{0pt plus 5cm}Configuration $\ast$ get\-Configuration (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1KatabaticEngine_a9a7fbadfe526875680f698c76adfb128}
{\bfseries Returns\-:} The Configuration of the current Tool\-Engine. \hypertarget{classKatabatic_1_1KatabaticEngine_ae03bde33b07beff91870e3922696ff8f}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Routing\-Gauge@{get\-Routing\-Gauge}}
\index{get\-Routing\-Gauge@{get\-Routing\-Gauge}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Routing\-Gauge}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Routing\-Gauge} $\ast$ get\-Routing\-Gauge (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_ae03bde33b07beff91870e3922696ff8f}
{\bfseries Returns\-:} The Routing\-Gauge (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a93f9c18075b02f7fd7ba03d951f6be56}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Layer\-Gauge@{get\-Layer\-Gauge}}
\index{get\-Layer\-Gauge@{get\-Layer\-Gauge}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Layer\-Gauge}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Routing\-Layer\-Gauge} $\ast$ get\-Layer\-Gauge (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{depth}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a93f9c18075b02f7fd7ba03d951f6be56}
{\bfseries Returns\-:} The Routing\-Layer\-Gauge associated to {\ttfamily depth} (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a3dcc03dc20b0bdca03772901316ba6b3}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Routing\-Layer@{get\-Routing\-Layer}}
\index{get\-Routing\-Layer@{get\-Routing\-Layer}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Routing\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Layer} $\ast$ get\-Routing\-Layer (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{depth}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a3dcc03dc20b0bdca03772901316ba6b3}
{\bfseries Returns\-:} The routing Layer associated to {\ttfamily depth} (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a2b7ddb281e0b785b5d28d284bdd1f77c}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Contact\-Layer@{get\-Contact\-Layer}}
\index{get\-Contact\-Layer@{get\-Contact\-Layer}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Contact\-Layer}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Layer} $\ast$ get\-Contact\-Layer (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{depth}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a2b7ddb281e0b785b5d28d284bdd1f77c}
{\bfseries Returns\-:} The contact Layer associated to {\ttfamily depth} (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a0702328522e94ca9705222cd5b9e9c6d}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-G\-Cell\-Grid@{get\-G\-Cell\-Grid}}
\index{get\-G\-Cell\-Grid@{get\-G\-Cell\-Grid}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-G\-Cell\-Grid}]{\setlength{\rightskip}{0pt plus 5cm}{\bf G\-Cell\-Grid} $\ast$ get\-G\-Cell\-Grid (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a0702328522e94ca9705222cd5b9e9c6d}
{\bfseries Returns\-:} The \hyperlink{classKatabatic_1_1GCellGrid}{G\-Cell\-Grid}. 

Referenced by G\-Cell\-Topology\-::do\-Rp\-\_\-\-Access\-Pad(), G\-Cell\-Topology\-::do\-Rp\-\_\-\-Auto\-Contacts(), and anonymous\-\_\-namespace\{\-Load\-Gr\-By\-Net.\-cpp\}\-::single\-G\-Cell().

\hypertarget{classKatabatic_1_1KatabaticEngine_a7b752887b598b0244207f36eb13b9149}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Routing\-Nets@{get\-Routing\-Nets}}
\index{get\-Routing\-Nets@{get\-Routing\-Nets}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Routing\-Nets}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Net\-Set} \& get\-Routing\-Nets (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a7b752887b598b0244207f36eb13b9149}
{\bfseries Returns\-:} The set of nets to be routeds. \hypertarget{classKatabatic_1_1KatabaticEngine_ae375ec4d6fe84babba01c056a32d5a83}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Global\-Threshold@{get\-Global\-Threshold}}
\index{get\-Global\-Threshold@{get\-Global\-Threshold}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Global\-Threshold}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Global\-Threshold (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_ae375ec4d6fe84babba01c056a32d5a83}
{\bfseries Returns\-:} The length above which a global wire is moved up in the layer assignment stage (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a1563b5789b3cd5db8dc6fc1cc069dc82}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Saturate\-Ratio@{get\-Saturate\-Ratio}}
\index{get\-Saturate\-Ratio@{get\-Saturate\-Ratio}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Saturate\-Ratio}]{\setlength{\rightskip}{0pt plus 5cm}float get\-Saturate\-Ratio (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a1563b5789b3cd5db8dc6fc1cc069dc82}
{\bfseries Returns\-:} The ratio above which a \hyperlink{classKatabatic_1_1GCell}{G\-Cell} is considered to be saturated (Configuration shortcut). 

Referenced by Session\-::get\-Saturate\-Ratio().

\hypertarget{classKatabatic_1_1KatabaticEngine_a929aa539d03f19c7edbf6b34d7ec30a3}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Saturate\-Rp@{get\-Saturate\-Rp}}
\index{get\-Saturate\-Rp@{get\-Saturate\-Rp}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Saturate\-Rp}]{\setlength{\rightskip}{0pt plus 5cm}size\-\_\-t get\-Saturate\-Rp (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a929aa539d03f19c7edbf6b34d7ec30a3}
{\bfseries Returns\-:} The number of Routing\-Pad above which a \hyperlink{classKatabatic_1_1GCell}{G\-Cell} is saturated, causing extras global segments to be moved up. (Configuration shortcut). 

Referenced by Session\-::get\-Saturate\-Rp().

\hypertarget{classKatabatic_1_1KatabaticEngine_a7b6417a63eaf4f4d3f423dbdb8c13302}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Extension\-Cap@{get\-Extension\-Cap}}
\index{get\-Extension\-Cap@{get\-Extension\-Cap}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Extension\-Cap}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Db\-U\-::\-Unit} get\-Extension\-Cap (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a7b6417a63eaf4f4d3f423dbdb8c13302}
{\bfseries Returns\-:} The wires extension cap, same for all layers for the time beeing (Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a53565592ca14ec9f302d068327d846c8}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!get\-Chip\-Tools@{get\-Chip\-Tools}}
\index{get\-Chip\-Tools@{get\-Chip\-Tools}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{get\-Chip\-Tools}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf Chip\-Tools} \& get\-Chip\-Tools (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a53565592ca14ec9f302d068327d846c8}
{\bfseries Returns\-:} The chip tools (for whole designs). 

Referenced by Katabatic\-Engine\-::create\-Detailed\-Grid().

\hypertarget{classKatabatic_1_1KatabaticEngine_aecbe8bdcc61024a7539de3ea932c5e06}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!xml\-Write\-G\-Cell\-Grid@{xml\-Write\-G\-Cell\-Grid}}
\index{xml\-Write\-G\-Cell\-Grid@{xml\-Write\-G\-Cell\-Grid}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{xml\-Write\-G\-Cell\-Grid}]{\setlength{\rightskip}{0pt plus 5cm}void xml\-Write\-G\-Cell\-Grid (
\begin{DoxyParamCaption}
\item[{ostream \&}]{o}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_aecbe8bdcc61024a7539de3ea932c5e06}
Write in a stream all informations on the G\-Cells in X\-M\-L format. 

Referenced by Katabatic\-Engine\-::xml\-Write\-G\-Cell\-Grid().

\hypertarget{classKatabatic_1_1KatabaticEngine_a78394ac380a0fa462f268dcc2becc50e}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!xml\-Write\-G\-Cell\-Grid@{xml\-Write\-G\-Cell\-Grid}}
\index{xml\-Write\-G\-Cell\-Grid@{xml\-Write\-G\-Cell\-Grid}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{xml\-Write\-G\-Cell\-Grid}]{\setlength{\rightskip}{0pt plus 5cm}void xml\-Write\-G\-Cell\-Grid (
\begin{DoxyParamCaption}
\item[{const string \&}]{file\-Name}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_a78394ac380a0fa462f268dcc2becc50e}
Write in a file all informations on the G\-Cells in X\-M\-L format. 

References Katabatic\-Engine\-::xml\-Write\-G\-Cell\-Grid().

\hypertarget{classKatabatic_1_1KatabaticEngine_a2391b9bfcb773398b9661b5ac0ef1a30}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!set\-State@{set\-State}}
\index{set\-State@{set\-State}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{set\-State}]{\setlength{\rightskip}{0pt plus 5cm}void set\-State (
\begin{DoxyParamCaption}
\item[{{\bf Engine\-State}}]{state}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a2391b9bfcb773398b9661b5ac0ef1a30}
Force the state of the tool. Must be used with caution, as no sanity checks are performeds. This method is normally invoked from inside the \hyperlink{classKatabatic_1_1KatabaticEngine}{Katabatic\-Engine} various methods. \hypertarget{classKatabatic_1_1KatabaticEngine_aeb14f94914af58657a0dc2f50ec98df5}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!set\-Flags@{set\-Flags}}
\index{set\-Flags@{set\-Flags}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{set\-Flags}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Flags (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_aeb14f94914af58657a0dc2f50ec98df5}
Set the flags given in {\ttfamily flags}. 

Referenced by Session\-::set\-Katabatic\-Flags().

\hypertarget{classKatabatic_1_1KatabaticEngine_a1a6fac115cb81db48e3ac9ffa0721bb5}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!unset\-Flags@{unset\-Flags}}
\index{unset\-Flags@{unset\-Flags}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{unset\-Flags}]{\setlength{\rightskip}{0pt plus 5cm}void unset\-Flags (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a1a6fac115cb81db48e3ac9ffa0721bb5}
Reset the flags given in {\ttfamily flags}. \hypertarget{classKatabatic_1_1KatabaticEngine_a1bd1e0104b73d4c558b0e121002796a6}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!set\-Global\-Threshold@{set\-Global\-Threshold}}
\index{set\-Global\-Threshold@{set\-Global\-Threshold}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{set\-Global\-Threshold}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Global\-Threshold (
\begin{DoxyParamCaption}
\item[{{\bf Db\-U\-::\-Unit}}]{threshold}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_a1bd1e0104b73d4c558b0e121002796a6}
(Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_ac2b780e06975ce8a0d6ca96f20cb971f}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!set\-Saturate\-Ratio@{set\-Saturate\-Ratio}}
\index{set\-Saturate\-Ratio@{set\-Saturate\-Ratio}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{set\-Saturate\-Ratio}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Saturate\-Ratio (
\begin{DoxyParamCaption}
\item[{float}]{ratio}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_ac2b780e06975ce8a0d6ca96f20cb971f}
(Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_ade227e828b8c8fbfce478e353ca3ca59}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!set\-Saturate\-Rp@{set\-Saturate\-Rp}}
\index{set\-Saturate\-Rp@{set\-Saturate\-Rp}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{set\-Saturate\-Rp}]{\setlength{\rightskip}{0pt plus 5cm}void set\-Saturate\-Rp (
\begin{DoxyParamCaption}
\item[{size\-\_\-t}]{threshold}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}}\label{classKatabatic_1_1KatabaticEngine_ade227e828b8c8fbfce478e353ca3ca59}
(Configuration shortcut). \hypertarget{classKatabatic_1_1KatabaticEngine_a1b196d124bb66595a760ccc9b901d78b}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!print\-Measures@{print\-Measures}}
\index{print\-Measures@{print\-Measures}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{print\-Measures}]{\setlength{\rightskip}{0pt plus 5cm}void print\-Measures (
\begin{DoxyParamCaption}
\item[{const string \&}]{tag}
\end{DoxyParamCaption}
) const}}\label{classKatabatic_1_1KatabaticEngine_a1b196d124bb66595a760ccc9b901d78b}
Print memory \& time measurement on ``cmess1``. If {\ttfamily tag} is not empty, also adds the measurement to the internal table (with {\ttfamily tag} as label). 

Referenced by Katabatic\-Engine\-::finalize\-Layout().

\hypertarget{classKatabatic_1_1KatabaticEngine_a1e9bb62be35c6a415a1950c72c1964ef}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!refresh@{refresh}}
\index{refresh@{refresh}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{refresh}]{\setlength{\rightskip}{0pt plus 5cm}void refresh (
\begin{DoxyParamCaption}
\item[{unsigned int}]{flags = {\ttfamily {\bf Kb\-Open\-Session}}}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_a1e9bb62be35c6a415a1950c72c1964ef}
In case the tool is associated with a graphic display, trigger a full redraw of the Cell. Slow the router but allow to see work in progress... If {\ttfamily flags} {\itshape do not} contains {\ttfamily Kb\-Open\-Session} the refresh operation will not be enclosed inside it's own session. This assumes that a session is already opened. 

References G\-Cell\-Grid\-::update\-Contacts().

\hypertarget{classKatabatic_1_1KatabaticEngine_a1b7d8ed09a198f7afd6e3ac911f6eb37}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!create\-Detailed\-Grid@{create\-Detailed\-Grid}}
\index{create\-Detailed\-Grid@{create\-Detailed\-Grid}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{create\-Detailed\-Grid}]{\setlength{\rightskip}{0pt plus 5cm}void create\-Detailed\-Grid (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1KatabaticEngine_a1b7d8ed09a198f7afd6e3ac911f6eb37}
Allocate the \hyperlink{classKatabatic_1_1GCellGrid}{G\-Cell\-Grid}. 

References G\-Cell\-Grid\-::create(), Katabatic\-Engine\-::get\-Chip\-Tools(), Base\-Grid\-::get\-Columns(), Grid$<$ G\-Cell\-T $>$\-::get\-G\-Cells\-Column(), Grid$<$ G\-Cell\-T $>$\-::get\-G\-Cells\-Row(), Base\-Grid\-::get\-Rows(), Chip\-Tools\-::is\-Chip(), and Session\-::revalidate().

\hypertarget{classKatabatic_1_1KatabaticEngine_aaba3b9450c85634131146fb507089f2d}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!make\-Power\-Rails@{make\-Power\-Rails}}
\index{make\-Power\-Rails@{make\-Power\-Rails}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{make\-Power\-Rails}]{\setlength{\rightskip}{0pt plus 5cm}void make\-Power\-Rails (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_aaba3b9450c85634131146fb507089f2d}
Detect all the aligned segments of same width that compose power rails, unificate them and copy them at the design top level. \hypertarget{classKatabatic_1_1KatabaticEngine_a583925cfe4bbadcc1c24fe619debce09}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!load\-Global\-Routing@{load\-Global\-Routing}}
\index{load\-Global\-Routing@{load\-Global\-Routing}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{load\-Global\-Routing}]{\setlength{\rightskip}{0pt plus 5cm}void load\-Global\-Routing (
\begin{DoxyParamCaption}
\item[{unsigned int}]{method}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1KatabaticEngine_a583925cfe4bbadcc1c24fe619debce09}

\begin{DoxyParams}{Parameters}
{\em method} & the loading algorithm \\
\hline
{\em nets} & the set of nets to route.\\
\hline
\end{DoxyParams}
Convert the global routing into the initial detailed routing. For the time beeing, only one loading algorithm is available\-: {\itshape net by net} (Engine\-Load\-Gr\-By\-Net). Only Net given in {\ttfamily nets} are routeds. If {\ttfamily nets} is empty then all ordinary nets are routeds. In either cases the set of nets to route is pruned from any power, ground or clock signals.

\begin{DoxyParagraph}{Remark\-:}
The tool state must be {\bfseries Engine\-Global\-Loaded} {\itshape before} calling this method and will be set to {\bfseries Engine\-Active} on exit. 
\end{DoxyParagraph}


References Katabatic\-::\-Engine\-Active, and Katabatic\-::\-Engine\-Global\-Loaded.

\hypertarget{classKatabatic_1_1KatabaticEngine_a145b36b18fc9149980c5d6bd4bd10e0d}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!slacken\-Border@{slacken\-Border}}
\index{slacken\-Border@{slacken\-Border}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{slacken\-Border}]{\setlength{\rightskip}{0pt plus 5cm}void slacken\-Border (
\begin{DoxyParamCaption}
\item[{{\bf Box}}]{bb, }
\item[{{\bf Layer\-::\-Mask}}]{mask, }
\item[{unsigned int}]{flags}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_a145b36b18fc9149980c5d6bd4bd10e0d}

\begin{DoxyParams}{Parameters}
{\em bb} & The bounding box, defines the edges. \\
\hline
{\em mask} & Consider only layers that are fully included in that mask. \\
\hline
{\em flags} & Consider only segment in that direction.\\
\hline
\end{DoxyParams}
Perform a preventive break on all global segments going through the {\itshape vertical} left and right edges of the {\ttfamily bb} box. The set of global segments to be broken could be further restricted using {\ttfamily mask} and {\ttfamily flags}.

The Semantic of {\ttfamily flags} is not clear, must review the code more closely. 

References Box\-::get\-X\-Max(), Box\-::get\-X\-Min(), Box\-::get\-Y\-Max(), and Box\-::get\-Y\-Min().

\hypertarget{classKatabatic_1_1KatabaticEngine_ac40754d4a9bd0cf327b5fa088e993897}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!slacken\-Block\-Ios@{slacken\-Block\-Ios}}
\index{slacken\-Block\-Ios@{slacken\-Block\-Ios}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{slacken\-Block\-Ios}]{\setlength{\rightskip}{0pt plus 5cm}void slacken\-Block\-Ios (
\begin{DoxyParamCaption}
\item[{{\bf Instance} $\ast$}]{core}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_ac40754d4a9bd0cf327b5fa088e993897}
Perform a preventive break on horizontal segments in the \hyperlink{classKatabatic_1_1GCell}{G\-Cell} immediatly {\itshape outside} the instance {\ttfamily core} area in the routing layer of index {\ttfamily 1}.

This method is too much hardwired to the {\ttfamily Sx\-Lib} gauge. It's effect is to break all {\bfseries M\-E\-T\-A\-L2} outside the core (in a chip). 

References Entity\-::get\-Bounding\-Box(), Instance\-::get\-Name(), Constant\-::\-Horizontal, and Box\-::inflate().

\hypertarget{classKatabatic_1_1KatabaticEngine_abb2b28adfaca2cc36716db41b093f355}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!move\-Up\-Net\-Trunk@{move\-Up\-Net\-Trunk}}
\index{move\-Up\-Net\-Trunk@{move\-Up\-Net\-Trunk}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{move\-Up\-Net\-Trunk}]{\setlength{\rightskip}{0pt plus 5cm}bool move\-Up\-Net\-Trunk (
\begin{DoxyParamCaption}
\item[{{\bf Auto\-Segment} $\ast$}]{seed, }
\item[{set$<$ {\bf Net} $\ast$ $>$ \&}]{global\-Nets, }
\item[{{\bf G\-Cell\-::\-Set\-Index} \&}]{invalidateds}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_abb2b28adfaca2cc36716db41b093f355}

\begin{DoxyParams}{Parameters}
{\em seed} & The \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} to take the net from. \\
\hline
{\em global\-Nets} & The set of nets that has been moved up. \\
\hline
{\em invalidateds} & The set of G\-Cells that have been invalidated. {\bfseries Returns\-:} {\bfseries true} if the net trunk have been moved up.\\
\hline
\end{DoxyParams}
Try to move up a whole net trunk. The net is supplied through the {\ttfamily seed} argument (the segment that triggers the move). If the net is actually moved up, it is added to {\ttfamily global\-Nets} and all G\-Cells that have been invalidateds are added to {\ttfamily invalidateds}.

An individual \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} of the net is moved up if it's length is greater that {\ttfamily 150} lambdas, that is, three times the side of a \hyperlink{classKatabatic_1_1GCell}{G\-Cell}. This is hard-\/wired and should be parametrized in the future. \hypertarget{classKatabatic_1_1KatabaticEngine_a77833ce938a430785ba869eedbc2300c}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!layer\-Assign@{layer\-Assign}}
\index{layer\-Assign@{layer\-Assign}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{layer\-Assign}]{\setlength{\rightskip}{0pt plus 5cm}void layer\-Assign (
\begin{DoxyParamCaption}
\item[{unsigned int}]{method}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_a77833ce938a430785ba869eedbc2300c}
Perform the layer assignment. The global routing loading stage uses only the two bottom most layers, this method spread them on all the availables routing layers, according to \hyperlink{classKatabatic_1_1GCell}{G\-Cell} and Routing\-Pad density criterions.

Two algorithms are availables\-:
\begin{DoxyItemize}
\item {\bfseries Engine\-Layer\-Assign\-By\-Length} \-: the global wires are moved up one by one.
\item {\bfseries Engine\-Layer\-Assign\-By\-Trunk} \-: if one global wire of a net is to be moved up, then all the global trunk of the net is moved along. This methods gives the best results for now. 
\end{DoxyItemize}\hypertarget{classKatabatic_1_1KatabaticEngine_a6957a5830a4d6f1b2daf83a7d98df601}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!compute\-Net\-Constraints@{compute\-Net\-Constraints}}
\index{compute\-Net\-Constraints@{compute\-Net\-Constraints}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{compute\-Net\-Constraints}]{\setlength{\rightskip}{0pt plus 5cm}void compute\-Net\-Constraints (
\begin{DoxyParamCaption}
\item[{{\bf Net} $\ast$}]{net}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_a6957a5830a4d6f1b2daf83a7d98df601}
Compute the box constraints on Auto\-Contacts (and therefore those applied to Auto\-Segments). Constraints comes from Auto\-Contacts anchoreds on Routing\-Pads and transmitted through \hyperlink{classKatabatic_1_1AutoContactHTee}{Auto\-Contact\-H\-Tee} or \hyperlink{classKatabatic_1_1AutoContactVTee}{Auto\-Contact\-V\-Tee}. Constraints are applied to all Auto\-Contacts of an aligned set.

\begin{DoxyParagraph}{Remark\-:}
The {\ttfamily net} must have been canonized before this function to be called. 
\end{DoxyParagraph}
\hypertarget{classKatabatic_1_1KatabaticEngine_ad6b9f7d94ee4a88f12c485e48d1e644a}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!to\-Optimals@{to\-Optimals}}
\index{to\-Optimals@{to\-Optimals}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{to\-Optimals}]{\setlength{\rightskip}{0pt plus 5cm}void to\-Optimals (
\begin{DoxyParamCaption}
\item[{{\bf Net} $\ast$}]{net}
\end{DoxyParamCaption}
)}}\label{classKatabatic_1_1KatabaticEngine_ad6b9f7d94ee4a88f12c485e48d1e644a}
Move all \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} of {\ttfamily net} so that their axis are inside their optimals interval. If a \hyperlink{classKatabatic_1_1AutoSegment}{Auto\-Segment} is already inside the interval is not moved, otherwise it is put on the nearest bound of the optimal interval. \hypertarget{classKatabatic_1_1KatabaticEngine_a468eddb683c04cfeea1c5124a39e1f86}{\index{Katabatic\-::\-Katabatic\-Engine@{Katabatic\-::\-Katabatic\-Engine}!finalize\-Layout@{finalize\-Layout}}
\index{finalize\-Layout@{finalize\-Layout}!Katabatic::KatabaticEngine@{Katabatic\-::\-Katabatic\-Engine}}
\subsubsection[{finalize\-Layout}]{\setlength{\rightskip}{0pt plus 5cm}void finalize\-Layout (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [virtual]}}}\label{classKatabatic_1_1KatabaticEngine_a468eddb683c04cfeea1c5124a39e1f86}
Transform the \hyperlink{namespaceKatabatic}{Katabatic} wires into the {\bf Hurricane} data-\/structure. Mostly by removing the Auto\-Segment/\-Auto\-Contact {\itshape without} removing their {\bf Hurricane} conterparts. May also fill gaps that may have appeared.

\begin{DoxyParagraph}{Remark\-:}
The tool state must be {\bfseries Engine\-Active} {\itshape before} calling this method and will be set to {\bfseries Engine\-Gutted} on exit. 
\end{DoxyParagraph}


References Katabatic\-::\-Engine\-Driving, Katabatic\-::\-Engine\-Gutted, and Katabatic\-Engine\-::print\-Measures().



The documentation for this class was generated from the following files\-:\begin{DoxyCompactItemize}
\item 
Katabatic\-Engine.\-h\item 
Chip\-Tools.\-cpp\item 
Load\-Gr\-By\-Net.\-cpp\item 
Katabatic\-Engine.\-cpp\item 
Katabatic\-Engine.\-dox\end{DoxyCompactItemize}
