\hypertarget{classHurricane_1_1Technology}{}\section{Hurricane\+:\+:Technology Class Reference}
\label{classHurricane_1_1Technology}\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}


Technological rules description ({\bfseries A\+PI}).  




Inheritance diagram for Hurricane\+:\+:Technology\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=206pt]{classHurricane_1_1Technology__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
bool \mbox{\hyperlink{classHurricane_1_1Technology_ae5590e455d35f76531a6feb0c0f111a2}{is\+Metal}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$) const
\item 
\mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_acf836e738fba14fa493b0e08148cc3ee}{get\+Data\+Base}} () const
\item 
const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \& \mbox{\hyperlink{classHurricane_1_1Technology_ae466071aa1991c853ee71af12fa62d4e}{get\+Name}} () const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a4ec69c9f8f6b483885f1900c56a97b61}{get\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&) const
\item 
\mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_ab096154ce9485cef02244f0037efd4fb}{get\+Basic\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&) const
\item 
\mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a0e93f2f749ee9b6efd30de4ef74546cc}{get\+Regular\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&) const
\item 
\mbox{\hyperlink{classHurricane_1_1ViaLayer}{Via\+Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a9edd085c08487642dd8745b66cf40c76}{get\+Via\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&) const
\item 
\mbox{\hyperlink{namespaceHurricane_a7b7200a36ab7ce8a157ddbe78b625f38}{Layers}} \mbox{\hyperlink{classHurricane_1_1Technology_a4e58c5ae8e3e82d7fe1b3bb939d6a633}{get\+Layers}} () const
\item 
Basic\+Layers \mbox{\hyperlink{classHurricane_1_1Technology_a7fccff9da6604fafb90408ba56184fc0}{get\+Basic\+Layers}} () const
\item 
Basic\+Layers \mbox{\hyperlink{classHurricane_1_1Technology_a997457824046ea63eba51210a8e23f85}{get\+Basic\+Layers}} (const \mbox{\hyperlink{classHurricane_1_1Layer_af5277c670637bd5d910237e7afe01a91}{Layer\+::\+Mask}} \&) const
\item 
Regular\+Layers \mbox{\hyperlink{classHurricane_1_1Technology_abffce542bc1cee054b4a09c64449f3b8}{get\+Regular\+Layers}} () const
\item 
Via\+Layers \mbox{\hyperlink{classHurricane_1_1Technology_aacde973f6a02a232a01f3f618576e1ee}{get\+Via\+Layers}} () const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a2ab8d2c386bf3daeb2b93d92ecbac6b4}{get\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Layer_af5277c670637bd5d910237e7afe01a91}{Layer\+::\+Mask}} \&, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_af5723b08c9d289ffef8159ac2ea71b74}{get\+Metal\+Above}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_ae02123406c7362cc14413727e8689d5a}{get\+Metal\+Below}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_ac7125a8eea871918e74bb295c56caceb}{get\+Cut\+Above}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a3ca39dccc7e19b404181f55777e1b933}{get\+Cut\+Below}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a8209708bc594a307ea39f15a39bbf196}{get\+Via\+Between}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$, bool use\+Symbolic=true) const
\item 
\mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a81a3f3e479aeb686c61a2d0fa2931f3b}{get\+Nth\+Metal}} (int) const
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a6ab76e8a246a10a395d68341bca9ea96}{get\+Unit\+Rule}} (std\+::string rule\+Name) const
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a21ef6f7507785a587e56aecc52a0c0ee}{get\+Physical\+Rule}} (std\+::string rule\+Name, std\+::string layer\+Name) const
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_aec2ce8a8195e90537e6d35cb3ba8b58f}{get\+Physical\+Rule}} (std\+::string rule\+Name, std\+::string layer1\+Name, std\+::string layer2\+Name) const
\item 
void \mbox{\hyperlink{classHurricane_1_1Technology_a247b75d5cbb85198cea9e5e609304cd0}{set\+Name}} (const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&)
\item 
bool \mbox{\hyperlink{classHurricane_1_1Technology_a26c12c5828acaeb33068a2899df1134b}{set\+Symbolic\+Layer}} (const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$)
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a96d62a8b3eb12560a9cb778328f8a301}{add\+Unit\+Rule}} (std\+::string rule\+Name, std\+::string reference)
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}{add\+Physical\+Rule}} (std\+::string rule\+Name, std\+::string reference)
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a4210936e097a774035bf52bce7d962bc}{add\+Physical\+Rule}} (std\+::string rule\+Name, std\+::string layer\+Name, std\+::string reference)
\item 
\mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a3f04a0d9fe9c76fc3c0911c76c120e00}{add\+Physical\+Rule}} (std\+::string rule\+Name, std\+::string layer1\+Name, std\+::string layer2\+Name, std\+::string reference)
\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$ \mbox{\hyperlink{classHurricane_1_1Technology_a64670f0d48e9460342005df52f25c152}{create}} (\mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}} $\ast$, const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Technological rules description ({\bfseries A\+PI}). 

