1907 lines
55 KiB
TeX
1907 lines
55 KiB
TeX
% generated by Docutils <http://docutils.sourceforge.net/>
|
||
\documentclass[a4paper,english]{article}
|
||
\usepackage{fixltx2e} % LaTeX patches, \textsubscript
|
||
\usepackage{cmap} % fix search and cut-and-paste in PDF
|
||
\usepackage{babel}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage[latin1]{inputenc}
|
||
\usepackage{ifthen}
|
||
\usepackage{graphicx}
|
||
\usepackage{multirow}
|
||
\usepackage{longtable}
|
||
\usepackage{array}
|
||
\setlength{\extrarowheight}{2pt}
|
||
\newlength{\DUtablewidth} % internal use in tables
|
||
|
||
%%% User specified packages and stylesheets
|
||
\input{./socstyle.tex}
|
||
|
||
%%% Fallback definitions for Docutils-specific commands
|
||
|
||
% providelength (provide a length variable and set default, if it is new)
|
||
\providecommand*{\DUprovidelength}[2]{
|
||
\ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
|
||
}
|
||
|
||
% admonition (specially marked topic)
|
||
\providecommand{\DUadmonition}[2][class-arg]{%
|
||
% try \DUadmonition#1{#2}:
|
||
\ifcsname DUadmonition#1\endcsname%
|
||
\csname DUadmonition#1\endcsname{#2}%
|
||
\else
|
||
\begin{center}
|
||
\fbox{\parbox{0.9\textwidth}{#2}}
|
||
\end{center}
|
||
\fi
|
||
}
|
||
|
||
% inline markup (custom roles)
|
||
% \DUrole{#1}{#2} tries \DUrole#1{#2}
|
||
\providecommand*{\DUrole}[2]{%
|
||
\ifcsname DUrole#1\endcsname%
|
||
\csname DUrole#1\endcsname{#2}%
|
||
\else% backwards compatibility: try \docutilsrole#1{#2}
|
||
\ifcsname docutilsrole#1\endcsname%
|
||
\csname docutilsrole#1\endcsname{#2}%
|
||
\else%
|
||
#2%
|
||
\fi%
|
||
\fi%
|
||
}
|
||
|
||
% lineblock environment
|
||
\DUprovidelength{\DUlineblockindent}{2.5em}
|
||
\ifthenelse{\isundefined{\DUlineblock}}{
|
||
\newenvironment{DUlineblock}[1]{%
|
||
\list{}{\setlength{\partopsep}{\parskip}
|
||
\addtolength{\partopsep}{\baselineskip}
|
||
\setlength{\topsep}{0pt}
|
||
\setlength{\itemsep}{0.15\baselineskip}
|
||
\setlength{\parsep}{0pt}
|
||
\setlength{\leftmargin}{#1}}
|
||
\raggedright
|
||
}
|
||
{\endlist}
|
||
}{}
|
||
|
||
% title for topics, admonitions and sidebar
|
||
\providecommand*{\DUtitle}[2][class-arg]{%
|
||
% call \DUtitle#1{#2} if it exists:
|
||
\ifcsname DUtitle#1\endcsname%
|
||
\csname DUtitle#1\endcsname{#2}%
|
||
\else
|
||
\smallskip\noindent\textbf{#2}\smallskip%
|
||
\fi
|
||
}
|
||
|
||
% titlereference role
|
||
\providecommand*{\DUroletitlereference}[1]{\textsl{#1}}
|
||
|
||
% hyperlinks:
|
||
\ifthenelse{\isundefined{\hypersetup}}{
|
||
\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue]{hyperref}
|
||
}{}
|
||
\hypersetup{
|
||
pdftitle={Coriolis User's Guide},
|
||
}
|
||
|
||
%%% Body
|
||
\begin{document}
|
||
|
||
% Document title
|
||
\title{Coriolis User's Guide%
|
||
\phantomsection%
|
||
\label{coriolis-user-s-guide}}
|
||
\author{}
|
||
\date{}
|
||
\maketitle
|
||
|
||
% -*- Mode: rst -*-
|
||
|
||
% -*- Mode: rst -*-
|
||
|
||
% For LaTeX/PDF backend.
|
||
|
||
% Stand-alone images.
|
||
|
||
% Direct LaTeX commands encapsulation.
|
||
|
||
% -*- Mode: rst -*-
|
||
|
||
% Acronyms & names.
|
||
|
||
% URLs
|
||
|
||
% Standard CAO/VLSI Concepts.
|
||
|
||
% MBK Concepts
|
||
|
||
% Hurricane Concepts.
|
||
|
||
\phantomsection\label{contents}
|
||
\pdfbookmark[1]{Contents}{contents}
|
||
\tableofcontents
|
||
|
||
|
||
\DUrole{raw-latex}{\newpage}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Credits \& License%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Credits \& License}%
|
||
\label{credits-license}%
|
||
}
|
||
\begin{center}\begin{minipage}[t]{.8\textwidth}
|
||
\noindent\DUrole{sc}{Hurricane} \dotfill R<>my \DUrole{sc}{Escassut} \&
|
||
Christian \DUrole{Masson} \\
|
||
\noindent\DUrole{sc}{Mauka} \dotfill Christophe \DUrole{sc}{Alexandre} \\
|
||
\noindent\DUrole{sc}{Stratus} \dotfill Sophie \DUrole{sc}{Belloeil} \\
|
||
\noindent\DUrole{sc}{Knik} \dotfill Damien \DUrole{sc}{Dupuis} \\
|
||
\noindent\DUrole{sc}{Kite},
|
||
\DUrole{sc}{Unicorn} \dotfill Jean-Paul \DUrole{sc}{Chaput} \\
|
||
\end{minipage}\end{center}
|
||
\DUrole{raw-latex}{\medskip}
|
||
|
||
The \DUrole{sc}{Hurricane} data-base is copyright<68> \DUrole{sc}{Bull} 2000-2012 and is
|
||
released under the terms of the \DUrole{sc}{lgpl} license. All other tools are
|
||
copyright<EFBFBD> \DUrole{sc}{upmc} 2008-2012 and released under the \DUrole{sc}{gpl}
|
||
license.
|
||
|
||
The \DUrole{sc}{Knik} router makes use of the \DUrole{sc}{Flute} software, which is
|
||
copyright<EFBFBD> Chris C. N. \DUrole{sc}{Chu} from the Iowa State University
|
||
(\href{http://home.eng.iastate.edu/~cnchu/}{http://home.eng.iastate.edu/\textasciitilde{}cnchu/}).
|
||
|
||
\DUrole{raw-latex}{\newpage}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Release Notes%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Release Notes}%
|
||
\label{release-notes}%
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Release 1.0.1475%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Release 1.0.1475}%
|
||
\label{release-1-0-1475}%
|
||
}
|
||
|
||
This is the first preliminary release of the \DUrole{sc}{Coriolis 2} framework.
|
||
|
||
This release mainly ships the global router \DUrole{sc}{Knik} and the detailed router
|
||
\DUrole{sc}{Kite}. Together they aim to replace the \DUrole{sc}{Alliance} \DUrole{sc}{Nero} router.
|
||
Unlike \DUrole{sc}{Nero}, \DUrole{sc}{Kite} is based on an innovating routing modeling and ad-hoc
|
||
algorithm. Although it is released under \DUrole{sc}{gpl} license, the source code
|
||
will be avalaible later.
|
||
\DUrole{raw-latex}{\medskip}
|
||
|
||
\DUrole{raw-latex}{\noindent} Contents of this release:
|
||
\newcounter{listcnt0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item A graphical user interface (viewer only).
|
||
|
||
\item The \DUrole{sc}{Knik} global router.
|
||
|
||
\item The \DUrole{sc}{Kite} detailed router.
|
||
\end{list}
|
||
|
||
\DUrole{raw-latex}{\noindent} Supported input/output formats:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \DUrole{sc}{Alliance} \DUrole{cb}{vst} (netlist) \& \DUrole{cb}{ap} (physical) formats.
|
||
|
||
\item Even if there are some references to the \DUrole{sc}{Cadence} \DUrole{sc}{lefdef} format, its
|
||
support is not included because it depends on a library only available
|
||
to \DUrole{sc}{Si2} affiliated members.
|
||
|
||
\end{itemize}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Release 1.0.1963%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Release 1.0.1963}%
|
||
\label{release-1-0-1963}%
|
||
}
|
||
|
||
Release 1963 is alpha. All the tools from \DUrole{sc}{Coriolis 1} have been ported into
|
||
this release.
|
||
|
||
\DUrole{raw-latex}{\noindent} Contents of this release:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item The \DUrole{sc}{Stratus} netlist capture language (\DUrole{sc}{GenLib} replacement).
|
||
|
||
\item The \DUrole{sc}{Mauka} placer (still contains bugs).
|
||
|
||
\item A graphical user interface (viewer only).
|
||
|
||
\item The \DUrole{sc}{Knik} global router.
|
||
|
||
\item The \DUrole{sc}{Kite} detailed router.
|
||
|
||
\item Partially implemented python support for configuration files
|
||
(alternative to \DUrole{sc}{xml}).
|
||
|
||
\item A documentation (imcomplete/obsoleted in \DUrole{sc}{Hurricane}'s case).
|
||
\end{list}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Release 1.0.2040%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Release 1.0.2040}%
|
||
\label{release-1-0-2040}%
|
||
}
|
||
|
||
Release \DUroletitlereference{2040} is Alpha.
|
||
|
||
\DUrole{raw-latex}{\noindent} Changes of this release:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item The \DUrole{sc}{Hurricane} documentation is now accurate. Documentation
|
||
for the Cell viewer and \DUrole{sc}{CRLcore} has been added.
|
||
|
||
\item More extensive Python support for all the components of
|
||
\DUrole{sc}{Coriolis}.
|
||
|
||
\item Configuration is now completly migrated under Python.
|
||
\DUrole{sc}{xml} loaders can still be useds for compatibilty.
|
||
|
||
\item The \DUrole{cb}{cgt} main has been rewritten in Python.
|
||
\end{list}
|
||
|
||
\DUrole{raw-latex}{\newpage}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Installation%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Installation}%
|
||
\label{installation}%
|
||
}
|
||
|
||
Binary packages avalaible:
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.284\DUtablewidth}|p{0.551\DUtablewidth}|}
|
||
\hline
|
||
\textbf{%
|
||
Distribution
|
||
} & \textbf{%
|
||
Package
|
||
} \\
|
||
\hline
|
||
\endfirsthead
|
||
\hline
|
||
\textbf{%
|
||
Distribution
|
||
} & \textbf{%
|
||
Package
|
||
} \\
|
||
\hline
|
||
\endhead
|
||
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
||
\endfoot
|
||
\endlastfoot
|
||
|
||
\DUrole{sc}{Scientific Linux} 6
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2040-1.slsoc6.i686.rpm}{coriolis2-1.0.2040-1.slsoc6.i686.rpm}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2040-1.slsoc6.x86_64.rpm}{coriolis2-1.0.2040-1.slsoc6.x86\_64.rpm}
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
|
||
\DUrole{sc}{Fedora} 16
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2040-1.fc16.i686.rpm}{coriolis2-1.0.2040-1.fc16.i686.rpm}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/coriolis2-1.0.2040-1.fc16.x86_64.rpm}{coriolis2-1.0.2040-1.fc16.x86\_64.rpm}
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
|
||
\DUrole{sc}{Ubuntu} 10.04 LTS
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/Ubuntu/10.04/coriolis2_1.0-2040-1_i386.rpm}{coriolis2\_1.0-2040-1\_.i386.rpm (10.04)}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/Ubuntu/10.04/coriolis2_1.0-2040-1_i386.rpm}{coriolis2\_1.0-2040-1\_.amd64.rpm (10.04)}
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
|
||
\DUrole{sc}{Ubuntu} 12.04 LTS
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/Ubuntu/12.04/coriolis2_1.0-2040-1_i386.rpm}{coriolis2\_1.0-2040-1\_.i386.rpm (12.04)}
|
||
\item[] \href{http://asim.lip6.fr/pub/coriolis/2.0/Ubuntu/12.04/coriolis2_1.0-2040-1_i386.rpm}{coriolis2\_1.0-2040-1\_.amd64.rpm (12.04)}
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
Older version can be found here: \href{http://asim.lip6.fr/pub/coriolis/2.0}{http://asim.lip6.fr/pub/coriolis/2.0} .
|
||
|
||
If you are installing from source, you should go to section \hyperref[installation-from-sources]{Installation From Sources}.
|
||
|
||
\DUrole{raw-latex}{\newpage}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Documentation%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Documentation}%
|
||
\label{documentation}%
|
||
}
|
||
|
||
The general index of the documentation for the various parts of Coriolis
|
||
are avalaibles here \href{file:///usr/share/doc/coriolis2/index.html}{file:///usr/share/doc/coriolis2/index.html} .
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Coriolis Configuration \& Initialisation%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Coriolis Configuration \& Initialisation}%
|
||
\label{coriolis-configuration-initialisation}%
|
||
}
|
||
|
||
All configuration \& initialization files are Python scripts, despite their
|
||
\DUrole{cb}{.conf} extention. From a syntactic point of view, there is no difference
|
||
between the system-wide configuration files and the user's configuration,
|
||
they may use the same Python helpers.
|
||
\DUrole{raw-latex}{\medskip}
|
||
|
||
\DUrole{raw-latex}{\noindent}
|
||
The initialization process is done by executing, in order, the following
|
||
file(s):
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.088\DUtablewidth}|p{0.367\DUtablewidth}|p{0.491\DUtablewidth}|}
|
||
\hline
|
||
\textbf{%
|
||
Order
|
||
} & \textbf{%
|
||
Meaning
|
||
} & \textbf{%
|
||
File
|
||
} \\
|
||
\hline
|
||
\endfirsthead
|
||
\hline
|
||
\textbf{%
|
||
Order
|
||
} & \textbf{%
|
||
Meaning
|
||
} & \textbf{%
|
||
File
|
||
} \\
|
||
\hline
|
||
\endhead
|
||
\multicolumn{3}{c}{\hfill ... continued on next page} \\
|
||
\endfoot
|
||
\endlastfoot
|
||
|
||
\textbf{1}
|
||
&
|
||
The system initialization
|
||
&
|
||
\DUrole{cb}{/etc/coriolis2/coriolisInit.py}
|
||
\\
|
||
\hline
|
||
|
||
\textbf{2}
|
||
&
|
||
The user's global initialization
|
||
&
|
||
\DUrole{cb}{\$\{HOME\}/.coriolis2.conf}
|
||
\\
|
||
\hline
|
||
|
||
\textbf{3}
|
||
&
|
||
The user's local initialization
|
||
&
|
||
\DUrole{cb}{<CWD>/.coriolis2.conf}
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{The loading policy is not hard-coded.} It is implemented
|
||
at Python level in \DUrole{cb}{coriolisInit.py}, and thus may be easyly be
|
||
amended to whatever site policy.
|
||
|
||
The truly mandatory requirement is the existence of \DUrole{cb}{coriolisInit.py}
|
||
which \emph{must} contain a \DUrole{cb}{coriolisConfigure()} function with no argument.
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Configuration Helpers%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Configuration Helpers}%
|
||
\label{configuration-helpers}%
|
||
}
|
||
|
||
To ease the writing of configuration files, a set of small helpers
|
||
is available. They allow to setup the configuration parameters through
|
||
simple assembly of tuples.
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsubsection*{\DUrole{sc}{Alliance} Helper%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsubsection}{Alliance Helper}%
|
||
\label{alliance-helper}%
|
||
}
|
||
|
||
The configuration file must provide a \DUrole{cb}{allianceConfig} tuple of
|
||
the form:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
cellsTop~=~'/soc/alliance/cells/'\\
|
||
~\\
|
||
allianceConfig~=~\textbackslash{}\\
|
||
~~~~(~(~'SYMBOLIC\_TECHNOLOGY',~helpers.sysConfDir+'/technology.symbolic.xml'~~~)\\
|
||
~~~~,~(~'REAL\_TECHNOLOGY'~~~~,~helpers.sysConfDir+'/technology.cmos130.s2r.xml')\\
|
||
~~~~,~(~'DISPLAY'~~~~~~~~~~~~,~helpers.sysConfDir+'/display.xml'~~~~~~~~~~~~~~~)\\
|
||
~~~~,~(~'CATALOG'~~~~~~~~~~~~,~'CATAL')\\
|
||
~~~~,~(~'WORKING\_LIBRARY'~~~~,~'.')\\
|
||
~~~~,~(~'SYSTEM\_LIBRARY'~~~~~,~(~(cellsTop+'sxlib'~~~,~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'dp\_sxlib',~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'ramlib'~~,~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'romlib'~~,~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'rflib'~~~,~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'rf2lib'~~,~Environment.Append)\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,~(cellsTop+'pxlib'~~~,~Environment.Append)~)~)\\
|
||
~~~~,~(~'SCALE\_X'~~~~~~~~~~~~,~100)\\
|
||
~~~~,~(~'IN\_LO'~~~~~~~~~~~~~~,~'vst')\\
|
||
~~~~,~(~'IN\_PH'~~~~~~~~~~~~~~,~'ap')\\
|
||
~~~~,~(~'OUT\_LO'~~~~~~~~~~~~~,~'vst')\\
|
||
~~~~,~(~'OUT\_PH'~~~~~~~~~~~~~,~'ap')\\
|
||
~~~~,~(~'POWER'~~~~~~~~~~~~~~,~'vdd')\\
|
||
~~~~,~(~'GROUND'~~~~~~~~~~~~~,~'vss')\\
|
||
~~~~,~(~'CLOCK'~~~~~~~~~~~~~~,~'\textasciicircum{}ck.*')\\
|
||
~~~~,~(~'BLOCKAGE'~~~~~~~~~~~,~'\textasciicircum{}blockageNet*')\\
|
||
~~~~)
|
||
}
|
||
\end{quote}
|
||
|
||
\DUrole{raw-latex}{\noindent} The example above shows the system configuration file, with all the
|
||
available settings. Some important remarks about thoses settings:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item In it's configuration file, the user do not need to redefine all the settings,
|
||
just the one he wants to change. In most of the cases, the \texttt{SYSTEM\_LIBRARY},
|
||
the \texttt{WORKING\_LIBRARY} and the special net names (at this point there is not
|
||
much alternatives for the others settings).
|
||
|
||
\item \texttt{SYSTEM\_LIBRARY} setting: Setting up the library search path.
|
||
Each library entry in the tuple will be added to the search path according
|
||
to the second parameter:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \DUrole{cb}{Environment::Append}: append to the search path.
|
||
|
||
\item \DUrole{cb}{Environment::Prepend}: insert in head of the search path.
|
||
|
||
\item \DUrole{cb}{Environment::Replace}: look for a library of the same name and replace
|
||
it, whithout changing the search path order. If no library of that name
|
||
already exists, it is appended.
|
||
|
||
\end{itemize}
|
||
|
||
A library is identified by it's name, this name is the last component of the
|
||
path name. For instance: \texttt{/soc/alliance/sxlib} will be named \texttt{sxlib}.
|
||
Implementing the \DUrole{sc}{Alliance} specification, when looking for a \emph{Cell} \texttt{name},
|
||
the system will browse sequentially trought the library list and returns
|
||
the first \emph{Cell} whose name match.
|
||
|
||
\item For \texttt{POWER}, \texttt{GROUND}, \texttt{CLOCK} and \texttt{BLOCKAGE} net names, a regular
|
||
expression (\DUrole{sc}{gnu} regexp) is expected.
|
||
|
||
\item The \texttt{helpers.sysConfDir} variable is supplied by the helpers, it is the
|
||
directory in which the system-wide configuration files are locateds.
|
||
For a standard installation it would be: \texttt{/soc/coriolis2}.
|
||
|
||
\item Trick and naming convention about \texttt{SYMBOLIC\_TECHNOLOGY}, \texttt{REAL\_TECHNOLOGY}
|
||
and \texttt{DISPLAY}. In the previous releases, thoses files where to read by
|
||
\DUrole{sc}{xml} parsers, and still do if you triggers the \DUrole{sc}{xml} compatibility mode.
|
||
But now, they have Python conterparts. In the configuration files, you
|
||
still have to name them as \DUrole{sc}{xml} files, the Python file name will be
|
||
deduced from this one with thoses two translation rules:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item In the filename, all dots, except for the last (the file extention),
|
||
are replaced by underscores.
|
||
|
||
\item The \texttt{.xml} extention is substituted by a \texttt{.conf}.
|
||
\end{list}
|
||
|
||
For the symbolic technology, it would give:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
/soc/coriolis2/technology.symbolic.xml\\
|
||
~~~~~~~~~~~~~~~~~~~~~~~-{}->~/soc/coriolis2/technology\_symbolic.conf
|
||
}
|
||
\end{quote}
|
||
|
||
\end{itemize}
|
||
|
||
A typical user's configuration file would be:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
import~os\\
|
||
~\\
|
||
homeDir~=~os.getenv('HOME')\\
|
||
~\\
|
||
allianceConfig~=~\textbackslash{}\\
|
||
~~~~(~('WORKING\_LIBRARY'~~~~,~homeDir+'/worklib')\\
|
||
~~~~,~('SYSTEM\_LIBRARY'~~~~~,~(~(homeDir+'/mylib',~Environment.Append)~)~)\\
|
||
~~~~,~('POWER'~~~~~~~~~~~~~~,~'vdd.*')\\
|
||
~~~~,~('GROUND'~~~~~~~~~~~~~,~'vss.*')\\
|
||
~~~~)
|
||
}
|
||
\end{quote}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsubsection*{Tools Configuration Helpers%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsubsection}{Tools Configuration Helpers}%
|
||
\label{tools-configuration-helpers}%
|
||
}
|
||
|
||
All the tools uses the same helper to load their configuration (a.k.a.
|
||
\emph{Configuration Helper}). Currently the following configuration system-wide
|
||
configuration files are defined:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \DUrole{cb}{misc.conf}: commons settings or not belonging specifically to a tool.
|
||
|
||
\item \DUrole{cb}{nimbus.conf}: for the \DUrole{sc}{Nimbus} tool.
|
||
|
||
\item \DUrole{cb}{hMetis.conf}: for the \DUrole{sc}{hMetis} wrapper.
|
||
|
||
\item \DUrole{cb}{mauka.conf}: for the \DUrole{sc}{Mauka} tool.
|
||
|
||
\item \DUrole{cb}{kite.conf}: for the \DUrole{sc}{Kite} tool.
|
||
|
||
\item \DUrole{cb}{stratus1.conf}: for the \DUrole{sc}{Stratus1} tool.
|
||
|
||
\end{itemize}
|
||
|
||
Here is the contents of \DUrole{cb}{mauka.conf}:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
\#~Mauka~parameters.\\
|
||
parametersTable~=~\textbackslash{}\\
|
||
~~~~(~('mauka.annealingBinMult'~,~TypePercentage,~5~~~~~~)\\
|
||
~~~~,~('mauka.annealingNetMult'~,~TypePercentage,~90~~~~~)\\
|
||
~~~~,~('mauka.annealingRowMult'~,~TypePercentage,~5~~~~~~)\\
|
||
~~~~,~('mauka.ignorePins'~~~~~~~,~TypeBool~~~~~~,~False~~)\\
|
||
~~~~,~('mauka.insertFeeds'~~~~~~,~TypeBool~~~~~~,~True~~~)\\
|
||
~~~~,~('mauka.plotBins'~~~~~~~~~,~TypeBool~~~~~~,~True~~~)\\
|
||
~~~~,~('mauka.searchRatio'~~~~~~,~TypePercentage,~50~~~~~)\\
|
||
~~~~,~('mauka.standardAnnealing',~TypeBool~~~~~~,~False~~)\\
|
||
~~~~)\\
|
||
~\\
|
||
layoutTable~=~\textbackslash{}\\
|
||
~~~~(~(TypeTab~~~,~'Mauka',~'mauka')\\
|
||
~~~~\#~Mauka~part.\\
|
||
~~~~,~(TypeOption,~"mauka.standardAnnealing",~"Standart~Annealing"~~~~,~0~)\\
|
||
~~~~,~(TypeOption,~"mauka.ignorePins"~~~~~~~,~"Ignore~Pins"~~~~~~~~~~~,~0~)\\
|
||
~~~~,~(TypeOption,~"mauka.plotBins"~~~~~~~~~,~"Plot~Bins"~~~~~~~~~~~~~,~0~)\\
|
||
~~~~,~(TypeOption,~"mauka.insertFeeds"~~~~~~,~"Insert~Feeds"~~~~~~~~~~,~0~)\\
|
||
~~~~,~(TypeOption,~"mauka.searchRatio"~~~~~~,~"Search~Ratio~(\%)"~~~~~~,~1~)\\
|
||
~~~~,~(TypeOption,~"mauka.annealingNetMult"~,~"Annealing~Net~Mult~(\%)",~1~)\\
|
||
~~~~,~(TypeOption,~"mauka.annealingBinMult"~,~"Annealing~Bin~Mult~(\%)",~1~)\\
|
||
~~~~,~(TypeOption,~"mauka.annealingRowMult"~,~"Annealing~Row~Mult~(\%)",~1~)\\
|
||
~~~~,~(TypeRule~~,)\\
|
||
~~~~)
|
||
}
|
||
\end{quote}
|
||
|
||
Taxonomy of the file:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item It must contains, at least, the two tables:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \texttt{parametersTable}, defines \& initialise the configuration variables.
|
||
|
||
\item \texttt{layoutTables}, defines how the various parameters will be displayed
|
||
in the configuration window
|
||
|
||
\end{itemize}
|
||
|
||
\item The \texttt{parametersTable}, is a tuple (list) of tuples. Each entry in the list
|
||
describe a configuration parameter. In it's simplest form, it's a quadruplet
|
||
\DUrole{cb}{(TypeOption, 'paramId', ParameterType, DefaultValue)} with:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item \texttt{TypeOption}, tells that this tuple describe a parameter.
|
||
|
||
\item \texttt{paramId}, the identifier of the parameter. Identifiers are defined
|
||
by the tools. The list of parameters is detailed in each tool section.
|
||
|
||
\item \texttt{ParameterType}, the kind of parameter. Could be:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \texttt{TypeBool}, boolean.
|
||
|
||
\item \texttt{TypeInt}, signed integer.
|
||
|
||
\item \texttt{TypeEnumerate}, enumerated type, needs extra entry.
|
||
|
||
\item \texttt{TypePercentage}, percentage, expressed between 0 and 100.
|
||
|
||
\item \texttt{TypeDouble}, float.
|
||
|
||
\item \texttt{TypeString}, character string.
|
||
|
||
\end{itemize}
|
||
|
||
\item \texttt{DefaultValue}, the default value for that parameter.
|
||
\end{list}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{CGT - The Graphical Interface%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{CGT - The Graphical Interface}%
|
||
\label{cgt-the-graphical-interface}%
|
||
}
|
||
|
||
The \DUrole{sc}{Coriolis} graphical interface is split up into two windows.
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item The \textbf{Viewer}, with the following features:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item Basic load/save capabilities.
|
||
|
||
\item Display the current working cell. Could be empty if the design
|
||
is not yet placed.
|
||
|
||
\item Execute Stratus Scripts.
|
||
|
||
\item Menu to run the tools (placement, routage).
|
||
|
||
\end{itemize}
|
||
|
||
\end{itemize}
|
||
|
||
Features are detailed in \hyperref[viewer-tools]{Viewer \& Tools}.
|
||
|
||
\DUrole{raw-latex}{\begin{center}\fbox{\includegraphics[width=.7\textwidth]{./images/Viewer-1.eps}}\end{center}}
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item The \textbf{Controller}, which allows:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item Tweak what is displayer by the \emph{Viewer}. Through the \emph{Look},
|
||
\emph{Filter} and \emph{Layers\&Gos} tabs.
|
||
|
||
\item Browse the \emph{netlist} with eponym tab.
|
||
|
||
\item Show the list of selected objects (if any) with \emph{selection}
|
||
|
||
\item Walk through the Database, the Cell or the Selection with \emph{Inspector}.
|
||
This is an advanced feature, reserved for experimented users.
|
||
|
||
\item The tab \emph{Settings} which give access to all the settings.
|
||
They are closely related to Configuration \& Initialisation.
|
||
|
||
\end{itemize}
|
||
|
||
\end{itemize}
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Viewer \& Tools%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Viewer \& Tools}%
|
||
\label{id1}%
|
||
\label{viewer-tools}%
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The \DUrole{sc}{Hurricane} Data-Base%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Hurricane Data-Base}%
|
||
\label{the-hurricane-data-base}%
|
||
}
|
||
|
||
The \DUrole{sc}{Alliance} flow is based on the \DUrole{sc}{mbk} data-base, which has one data-structure
|
||
for each view. That is, \DUrole{cb}{Lofig} for the \emph{logical} view and \DUrole{cb}{Phfig} for the \emph{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 \emph{logical} view is stored
|
||
in a \DUrole{cb}{vst} file in \DUrole{sc}{vhdl} format and the \emph{physical} in an \DUrole{cb}{ap} file in an ad-hoc format.
|
||
|
||
The \DUrole{sc}{Coriolis} flow is based on the \DUrole{sc}{Hurricane} data-base, which has a unified
|
||
structure for \emph{logical} and \emph{physical} view. That data structure is the \emph{Cell} object.
|
||
The \emph{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 \DUrole{sc}{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 \DUrole{sc}{Coriolis}.
|
||
|
||
As for the first release, \DUrole{sc}{Coriolis} can be used only for two purposes :
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \textbf{Routing a design}, in that case the \emph{netlist}
|
||
view and the \emph{layout} view must be present and \emph{layout} 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 \emph{layout} view will be overwritten.
|
||
|
||
\item \textbf{Viewing a design}, the \emph{netlist} view must be present, if a \emph{layout}
|
||
view is present it still must have the same name but it can be in any
|
||
state.
|
||
|
||
\end{itemize}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Mauka -{}- Placer%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Mauka -{}- Placer}%
|
||
\label{mauka-placer}%
|
||
}
|
||
|
||
Mauka makes uses of hMetis.
|
||
|
||
To be completed...
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{Instance Duplication Problem:} a same logical instance cannot have
|
||
two different placements. So, either you manually make a clone of it or you
|
||
supply a placement for it. This is currently a drawback of our \emph{folded hierarchy}
|
||
approach.
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Knik -{}- Global Router%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Knik -{}- Global Router}%
|
||
\label{knik-global-router}%
|
||
}
|
||
|
||
The global router is (not yet) deterministic. To circumvent this limitation,
|
||
a global routing (also called a \emph{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
|
||
\DUrole{cb}{kgr} extention. It is in \href{http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm}{Box Router} output format.
|
||
|
||
For an in-depth description of \DUrole{sc}{Knik} algorithms, you may download the thesis of
|
||
D. \DUrole{sc}{Dupuis} avalaible from here\textasciitilde{}: \href{http://www-soc.lip6.fr/en/users/damiendupuis/PhD/}{Knik Thesis}.
|
||
\DUrole{raw-latex}{\medskip}
|
||
|
||
\DUrole{raw-latex}{\noindent} Menus:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \DUrole{raw-latex}{\fbox{\textsf{\textbf{{P\&R}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}ave Global Routing}}}}}.
|
||
|
||
\item \DUrole{raw-latex}{\fbox{\textsf{\textbf{{P\&R}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{L}oad Global Routing}}}}}.
|
||
|
||
\end{itemize}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Kite -{}- Detailed Router%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Kite -{}- Detailed Router}%
|
||
\label{kite-detailed-router}%
|
||
}
|
||
|
||
\DUrole{sc}{Kite} no longer suffers from the limitations of \DUrole{sc}{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 \DUroletitlereference{150K} gates.
|
||
\DUrole{raw-latex}{\medskip}
|
||
|
||
\DUrole{raw-latex}{\noindent} However, this first release has the following restrictions:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item Works only with \DUrole{sc}{SxLib} standard cell gauge.
|
||
|
||
\item Works always with 4 routing metal layers (\DUroletitlereference{M2} through \DUroletitlereference{M5}).
|
||
|
||
\item Do not allow (take into account) pre-routed wires on signals
|
||
other than \DUrole{sc}{power} or \DUrole{sc}{ground}.
|
||
|
||
\end{itemize}
|
||
|
||
After each run, \DUrole{sc}{Kite} displays a set of \emph{completion ratios} which must all
|
||
be equal to \DUroletitlereference{100\%} if the detailed routing has been successfull.
|
||
In the event of a failure, on saturated design, you may decrease the
|
||
\DUroletitlereference{edge saturation ration} (argument \DUroletitlereference{-{}-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.
|
||
|
||
\DUrole{raw-latex}{\newpage}
|
||
|
||
Routing a design is done in three ordered steps:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item Global routing \DUrole{raw-latex}{\fbox{\textsf{\textbf{{P\&R}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{G}lobal Route}}}}}.
|
||
|
||
\item Detailed routing \DUrole{raw-latex}{\fbox{\textsf{\textbf{{P\&R}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{D}etailed Route}}}}}.
|
||
|
||
\item Finalize routing \DUrole{raw-latex}{\fbox{\textsf{\textbf{{P\&R}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{S}tep by Step}}}}} \DUrole{raw-latex}{$\rightarrow$} \DUrole{raw-latex}{\fbox{\textsf{\textbf{{\underline{F}inalize Route}}}}}.
|
||
\end{list}
|
||
|
||
After the detailed routing step the \DUrole{sc}{Kite} data-structure is still active.
|
||
The wiring is thus represented in a way that allows \DUrole{sc}{Kite} to manage it but
|
||
which is not completly finished. The finalize step performs the removal of
|
||
the \DUrole{sc}{Kite} data-structure and finish/cleanup the wiring so that its
|
||
connex in the sense of \DUrole{sc}{Hurricane}. \emph{Do not} try to save
|
||
your design before that step, you would get gaps in it.
|
||
|
||
The complete description of \DUrole{sc}{Kite} parameters are described in \hyperref[detailed-routing-configuration-parameters]{Detailed Routing Configuration Parameters}.
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Executing Python Scripts in Cgt%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Executing Python Scripts in Cgt}%
|
||
\label{executing-python-scripts-in-cgt}%
|
||
\label{python-scripts-in-cgt}%
|
||
}
|
||
|
||
Python/Stratus scripts can be executed either in text or graphical mode.
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{How Cgt Locates Python Scripts.}
|
||
\DUrole{cb}{cgt} uses the Python \texttt{import} mechanism to load Python scripts.
|
||
So you must give the name of your script whitout \texttt{.py} extention and
|
||
it must be reachable through the \texttt{PYTHONPATH}. You may uses the
|
||
dotted module notation.
|
||
}
|
||
|
||
A Python/Stratus script must contains a function called \texttt{StratusScript}
|
||
with one optional argument, the graphical editor into which it may be
|
||
running (will be set to \texttt{None} in text mode).
|
||
|
||
Any script given on the command line will be run immediatly \emph{after} the
|
||
initializations and \emph{before} any other argument is processed.
|
||
|
||
Small example of Python/Stratus script:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
from~status~import~*\\
|
||
~\\
|
||
def~doSomething~():\\
|
||
~~~~\#~...\\
|
||
~~~~return\\
|
||
~\\
|
||
def~StratusScript~(~editor=None~):\\
|
||
~~if~globals().has\_key~(~"\_\_editor"~):~editor~=~\_\_editor\\
|
||
~~if~editor:~setEditor~(~editor~)\\
|
||
~\\
|
||
~~doSomething()\\
|
||
~~return\\
|
||
~\\
|
||
if~\_\_name\_\_~==~"\_\_main\_\_"~:\\
|
||
~~StratusScript~()
|
||
}
|
||
\end{quote}
|
||
|
||
This script could be run directly with Python (thanks to the two last lines)
|
||
or through \DUrole{cb}{cgt} in both text and graphical modes.
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Printing \& Snapshots%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Printing \& Snapshots}%
|
||
\label{printing-snapshots}%
|
||
}
|
||
|
||
Printing or saving into a \DUrole{sc}{pdf} is fairly simple, just uses the \textbf{File -> Print}
|
||
menu or the \DUrole{raw-latex}{\key{CTRL}\xspace} \DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{p}\xspace} shortcut to open the dialog box.
|
||
|
||
The print functionality uses exactly the same rendering mechanism as for the
|
||
screen, beeing almost \emph{WYSIWYG}. Thus, to obtain the best results it is advisable
|
||
to select the \texttt{Coriolis.Printer} look (in the \emph{Controller}), which uses a
|
||
white background and much suited for high resolutions \texttt{32x32} pixels patterns
|
||
|
||
There is also two mode of printing selectable through the \emph{Controller}
|
||
\textbf{Settings -> Misc -> Printer/Snapshot Mode}:
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.174\DUtablewidth}|p{0.195\DUtablewidth}|p{0.576\DUtablewidth}|}
|
||
\hline
|
||
|
||
Mode
|
||
&
|
||
DPI (approx.)
|
||
&
|
||
Intended Usage
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Cell Mode}
|
||
&
|
||
150
|
||
&
|
||
For single \texttt{Cell} printing or very small designs.
|
||
Patterns will be bigger and more readable.
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Design Mode}
|
||
&
|
||
300
|
||
&
|
||
For designs (mostly commposed of wires and cells
|
||
outlines).
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{The pdf file size}
|
||
Be aware that the generated \DUrole{sc}{pdf} files are indeed only pixmaps.
|
||
So they can grew very large if you select paper format above \texttt{A2}
|
||
or similar.
|
||
}
|
||
|
||
\DUrole{raw-latex}{\noindent}
|
||
Saving into an image is subject to the same remarks as for \DUrole{sc}{pdf}.
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Memento of Shortcuts in Graphic Mode%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Memento of Shortcuts in Graphic Mode}%
|
||
\label{memento-of-shortcuts-in-graphic-mode}%
|
||
}
|
||
|
||
The main application binary is \DUrole{cb}{cgt}.
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.160\DUtablewidth}|p{0.199\DUtablewidth}|p{0.586\DUtablewidth}|}
|
||
\hline
|
||
\textbf{%
|
||
Category
|
||
} & \textbf{%
|
||
Keys
|
||
} & \textbf{%
|
||
Action
|
||
} \\
|
||
\hline
|
||
\endfirsthead
|
||
\hline
|
||
\textbf{%
|
||
Category
|
||
} & \textbf{%
|
||
Keys
|
||
} & \textbf{%
|
||
Action
|
||
} \\
|
||
\hline
|
||
\endhead
|
||
\multicolumn{3}{c}{\hfill ... continued on next page} \\
|
||
\endfoot
|
||
\endlastfoot
|
||
|
||
\textbf{Moves}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \DUrole{raw-latex}{\key{Up}\xspace},
|
||
\DUrole{raw-latex}{\key{Down}\xspace}
|
||
\item[] \DUrole{raw-latex}{\key{Left}\xspace},
|
||
\DUrole{raw-latex}{\key{Right}\xspace}
|
||
\end{DUlineblock}
|
||
&
|
||
Shift the view in the according direction
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Fit}
|
||
&
|
||
\DUrole{raw-latex}{\key{f}\xspace}
|
||
&
|
||
Fit to the Cell abutment box
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Refresh}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{l}\xspace}
|
||
&
|
||
Triggers a complete display redraw
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Goto}
|
||
&
|
||
\DUrole{raw-latex}{\key{G}\xspace}
|
||
&
|
||
\emph{apperture} 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
|
||
\multirow{2}{0.16\DUtablewidth}{%
|
||
\textbf{Zoom}
|
||
} &
|
||
\DUrole{raw-latex}{\key{z}\xspace},
|
||
\DUrole{raw-latex}{\key{m}\xspace}
|
||
&
|
||
Respectively zoom by a 2 factor and \emph{unzoom}
|
||
by a 2 factor
|
||
\\
|
||
\cline{2-2}
|
||
\cline{3-3}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \includegraphics[scale=0.250000]{./images/ComputerMouse.png}
|
||
\item[] Area Zoom
|
||
\end{DUlineblock}
|
||
&
|
||
You can perform a zoom to an area.
|
||
Define the zoom area by \emph{holding down the left
|
||
mouse button} while moving the mouse.
|
||
\\
|
||
\hline
|
||
\multirow{3}{0.16\DUtablewidth}{%
|
||
\textbf{Selection}
|
||
} &
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \includegraphics[scale=0.250000]{./images/ComputerMouse.png}
|
||
\item[] Area Selection
|
||
\end{DUlineblock}
|
||
&
|
||
You can select displayed objects under an area.
|
||
Define the selection area by \emph{holding down the
|
||
right mouse button} while moving the mouse.
|
||
\\
|
||
\cline{2-2}
|
||
\cline{3-3}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \includegraphics[scale=0.250000]{./images/ComputerMouse.png}
|
||
\item[] Toggle Selection
|
||
\end{DUlineblock}
|
||
&
|
||
You can toggle the selection of one object under
|
||
the mouse position by pressing \DUrole{raw-latex}{\key{CTRL}\xspace} and
|
||
pressing down \emph{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-2}
|
||
\cline{3-3}
|
||
&
|
||
\DUrole{raw-latex}{\key{S}\xspace}
|
||
&
|
||
Toggle the selection visibility
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Controller}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{i}\xspace}
|
||
&
|
||
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
|
||
\multirow{2}{0.16\DUtablewidth}{%
|
||
\textbf{Rulers}
|
||
} &
|
||
\DUrole{raw-latex}{\key{k}\xspace},
|
||
\DUrole{raw-latex}{\key{ESC}\xspace}
|
||
&
|
||
One stroke on \DUrole{raw-latex}{\key{k}\xspace} enters the ruler mode, in
|
||
which you can draw one ruler. You can exit the
|
||
ruler mode by pressing \DUrole{raw-latex}{\key{ESC}\xspace}. Once in ruler
|
||
mode, the first click on the \emph{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-2}
|
||
\cline{3-3}
|
||
&
|
||
\DUrole{raw-latex}{\key{K}\xspace}
|
||
&
|
||
Clears all the drawn rulers
|
||
\\
|
||
\hline
|
||
|
||
\textbf{Print}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{p}\xspace}
|
||
&
|
||
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
|
||
\multirow{3}{0.16\DUtablewidth}{%
|
||
\textbf{Open/Close}
|
||
} &
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{o}\xspace}
|
||
&
|
||
Opens a new design. The design name must be
|
||
given without path or extention.
|
||
\\
|
||
\cline{2-2}
|
||
\cline{3-3}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{w}\xspace}
|
||
&
|
||
Close the current viewer window, but do not quit
|
||
the application.
|
||
\\
|
||
\cline{2-2}
|
||
\cline{3-3}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace}
|
||
\DUrole{raw-latex}{$+$\xspace} \DUrole{raw-latex}{\key{q}\xspace}
|
||
&
|
||
\DUroletitlereference{CTRL+Q} quit the application
|
||
(closing all windows).
|
||
\\
|
||
\hline
|
||
\multirow{2}{0.16\DUtablewidth}{%
|
||
\textbf{Hierarchy}
|
||
} &
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace} \DUrole{raw-latex}{$+$\xspace}
|
||
\DUrole{raw-latex}{\key{Down}\xspace}
|
||
&
|
||
Go one hierarchy level down. That is, if there
|
||
is an \emph{instance} under the cursor position, load
|
||
it's \emph{model} Cell in place of the current one.
|
||
\\
|
||
\cline{2-2}
|
||
\cline{3-3}
|
||
&
|
||
\DUrole{raw-latex}{\key{CTRL}\xspace} \DUrole{raw-latex}{$+$\xspace}
|
||
\DUrole{raw-latex}{\key{Up}\xspace}
|
||
&
|
||
Go one hierarchy level up. if we have entered
|
||
the current model through \DUrole{raw-latex}{\key{CTRL}\xspace} \DUrole{raw-latex}{$+$\xspace}
|
||
\DUrole{raw-latex}{\key{Down}\xspace}, reload the previous model (the one
|
||
in which this model is instanciated).
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Cgt Command Line Options%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Cgt Command Line Options}%
|
||
\label{cgt-command-line-options}%
|
||
}
|
||
|
||
Appart from the obvious \texttt{-{}-text} options, all can be used for text and graphical mode.
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.354\DUtablewidth}|p{0.575\DUtablewidth}|}
|
||
\hline
|
||
\textbf{%
|
||
Arguments
|
||
} & \textbf{%
|
||
Meaning
|
||
} \\
|
||
\hline
|
||
\endfirsthead
|
||
\hline
|
||
\textbf{%
|
||
Arguments
|
||
} & \textbf{%
|
||
Meaning
|
||
} \\
|
||
\hline
|
||
\endhead
|
||
\multicolumn{2}{c}{\hfill ... continued on next page} \\
|
||
\endfoot
|
||
\endlastfoot
|
||
|
||
\DUroletitlereference{-t|-{}-text}
|
||
&
|
||
Instruct \DUrole{cb}{cgt} to run in text mode.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-L|-{}-log-mode}
|
||
&
|
||
Disable the uses of \DUrole{sc}{ansi} escape sequence on
|
||
the \DUrole{cb}{tty}. Useful when the output is
|
||
redirected to a file.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-c <cell>|-{}-cell=<cell>}
|
||
&
|
||
The name of the design to load, without
|
||
leading path or extention.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-g|-{}-load-global}
|
||
&
|
||
Reload a global routing solution from disk.
|
||
The file containing the solution must be named
|
||
\DUroletitlereference{<cell>.kgr}.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-{}-save-global}
|
||
&
|
||
Save the global routing solution, into a file
|
||
named \DUroletitlereference{<design>.kgr}.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-e <ratio>|-{}-edge=<ratio>}
|
||
&
|
||
Change the edge capacity for the global
|
||
router, between 0 and 1 (\DUrole{sc}{Knik}).
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-G|-{}-global-route}
|
||
&
|
||
Run the global router (\DUrole{sc}{Knik}).
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-R|-{}-detailed-route}
|
||
&
|
||
Run the detailed router (\DUrole{sc}{Kite}).
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-s|-{}-save-design=<routed>}
|
||
&
|
||
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
|
||
|
||
\DUroletitlereference{-{}-events-limit=<count>}
|
||
&
|
||
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 \DUroletitlereference{100K}. gates. For bigger
|
||
designs you may wants to increase this limit.
|
||
\\
|
||
\hline
|
||
|
||
\DUroletitlereference{-{}-stratus-script=<module>}
|
||
&
|
||
Run the Python/Stratus script \texttt{module}.
|
||
See \hyperref[python-scripts-in-cgt]{Python Scripts in Cgt}.
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
Some Examples :
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item Run both global and detailed router, then save the routed design :
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
>~cgt~-v~-t~-G~-R~-{}-cell=design~-{}-save-design=design\_kite
|
||
}
|
||
\end{quote}
|
||
|
||
\item Load a previous global solution, run the detailed router, then save the
|
||
routed design :
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
>~cgt~-v~-t~-{}-load-global~-R~-{}-cell=design~-{}-save-design=design\_kite
|
||
}
|
||
\end{quote}
|
||
|
||
\item Run the global router, then save the global routing solution :
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
>~cgt~-v~-t~-G~-{}-save-global~-{}-cell=design
|
||
}
|
||
\end{quote}
|
||
|
||
\end{itemize}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{The Controller%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{The Controller}%
|
||
\label{id2}%
|
||
\label{the-controller}%
|
||
}
|
||
|
||
The \emph{Controller} window is composed of seven tabs:
|
||
\setcounter{listcnt0}{0}
|
||
\begin{list}{\arabic{listcnt0}.}
|
||
{
|
||
\usecounter{listcnt0}
|
||
\setlength{\rightmargin}{\leftmargin}
|
||
}
|
||
|
||
\item \hyperref[the-look-tab]{The Look Tab} to select the display style.
|
||
|
||
\item \hyperref[the-filter-tab]{The Filter Tab} the hierarchical levels to be displayed, the look of
|
||
rubbers and the dimension units.
|
||
|
||
\item \hyperref[the-layers-go-tab]{The Layers\&Go Tab} to selectively hide/display layers.
|
||
|
||
\item \hyperref[the-netlist-tab]{The Netlist Tab} to browse through the \emph{netlist}. Works in association
|
||
with the \emph{Selection} tab.
|
||
|
||
\item \hyperref[the-selection-tab]{The Selection Tab} allow to view all the currently selected elements.
|
||
|
||
\item \hyperref[the-inspector-tab]{The Inspector Tab} browse through either the DataBase, the Cell or
|
||
the current selection.
|
||
|
||
\item \hyperref[the-settings-tab]{The Settings Tab} access all the tool's configuration settings.
|
||
\end{list}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Look Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Look Tab}%
|
||
\label{id3}%
|
||
\label{the-look-tab}%
|
||
}
|
||
|
||
You can select how the layout will be displayed. There is a special one
|
||
\texttt{Printer.Coriolis} specifically designed for \hyperref[printing-snapshots]{Printing \& Snapshots}.
|
||
You should select it prior to calling the print or snapshot dialog boxes.
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Look-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Filter Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Filter Tab}%
|
||
\label{id4}%
|
||
\label{the-filter-tab}%
|
||
}
|
||
|
||
The filter tab let you select what hierarchical levels of your design will be
|
||
displayed. Hierarchy level are numbered top-down: the level 0 correspond to
|
||
the top-level cell, the level one to the instances of the top-level Cell and
|
||
so on.
|
||
|
||
There are also check boxes to enable/disable the processing of Terminal Cell,
|
||
Master Cells and Compnents. The processing of Terminal Cell (hierarchy leaf
|
||
cells) is disabled by default when you load a hierarchical design and enabled
|
||
when you load a single Cell.
|
||
|
||
You can choose what kind of form to give to the rubbers and the type of
|
||
unit used to display coordinates.
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{What are Rubbers:} \DUrole{sc}{Hurricane} uses \emph{Rubbers} to materialize
|
||
physical gaps in net topology. That is, if some wires are missing to
|
||
connect two or more parts of net, a \emph{rubber} will be drawn between them
|
||
to signal the gap.
|
||
|
||
For example, after the detailed routing no \emph{rubbers} should remains.
|
||
They have been made \emph{very} visibles as big violet lines...
|
||
}
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Filter-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Layers\&Go Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Layers\&Go Tab}%
|
||
\label{id5}%
|
||
\label{the-layers-go-tab}%
|
||
}
|
||
|
||
Control the individual display of all \emph{layers} and \emph{Gos}.
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \emph{Layers} correspond to a true physical layer. From a \DUrole{sc}{Hurricane} point of
|
||
view they are all the \emph{BasicLayers} (could be matched to GDSII).
|
||
|
||
\item \emph{Gos} stands from \emph{Graphical Objects}, they are drawings that have no
|
||
physical existence but are added by the various tools to display extra
|
||
information. One good exemple is the density map of the detailed router,
|
||
to easily locate congested areas.
|
||
|
||
\end{itemize}
|
||
|
||
For each layer/Go there are two check boxes:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item The normal one triggers the display.
|
||
|
||
\item The red-outlined allows objects of that layer to be selectable or not.
|
||
|
||
\end{itemize}
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-LayersGos-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Netlist Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Netlist Tab}%
|
||
\label{id6}%
|
||
\label{the-netlist-tab}%
|
||
}
|
||
|
||
The \emph{Netlist} tab shows the list of nets... By default the tab is not
|
||
\emph{synched} with the displayed Cell. To see the nets you must check the
|
||
\textbf{Sync Netlist} checkbox. You can narrow the set of displayed nets by
|
||
using the filter pattern (supports regular expressions).
|
||
|
||
An very useful feature is to enable the \textbf{Sync Selection}, which will
|
||
automatically select all the components of the selected net(s). You can
|
||
select multiple nets. In the figure the net \texttt{auxsc35} is selected and
|
||
is highlited in the \emph{Viewer}.
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Netlist-1.eps}\end{center}}
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Viewer-Netlist-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Selection Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Selection Tab}%
|
||
\label{id7}%
|
||
\label{the-selection-tab}%
|
||
}
|
||
|
||
The \emph{Selection} tab list all the components currently selecteds. They
|
||
can be filtered thanks to the filter pattern.
|
||
|
||
Used in conjunction with the \emph{Netlist} \textbf{Sync Selection} you will all see
|
||
all the components part of \emph{net}.
|
||
|
||
In this list, you can toggle individually the selection of component by
|
||
pressing the \texttt{t} key. When unselected in this way a component is not
|
||
removed from the the selection list but instead displayed in red italic.
|
||
To see where a component is you may make it blink by repeatedly press
|
||
the \texttt{t} key...
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Selection-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Inspector Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Inspector Tab}%
|
||
\label{id8}%
|
||
\label{the-inspector-tab}%
|
||
}
|
||
|
||
This tab is very useful, but mostly for \DUrole{sc}{Coriolis} developpers. It allows
|
||
to browse through the live DataBase. The \emph{Inspector} provide three entry points:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item \textbf{DataBase}: Starts from the whole \DUrole{sc}{Hurricane} DataBase.
|
||
|
||
\item \textbf{Cell}: Inspect the currently loaded Cell.
|
||
|
||
\item \textbf{Selection}: Inspect the object currently highlited in the \emph{Selection} tab.
|
||
|
||
\end{itemize}
|
||
|
||
Once an entry point has been activated, you may recursively expore all
|
||
it's fields using the right/left arrows.
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{Do not put your fingers in the socket:} when inspecting
|
||
anything, do not modify the DataBase. If the any object under inspection
|
||
is deleted, you will crash the application...
|
||
}
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{Implementation Detail:} the inspector support is done with
|
||
\texttt{Slot}, \texttt{Record} and \texttt{getString()}.
|
||
}
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Inspector-1.eps}\end{center}}
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Inspector-2.eps}\end{center}}
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Inspector-3.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{The Settings Tab%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{The Settings Tab}%
|
||
\label{id9}%
|
||
\label{the-settings-tab}%
|
||
}
|
||
|
||
Here comes the description of the \emph{Settings} tab.
|
||
|
||
\DUrole{raw-latex}{\begin{center}\includegraphics[width=.7\textwidth]{./images/Controller-Settings-1.eps}\end{center}}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Tools Fine Tuning%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Tools Fine Tuning}%
|
||
\label{tools-fine-tuning}%
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Detailed Routing Configuration Parameters%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Detailed Routing Configuration Parameters}%
|
||
\label{id10}%
|
||
\label{detailed-routing-configuration-parameters}%
|
||
}
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.470\DUtablewidth}|p{0.226\DUtablewidth}|p{0.145\DUtablewidth}|}
|
||
\hline
|
||
\textbf{%
|
||
Parameter Identifier
|
||
} & \textbf{%
|
||
Type
|
||
} & \textbf{%
|
||
Default
|
||
} \\
|
||
\hline
|
||
\endfirsthead
|
||
\hline
|
||
\textbf{%
|
||
Parameter Identifier
|
||
} & \textbf{%
|
||
Type
|
||
} & \textbf{%
|
||
Default
|
||
} \\
|
||
\hline
|
||
\endhead
|
||
\multicolumn{3}{c}{\hfill ... continued on next page} \\
|
||
\endfoot
|
||
\endlastfoot
|
||
\multicolumn{3}{|l|}{
|
||
\textbf{Katabatic Parameters}
|
||
} \\
|
||
\hline
|
||
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \texttt{katabatic.globalLengthThreshold}
|
||
\item[] \texttt{katabatic.saturateRatio}
|
||
\item[] \texttt{katabatic.saturateRp}
|
||
\item[] \texttt{kite.borderRipupLimit}
|
||
\end{DUlineblock}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] TypeInt
|
||
\item[] TypePercentage
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\end{DUlineblock}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] 1450
|
||
\item[] 80
|
||
\item[] 8
|
||
\item[] 26
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
\multicolumn{3}{|l|}{
|
||
\textbf{Kite Parameters}
|
||
} \\
|
||
\hline
|
||
|
||
\begin{DUlineblock}{0em}
|
||
\item[] \texttt{kite.edgeCapacity}
|
||
\item[] \texttt{kite.eventsLimit}
|
||
\item[] \texttt{kite.ripupCost}
|
||
\item[] \texttt{kite.globalRipupLimit}
|
||
\item[] \texttt{kite.localRipupLimit}
|
||
\item[] \texttt{kite.longGlobalRipupLimit}
|
||
\item[] \texttt{kite.strapRipupLimit}
|
||
\item[] \texttt{kite.metal1MinBreak}
|
||
\item[] \texttt{kite.metal2MinBreak}
|
||
\item[] \texttt{kite.metal3MinBreak}
|
||
\item[] \texttt{kite.metal4MinBreak}
|
||
\item[] \texttt{kite.metal5MinBreak}
|
||
\item[] \texttt{kite.metal6MinBreak}
|
||
\item[] \texttt{kite.metal7MinBreak}
|
||
\end{DUlineblock}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] TypePercentage
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\item[] TypeInt
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\item[] TypeDouble
|
||
\end{DUlineblock}
|
||
&
|
||
\begin{DUlineblock}{0em}
|
||
\item[] 65
|
||
\item[] 4000002
|
||
\item[] 3
|
||
\item[] 5
|
||
\item[] 7
|
||
\item[] 5
|
||
\item[] 16
|
||
\item[] 100
|
||
\item[] 100
|
||
\item[] 100
|
||
\item[] 1450
|
||
\item[] 1450
|
||
\item[] 1450
|
||
\item[] 1450
|
||
\end{DUlineblock}
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\section*{Installation from Sources%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{section}{Installation from Sources}%
|
||
\label{id11}%
|
||
\label{installation-from-sources}%
|
||
}
|
||
|
||
Installation from source is done differently than what is done in the packaging
|
||
procedure. The archive is also structured differently and meant to be unpacked
|
||
and compiled under a user's home directory.
|
||
|
||
Main building prerequisites:
|
||
%
|
||
\begin{itemize}
|
||
|
||
\item cmake
|
||
|
||
\item g++
|
||
|
||
\item boost
|
||
|
||
\item libxml2
|
||
|
||
\item yacc \& lex.
|
||
|
||
\item Qt 4
|
||
|
||
\item LEF/DEF (optional).
|
||
|
||
\item hMetis (optional).
|
||
|
||
\item doxygen.
|
||
|
||
\item latex
|
||
|
||
\item latex2html.
|
||
|
||
\item python-docutils (for reStructuredText).
|
||
|
||
\end{itemize}
|
||
|
||
Simple building procedure:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
dummy@lepka:\textasciitilde{}\$~tar~jxvf~coriolis2-1.0-20121103.tar.bz2\\
|
||
dummy@lepka:\textasciitilde{}\$~cd~coriolis-2.x/src\\
|
||
dummy@lepka:src\$~./bootstrap/buildCoriolis.py~\textbackslash{}\\
|
||
~~~~~~~~~~~~~~~~~-{}-project=bootstrap~-{}-project=vlsisapd~-{}-project=coriolis~\textbackslash{}\\
|
||
~~~~~~~~~~~~~~~~~-{}-make="-j4~install"\\
|
||
dummy@lepka:src\$~./bootstrap/buildCoriolis.py~\textbackslash{}\\
|
||
~~~~~~~~~~~~~~~~~-{}-project=bootstrap~-{}-project=vlsisapd~-{}-project=coriolis~\textbackslash{}\\
|
||
~~~~~~~~~~~~~~~~~-{}-doc~-{}-make="-j1~install"
|
||
}
|
||
\end{quote}
|
||
|
||
Installation is done according to the following tree structure:
|
||
|
||
\leavevmode
|
||
\setlength{\DUtablewidth}{\linewidth}
|
||
\begin{longtable}[c]{|p{0.247\DUtablewidth}|p{0.693\DUtablewidth}|}
|
||
\hline
|
||
|
||
Linux, SL 6, 32 bits
|
||
&
|
||
\textasciitilde{}/coriolis-2.x/Linux.slsoc6x/Release.Shared/install
|
||
\\
|
||
\hline
|
||
|
||
Linux, SL 6, 64 bits
|
||
&
|
||
\textasciitilde{}/coriolis-2.x/Linux.slsoc6x\_64/Release.Shared/install
|
||
\\
|
||
\hline
|
||
|
||
FreeBSD 8, 32 bits
|
||
&
|
||
\textasciitilde{}/coriolis-2.x/FreeBSD.8x.i386/Release.Shared/install
|
||
\\
|
||
\hline
|
||
|
||
FreeBSD 8, 64 bits
|
||
&
|
||
\textasciitilde{}/coriolis-2.x/FreeBSD.8x.amd64/Release.Shared/install
|
||
\\
|
||
\hline
|
||
\end{longtable}
|
||
|
||
\DUadmonition[note]{
|
||
\DUtitle[note]{Note}
|
||
|
||
\emph{Alternate build types:} the \texttt{Release.Shared} means an optimized build
|
||
with shared libraries. But there are also available \texttt{Static} instead of \texttt{Shared}
|
||
and \texttt{Debug} instead of \texttt{Release} and any combination of them.
|
||
|
||
\texttt{Static} do not work because I don't know yet to mix statically linked binaries
|
||
and Python modules (which must be dynamic).
|
||
}
|
||
|
||
|
||
%___________________________________________________________________________
|
||
|
||
\subsection*{Environment Helper%
|
||
\phantomsection%
|
||
\addcontentsline{toc}{subsection}{Environment Helper}%
|
||
\label{environment-helper}%
|
||
}
|
||
|
||
To simplify the tedious task of configuring your environment, a helper is provided
|
||
in the \texttt{bootstrap} source directory:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
\textasciitilde{}/coriolis-2.x/src/bootstrap/coriolisEnv.py
|
||
}
|
||
\end{quote}
|
||
|
||
Use it like this:
|
||
%
|
||
\begin{quote}{\ttfamily \raggedright \noindent
|
||
dummy@lepka:\textasciitilde{}>~eval~`\textasciitilde{}/coriolis-2.x/src/bootstrap/coriolisEnv.py~-{}-v2~-{}-python`
|
||
}
|
||
\end{quote}
|
||
|
||
\end{document}
|