\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}