\hypertarget{classHurricane_1_1Technology_sTechnologyIntro}{}\subsection{Introduction}\label{classHurricane_1_1Technology_sTechnologyIntro}
The \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} object provides the description of all the technology rules needed by the tools, currently it contains\+:


\begin{DoxyItemize}
\item The layers, roughly from bottom (i.\+e. closest to the subtsrate) to top. Layers can be basic, that is, match a real physical layer, or composite, like for V\+I\+As in symbolic for macro-\/generation. It also provides a connexity table between layers.
\item Three sets of rules describing the technology rules (formerly the {\ttfamily D\+TR} in Alliance).
\begin{DoxyEnumerate}
\item {\ttfamily Zero \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}}}\+: rules not associated to any layer.
\item {\ttfamily One \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}}}\+: rules associated to one layer.
\item {\ttfamily Two Layers}\+: rules associated to two layer.
\end{DoxyEnumerate}
\end{DoxyItemize}

This object must be created once within the \mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}}, and, in principle never destroyed (this would destroy layers and all objects laying on them ...).

Here

\begin{DoxyRemark}{Remarks}
There is only one technology for the current \mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}}, and only one Database object, so only one technology defined.
\end{DoxyRemark}
\hypertarget{classHurricane_1_1Technology_sTechnologyRules}{}\subsection{Using Physical\+Rules}\label{classHurricane_1_1Technology_sTechnologyRules}
How to create a simple one layer rule, setup the minimal width of {\ttfamily metal1} layer to 0.\+5{$\mu$}m.


\begin{DoxyCode}
tech = \mbox{\hyperlink{classHurricane_1_1DataBase_a53d0b9fcd06b73f3968c8f238f377a88}{DataBase::getDB}}()->\mbox{\hyperlink{classHurricane_1_1DataBase_a144480c54b0f9fbda57622ad6767ab8a}{getTechnology}}();
PhysicalRule* rule = tech->\mbox{\hyperlink{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}{addPhysicalRule}}( \textcolor{stringliteral}{"minWidth"}, \textcolor{stringliteral}{"metal1"} );
rule->\mbox{\hyperlink{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}{addValue}}( \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}( 0.5, DbU::UnitPower::Micro ), 0 );
\end{DoxyCode}


How to create a one layer rule, with multiple steps. The minimal spacing of {\ttfamily metal1} layer which will depend on the wire length. The spacing will be of 2{$\mu$}m for length below 50{$\mu$}m and 4{$\mu$}m above.


\begin{DoxyCode}
tech = \mbox{\hyperlink{classHurricane_1_1DataBase_a53d0b9fcd06b73f3968c8f238f377a88}{DataBase::getDB}}()->\mbox{\hyperlink{classHurricane_1_1DataBase_a144480c54b0f9fbda57622ad6767ab8a}{getTechnology}}();
PhysicalRule* rule = tech->\mbox{\hyperlink{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}{addPhysicalRule}}( \textcolor{stringliteral}{"minWidth"}, \textcolor{stringliteral}{"metal1"} );
rule->\mbox{\hyperlink{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}{addValue}}( \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}(    2.0, DbU::UnitPower::Micro )
              , \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}(   50.0, DbU::UnitPower::Micro ) );
rule->addValue( \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}(    4.0, DbU::UnitPower::Micro )
              , \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}( 1000.0, DbU::UnitPower::Micro ) );
