
 \documentclass[11pt]{article}

   \usepackage[T1]{fontenc}
   \usepackage{ucs}
   \usepackage[utf8x]{inputenc}
   \usepackage{palatino}
   \usepackage{marvosym}
   \usepackage{pifont}
   \usepackage{xspace}
   \usepackage{longtable}
   \usepackage{array}
   \usepackage{fancyhdr}
   \usepackage[sf,bf]{titlesec}
   \usepackage{titletoc}
   \usepackage{float}
   \usepackage[dvips]{graphicx}
  %\usepackage[dvips]{color}
   \usepackage{listings}
   \usepackage[dvips]{hyperref}
  %\usepackage[hyphens]{url}
   \usepackage{html}
   \usepackage[paper=a4paper
              ,headheight=30pt
              ]{geometry}
  %\usepackage{layouts}

   \newcommand{\key}[1]{\fbox{\textsf{#1}}}
   \newcommand{\menu}[1]{\fbox{\textsf{\textbf{{#1}}}}}

   \newcommand {\crlWebUrl}    [1] {http://asim.lip6.fr/recherche/coriolis/#1}
   \newcommand {\crlFtpUrl}    [1] {http://asim.lip6.fr/pub/coriolis/2.0/#1}
   \newcommand {\alcFtpUrl}    [1] {http://asim.lip6.fr/pub/alliance/distribution/5.0/#1}
   \newcommand {\slSocSrpmsUrl}[1] {http://ftp.lip6.fr/pub/linux/distributions/slsoc/5x/i386/SLSoC/SRPMS/#1}
   \newcommand {\slRpmsiUrl}   [1] {http://ftp.lip6.fr/pub/linux/distributions/slsoc/5x/i386/i386/SL/#1}
   \newcommand {\slRpmsxUrl}   [1] {http://ftp.lip6.fr/pub/linux/distributions/slsoc/5x/x86\_64/x86\_64/SL/#1}

   \latexhtml{
    %% LaTeX specific code.
     \newcommand{\xhref}        [2]{\href{#2}{#1}}
     \newcommand{\crlWebRef}    [1]{\href{\crlWebUrl{#1}}{\texttt{\footnotesize #1}}}
     \newcommand{\crlFtpRef}    [1]{\href{\crlFtpUrl{#1}}{\texttt{\footnotesize #1}}}
     \newcommand{\alcFtpRef}    [1]{\href{\alcFtpUrl{#1}}{\texttt{\footnotesize #1}}}
     \newcommand{\slSocSrpmsRef}[1]{\href{\slSocSrpmsUrl{#1}}{\texttt{\footnotesize #1}}}
     \newcommand{\slRpmsiRef}   [1]{\href{\slRpmsiUrl{#1}}{\texttt{\footnotesize #1}}}
     \newcommand{\slRpmsxRef}   [1]{\href{\slRpmsxUrl{#1}}{\texttt{\footnotesize #1}}}
   }{
    %% LaTeX2HTML specific code.
     \newcommand{\xhref}        [2]{\htmladdnormallink{#1}{#2}}
     \newcommand{\crlWebRef}    [1]{\htmladdnormallink{#1}{\crlWebUrl{#1}}}
     \newcommand{\crlFtpRef}    [1]{\htmladdnormallink{#1}{\crlFtpUrl{#1}}}
     \newcommand{\alcFtpRef}    [1]{\htmladdnormallink{#1}{\alcFtpUrl{#1}}}
     \newcommand{\slSocSrpmsRef}[1]{\htmladdnormallink{#1}{\slSocSrpmsUrl{#1}}}
     \newcommand{\slRpmsiRef}   [1]{\htmladdnormallink{#1}{\slRpmsiUrl{#1}}}
     \newcommand{\slRpmsxRef}   [1]{\htmladdnormallink{#1}{\slRpmsxUrl{#1}}}
   }

   \newcommand {\Alexandre}          {\textsc{Alexandre}\xspace}
   \newcommand {\Chu}                {\textsc{Chu}\xspace}
   \newcommand {\Chaput}             {\textsc{Chaput}\xspace}
   \newcommand {\Dupuis}             {\textsc{Dupuis}\xspace}
   \newcommand {\Escassut}           {\textsc{Escassut}\xspace}
   \newcommand {\Masson}             {\textsc{Masson}\xspace}
   \newcommand {\LIP}                {\textsc{lip6}\xspace}
   \newcommand {\SoC}                {\textsc{S}o\textsc{C}\xspace}
                                     
   \newcommand {\LGPL}               {\textsc{lgpl}\xspace}
   \newcommand {\GPL}                {\textsc{gpl}\xspace}
   \newcommand {\ANSI}               {\textsc{ansi}\xspace}
   \newcommand {\XML}                {\textsc{xml}\xspace}
   \newcommand {\VHDL}               {\textsc{vhdl}\xspace}
   \newcommand {\FEL}                {\xhref{\textsc{fel}}{http://spins.fedoraproject.org/fel/}\xspace}
   \newcommand {\SiII}               {\xhref{\textsc{Si2}}{http://www.si2.org/}\xspace}
   \newcommand {\Bull}               {\xhref{\textsc{Bull}}{http://www.bull.com/}\xspace}
   \newcommand {\UPMC}               {\xhref{\textsc{upmc}}{http://www.upmc.fr/}\xspace}
   \newcommand {\Cadence}            {\xhref{\textsc{Cadence}}{http://www.cadence.com/}\xspace}
   \newcommand {\LEFDEF}             {\textsc{lef/def}\xspace}
   \newcommand {\RHELV}              {\textsc{rhel 5}\xspace}
   \newcommand {\CentOSV}            {\textsc{CentOS 5}\xspace}
   \newcommand {\SLV}                {\textsc{SL 5}\xspace}
   \newcommand {\Fedora}             {\textsc{Fedora}\xspace}
   \newcommand {\FedoraXII}          {\textsc{Fedora 12}\xspace}
   \newcommand {\FedoraXIII}         {\textsc{Fedora 13}\xspace}
   \newcommand {\Karmik}             {\textsc{Ubuntu Karmik}\xspace}
   \newcommand {\Lucid}              {\textsc{Ubuntu Lucid}\xspace}
   \newcommand {\QtIV}               {\textsc{Qt 4}\xspace}
   \newcommand {\rpm}                {\texttt{rpm}\xspace}
   \newcommand {\alien}              {\texttt{alien}\xspace}
   \newcommand {\boost}              {\texttt{boost}\xspace}
   \newcommand {\tty}                {\texttt{tty}\xspace}
   \newcommand {\BoxRouter}          {\textsc{BoxRouter}\xspace}
   \newcommand {\BoxRouterRef}       {\xhref{\BoxRouter}%
                                      {http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm}\xspace}
   \newcommand {\Flute}              {\textsc{Flute}\xspace}
   \newcommand {\FluteRef}           {\xhref{http://home.eng.iastate.edu/\~{}cnchu/}%
                                      {http://home.eng.iastate.edu/~cnchu/}\xspace}
   \newcommand {\netlist}            {\textit{netlist}\xspace}
   \newcommand {\physical}           {\textit{physical}\xspace}
   \newcommand {\logical}            {\textit{logical}\xspace}

   \newcommand {\Alliance}           {\textsc{Alliance}\xspace}
   \newcommand {\MBK}                {\textsc{mbk}\xspace}
   \newcommand {\SxLib}              {\texttt{SxLib}\xspace}
   \newcommand {\Nero}               {\texttt{Nero}\xspace}
   \newcommand {\vst}                {\texttt{vst}\xspace}
   \newcommand {\ap}                 {\texttt{ap}\xspace}
   \newcommand {\PHFIG}              {\texttt{PHFIG}\xspace}
   \newcommand {\LOFIG}              {\texttt{LOFIG}\xspace}
                                     
   \newcommand {\Coriolis}           {\textsc{Coriolis}\xspace}
   \newcommand {\CoriolisII}         {\textsc{Coriolis 2}\xspace}
   \newcommand {\Hurricane}          {\textsc{Hurricane}\xspace}
   \newcommand {\Knik}               {\texttt{Knik}\xspace}
   \newcommand {\Kite}               {\texttt{Kite}\xspace}
   \newcommand {\Viewer}             {\texttt{Viewer}\xspace}
   \newcommand {\kgr}                {\texttt{kgr}\xspace}
   \newcommand {\cgt}                {\texttt{cgt}\xspace}
   \newcommand {\CELLTOP}            {\texttt{CELL\_TOP}\xspace}
   \newcommand {\confcoriolisIIalc}  {\texttt{/etc/coriolis2/environment.alliance.xml}\xspace}
   \newcommand {\usercoriolisIIalc}  {\texttt{.environment.alliance.xml}\xspace}
   \newcommand {\Cell}               {\texttt{Cell}\xspace}
   \newcommand {\POWER}              {\texttt{POWER}\xspace}
   \newcommand {\GROUND}             {\texttt{GROUND}\xspace}
   \newcommand {\MII}                {\texttt{M2}\xspace}
   \newcommand {\MV}                 {\texttt{M5}\xspace}

   \newcommand {\knikThesis}%
     {\xhref{\texttt{http://www-soc.lip6.fr/en/users/damiendupuis/PhD/}}%
            {http://www-soc.lip6.fr/en/users/damiendupuis/PhD/}\xspace}

   \newcommand {\coriolisIIfcXIIIirpm}{\crlFtpRef{coriolis2-1.0.1475-1.fc13.i686.rpm}\xspace}
   \newcommand {\coriolisIIfcXIIIxrpm}{\crlFtpRef{coriolis2-1.0.1475-1.fc13.x86\_64.rpm}\xspace}
   \newcommand {\coriolisIIfcXIIirpm} {\crlFtpRef{coriolis2-1.0.1475-1.fc12.i686.rpm}\xspace}
   \newcommand {\coriolisIIfcXIIxrpm} {\crlFtpRef{coriolis2-1.0.1475-1.fc12.x86\_64.rpm}\xspace}
   \newcommand {\coriolisIIslVirpm}   {\crlFtpRef{coriolis2-1.0.1475-1.el5\_soc.i386.rpm}\xspace}
   \newcommand {\coriolisIIslVxrpm}   {\crlFtpRef{coriolis2-1.0.1475-1.el5\_soc.x86\_64.rpm}\xspace}
   \newcommand {\coriolisIILucidideb} {\crlFtpRef{coriolis2\_1.0.1475-1.fc13\_i386.deb}\xspace}
   \newcommand {\coriolisIILucidxdeb} {\crlFtpRef{coriolis2\_1.0.1475-1.fc13\_amd64.deb}\xspace}
   \newcommand {\qtIVsrpm}            {\slSocSrpmsRef{qt4-4.5.0-8.sl5soc.src.rpm}\xspace}
   \newcommand {\qtIVirpm}            {\slRpmsiRef{qt4-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVdevelirpm}       {\slRpmsiRef{qt4-devel-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVdocirpm}         {\slRpmsiRef{qt4-doc-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVmysqlirpm}       {\slRpmsiRef{qt4-mysql-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVodbcirpm}        {\slRpmsiRef{qt4-odbc-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVpostgresqlirpm}  {\slRpmsiRef{qt4-postgresql-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVxXIirpm}         {\slRpmsiRef{qt4-x11-4.5.0-8.sl5soc.i386.rpm}\xspace}
   \newcommand {\qtIVxrpm}            {\slRpmsxRef{qt4-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVdevelxrpm}       {\slRpmsxRef{qt4-devel-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVdocxrpm}         {\slRpmsxRef{qt4-doc-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVmysqlxrpm}       {\slRpmsxRef{qt4-mysql-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVodbcxrpm}        {\slRpmsxRef{qt4-odbc-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVpostgresqlxrpm}  {\slRpmsxRef{qt4-postgresql-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}
   \newcommand {\qtIVxXIxrpm}         {\slRpmsxRef{qt4-x11-4.5.0-8.sl5soc.x86\_64.rpm}\xspace}

   \latexhtml{ %% LaTeX version.
   \newcommand {\keyUP}              {\key{UP}\xspace}
   \newcommand {\keyDOWN}            {\key{DOWN}\xspace}
   \newcommand {\keyLEFT}            {\key{LEFT}\xspace}
   \newcommand {\keyRIGHT}           {\key{RIGHT}\xspace}
   \newcommand {\keyCTRL}            {\key{CTRL}\xspace}
   \newcommand {\keyESC}             {\key{ESC}\xspace}
   \newcommand {\keyf}               {\key{f}\xspace}
   \newcommand {\keyG}               {\key{G}\xspace}
   \newcommand {\keyI}               {\key{I}\xspace}
   \newcommand {\keyL}               {\key{L}\xspace}
   \newcommand {\keym}               {\key{m}\xspace}
   \newcommand {\keyk}               {\key{k}\xspace}
   \newcommand {\keyK}               {\key{K}\xspace}
   \newcommand {\keyO}               {\key{O}\xspace}
   \newcommand {\keyP}               {\key{P}\xspace}
   \newcommand {\keyQ}               {\key{Q}\xspace}
   \newcommand {\keys}               {\key{s}\xspace}
   \newcommand {\keyW}               {\key{W}\xspace}
   \newcommand {\keyS}               {\key{S}\xspace}
   \newcommand {\keyz}               {\key{z}\xspace}
   \newcommand {\keyPlus}            {$+$\xspace}
   \newcommand {\BigMouse}           {{\Huge \ComputerMouse}\xspace}
   }{ %% HTML version.
   \newcommand {\keyUP}              {\includegraphics{images/key_UP}\xspace}
   \newcommand {\keyDOWN}            {\includegraphics{images/key_DOWN}\xspace}
   \newcommand {\keyLEFT}            {\includegraphics{images/key_LEFT}\xspace}
   \newcommand {\keyRIGHT}           {\includegraphics{images/key_RIGHT}\xspace}
   \newcommand {\keyCTRL}            {\includegraphics{images/key_CTRL}\xspace}
   \newcommand {\keyESC}             {\includegraphics{images/key_ESC}\xspace}
   \newcommand {\keyf}               {\includegraphics{images/key_F}\xspace}
   \newcommand {\keyG}               {\includegraphics{images/key_Gcap}\xspace}
   \newcommand {\keyI}               {\includegraphics{images/key_Icap}\xspace}
   \newcommand {\keyL}               {\includegraphics{images/key_Lcap}\xspace}
   \newcommand {\keym}               {\includegraphics{images/key_M}\xspace}
   \newcommand {\keyk}               {\includegraphics{images/key_K}\xspace}
   \newcommand {\keyK}               {\includegraphics{images/key_Kcap}\xspace}
   \newcommand {\keyO}               {\includegraphics{images/key_Ocap}\xspace}
   \newcommand {\keyP}               {\includegraphics{images/key_Pcap}\xspace}
   \newcommand {\keyQ}               {\includegraphics{images/key_Qcap}\xspace}
   \newcommand {\keys}               {\includegraphics{images/key_S}\xspace}
   \newcommand {\keyW}               {\includegraphics{images/key_Wcap}\xspace}
   \newcommand {\keyS}               {\includegraphics{images/key_Scap}\xspace}
   \newcommand {\keyz}               {\includegraphics{images/key_Z}\xspace}
   \newcommand {\keyPlus}            {\includegraphics{images/key_PLUS}\xspace}
   \newcommand {\BigMouse}           {\includegraphics[scale=.4]{images/ComputerMouse}\xspace}
   }

  %\setlength {\parskip}        {4mm}    
  %\setlength {\itemsep}        {4mm}    

   \pagestyle{fancy}

  %\renewcommand{\headheight}{14pt}
   \renewcommand{\headrulewidth}{0.2mm}
   \renewcommand{\footrulewidth}{0.2mm}
   \renewcommand{\sectionmark}[1]{\markboth{\thesection\ #1}{\thesection\ #1}}
   \renewcommand{\subsectionmark}[1]{}
   \lhead[]{Coriolis 2}
   \rhead[]{May 20, 2010}
   \lfoot[]{\LIP/\SoC}
   \rfoot[]{\thepage}
   \cfoot[]{}

  %% The LaTeX Companion -- p. 204.
  %% Miniature display of the page layout.
  %\newcommand{\showpage}{%
  %  \setlayoutscale{0.65}\setlabelfont{\tiny}%
  %  \printheadingsfalse\printparametersfalse%
  %  \currentpage\pagedesign%
  %}

   \titlecontents{section}[1pc]
     {\sffamily\bfseries}                                   % above code.
     {\contentslabel{1pc}}                                  % numbered entry format.
     {The Numberless Entry Format}                          % numberless entry format.
     {\titlerule*[8pt]{.}\textsc{\textbf{{\contentspage}}}} % page format.
   \titlecontents{subsection}[3pc]
     {\sffamily}                                            % above code.
     {\contentslabel{2pc}}                                  % numbered entry format.
     {The Numberless Entry Format}                          % numberless entry format.
     {\titlerule*[8pt]{.}\textsc{\textbf{{\contentspage}}}} % page format.


 \begin{document}

 \title{\CoriolisII}
 \author{The Coriolis Team}
 \date{May 2010}

 \maketitle

 \thispagestyle{fancy}

 \tableofcontents

 \section{Credits \& Licenses}

 \begin{center}
   \Hurricane           \dotfill\       Rémy \Escassut  \& Christian \Masson   \\
   \Knik                \dotfill\     Damien \Dupuis    \\
   \Kite, \Viewer       \dotfill\  Jean-Paul \Chaput    \\
   Software Engineering \dotfill\ Christophe \Alexandre \\
 \end{center}

 The \Hurricane data-base is copyright\textcopyright\ \Bull 2000-2010 and is
 released under the terms of the \LGPL license. All other tools are
 copyright\textcopyright\ \UPMC 2008-2010 and released under the \GPL
 license. 

 The \Knik router makes use of the \Flute software, which is
 copyright\textcopyright\ Chris C. N. \Chu from the Iowa State University
 (\FluteRef).

 \newpage


 \section{Release Notes}

 \subsection{Release 1.0.1475}

 This is the first preliminary release of the \CoriolisII framework.

 This release mainly ships the global router \Knik and the detailed router
 \Kite. Together they aim to replace the \Alliance \Nero router.
 Unlike \Nero, \Kite is based on an innovating routing modeling and ad-hoc
 algorithm. Although it is released under \GPL license, the source code
 will be avalaible later.
 \medskip

 \noindent Contents of this release:
 \begin{enumerate}
   \item A graphical user interface (viewer only).
   \item The \Knik global router.
   \item The \Kite detailed router.
 \end{enumerate}

 \noindent Supported input/output formats:
 \begin{itemize}
   \item \Alliance \vst (netlist) \& \ap (physical) formats.
   \item Even if there are some references to the \Cadence \LEFDEF format, its
         support is not included because it depends on a library only available
         to \SiII affiliated members.
 \end{itemize}


 \section{Installation}

 Binary \rpm packages avalaible:
 \begin{center}
 \begin{tabular}{|c|l|}
   \hline
   \FedoraXIII & \coriolisIIfcXIIIirpm \\
               & \coriolisIIfcXIIIxrpm \\
   \hline
   \FedoraXII  & \coriolisIIfcXIIirpm \\
               & \coriolisIIfcXIIxrpm \\
   \hline
   \RHELV      & \coriolisIIslVirpm  \\
   \CentOSV    & \coriolisIIslVxrpm  \\
   \SLV        &                     \\
   \hline
   \Lucid      & \coriolisIILucidideb \\
               & \coriolisIILucidxdeb \\
   \hline
 \end{tabular}
 \end{center}

 \noindent\textbf{Note:}\ The \Lucid packages have not beeing natively
 compiled but converted from \Fedora with \alien, they might not work as
 well as under \Fedora. As they uses slightly different versions of \boost,
 you have to create the following link~:
 \begin{verbatim}
   > sudo ln -s /usr/lib/libboost_program_options.so.1.40.0 \
                /usr/lib/libboost_program_options-mt.so.1.41.0
 \end{verbatim}

 \newpage

 For \RHELV based distributions, additionnal \QtIV packages are needed:

 \begin{center}
 \begin{tabular}{|l|l|}
   \hline
   \multicolumn{2}{|l|}{\qtIVsrpm} \\
   \hline
   \hline
   \qtIVirpm           & \qtIVxrpm           \\
   \qtIVdevelirpm      & \qtIVdevelxrpm      \\
   \qtIVdocirpm        & \qtIVdocxrpm        \\
   \qtIVmysqlirpm      & \qtIVmysqlxrpm      \\
   \qtIVodbcirpm       & \qtIVodbcxrpm       \\
   \qtIVpostgresqlirpm & \qtIVpostgresqlxrpm \\
   \qtIVxXIirpm        & \qtIVxXIxrpm        \\
   \hline
 \end{tabular}
 \end{center}

 \section{Configuration}

 Configuration of \CoriolisII no longer depends on environment variables.
 All pathes and options are sets through \XML configuration files. The main
 configuration file is~:
 \begin{center}
   \confcoriolisIIalc
 \end{center}
  Contents of this file should be familiar to all thoses already acquainted
  with \Alliance as the \XML node names takes back former shell environment
  variables.

  You may want to customize \CELLTOP to point to the directory where the \Alliance cells
  libraries are installed (\texttt{/usr/share/alliance}\ if you installed
  the \Alliance package from \FEL.

  All system settings can be overwritten by a \usercoriolisIIalc file in the
  user's root directory.


  \section{Tools}

  \subsection{The \Hurricane Data-Base}

  The \Alliance flow is based on the \MBK data-base, which has one data-structure
  for each view. That is, \LOFIG for the \logical view and \PHFIG for the \physical
  view. The place and route tools were responsible for maintaining (or not) the
  coherency between views. Reflecting this weak coupling between views, each one
  was stored in a separate file with a specific format. The \logical view is stored
  in a \vst file in \VHDL format and the \physical in an \ap file in an ad-hoc format.

  The \Coriolis flow is based on the \Hurricane data-base, which has a unified
  structure for \logical and \physical view. That data structure is the \Cell object.
  The \Cell can have any state between pure netlist and completly placed and
  routed design. Although the memory representation of the views has deeply
  changed we still use the \Alliance files format, but they now really represent
  views of the same object. The point is that one must be very careful about
  view coherency when going to and from \Coriolis.

  \newpage

  As for the first release, \Coriolis can be used only for two purposes~:
  \begin{itemize}
    \item \textbf{Routing a design}\xspace, in that case the \netlist\xspace
          view and the \physical view must be present and  \physical view must contain
          a placement. Both views must have the same name. When saving the routed design,
          it is advised to change the design name otherwise the original unrouted placement
          in the \physical view will be overwritten.
    \item \textbf{Viewing a design}, the \logical view must be present, if a \physical
          view is present it still must have the same name but it can be in any
          state. 
  \end{itemize}


  \subsection{Knik -- Global Router}

  The global router is (not yet) deterministic. To circumvent this limitation,
  a global routing (also called a ``solution'') can be saved to disk and reloaded
  for later uses.

  A global routing is saved into a file with the same name as the design and a
  \kgr extention. It is in \BoxRouterRef output format.

  For an in-depth description of \Knik algorithms, you may download the thesis of
  D. \Dupuis avalaible from here~:
  \begin{center}\knikThesis\end{center}

  \noindent Menus~:
  \begin{itemize}
    \item
      \latexhtml{\menu{P\&R}$\rightarrow$\menu{\underline{S}tep by Step}
                             $\rightarrow$\menu{Kite -- \underline{S}ave Global Routing}}
                {\includegraphics{images/PR-SBS-SaveGlobal}}
    \item
      \latexhtml{\menu{P\&R}$\rightarrow$\menu{\underline{S}tep by Step}
                            $\rightarrow$\menu{Kite -- \underline{L}oad Global Routing}}
                {\includegraphics{images/PR-SBS-LoadGlobal}}
  \end{itemize}


  \subsection{Kite -- Detailed Router}

  \Kite no longer suffers from the limitations of \Nero. It can route big designs
  as its runtime and memory footprint is almost linear (with respect to the number
  of gates). It has successfully routed design of more than \texttt{150K}\ gates.

  \medskip\noindent
  However, this first release has the following restrictions:
  \begin{itemize}
    \item Works only with \SxLib standard cell gauge.
    \item Works always with 4 routing metal layers (\MII through \MV).
    \item Do not allow (take into account) pre-routed wires on signals
          other than \POWER or \GROUND.
  \end{itemize}

  After each run, \Kite displays a set of \textit{completion ratios}\ which must all
  be equal to \textsf{100\%}\ if the detailed routing has been successfull.
  In the event of a failure, on saturated design, you may decrease the \textit{edge
  saturation ration} (argument \texttt{--edge}) to balance more evenly the design
  saturation. That is, the maximum saturation decrease at the price of a wider
  saturated area and increased wirelength.


  \newpage

  \medskip\noindent
  Routing a design is done in three ordered steps~:
  \begin{enumerate}
    \item Global routing
          \latexhtml{\menu{P\&R}$\rightarrow$\menu{Kite -- \underline{G}lobal Route}}
                    {\includegraphics{images/PR-GlobalRoute}}
    \item Detailed routing
          \latexhtml{\menu{P\&R}$\rightarrow$\menu{Kite -- \underline{D}etailed Route}}
                    {\includegraphics{images/PR-DetailedRoute}}
    \item Finalize routing
          \latexhtml{\menu{P\&R}$\rightarrow$\menu{Kite -- \underline{F}inalize Route}}
                    {\includegraphics{images/PR-FinalizeRoute}}
  \end{enumerate}
  After the detailed routing step the \Kite data-structure is still active.
  The wiring is thus represented in a way that allows \Kite to manage it but
  which is not completly finished. The finalize step performs the removal of
  the \Kite data-structure and finish/cleanup the wiring so that its
  connex in the sense of \Hurricane. \textit{Do not}\xspace try to save
  your design before that step, you would get gaps in it.


  \subsection{Viewer Small Memento}

  The main application binary is \cgt.

  \begin{center}
  \newlength{\keyheight} \settoheight{\keyheight}{\keyUP} \addtolength{\keyheight}{5pt}
  \newlength{\keydepth}  \settodepth {\keydepth} {\keyUP} \addtolength{\keydepth} {5pt}

  \newcommand{\keytabpar}[1]{\parbox[t]{.2\textwidth}{\rule{0pt}{\keyheight} \centering #1 \rule[-\keydepth]{0pt}{0pt}}}
  \newcommand{\sfbf}[1]{\textsf{\textbf{#1}}}

  \begin{longtable}{|c|c|p{.55\textwidth}|}
    \endfirsthead
      \hline
    \endhead
      \hline
    \endfoot
    \endlastfoot
    \hline
    \sfbf{Moves}
      & \keytabpar{\keyUP \keyDOWN \\ \keyLEFT \keyRIGHT}
      & Shift the view \\
    \hline
    \sfbf{Fit}
      & \keytabpar{\keyf}
      & Fit contents to window \\
    \hline
    \sfbf{Refresh}
      & \keytabpar{\keyCTRL\keyPlus\keyL}
      & Triggers a complete display redraw \\
    \hline
    \sfbf{Goto}
      & \keytabpar{\keyG}
      & \texttt{aperture} is the minimum side of the area displayed around
        the point to go to. It's an alternative way of setting the zoom level \\
    \hline
    \sfbf{Zoom}
      & \keytabpar{\keyz \keym}
      & \keyz zoom by 2, \keym unzoom by 2 \\
    \cline{2-3}
      & \keytabpar{\BigMouse \\ \texttt{Area Zoom}}
      & You can perform a zoom to an area.
        Define the zoom area by \textit{holding down the left mouse button}\ 
        while moving the mouse. \\
    \hline
    \sfbf{Selection}
      & \keytabpar{\BigMouse \\ \texttt{Area Selection}}
      & You can select displayed object under an area. Define the selection area
        by \textit{holding down the right mouse button}\ while moving the mouse. \\
    \cline{2-3}
      & \keytabpar{\BigMouse \\ \texttt{Toggle Selection}}
      & You can toggle the selection of one object under the mouse position by
        pressing \keyCTRL and pressing down \textit{the right mouse button}.
        A popup list of what's under the position shows up into which you can
        toggle the selection state of one item. \\
    \cline{2-3}
      & \keytabpar{\keys}
      & Toggle the selection visibility \\
    \hline
    \sfbf{Controller}
      & \keytabpar{\keyCTRL\keyPlus\keyI}
      & Show/hide the controller window.

        It's the Swiss Army Knife of the viewer. From it, you can fine-control
        the display and inspect almost everything in your design. \\
    \hline
    \sfbf{Rulers}
      & \keytabpar{\keyk \\ \keyESC}
      & One stroke on \keyk enters the ruler mode, in which you can draw one
        ruler. You can exit the ruler mode by pressing \keyESC.
        Once in ruler mode, the first click on the \textit{left mouse button}
        sets the ruler's starting point and the second click the ruler's end
        point. The second click exits automatically the ruler mode. \\
    \cline{2-3}
      & \keytabpar{\keyK}
      & Clears all the drawn rulers \\
    \hline
    \sfbf{Print}
      & \keytabpar{\keyCTRL\keyPlus\keyP}
      & Currently rather crude. It's a direct copy of what's displayed in pixels.
        So the resulting picture will be a little blurred due to anti-aliasing
        mechanism. \\
    \hline
    \sfbf{Open/Close}
      & \keytabpar{\keyCTRL\keyPlus\keyO}
      & Opens a new design. The design name must be given without path or extention. \\
    \cline{2-3}
      & \keytabpar{\keyCTRL\keyPlus\keyW}
      & Close the current viewer window, but do not quit the application. \\
    \cline{2-3}
      & \keytabpar{\keyCTRL\keyPlus\keyQ}
      & CTRL+Q quit the application (closing all windows). \\
    \hline
    \sfbf{Hierarchy}
      & \keytabpar{\keyCTRL\keyPlus\keyDOWN}
      & Go one hierarchy level down. That is, if there is an \textit{instance}\ under
        the cursor position, load it's \textit{model}\ (\Cell) in place of the current one. \\
    \cline{2-3}
      & \keytabpar{\keyCTRL\keyPlus\keyUP}
      & Go one hierarchy level up. if we have entered the current model through
        \keyCTRL\keyPlus\keyDOWN, reload the previous model (the one in which this model is
        instanciated). \\
    \latex{\hline}
  \end{longtable}
  \end{center}

  \newpage

  \subsection{Running \cgt in text mode}

  \begin{center}
  \begin{longtable}{|c|p{.55\textwidth}|}
      \hline
      \textbf{Argument} & Meaning \\
      \latex{\hline}
      \hline
    \endfirsthead
      \hline
      \textbf{Argument} & Meaning \\
      \latex{\hline}
      \hline
    \endhead
      \hline
    \endfoot
    \endlastfoot
    \latex{\hline}
    \texttt{-t|--text}
      & Instruct \cgt to run in text mode. \\
    \hline
    \texttt{-L|--log-mode}
      & Disable the uses of \ANSI escape sequence on the \tty. Useful when
        the output is redirected to a file. \\
    \hline
    \texttt{-c|--cell=<design>}
      & The name of the design to load, without leading path or
        extention. \\
    \hline
    \texttt{-g|--load-global}
      & Reload a global routing solution from disk. \linebreak
        The file containing the solution must be named \texttt{<design>.kgr}. \\
    \hline
    \texttt{--save-global}
      & Save the global routing solution, into a file named \texttt{<design>.kgr}. \\
    \hline
    \texttt{--edge|-e <ratio>}
      & Change the edge capacity for the global router, between 0 and 1 (\Knik). \\
    \hline
    \texttt{--global-route|-G}
      & Run the global router (\Knik). \\
    \hline
    \texttt{--detailed-route|-R}
      & Run the detailed router (\Kite). \\
    \hline
    \multicolumn{2}{|l|}{\texttt{-s|--save-design=<routed\_design>}} \\
    \cline{1-1}
      & The design into which the routed layout will be saved. It is strongly
        recommanded to choose a different name from the source (unrouted)
        design. \\
    \hline
    \texttt{--events-limit=<LIMIT>}
      & The maximal number of events after which the router will stops. This is
        mainly a failsafe against looping. The limit is sets to 4 millions of
        iteration which should suffice to any design of \texttt{100K}\xspace
        gates. For bigger designs you may wants to increase this limit. \\
    \latex{\hline}
  \end{longtable}
  \end{center}

  \noindent
  Some examples~:
  \begin{itemize}
    \item Run both global and detailed router, then save the routed design~: \\
          \texttt{> cgt -v -t -G -R --cell=design --save-design=design\_kite}
    \item Load a previous global solution, run the detailed router, then save the
          routed design~: \\
          \texttt{> cgt -v -t --load-global -R --cell=design --save-design=design\_kite}
    \item Run the global router, then save the global routing solution~: \\
          \texttt{> cgt -v -t -G --save-global --cell=design}
  \end{itemize}


 \end{document}