\end{DoxyCode}


How to create a two layers rule, with non-\/isomorphic values. The minimum enclosure of {\ttfamily metal1} layer over {\ttfamily cut1} will be 1{$\mu$}m in horizontal direction and 0.\+5{$\mu$}m in vertical. The order of layers is significant in the function call, it must be read as {\itshape \char`\"{}\+The encolusre of metal1 over cut1\char`\"{}}.


\begin{DoxyCode}
tech = \mbox{\hyperlink{classHurricane_1_1DataBase_a53d0b9fcd06b73f3968c8f238f377a88}{DataBase::getDB}}()->\mbox{\hyperlink{classHurricane_1_1DataBase_a144480c54b0f9fbda57622ad6767ab8a}{getTechnology}}();
PhysicalRule* rule = tech->\mbox{\hyperlink{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}{addPhysicalRule}}( \textcolor{stringliteral}{"minWidth"}, \textcolor{stringliteral}{"metal1"}, \textcolor{stringliteral}{"cut1"} );
rule->\mbox{\hyperlink{classHurricane_1_1PhysicalRule_ada08351fb24f36a63f4e3a3c524000a2}{addValue}}( \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}( 1.0, DbU::UnitPower::Micro )
              , \mbox{\hyperlink{group__DbUGroup_ga11d4dbd9134a19bda35cbacde1cb2769}{DbU::fromPhysical}}( 0.5, DbU::UnitPower::Micro )
              , 0 );
\end{DoxyCode}
 

\subsection{Member Function Documentation}
\mbox{\Hypertarget{classHurricane_1_1Technology_a64670f0d48e9460342005df52f25c152}\label{classHurricane_1_1Technology_a64670f0d48e9460342005df52f25c152}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!create@{create}}
\index{create@{create}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{create()}{create()}}
{\footnotesize\ttfamily $\ast$\mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} $\ast$ Hurricane\+::\+Technology\+::create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}} $\ast$}]{data\+Base,  }\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Returns\+:} a newly created technology named {\ttfamily $<$name$>$} for the data base {\ttfamily $<$data\+Base$>$}.

\begin{DoxyWarning}{Warning}
Throws an exception if the {\ttfamily data\+Base} is {\ttfamily N\+U\+LL}, if the name is empty or if the {\ttfamily data\+Base} has already a technology. 
\end{DoxyWarning}
\mbox{\Hypertarget{classHurricane_1_1Technology_ae5590e455d35f76531a6feb0c0f111a2}\label{classHurricane_1_1Technology_ae5590e455d35f76531a6feb0c0f111a2}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!is\+Metal@{is\+Metal}}
\index{is\+Metal@{is\+Metal}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{is\+Metal()}{isMetal()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Technology\+::is\+Metal (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} {\bfseries true} if the {\ttfamily layer} is indeed of type \mbox{\hyperlink{classHurricane_1_1BasicLayer_1_1Material_a3e815440ad4b86b3569fa54ca06fc3e8a9f5ac52339b7bd9bbf7cdac468c51924}{Basic\+Layer\+::\+Material\+::metal}}. 

References Hurricane\+::\+Layer\+::get\+Mask().

\mbox{\Hypertarget{classHurricane_1_1Technology_acf836e738fba14fa493b0e08148cc3ee}\label{classHurricane_1_1Technology_acf836e738fba14fa493b0e08148cc3ee}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Data\+Base@{get\+Data\+Base}}
\index{get\+Data\+Base@{get\+Data\+Base}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Data\+Base()}{getDataBase()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}} $\ast$ Hurricane\+::\+Technology\+::get\+Data\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} the \mbox{\hyperlink{classHurricane_1_1DataBase}{Data\+Base}} owning the technology. \mbox{\Hypertarget{classHurricane_1_1Technology_ae466071aa1991c853ee71af12fa62d4e}\label{classHurricane_1_1Technology_ae466071aa1991c853ee71af12fa62d4e}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Name@{get\+Name}}
\index{get\+Name@{get\+Name}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Name()}{getName()}}
{\footnotesize\ttfamily const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \& Hurricane\+::\+Technology\+::get\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} the technology name. \mbox{\Hypertarget{classHurricane_1_1Technology_a4ec69c9f8f6b483885f1900c56a97b61}\label{classHurricane_1_1Technology_a4ec69c9f8f6b483885f1900c56a97b61}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Layer@{get\+Layer}}
\index{get\+Layer@{get\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Layer()}{getLayer()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} the \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} named {\ttfamily $<$name$>$} if it exists, else {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{classHurricane_1_1Technology_ab096154ce9485cef02244f0037efd4fb}\label{classHurricane_1_1Technology_ab096154ce9485cef02244f0037efd4fb}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Basic\+Layer@{get\+Basic\+Layer}}
\index{get\+Basic\+Layer@{get\+Basic\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Basic\+Layer()}{getBasicLayer()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Basic\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} named {\ttfamily $<$name$>$} if it exists and is a \mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}}, else {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{classHurricane_1_1Technology_a0e93f2f749ee9b6efd30de4ef74546cc}\label{classHurricane_1_1Technology_a0e93f2f749ee9b6efd30de4ef74546cc}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Regular\+Layer@{get\+Regular\+Layer}}
\index{get\+Regular\+Layer@{get\+Regular\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Regular\+Layer()}{getRegularLayer()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Regular\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} named {\ttfamily $<$name$>$} if it exists and is a \mbox{\hyperlink{classHurricane_1_1RegularLayer}{Regular\+Layer}}, else {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{classHurricane_1_1Technology_a9edd085c08487642dd8745b66cf40c76}\label{classHurricane_1_1Technology_a9edd085c08487642dd8745b66cf40c76}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Via\+Layer@{get\+Via\+Layer}}
\index{get\+Via\+Layer@{get\+Via\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Via\+Layer()}{getViaLayer()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1BasicLayer}{Basic\+Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Via\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} named {\ttfamily $<$name$>$} if it exists and is a \mbox{\hyperlink{classHurricane_1_1ViaLayer}{Via\+Layer}}, else {\ttfamily N\+U\+LL}. \mbox{\Hypertarget{classHurricane_1_1Technology_a4e58c5ae8e3e82d7fe1b3bb939d6a633}\label{classHurricane_1_1Technology_a4e58c5ae8e3e82d7fe1b3bb939d6a633}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Layers@{get\+Layers}}
\index{get\+Layers@{get\+Layers}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Layers()}{getLayers()}}
{\footnotesize\ttfamily \mbox{\hyperlink{namespaceHurricane_a7b7200a36ab7ce8a157ddbe78b625f38}{Layers}} Hurricane\+::\+Technology\+::get\+Layers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

{\bfseries Returns\+:} the collection of layers of the technology.

\begin{DoxyRemark}{Remarks}
The layers are traversed according to their creation order. This order is very important, notably for the graphical display. Therefore deeper basic layers must be created first and upper layers later (the order of composite layers has no importance). 
\end{DoxyRemark}
\mbox{\Hypertarget{classHurricane_1_1Technology_a7fccff9da6604fafb90408ba56184fc0}\label{classHurricane_1_1Technology_a7fccff9da6604fafb90408ba56184fc0}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Basic\+Layers@{get\+Basic\+Layers}}
\index{get\+Basic\+Layers@{get\+Basic\+Layers}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Basic\+Layers()}{getBasicLayers()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Basic\+Layers Hurricane\+::\+Technology\+::get\+Basic\+Layers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the collection of basic layers of the technology (uses the same order). \mbox{\Hypertarget{classHurricane_1_1Technology_a997457824046ea63eba51210a8e23f85}\label{classHurricane_1_1Technology_a997457824046ea63eba51210a8e23f85}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Basic\+Layers@{get\+Basic\+Layers}}
\index{get\+Basic\+Layers@{get\+Basic\+Layers}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Basic\+Layers()}{getBasicLayers()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily Basic\+Layers Hurricane\+::\+Technology\+::get\+Basic\+Layers (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer_af5277c670637bd5d910237e7afe01a91}{Layer\+::\+Mask}} \&}]{mask }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the collection of basic layers of the technology which matches the \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} mask {\ttfamily $<$mask$>$} (uses the same order). \mbox{\Hypertarget{classHurricane_1_1Technology_abffce542bc1cee054b4a09c64449f3b8}\label{classHurricane_1_1Technology_abffce542bc1cee054b4a09c64449f3b8}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Regular\+Layers@{get\+Regular\+Layers}}
\index{get\+Regular\+Layers@{get\+Regular\+Layers}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Regular\+Layers()}{getRegularLayers()}}
{\footnotesize\ttfamily Regular\+Layers Hurricane\+::\+Technology\+::get\+Regular\+Layers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the collection of regular layers of the technology (uses the same order). \mbox{\Hypertarget{classHurricane_1_1Technology_aacde973f6a02a232a01f3f618576e1ee}\label{classHurricane_1_1Technology_aacde973f6a02a232a01f3f618576e1ee}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Via\+Layers@{get\+Via\+Layers}}
\index{get\+Via\+Layers@{get\+Via\+Layers}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Via\+Layers()}{getViaLayers()}}
{\footnotesize\ttfamily Via\+Layers Hurricane\+::\+Technology\+::get\+Via\+Layers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the collection of via layers of the technology (uses the same order). \mbox{\Hypertarget{classHurricane_1_1Technology_a2ab8d2c386bf3daeb2b93d92ecbac6b4}\label{classHurricane_1_1Technology_a2ab8d2c386bf3daeb2b93d92ecbac6b4}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Layer@{get\+Layer}}
\index{get\+Layer@{get\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Layer()}{getLayer()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer_af5277c670637bd5d910237e7afe01a91}{Layer\+::\+Mask}} \&}]{mask,  }\item[{bool}]{use\+Working = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the layer whose mask equal {\ttfamily mask} and is flagged as working layer. if there is no working layer, returns the first layer that matches. \mbox{\Hypertarget{classHurricane_1_1Technology_af5723b08c9d289ffef8159ac2ea71b74}\label{classHurricane_1_1Technology_af5723b08c9d289ffef8159ac2ea71b74}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Metal\+Above@{get\+Metal\+Above}}
\index{get\+Metal\+Above@{get\+Metal\+Above}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Metal\+Above()}{getMetalAbove()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Metal\+Above (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer,  }\item[{bool}]{use\+Working = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the first layer of metal type whose mask is above the current one. if there is no working layer, returns the first layer that matches. \mbox{\Hypertarget{classHurricane_1_1Technology_ae02123406c7362cc14413727e8689d5a}\label{classHurricane_1_1Technology_ae02123406c7362cc14413727e8689d5a}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Metal\+Below@{get\+Metal\+Below}}
\index{get\+Metal\+Below@{get\+Metal\+Below}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Metal\+Below()}{getMetalBelow()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Metal\+Below (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer,  }\item[{bool}]{use\+Working = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the first layer of metal type whose mask is below the current one. if there is no working layer, returns the first layer that matches. \mbox{\Hypertarget{classHurricane_1_1Technology_ac7125a8eea871918e74bb295c56caceb}\label{classHurricane_1_1Technology_ac7125a8eea871918e74bb295c56caceb}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Cut\+Above@{get\+Cut\+Above}}
\index{get\+Cut\+Above@{get\+Cut\+Above}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Cut\+Above()}{getCutAbove()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Cut\+Above (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer,  }\item[{bool}]{use\+Working = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the first layer of cut type whose mask is above the current one. if there is no working layer, returns the first layer that matches. \mbox{\Hypertarget{classHurricane_1_1Technology_a3ca39dccc7e19b404181f55777e1b933}\label{classHurricane_1_1Technology_a3ca39dccc7e19b404181f55777e1b933}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Cut\+Below@{get\+Cut\+Below}}
\index{get\+Cut\+Below@{get\+Cut\+Below}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Cut\+Below()}{getCutBelow()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Cut\+Below (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer,  }\item[{bool}]{use\+Working = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the first layer of cut type whose mask is below the current one. if there is no working layer, returns the first layer that matches. \mbox{\Hypertarget{classHurricane_1_1Technology_a8209708bc594a307ea39f15a39bbf196}\label{classHurricane_1_1Technology_a8209708bc594a307ea39f15a39bbf196}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Via\+Between@{get\+Via\+Between}}
\index{get\+Via\+Between@{get\+Via\+Between}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Via\+Between()}{getViaBetween()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Via\+Between (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{,  }\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{,  }\item[{bool}]{use\+Symbolic = {\ttfamily true} }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the cut layer between {\ttfamily layer1} and {\ttfamily layer2}. They must be both of metal kind and contiguous. \mbox{\Hypertarget{classHurricane_1_1Technology_a81a3f3e479aeb686c61a2d0fa2931f3b}\label{classHurricane_1_1Technology_a81a3f3e479aeb686c61a2d0fa2931f3b}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Nth\+Metal@{get\+Nth\+Metal}}
\index{get\+Nth\+Metal@{get\+Nth\+Metal}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Nth\+Metal()}{getNthMetal()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$ Hurricane\+::\+Technology\+::get\+Nth\+Metal (\begin{DoxyParamCaption}\item[{int}]{depth }\end{DoxyParamCaption}) const}

{\bfseries Returns\+:} the {\ttfamily Nth} metal layer from the substrate. So a {\ttfamily depth} of zero should mean {\ttfamily metal1}. \mbox{\Hypertarget{classHurricane_1_1Technology_a6ab76e8a246a10a395d68341bca9ea96}\label{classHurricane_1_1Technology_a6ab76e8a246a10a395d68341bca9ea96}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Unit\+Rule@{get\+Unit\+Rule}}
\index{get\+Unit\+Rule@{get\+Unit\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Unit\+Rule()}{getUnitRule()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::get\+Unit\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The matching rule in the table of {\bfseries unit} rules. \mbox{\Hypertarget{classHurricane_1_1Technology_a21ef6f7507785a587e56aecc52a0c0ee}\label{classHurricane_1_1Technology_a21ef6f7507785a587e56aecc52a0c0ee}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Physical\+Rule@{get\+Physical\+Rule}}
\index{get\+Physical\+Rule@{get\+Physical\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Physical\+Rule()}{getPhysicalRule()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::get\+Physical\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{layer\+Name }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em layer\+Name} & The name of the layer\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The matching rule in the table of {\bfseries one layer} rules. \mbox{\Hypertarget{classHurricane_1_1Technology_aec2ce8a8195e90537e6d35cb3ba8b58f}\label{classHurricane_1_1Technology_aec2ce8a8195e90537e6d35cb3ba8b58f}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!get\+Physical\+Rule@{get\+Physical\+Rule}}
\index{get\+Physical\+Rule@{get\+Physical\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{get\+Physical\+Rule()}{getPhysicalRule()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::get\+Physical\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{layer1\+Name,  }\item[{std\+::string}]{layer2\+Name }\end{DoxyParamCaption}) const}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em layer1\+Name} & The name of the first layer \\
\hline
{\em layer2\+Name} & The name of the second layer\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The matching rule in the table of {\bfseries two layers} rules. The order of layers arguments is meaningful and should match The one used at rule creation. \mbox{\Hypertarget{classHurricane_1_1Technology_a247b75d5cbb85198cea9e5e609304cd0}\label{classHurricane_1_1Technology_a247b75d5cbb85198cea9e5e609304cd0}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!set\+Name@{set\+Name}}
\index{set\+Name@{set\+Name}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{set\+Name()}{setName()}}
{\footnotesize\ttfamily void Hurricane\+::\+Technology\+::set\+Name (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Name}{Name}} \&}]{name }\end{DoxyParamCaption})}

Allows to change the technology name (if empty name, throws an exception). \mbox{\Hypertarget{classHurricane_1_1Technology_a26c12c5828acaeb33068a2899df1134b}\label{classHurricane_1_1Technology_a26c12c5828acaeb33068a2899df1134b}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!set\+Symbolic\+Layer@{set\+Symbolic\+Layer}}
\index{set\+Symbolic\+Layer@{set\+Symbolic\+Layer}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{set\+Symbolic\+Layer()}{setSymbolicLayer()}}
{\footnotesize\ttfamily bool Hurricane\+::\+Technology\+::set\+Symbolic\+Layer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classHurricane_1_1Layer}{Layer}} $\ast$}]{layer }\end{DoxyParamCaption})}

Sets this exact {\ttfamily layer} as symbolic (not is mask). Returns {\bfseries true} on success (the layer exists). \mbox{\Hypertarget{classHurricane_1_1Technology_a96d62a8b3eb12560a9cb778328f8a301}\label{classHurricane_1_1Technology_a96d62a8b3eb12560a9cb778328f8a301}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!add\+Unit\+Rule@{add\+Unit\+Rule}}
\index{add\+Unit\+Rule@{add\+Unit\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{add\+Unit\+Rule()}{addUnitRule()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::add\+Unit\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{reference }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em reference} & A free comentary string for further reference.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The newly added rule.

Create and add to \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} a rule whithout associated layer. The rule should contain a value which is anything but a length (Volt, Henry, Ohm, ...) The rule is created empty. For a detailed explanation see \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}}. \mbox{\Hypertarget{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}\label{classHurricane_1_1Technology_a267e44b205b97ff46297d16ed278a5bc}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!add\+Physical\+Rule@{add\+Physical\+Rule}}
\index{add\+Physical\+Rule@{add\+Physical\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{add\+Physical\+Rule()}{addPhysicalRule()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::add\+Physical\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{reference }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em reference} & A free comentary string for further reference.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The newly added rule.

Create and add to \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} a rule whithout associated layer. The rule should contain only length value(s) (so \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Db\+U\+::\+Unit}}). The rule is created empty. For a detailed explanation see \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}}. \mbox{\Hypertarget{classHurricane_1_1Technology_a4210936e097a774035bf52bce7d962bc}\label{classHurricane_1_1Technology_a4210936e097a774035bf52bce7d962bc}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!add\+Physical\+Rule@{add\+Physical\+Rule}}
\index{add\+Physical\+Rule@{add\+Physical\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{add\+Physical\+Rule()}{addPhysicalRule()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::add\+Physical\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{layer\+Name,  }\item[{std\+::string}]{reference }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em layer\+Name} & The one layer associated to the rule. \\
\hline
{\em reference} & A free comentary string for further reference.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The newly added rule.

Create and add to \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} a rule associated to {\bfseries one} layer. The rule should contain only length value(s) (so \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Db\+U\+::\+Unit}}). The rule is created empty. For a detailed explanation see \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}}. \mbox{\Hypertarget{classHurricane_1_1Technology_a3f04a0d9fe9c76fc3c0911c76c120e00}\label{classHurricane_1_1Technology_a3f04a0d9fe9c76fc3c0911c76c120e00}} 
\index{Hurricane\+::\+Technology@{Hurricane\+::\+Technology}!add\+Physical\+Rule@{add\+Physical\+Rule}}
\index{add\+Physical\+Rule@{add\+Physical\+Rule}!Hurricane\+::\+Technology@{Hurricane\+::\+Technology}}
\subsubsection{\texorpdfstring{add\+Physical\+Rule()}{addPhysicalRule()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}} $\ast$ Hurricane\+::\+Technology\+::add\+Physical\+Rule (\begin{DoxyParamCaption}\item[{std\+::string}]{rule\+Name,  }\item[{std\+::string}]{layer1\+Name,  }\item[{std\+::string}]{layer2\+Name,  }\item[{std\+::string}]{reference }\end{DoxyParamCaption})}


\begin{DoxyParams}{Parameters}
{\em rule\+Name} & The name of the rule \\
\hline
{\em layer1\+Name} & First layer associated to the rule. \\
\hline
{\em layer2\+Name} & First layer associated to the rule. \\
\hline
{\em reference} & A free comentary string for further reference.\\
\hline
\end{DoxyParams}
{\bfseries Returns\+:} The newly added rule.

Create and add to \mbox{\hyperlink{classHurricane_1_1Technology}{Technology}} a rule associated to {\bfseries two} layers. The order of layers is meaningful in case of an asymmetric rule. The rule should contain only length value(s) (so \mbox{\hyperlink{group__DbUGroup_ga4fbfa3e8c89347af76c9628ea06c4146}{Db\+U\+::\+Unit}}). The rule is created empty. For a detailed explanation see \mbox{\hyperlink{classHurricane_1_1PhysicalRule}{Physical\+Rule}}. 

The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Technology.\+h\item 
Technology.\+dox\end{DoxyCompactItemize}
