Keep Sphinx variant documentation sources, just in case...
|
@ -0,0 +1,20 @@
|
||||||
|
# Minimal makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line, and also
|
||||||
|
# from the environment for the first two.
|
||||||
|
SPHINXOPTS ?=
|
||||||
|
SPHINXBUILD ?= sphinx-build
|
||||||
|
SOURCEDIR = .
|
||||||
|
BUILDDIR = _build
|
||||||
|
|
||||||
|
# Put it first so that "make" without argument is like "make help".
|
||||||
|
help:
|
||||||
|
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||||
|
|
||||||
|
.PHONY: help Makefile
|
||||||
|
|
||||||
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||||
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||||
|
%: Makefile
|
||||||
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
|
@ -0,0 +1,60 @@
|
||||||
|
# Configuration file for the Sphinx documentation builder.
|
||||||
|
#
|
||||||
|
# This file only contains a selection of the most common options. For a full
|
||||||
|
# list see the documentation:
|
||||||
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||||
|
|
||||||
|
# -- Path setup --------------------------------------------------------------
|
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
|
#
|
||||||
|
# import os
|
||||||
|
# import sys
|
||||||
|
# sys.path.insert(0, os.path.abspath('.'))
|
||||||
|
|
||||||
|
#import site
|
||||||
|
#sys.path.append( site.getsitepackages()+'breathe' )
|
||||||
|
|
||||||
|
|
||||||
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
|
project = 'Coriolis'
|
||||||
|
copyright = '2022, Jean-Paul Chaput & Al.'
|
||||||
|
author = 'Jean-Paul Chaput & Al.'
|
||||||
|
|
||||||
|
# The full version, including alpha/beta/rc tags
|
||||||
|
release = '2.x'
|
||||||
|
|
||||||
|
|
||||||
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
|
# ones.
|
||||||
|
extensions = [ 'breathe'
|
||||||
|
]
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['_templates']
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
# This pattern also affects html_static_path and html_extra_path.
|
||||||
|
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '**/*_HTML.rst']
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output -------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
#
|
||||||
|
html_theme = 'alabaster'
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
html_static_path = ['_static']
|
||||||
|
|
||||||
|
breathe_projects = { "Hurricane": "/dsk/l1/jpc/coriolis-2.x/src/coriolis/hurricane/doc/hurricane/xml/" }
|
|
@ -0,0 +1,255 @@
|
||||||
|
.. -*- Mode: rst; explicit-buffer-name: "definition.rst<documentation/etc>" -*-
|
||||||
|
|
||||||
|
|
||||||
|
.. role:: raw-html(raw)
|
||||||
|
:format: html
|
||||||
|
|
||||||
|
.. role:: raw-latex(raw)
|
||||||
|
:format: latex
|
||||||
|
|
||||||
|
.. role:: ul
|
||||||
|
.. role:: cb
|
||||||
|
.. role:: sc
|
||||||
|
.. role:: fboxtt
|
||||||
|
|
||||||
|
.. HTML/LaTeX backends mixed macros.
|
||||||
|
.. |br| replace:: :raw-latex:`\linebreak` :raw-html:`<br/>`
|
||||||
|
.. |medskip| replace:: :raw-latex:`\medskip` :raw-html:`<br class="medskip"/>`
|
||||||
|
.. |newpage| replace:: :raw-latex:`\newpage`
|
||||||
|
.. |linebreak| replace:: :raw-latex:`\smallskip`
|
||||||
|
.. |noindent| replace:: :raw-latex:`\noindent` :raw-html:`<p class="noindent"></p>`
|
||||||
|
.. |dotfill| replace:: :raw-html:` `
|
||||||
|
.. |bcenter| replace:: :raw-latex:`\begin{center}`
|
||||||
|
.. |ecenter| replace:: :raw-latex:`\end{center}`
|
||||||
|
.. |pagestylefancy| replace:: :raw-latex:`\thispagestyle{fancy}`
|
||||||
|
.. |lambda| replace:: :raw-latex:`$\lambda$` :raw-html:`λ`
|
||||||
|
|
||||||
|
|
||||||
|
.. Acronyms & names.
|
||||||
|
.. |NDA| replace:: :sc:`nda`
|
||||||
|
.. |OS| replace:: :sc:`os`
|
||||||
|
.. |FOSS| replace:: :sc:`foss`
|
||||||
|
.. |GNU| replace:: :sc:`gnu`
|
||||||
|
.. |LGPL| replace:: :sc:`lgpl`
|
||||||
|
.. |GPL| replace:: :sc:`gpl`
|
||||||
|
.. |UPMC| replace:: :sc:`upmc`
|
||||||
|
.. |SorbonneUniversite| replace:: :sc:`Sorbonne Université`
|
||||||
|
.. |SU| replace:: :sc:`su`
|
||||||
|
.. |CIAN| replace:: :sc:`cian`
|
||||||
|
.. |LIP6| replace:: :sc:`lip6`
|
||||||
|
.. |Bull| replace:: :sc:`Bull`
|
||||||
|
.. |Cadence| replace:: :sc:`Cadence`
|
||||||
|
.. |Si2| replace:: :sc:`Si2`
|
||||||
|
.. |LEFDEF| replace:: :sc:`lefdef`
|
||||||
|
.. |LEF| replace:: :sc:`lef`
|
||||||
|
.. |DEF| replace:: :sc:`def`
|
||||||
|
.. |Flute| replace:: :sc:`Flute`
|
||||||
|
.. |MacOS| replace:: :sc:`MacOS`
|
||||||
|
.. |Darwin| replace:: :sc:`Darwin`
|
||||||
|
.. |RHEL| replace:: :sc:`rhel`
|
||||||
|
.. |RHEL6| replace:: :sc:`rhel6`
|
||||||
|
.. |RHEL7| replace:: :sc:`rhel7`
|
||||||
|
.. |SL6| replace:: :sc:`Scientific Linux 6`
|
||||||
|
.. |SL7| replace:: :sc:`Scientific Linux 7`
|
||||||
|
.. |Scientific Linux| replace:: :sc:`Scientific Linux`
|
||||||
|
.. |CentOS| replace:: :sc:`CentOS`
|
||||||
|
.. |RedHat| replace:: :sc:`RedHat`
|
||||||
|
.. |Fedora| replace:: :sc:`Fedora`
|
||||||
|
.. |FC13| replace:: :sc:`fc13`
|
||||||
|
.. |EPEL| replace:: :sc:`epel`
|
||||||
|
.. |Debian| replace:: :sc:`Debian`
|
||||||
|
.. |Ubuntu| replace:: :sc:`Ubuntu`
|
||||||
|
.. |MOSIS| replace:: :sc:`mosis`
|
||||||
|
.. |Blif| replace:: :sc:`blif`
|
||||||
|
.. |TSMC| replace:: :sc:`tsmc`
|
||||||
|
.. |AMS| replace:: :sc:`ams`
|
||||||
|
.. |XFAB| replace:: :sc:`xfab`
|
||||||
|
.. |XH035| replace:: :cb:`XH035`
|
||||||
|
.. |ROHM| replace:: :sc:`rohm`
|
||||||
|
|
||||||
|
.. |Alexandre| replace:: :sc:`Alexandre`
|
||||||
|
.. |Belloeil| replace:: :sc:`Belloeil`
|
||||||
|
.. |Chaput| replace:: :sc:`Chaput`
|
||||||
|
.. |Chotin| replace:: :sc:`Chotin`
|
||||||
|
.. |Chu| replace:: :sc:`Chu`
|
||||||
|
.. |Clement| replace:: :sc:`Clement`
|
||||||
|
.. |Dupuis| replace:: :sc:`Dupuis`
|
||||||
|
.. |Escassut| replace:: :sc:`Escassut`
|
||||||
|
.. |Gouvine| replace:: :sc:`Gouvine`
|
||||||
|
.. |Masson| replace:: :sc:`Masson`
|
||||||
|
.. |Sroka| replace:: :sc:`Sroka`
|
||||||
|
.. |Yifei| replace:: :sc:`Yifei`
|
||||||
|
.. |Mead| replace:: :sc:`Mead`
|
||||||
|
.. |Conway| replace:: :sc:`Conway`
|
||||||
|
.. |Petley| replace:: :sc:`Petley`
|
||||||
|
.. |FloresGomez| replace:: :sc:`Flores Gomez`
|
||||||
|
.. |SNX| replace:: :sc:`snx`
|
||||||
|
|
||||||
|
.. |ASIC| replace:: :sc:`asic`
|
||||||
|
.. |EDA| replace:: :sc:`eda`
|
||||||
|
.. |RTL| replace:: :sc:`rtl`
|
||||||
|
.. |HSL| replace:: :sc:`hsl`
|
||||||
|
.. |FHS| replace:: :sc:`fhs`
|
||||||
|
.. |IEEE| replace:: :sc:`ieee`
|
||||||
|
.. |ANSI| replace:: :sc:`ansi`
|
||||||
|
.. |MIPS| replace:: :sc:`mips`
|
||||||
|
.. |EDI| replace:: :sc:`edi`
|
||||||
|
.. |Yosys| replace:: :sc:`Yosys`
|
||||||
|
.. |nMigen| replace:: :sc:`nMigen`
|
||||||
|
.. |NanoRoute| replace:: :sc:`NanoRoute`
|
||||||
|
.. |Pharosc| replace:: :sc:`Pharosc`
|
||||||
|
.. |Am2901| replace:: :sc:`Am2901`
|
||||||
|
.. |CAIRO| replace:: :sc:`cairo`
|
||||||
|
.. |CAIRO+| replace:: :sc:`cairo+`
|
||||||
|
.. |Hurricane| replace:: :sc:`Hurricane`
|
||||||
|
.. |CRL| replace:: :sc:`crl`
|
||||||
|
.. |Alliance| replace:: :sc:`Alliance`
|
||||||
|
.. |StaCS| replace:: :sc:`StaCS`
|
||||||
|
.. |GenLib| replace:: :sc:`GenLib`
|
||||||
|
.. |Nero| replace:: :sc:`Nero`
|
||||||
|
.. |Druc| replace:: :cb:`Druc`
|
||||||
|
.. |Coloquinte| replace:: :sc:`Coloquinte`
|
||||||
|
.. |Coriolis| replace:: :sc:`Coriolis`
|
||||||
|
.. |Coriolis1| replace:: :sc:`Coriolis 1`
|
||||||
|
.. |Coriolis2| replace:: :sc:`Coriolis 2`
|
||||||
|
.. |alliance-check-toolkit| replace:: ``alliance-check-toolkit``
|
||||||
|
.. |VLSISAPD| replace:: :sc:`vlsisapd`
|
||||||
|
.. |CRLcore| replace:: :sc:`CRLcore`
|
||||||
|
.. |Cyclop| replace:: :sc:`Cyclop`
|
||||||
|
.. |Nimbus| replace:: :sc:`Nimbus`
|
||||||
|
.. |hMetis| replace:: :sc:`hMetis`
|
||||||
|
.. |Mauka| replace:: :sc:`Mauka`
|
||||||
|
.. |Etesian| replace:: :sc:`Etesian`
|
||||||
|
.. |Knik| replace:: :sc:`Knik`
|
||||||
|
.. |Anabatic| replace:: :sc:`Anabatic`
|
||||||
|
.. |Katabatic| replace:: :sc:`Katabatic`
|
||||||
|
.. |Kite| replace:: :sc:`Kite`
|
||||||
|
.. |Katana| replace:: :sc:`Katana`
|
||||||
|
.. |Stratus| replace:: :sc:`Stratus`
|
||||||
|
.. |Stratus1| replace:: :sc:`Stratus1`
|
||||||
|
.. |Stratus2| replace:: :sc:`Stratus2`
|
||||||
|
.. |Unicorn| replace:: :sc:`Unicorn`
|
||||||
|
.. |ccb| replace:: :cb:`ccb`
|
||||||
|
.. |cgt| replace:: :cb:`cgt`
|
||||||
|
.. |Chams| replace:: :sc:`Chams`
|
||||||
|
.. |OpenChams| replace:: :sc:`OpenChams`
|
||||||
|
.. |API| replace:: :sc:`api`
|
||||||
|
.. |STL| replace:: :sc:`stl`
|
||||||
|
.. |XML| replace:: :sc:`xml`
|
||||||
|
.. |pdf| replace:: :sc:`pdf`
|
||||||
|
.. |UTF-8| replace:: :sc:`utf-8`
|
||||||
|
.. |Python| replace:: :sc:`Python`
|
||||||
|
.. |TCL| replace:: :sc:`tcl`
|
||||||
|
.. |Linux| replace:: :sc:`Linux`
|
||||||
|
.. |MacPorts| replace:: :sc:`MacPorts`
|
||||||
|
.. |devtoolset| replace:: :cb:`devtoolset`
|
||||||
|
.. |boost| replace:: :cb:`boost`
|
||||||
|
.. |Qt| replace:: :sc:`qt`
|
||||||
|
.. |Qwt| replace:: :sc:`qwt`
|
||||||
|
.. |PyQt| replace:: :sc:`PyQt`
|
||||||
|
.. |PyQt4| replace:: :sc:`PyQt4`
|
||||||
|
.. |PyQt5| replace:: :sc:`PyQt5`
|
||||||
|
.. |UID| replace:: :sc:`uid`
|
||||||
|
.. |GID| replace:: :sc:`gid`
|
||||||
|
.. |root| replace:: :cb:`root`
|
||||||
|
.. |tty| replace:: :cb:`tty`
|
||||||
|
.. |svn| replace:: :cb:`svn`
|
||||||
|
.. |git| replace:: :cb:`git`
|
||||||
|
.. |rpm| replace:: :cb:`rpm`
|
||||||
|
.. |gdb| replace:: :cb:`gdb`
|
||||||
|
.. |valgrind| replace:: :cb:`valgrind`
|
||||||
|
.. |cmake| replace:: :cb:`cmake`
|
||||||
|
.. |bison| replace:: :cb:`bison`
|
||||||
|
.. |flex| replace:: :cb:`flex`
|
||||||
|
.. |struct| replace:: :cb:`struct`
|
||||||
|
.. |Makefile| replace:: :cb:`Makefile`
|
||||||
|
|
||||||
|
|
||||||
|
.. |KeyUp| replace:: :fboxtt:`Up`
|
||||||
|
.. |KeyDown| replace:: :fboxtt:`Down`
|
||||||
|
.. |KeyLeft| replace:: :fboxtt:`Left`
|
||||||
|
.. |KeyRight| replace:: :fboxtt:`Right`
|
||||||
|
.. |KeyF| replace:: :fboxtt:`f`
|
||||||
|
.. |KeyL| replace:: :fboxtt:`l`
|
||||||
|
.. |KeyG| replace:: :fboxtt:`g`
|
||||||
|
.. |KeyZ| replace:: :fboxtt:`z`
|
||||||
|
.. |KeyM| replace:: :fboxtt:`m`
|
||||||
|
.. |KeyI| replace:: :fboxtt:`i`
|
||||||
|
.. |KeyK| replace:: :fboxtt:`k`
|
||||||
|
.. |KeyP| replace:: :fboxtt:`p`
|
||||||
|
.. |KeyO| replace:: :fboxtt:`o`
|
||||||
|
.. |KeyW| replace:: :fboxtt:`w`
|
||||||
|
.. |KeyQ| replace:: :fboxtt:`q`
|
||||||
|
.. |KeyCapK| replace:: :fboxtt:`K`
|
||||||
|
.. |KeyCapS| replace:: :fboxtt:`S`
|
||||||
|
.. |Plus| replace:: :fboxtt:`+`
|
||||||
|
.. |KeyESC| replace:: :fboxtt:`ESC`
|
||||||
|
.. |CTRL| replace:: :fboxtt:`CTRL`
|
||||||
|
.. |CTRL_L| replace:: :fboxtt:`CTRL+L`
|
||||||
|
.. |CTRL_I| replace:: :fboxtt:`CTRL+I`
|
||||||
|
.. |CTRL_P| replace:: :fboxtt:`CTRL+P`
|
||||||
|
.. |CTRL_O| replace:: :fboxtt:`CTRL+O`
|
||||||
|
.. |CTRL_W| replace:: :fboxtt:`CTRL+W`
|
||||||
|
.. |CTRL_Q| replace:: :fboxtt:`CTRL+Q`
|
||||||
|
.. |CTRL_Down| replace:: :fboxtt:`CTRL+Down`
|
||||||
|
.. |CTRL_Up| replace:: :fboxtt:`CTRL+Up`
|
||||||
|
.. |CTRL_Left| replace:: :fboxtt:`CTRL+Left`
|
||||||
|
.. |CTRL_Right| replace:: :fboxtt:`CTRL+Right`
|
||||||
|
|
||||||
|
.. URLs
|
||||||
|
.. _Doxygen: http://www.stack.nl/~dimitri/doxygen/
|
||||||
|
.. _LaTeX2HTML: http://www.latex2html.org/
|
||||||
|
.. _FGR: http://vlsicad.eecs.umich.edu/BK/FGR/
|
||||||
|
.. _Box Router: http://www.cerc.utexas.edu/~thyeros/boxrouter/boxrouter.htm
|
||||||
|
.. _hMETIS: http://glaros.dtc.umn.edu/gkhome/views/metis
|
||||||
|
.. _Knik Thesis: http://www-soc.lip6.fr/en/users/damiendupuis/PhD/
|
||||||
|
.. _RapidJSON: http://miloyip.github.io/rapidjson/
|
||||||
|
.. _Python/C API Reference Manual: https://docs.python.org/2/c-api/index.html
|
||||||
|
.. _Apache License, Version 2.0: http://www.apache.org/licences/LICENSE-2.0
|
||||||
|
.. _FreePDK45: https://www.eda.ncsu.edu/wiki/FreePDK45:Contents
|
||||||
|
.. _Yosys: http://www.clifford.at/yosys/
|
||||||
|
.. _GHDL: https://github.com/ghdl/ghdl
|
||||||
|
.. _Si2: http://www.si2.org/
|
||||||
|
|
||||||
|
.. _GPL: http://www.gnu.org/copyleft/gpl.txt
|
||||||
|
.. _LGPL: https://www.gnu.org/licenses/lgpl-3.0.html
|
||||||
|
.. _Apache License, Version 2.0: http://www.apache.org/licences/LICENSE-2.0
|
||||||
|
.. _Tokai University: http://www.u-tokai.ac.jp/international/
|
||||||
|
.. _Shimizu Lab: http://labo.nshimizu.com/
|
||||||
|
.. _Smartlabs: http://www.smartlabsinc.com/
|
||||||
|
.. _Don Bosco University: http://www.udb.edu.sv/
|
||||||
|
.. _MyCMP: https://www.mycmp.fr/
|
||||||
|
|
||||||
|
.. Standard CAO/VLSI Concepts.
|
||||||
|
.. |netlist| replace:: *netlist*
|
||||||
|
.. |netlists| replace:: *netlists*
|
||||||
|
.. |layout| replace:: *layout*
|
||||||
|
.. |layouts| replace:: *layouts*
|
||||||
|
.. |VLSI| replace:: :sc:`vlsi`
|
||||||
|
.. |GDS| replace:: :sc:`gds`
|
||||||
|
.. |GDSII| replace:: :sc:`gdsii`
|
||||||
|
.. |CMOS| replace:: :sc:`cmos`
|
||||||
|
.. |VHDL| replace:: :sc:`vhdl`
|
||||||
|
.. |NWELL| replace:: :sc:`nwell`
|
||||||
|
.. |POWER| replace:: :sc:`power`
|
||||||
|
.. |GROUND| replace:: :sc:`ground`
|
||||||
|
|
||||||
|
.. Alliance & MBK Concepts
|
||||||
|
.. |MBK| replace:: :sc:`mbk`
|
||||||
|
.. |LOFIG| replace:: :cb:`Lofig`
|
||||||
|
.. |PHFIG| replace:: :cb:`Phfig`
|
||||||
|
.. |SxLib| replace:: :sc:`SxLib`
|
||||||
|
.. |RDS| replace:: :sc:`rds`
|
||||||
|
.. |s2r| replace:: :cb:`s2r`
|
||||||
|
|
||||||
|
.. Hurricane Concepts.
|
||||||
|
.. |hypernet| replace:: *hypernet*
|
||||||
|
.. |hypernets| replace:: *hypernets*
|
||||||
|
.. |Cell| replace:: *Cell*
|
||||||
|
.. |Rings| replace:: *Rings*
|
||||||
|
.. |QuadTrees| replace:: *QuadTrees*
|
||||||
|
.. |Collections| replace:: *Collections*
|
||||||
|
.. |ap| replace:: :cb:`ap`
|
||||||
|
.. |vst| replace:: :cb:`vst`
|
||||||
|
.. |kgr| replace:: :cb:`kgr`
|
||||||
|
.. |dot_conf| replace:: :cb:`.conf`
|
|
@ -0,0 +1,31 @@
|
||||||
|
.. Coriolis documentation master file, created by
|
||||||
|
sphinx-quickstart on Fri Jan 14 15:11:42 2022.
|
||||||
|
You can adapt this file completely to your liking, but it should at least
|
||||||
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
|
Welcome to Coriolis's documentation!
|
||||||
|
====================================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: Contents:
|
||||||
|
|
||||||
|
pages/users-guide/UsersGuide.rst
|
||||||
|
pages/hurricane/hurricane.rst
|
||||||
|
|
||||||
|
.. pages/users-guide/LicenseCredits.rst
|
||||||
|
pages/users-guide/Configuration.rst
|
||||||
|
pages/users-guide/Installation.rst
|
||||||
|
pages/users-guide/DesignFlow.rst
|
||||||
|
pages/users-guide/ViewerTools.rst
|
||||||
|
pages/users-guide/Releases.rst
|
||||||
|
pages/users-guide/ScriptsPlugins.rst
|
||||||
|
pages/hurricane/hurricane.rst
|
||||||
|
|
||||||
|
|
||||||
|
Indices and tables
|
||||||
|
==================
|
||||||
|
|
||||||
|
* :ref:`genindex`
|
||||||
|
* :ref:`modindex`
|
||||||
|
* :ref:`search`
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
Hurricane
|
||||||
|
=========
|
||||||
|
|
||||||
|
.. doxygenclass:: Hurricane::Segment
|
||||||
|
:project: Hurricane
|
||||||
|
:members:
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
.. include:: ../../etc/definitions.rst
|
||||||
|
|
||||||
|
|
||||||
|
Abstract
|
||||||
|
========
|
||||||
|
|
||||||
|
|Coriolis| is a set of tools for |VLSI| backend. It's main features are :
|
||||||
|
|
||||||
|
* An analytic placer |Etesian| (based on |Coloquinte|).
|
||||||
|
|
||||||
|
* A router |Katana| for digital designs. An extension toward mixed design
|
||||||
|
is currently under development.
|
||||||
|
|
||||||
|
* |Python| fast prototyping capabilities and layout procedural description.
|
||||||
|
|
||||||
|
|Coriolis| is a replacement of the |Alliance| place and route tools.
|
||||||
|
|
||||||
|
|
||||||
|
.. This page is only an excerpt form the `Coriolis User's Guide`_ focused on how
|
||||||
|
.. to get and build the toolchain.
|
|
@ -0,0 +1,203 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
.. include:: ../../etc/definitions.rst
|
||||||
|
|
||||||
|
.. URLs that changes between the various backends.
|
||||||
|
.. _Coriolis Tools Documentation: file:///usr/share/doc/coriolis2/index.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. |CoriolisSoftSchema| image:: ./images/Coriolis-Soft-Schema.png
|
||||||
|
:alt: Coriolis Software Schematic
|
||||||
|
:align: middle
|
||||||
|
:width: 60%
|
||||||
|
|
||||||
|
|
||||||
|
Coriolis Configuration & Initialisation
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
|
||||||
|
General Software Architecture
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|Coriolis| has been built with respect of the classical paradigm that the
|
||||||
|
computational intensive parts have been written in C++, and almost
|
||||||
|
everything else in |Python|. To build the |Python| interface we used
|
||||||
|
two methods:
|
||||||
|
|
||||||
|
* For self-contained modules :cb:`boost::python` (mainly in :cb:`vlsisapd`).
|
||||||
|
* For all modules based on |Hurricane|, we created our own wrappers due
|
||||||
|
to very specific requirements such as shared functions between modules
|
||||||
|
or C++/|Python| secure bi-directional object deletion.
|
||||||
|
|
||||||
|
.. note:: **Python Documentation:**
|
||||||
|
Most of the documentation is related to the C++ API and implemetation of
|
||||||
|
the tools. However, the |Python| bindings have been created so they
|
||||||
|
mimic *as closely as possible* the C++ interface, so the documentation
|
||||||
|
applies to both languages with only minor syntactic changes.
|
||||||
|
|
||||||
|
|bcenter| |CoriolisSoftSchema| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
Configuration & User's Settings
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
All configurations files are shipped under the form of |Python| modules.
|
||||||
|
They are to be loaded through ``import`` statements. The user's configuration
|
||||||
|
files must be put in a ``./coriolis2/`` directory under the working directory.
|
||||||
|
It must be made a |Python| module so it must contains a ``__init__.py`` file
|
||||||
|
(kept empty most of the time). And as they are true |Python| files, you may use
|
||||||
|
in them any valid code you see fit.
|
||||||
|
|
||||||
|
If no user configuration files are present, |Coriolis| will use the default
|
||||||
|
``symbolic.cmos`` technology which matches the |Alliance| symbolic default one.
|
||||||
|
|
||||||
|
Contents of the user's configuration directory ``./coriolis2/``:
|
||||||
|
|
||||||
|
+----------------------------------+----------------------------------------------+
|
||||||
|
| File | Contents/Meaning |
|
||||||
|
+==================================+==============================================+
|
||||||
|
| :cb:`./coriolis2/__init__.py` | **Mandatory.** Tells |Python| this directory |
|
||||||
|
| | *is* a module. Can be left empty |
|
||||||
|
+----------------------------------+----------------------------------------------+
|
||||||
|
| :cb:`./coriolis2/settings.py` | **Mandatory.** The user's settings, it must |
|
||||||
|
| | setup the technology intended for use and |
|
||||||
|
| | perform any configuration variable settings |
|
||||||
|
+----------------------------------+----------------------------------------------+
|
||||||
|
| :cb:`./coriolis2/ioring.py` | **Optional.** Define how the I/O pads are to |
|
||||||
|
| | be placed on the periphery of the chip along |
|
||||||
|
| | the chip and core sizes |
|
||||||
|
+----------------------------------+----------------------------------------------+
|
||||||
|
| :cb:`./coriolis2/katana.py` | **Optional.** Hook file for |Katana|, run |
|
||||||
|
| | just after the tool has been created for a |
|
||||||
|
| | ``Cell``. Mostly to setup ``Nets`` to be |
|
||||||
|
| | traced |
|
||||||
|
+----------------------------------+----------------------------------------------+
|
||||||
|
|
||||||
|
For example, to use |MOSIS| 180nm, you can put in your :cb:`./coriolis2/setting.py`:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
# -*- Mode:Python -*-
|
||||||
|
|
||||||
|
import node180.scn6m_deep_09
|
||||||
|
|
||||||
|
|
||||||
|
A Comprehensive Example of :cb:`./coriolis2/setting.py`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
import os
|
||||||
|
import Cfg
|
||||||
|
import Viewer
|
||||||
|
import CRL
|
||||||
|
import node180.scn6m_deep_09
|
||||||
|
from helpers import l, u, n
|
||||||
|
|
||||||
|
allianceTop = None
|
||||||
|
if os.environ.has_key('ALLIANCE_TOP'):
|
||||||
|
allianceTop = os.environ['ALLIANCE_TOP']
|
||||||
|
if not os.path.isdir(allianceTop):
|
||||||
|
allianceTop = None
|
||||||
|
|
||||||
|
if not allianceTop: allianceTop = '/soc/alliance'
|
||||||
|
|
||||||
|
Cfg.Configuration.pushDefaultPriority( Cfg.Parameter.Priority.UserFile )
|
||||||
|
|
||||||
|
Viewer.Graphics.setStyle( 'Alliance.Classic [black]' )
|
||||||
|
|
||||||
|
cellsTop = allianceTop+'/cells'
|
||||||
|
|
||||||
|
# Alliance related settings.
|
||||||
|
af = CRL.AllianceFramework.get()
|
||||||
|
env = af.getEnvironment()
|
||||||
|
|
||||||
|
env.setSCALE_X ( 100 )
|
||||||
|
env.setCATALOG ( 'CATAL' )
|
||||||
|
env.setIN_LO ( 'vst' )
|
||||||
|
env.setIN_PH ( 'ap' )
|
||||||
|
env.setOUT_LO ( 'vst' )
|
||||||
|
env.setOUT_PH ( 'ap' )
|
||||||
|
env.setPOWER ( 'vdd' )
|
||||||
|
env.setGROUND ( 'vss' )
|
||||||
|
env.setCLOCK ( '.*ck.*|.*nck.*' )
|
||||||
|
env.setBLOCKAGE ( 'blockage[Nn]et.*' )
|
||||||
|
env.setPad ( '.*_mpx$' )
|
||||||
|
|
||||||
|
env.setWORKING_LIBRARY( '.' )
|
||||||
|
env.addSYSTEM_LIBRARY ( library=cellsTop+'/nsxlib', mode=CRL.Environment.Append )
|
||||||
|
env.addSYSTEM_LIBRARY ( library=cellsTop+'/mpxlib', mode=CRL.Environment.Append )
|
||||||
|
|
||||||
|
# Misc. setting parameters.
|
||||||
|
Cfg.getParamBool ( 'misc.logMode' ).setBool ( False )
|
||||||
|
Cfg.getParamBool ( 'misc.verboseLevel1' ).setBool ( True )
|
||||||
|
Cfg.getParamBool ( 'misc.verboseLevel2' ).setBool ( True )
|
||||||
|
|
||||||
|
# P&R related parameters.
|
||||||
|
Cfg.getParamString ( 'anabatic.routingGauge' ).setString ( 'msxlib4' )
|
||||||
|
Cfg.getParamString ( 'anabatic.topRoutingLayer' ).setString ( 'METAL4' )
|
||||||
|
Cfg.getParamInt ( 'katana.hTracksReservedLocal' ).setInt ( 6 )
|
||||||
|
Cfg.getParamInt ( 'katana.vTracksReservedLocal' ).setInt ( 3 )
|
||||||
|
|
||||||
|
Cfg.Configuration.popDefaultPriority()
|
||||||
|
|
||||||
|
|
||||||
|
|noindent| The example above shows the user's configuration file, with all the
|
||||||
|
available settings for |Alliance| and a small subset for other tools. Some remarks
|
||||||
|
about this file:
|
||||||
|
|
||||||
|
* The ``Cfg.Configuration.pushDefaultPriority()`` and ``Cfg.Configuration.popDefaultPriority()``
|
||||||
|
statements are there so the value sets by the user will not be overriden by system
|
||||||
|
ones event if they are setup afterwards. This priority system is introduced so the
|
||||||
|
various configuration files could be loaded in out of order.
|
||||||
|
|
||||||
|
* The ``Viewer.Graphics.setStyle()`` allows you to choose the look of your liking from
|
||||||
|
the start.
|
||||||
|
|
||||||
|
* For |Alliance|, the user does not need to redefine all the settings,
|
||||||
|
just the one he wants to change. In most of the cases, the ``addSYSTEM_LIBRARY()``,
|
||||||
|
the ``setWORKING_LIBRARY()`` and the special net names (at this point there is not
|
||||||
|
much alternatives for the others settings).
|
||||||
|
|
||||||
|
* ``addSYSTEM_LIBRARY()`` adds a directory to the library search path.
|
||||||
|
Each library entry will be added to the search path according to the second parameter:
|
||||||
|
|
||||||
|
* :cb:`CRL.Environment::Append`: append to the search path.
|
||||||
|
|
||||||
|
* :cb:`CRL.Environment::Prepend`: insert in head of the search path.
|
||||||
|
|
||||||
|
* :cb:`CRL.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.
|
||||||
|
|
||||||
|
A library is identified by its name, this name is the last component of the
|
||||||
|
path name. For instance: ``/soc/alliance/sxlib`` will be named ``sxlib``.
|
||||||
|
Implementing the |Alliance| specification, when looking for a |Cell| ``name``,
|
||||||
|
the system will browse sequentially through the library list and returns
|
||||||
|
the first |Cell| whose name match.
|
||||||
|
|
||||||
|
* For ``setPOWER()``, ``setGROUND()``, ``setCLOCK()`` and ``setBLOCKAGE()`` net names,
|
||||||
|
a regular expression (|GNU| regexp) is expected.
|
||||||
|
|
||||||
|
* For other tools parameters, just use getter and setter according to their types:
|
||||||
|
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| Type | Getter/Setter |
|
||||||
|
+==================+===========================================================+
|
||||||
|
| ``Bool`` | ``Cgt.getParamBool('name').setBool( True )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| ``Int`` | ``Cgt.getParamInt('name').setBool( 12 )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| ``Enumerate`` | ``Cgt.getParamEnumerate('name').setBool( 12 )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| ``Double`` | ``Cgt.getParamDouble('name').setDouble( 254.5 )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| ``Percentage`` | ``Cgt.getParamPercentage('name').setPercentage( 75.0 )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
| ``String`` | ``Cgt.getParamString('name').setString( 'machin' )`` |
|
||||||
|
+------------------+-----------------------------------------------------------+
|
||||||
|
|
||||||
|
Lists of the configurable parameters of most interest to the user are given in
|
||||||
|
:ref:`Viewer & Tools`.
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
Complete Design Flow & Examples
|
||||||
|
===============================
|
||||||
|
|
||||||
|
While |Coriolis| can be used stand-alone, it is in fact part of a more complete
|
||||||
|
design flow build upon |Yosys| and |Alliance|. In addition, a set of demos and
|
||||||
|
examples are supplied in the repository |alliance-check-toolkit|.
|
||||||
|
|
||||||
|
* |Yosys| : http://www.clifford.at/yosys/
|
||||||
|
|
||||||
|
An |rpm| packaged version is available here:
|
||||||
|
|
||||||
|
https://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/repoview/yosys.html
|
||||||
|
|
||||||
|
* Alliance : https://www-soc.lip6.fr/equipe-cian/logiciels/alliance/
|
||||||
|
|
||||||
|
* |alliance-check-toolkit| |git| repository:
|
||||||
|
|
||||||
|
https://www-soc.lip6.fr/git/alliance-check-toolkit.git/
|
|
@ -0,0 +1,420 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
As the sources are being released, the binary packaging is dropped.
|
||||||
|
You may still find (very) old versions here: http://asim.lip6.fr/pub/coriolis/2.0 .
|
||||||
|
|
||||||
|
In a nutshell, building source consists in pulling the |git| repository then
|
||||||
|
running the |ccb| installer.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The documentation is already generated and commited in the |git| tree.
|
||||||
|
You may not install the additional prerequisites for the documentation.
|
||||||
|
By default the documentation is not generated, just installed by |ccb|.
|
||||||
|
If you really want to re-generate it, add the ``--doc`` flag to |ccb|.
|
||||||
|
|
||||||
|
Main building prerequisites:
|
||||||
|
|
||||||
|
* cmake
|
||||||
|
* C++11-capable compiler
|
||||||
|
* BFD library (provided through ``binutils``).
|
||||||
|
* RapidJSON_
|
||||||
|
* python2.7
|
||||||
|
* boost
|
||||||
|
* libxml2
|
||||||
|
* bzip2
|
||||||
|
* yacc & lex
|
||||||
|
* Qt 4 or Qt 5
|
||||||
|
* PyQt 4 or PyQt 5
|
||||||
|
* Qwt 6
|
||||||
|
|
||||||
|
Building documentation prerequisites:
|
||||||
|
|
||||||
|
* doxygen
|
||||||
|
* latex
|
||||||
|
* python-docutils (for reStructuredText)
|
||||||
|
* pelican
|
||||||
|
|
||||||
|
The following libraries get directly bundled with |Coriolis|:
|
||||||
|
|
||||||
|
* LEF/DEF (from Si2_)
|
||||||
|
* FLUTE (from `Chris C. N. Chu <http://home.eng.iastate.edu/~cnchu/flute.html>`_)
|
||||||
|
|
||||||
|
For other distributions, refer to their own packaging system.
|
||||||
|
|
||||||
|
|
||||||
|
Fixed Directory Tree
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
In order to simplify the work of the |ccb| installer, the source, build
|
||||||
|
and installation tree is fixed. To successfully compile |Coriolis| you must
|
||||||
|
follow it exactly. The tree is relative to the home directory of the user
|
||||||
|
building it (note :fboxtt:`~/` or :fboxtt:`$HOME/`). Only the source
|
||||||
|
directory needs to be manually created by the user, all others will be
|
||||||
|
automatically created either by |ccb| or the build system.
|
||||||
|
|
||||||
|
+--------------------------------------------------------------------------------------------------------------+
|
||||||
|
| **Sources** |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| | Sources root | | ~/coriolis-2.x/src |
|
||||||
|
| | **under git** | | ~/coriolis-2.x/src/coriolis |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| **Architecture Dependant Build** |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| | Linux, SL 7, 64b | | ~/coriolis-2.x/Linux.el7_64/Release.Shared/build/<tool> |
|
||||||
|
| | Linux, SL 6, 32b | | ~/coriolis-2.x/Linux.slsoc6x/Release.Shared/build/<tool> |
|
||||||
|
| | Linux, SL 6, 64b | | ~/coriolis-2.x/Linux.slsoc6x_64/Release.Shared/build/<tool> |
|
||||||
|
| | Linux, Fedora, 64b | | ~/coriolis-2.x/Linux.fc_64/Release.Shared/build/<tool> |
|
||||||
|
| | Linux, Fedora, 32b | | ~/coriolis-2.x/Linux.fc/Release.Shared/build/<tool> |
|
||||||
|
| | FreeBSD 8, 32b | | ~/coriolis-2.x/FreeBSD.8x.i386/Release.Shared/build/<tool> |
|
||||||
|
| | FreeBSD 8, 64b | | ~/coriolis-2.x/FreeBSD.8x.amd64/Release.Shared/build/<tool> |
|
||||||
|
| | Windows 7, 32b | | ~/coriolis-2.x/Cygwin.W7/Release.Shared/build/<tool> |
|
||||||
|
| | Windows 7, 64b | | ~/coriolis-2.x/Cygwin.W7_64/Release.Shared/build/<tool> |
|
||||||
|
| | Windows 8.x, 32b | | ~/coriolis-2.x/Cygwin.W8/Release.Shared/build/<tool> |
|
||||||
|
| | Windows 8.x, 64b | | ~/coriolis-2.x/Cygwin.W8_64/Release.Shared/build/<tool> |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| **Architecture Dependant Install** |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| Linux, SL 6, 32b | ~/coriolis-2.x/Linux.slsoc6x/Release.Shared/install/ |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| **FHS Compliant Structure under Install** |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
| | Binaries | | .../install/bin |
|
||||||
|
| | Libraries (Python) | | .../install/lib |
|
||||||
|
| | Include by tool | | .../install/include/coriolis2/<project>/<tool> |
|
||||||
|
| | Configuration files | | .../install/etc/coriolis2/ |
|
||||||
|
| | Doc, by tool | | .../install/share/doc/coriolis2/en/html/<tool> |
|
||||||
|
+------------------------------+-------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
.. note:: *Alternate build types:* the ``Release.Shared`` means an optimized build
|
||||||
|
with shared libraries. But there are also available ``Static`` instead of ``Shared``
|
||||||
|
and ``Debug`` instead of ``Release`` and any combination of them.
|
||||||
|
|
||||||
|
``Static`` does not work because I don't know yet to mix statically linked binaries
|
||||||
|
and Python modules (which must be dynamic).
|
||||||
|
|
||||||
|
|
||||||
|
Building Coriolis
|
||||||
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The actively developed branch
|
||||||
|
-----------------------------
|
||||||
|
|
||||||
|
The **devel_anabatic** branch is now closed and we go back to a more classical
|
||||||
|
scheme where **master** is the stable version and **devel** the development one.
|
||||||
|
|
||||||
|
The |Coriolis| |git| repository is https://gitlab.lip6.fr/vlsi-cad/coriolis.git
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Again, the **devel_anabatic** branch is now closed. Please revert to **devel**
|
||||||
|
or **master**.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
As it is now possible to mix |PyQt| widget with |Coriolis| ones, it is simpler
|
||||||
|
for us to revert to |Qt| 4 only. Our reference |OS| being |RHEL| 7, there is no
|
||||||
|
compatible |PyQt5| build compatible with their |Qt| 5 version (we fall short of
|
||||||
|
one minor, they provides |Qt| 5.9 were we need at least |Qt| 5.10).
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Under |RHEL| 7 or clones, they upgraded their version of |Qt| 4 (from 4.6 to 4.8)
|
||||||
|
so the *diagonal line* bug no longer occurs. So we can safely use the default
|
||||||
|
system |Qt| again.
|
||||||
|
|
||||||
|
|
||||||
|
Installing on |RedHat| or compatible distributions
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
1. Install or check that the required prerequisites are installed :
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
dummy@lepka:~> yum install -y git cmake bison flex gcc-c++ libstdc++-devel \
|
||||||
|
binutils-devel \
|
||||||
|
boost-devel boost-python boost-filesystem \
|
||||||
|
boost-regex boost-wave \
|
||||||
|
python-devel libxml2-devel bzip2-devel \
|
||||||
|
qt-devel
|
||||||
|
|
||||||
|
The packages ``qwt`` and ``qwt-devel`` are not provided by any standard repository
|
||||||
|
(like |EPEL|). You may download them from the
|
||||||
|
`LIP6 Addons Repository <https://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/repoview/letter_q.group.html>`_
|
||||||
|
Then run:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> yum localinstall -y qwt-6.1.2-4.fc23.x86_64.rpm \
|
||||||
|
qwt-devel-6.1.2-4.fc23.x86_64.rpm # Qwt for Qt 4.
|
||||||
|
|
||||||
|
You may also install them directly (whithout an intermediate download):
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> yum install -y http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-6.1.2-4.fc23.x86_64.rpm \
|
||||||
|
http://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/RPMS/qwt-devel-6.1.2-4.fc23.x86_64.rpm
|
||||||
|
|
||||||
|
2. Install the unpackaged prerequisites. Currently, only RapidJSON_.
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src/support
|
||||||
|
dummy@lepka:support> cd ~/coriolis-2.x/src/support
|
||||||
|
dummy@lepka:support> git clone http://github.com/miloyip/rapidjson
|
||||||
|
|
||||||
|
|
||||||
|
3. Create the source directory and pull the |git| repository:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src
|
||||||
|
dummy@lepka:src> cd ~/coriolis-2.x/src
|
||||||
|
dummy@lepka:src> git clone https://gitlab.lip6.fr/vlsi-cad/coriolis.git
|
||||||
|
|
||||||
|
4. Build & install:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:src> cd coriolis
|
||||||
|
dummy@lepka:coriolis> git checkout devel
|
||||||
|
dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support \
|
||||||
|
--project=coriolis \
|
||||||
|
--make="-j4 install"
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Pre-generated documentation will get installed by the previous command.
|
||||||
|
Only if you did made modifications to it you need to regenerate it with:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support \
|
||||||
|
--project=coriolis \
|
||||||
|
--doc --make="-j1 install"
|
||||||
|
|
||||||
|
We need to perform a separate installation of the documentation because it
|
||||||
|
does not support to be generated with a parallel build. So we compile & install in a first
|
||||||
|
stage in ``-j4`` (or whatever) then we generate the documentation in ``-j1``
|
||||||
|
|
||||||
|
Under |RHEL6| or clones, you must build using the |devtoolset|, the version is to
|
||||||
|
be given as argument:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \
|
||||||
|
--devtoolset=8 --make="-j4 install"
|
||||||
|
|
||||||
|
If you want to use Qt 5 instead of Qt 4, modify the previous steps as follows:
|
||||||
|
|
||||||
|
* At **step 1**, do not install the |QT| 4 related development package (``qt4-devel``),
|
||||||
|
but instead:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> yum install -y qt5-qtbase-devel qt5-qtsvg-devel # Qt 5.
|
||||||
|
|
||||||
|
The package ``qwt-qt5-devel`` and it's dependency ``qwt-qt5`` are not provided
|
||||||
|
by any standard repository (like |EPEL|). You may download them from the
|
||||||
|
`LIP6 Addons Repository <https://ftp.lip6.fr/pub/linux/distributions/slsoc/soc/7/addons/x86_64/repoview/letter_q.group.html>`_
|
||||||
|
Then run:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> yum localinstall -y qwt-qt5-6.1.2-4.fc23.x86_64.rpm \
|
||||||
|
qwt-qt5-devel-6.1.2-4.fc23.x86_64.rpm # Qwt for Qt 5.
|
||||||
|
|
||||||
|
* At **step 4**, add a ``--qt5`` argument to the ``ccb.py`` command line.
|
||||||
|
|
||||||
|
* The |Python| scripts that make use of |PyQt| in ``crlcore`` and ``cumulus`` must be
|
||||||
|
edited to import ``PyQt5`` instead of ``PtQt4`` (should find a way to automatically
|
||||||
|
switch between the two of them).
|
||||||
|
|
||||||
|
The complete list of |ccb| functionalities can be accessed with the ``--help`` argument.
|
||||||
|
It also may be run in graphical mode (``--gui``).
|
||||||
|
|
||||||
|
|
||||||
|
Building a Debug Enabled Version
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
The ``Release.Shared`` default version of the |Coriolis| is built stripped of symbols
|
||||||
|
and optimized so that it makes analysing a core dump after a crash difficult. In the
|
||||||
|
(unlikely) case of a crash, you may want to build, alongside the optimized version,
|
||||||
|
a debug one which allows forensic examination by |gdb| (or |valgrind| or whatever).
|
||||||
|
|
||||||
|
Run again ``ccb.py``, adding the ``--debug`` argument:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:coriolis> ./bootstrap/ccb.py --project=support \
|
||||||
|
--project=coriolis \
|
||||||
|
--make="-j4 install" --debug
|
||||||
|
|
||||||
|
|
||||||
|
As |cgt| is a |Python| script, the right command to run |gdb| is:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:work> gdb python core.XXXX
|
||||||
|
|
||||||
|
|
||||||
|
.. Building the Devel Branch
|
||||||
|
.. -------------------------
|
||||||
|
..
|
||||||
|
.. In the |Coriolis| |git| repository, two branches are present:
|
||||||
|
..
|
||||||
|
.. * The :cb:`master` branch, which contains the latest stable version. This is the
|
||||||
|
.. one used by default if you follow the above instructions.
|
||||||
|
..
|
||||||
|
.. * The :cb:`devel` branch, which obviously contains the latest commits from the
|
||||||
|
.. development team. To use it instead of the :cb:`master` one, do the following
|
||||||
|
.. command just after the first step: ::
|
||||||
|
..
|
||||||
|
.. dummy@lepka:coriolis> git checkout devel
|
||||||
|
.. dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \
|
||||||
|
.. --make="-j4 install" --debug
|
||||||
|
..
|
||||||
|
.. Be aware that it may require newer versions of the dependencies and may introduce
|
||||||
|
.. incompatibilities with the stable version.
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
Installing on |Debian| 9, |Ubuntu| 18 or compatible distributions
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
|
First, install or check that the required prerequisites are installed:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> sudo apt-get install -y build-essential binutils-dev \
|
||||||
|
git cmake bison flex gcc python-dev \
|
||||||
|
libboost-all-dev libboost-python-dev \
|
||||||
|
zlib1g-dev libxml2-dev rapidjson-dev libbz2-dev
|
||||||
|
|
||||||
|
To use with Qt 4:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> sudo apt-get install -y qt4-dev-tools libqwt-dev python-qt4
|
||||||
|
|
||||||
|
To use with Qt 5:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> sudo apt-get install -y qtbase5-dev libqt5svg5-dev libqwt-qt5-dev \
|
||||||
|
python-pyqt5
|
||||||
|
|
||||||
|
.. note:: **Do not install both versions of Qwt** (for Qt 4 and Qt 5),
|
||||||
|
this will confuse the installer and end up with a non functional software
|
||||||
|
(it uses the headers from one Qt and libraries from the other version).
|
||||||
|
|
||||||
|
Second step is to create the source directory and pull the |git| repository:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> mkdir -p ~/coriolis-2.x/src
|
||||||
|
dummy@lepka:src> cd ~/coriolis-2.x/src
|
||||||
|
dummy@lepka:src> git clone https://gitlab.lip6.fr/vlsi-cad/coriolis.git
|
||||||
|
|
||||||
|
Third and final step, build & install:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:src> cd coriolis
|
||||||
|
dummy@lepka:coriolis> git checkout devel
|
||||||
|
dummy@lepka:coriolis> ./bootstrap/ccb.py --project=coriolis \
|
||||||
|
--make="-j4 install"
|
||||||
|
|
||||||
|
|
||||||
|
Additionnal Requirement under |MacOS|
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
|Coriolis| makes use of the :cb:`boost::python` module, but the |macports| |boost|
|
||||||
|
seems unable to work with the |Python| bundled with |MacOS|. So you have to install
|
||||||
|
both of them from |macports|:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@macos:~> port install boost +python27
|
||||||
|
dummy@macos:~> port select python python27
|
||||||
|
dummy@macos:-> export DYLD_FRAMEWORK_PATH=/opt/local/Library/Frameworks
|
||||||
|
|
||||||
|
The last two lines tell |MacOS| to use the |Python| from |macports| and *not* from
|
||||||
|
the system.
|
||||||
|
|
||||||
|
Then proceed with the generic install instructions.
|
||||||
|
|
||||||
|
|
||||||
|
|Coriolis| & Docker
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Under ``bootstrap/docker/`` scripts and configuration files are provided that
|
||||||
|
allow to rebuild |Alliance| and |Coriolis| and perform the regression tests
|
||||||
|
of ``alliance-check-toolkit``. You may have a look at the ``Dockerfile.system``
|
||||||
|
configuration file to see exactly how to setup a vanilla system to build
|
||||||
|
|Coriolis|.
|
||||||
|
|
||||||
|
To run the docker tests, call the ``dockerManage.sh`` scripts with the relevant
|
||||||
|
arguments:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
ego@home:debian-9> ../../dockerManage.sh -bS # build both system & coriolis images.
|
||||||
|
ego@home:debian-9> ../../dockerManage.sh -r # compile & check coriolis.
|
||||||
|
ego@home:debian-9> ../../dockerManage.sh -C # clear the images.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Packaging Coriolis
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Packager should not use |ccb|, instead ``bootstrap/Makefile.package`` is provided
|
||||||
|
to emulate a top-level ``autotool`` makefile. Just copy it in the root of the
|
||||||
|
|Coriolis| git repository (``~/corriolis-2.x/src/coriolis/``) and build.
|
||||||
|
|
||||||
|
Sligthly outdated packaging configuration files can also be found under ``bootstrap/``:
|
||||||
|
|
||||||
|
* ``bootstrap/coriolis2.spec.in`` for |rpm| based distributions.
|
||||||
|
* ``bootstrap/debian`` for |Debian| based distributions.
|
||||||
|
|
||||||
|
|
||||||
|
Hooking up into |Alliance|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|Coriolis| relies on |Alliance| for the cell libraries. So after installing or
|
||||||
|
packaging, you must configure it so that it can found those libraries.
|
||||||
|
|
||||||
|
The easiest way is to setup the |Alliance| environment (i.e. sourcing
|
||||||
|
``.../etc/profile.d/alc_env.{sh,csh}``) **before** setting up |Coriolis| environment
|
||||||
|
(see the next section). To understand how |Coriolis| find/setup |Alliance| you may
|
||||||
|
have look to the `Alliance Helper`.
|
||||||
|
|
||||||
|
|
||||||
|
Setting up the Environment (coriolisEnv.py)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To simplify the tedious task of configuring your environment, a helper is provided
|
||||||
|
in the ``bootstrap`` source directory (also installed in the directory
|
||||||
|
``.../install/etc/coriolis2/``) :
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py
|
||||||
|
|
||||||
|
Use it like this:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:~> eval `~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`
|
||||||
|
|
||||||
|
.. note:: **Do not call that script in your environement initialisation.**
|
||||||
|
When used under |RHEL6| or clones, it needs to be run in the |devtoolset|
|
||||||
|
environement. The script then launch a new shell, which may cause an
|
||||||
|
infinite loop if it's called again in, say :cb:`~/.bashrc`.
|
||||||
|
|
||||||
|
Instead you may want to create an alias:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
alias c2r='eval "`~/coriolis-2.x/src/coriolis/bootstrap/coriolisEnv.py`"'
|
|
@ -0,0 +1,61 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Credits & License
|
||||||
|
=================
|
||||||
|
|
||||||
|
.. raw:: html
|
||||||
|
|
||||||
|
<table style="border: none; width: 80%; align: center; margin-left: auto; margin-right: auto; font-size: 110%">
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: left" ><span><span class="sc">Hurricane</span></span></td>
|
||||||
|
<td style="text-align: right"><span>Rémy <span class="sc">Escassut</span> &
|
||||||
|
Christian <span class="sc">Masson</span></span</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: left" ><span class="left"><span class="sc">Etesian</span></span></td>
|
||||||
|
<td style="text-align: right"><span class="right">Gabriel <span class="sc">Gouvine</span></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: left" ><span class="left"><span class="sc">Stratus</span></span></td>
|
||||||
|
<td style="text-align: right"><span class="right">Sophie <span class="sc">Belloeil</span></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: left" ><span class="left"><span class="sc">Katana</span> (global)</span></td>
|
||||||
|
<td style="text-align: right"><span class="right">Damien <span class="sc">Dupuis</span></span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: left" ><span class="left"><span class="sc">Katana</span> (detailed),
|
||||||
|
<span class="sc">Unicorn</span></span></span></td>
|
||||||
|
<td style="text-align: right"><span class="right">Jean-Paul <span class="sc">Chaput</span></span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\begin{center}\begin{minipage}[t]{.8\textwidth}
|
||||||
|
\noindent\DUrole{sc}{Hurricane} \dotfill Rémy \DUrole{sc}{Escassut} \&
|
||||||
|
Christian \DUrole{sc}{Masson} \\
|
||||||
|
\noindent\DUrole{sc}{Etesian} \dotfill Gabriel \DUrole{sc}{Gouvine} \\
|
||||||
|
\noindent\DUrole{sc}{Stratus} \dotfill Sophie \DUrole{sc}{Belloeil} \\
|
||||||
|
\noindent\DUrole{sc}{Katana} (global) \dotfill Damien \DUrole{sc}{Dupuis} \\
|
||||||
|
\noindent\DUrole{sc}{Katana} (detailed),
|
||||||
|
\DUrole{sc}{Unicorn} \dotfill Jean-Paul \DUrole{sc}{Chaput} \\
|
||||||
|
\end{minipage}\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
|medskip|
|
||||||
|
|
||||||
|
The |Hurricane| data-base is copyright© |Bull| 2000-2019 and is
|
||||||
|
released under the terms of the |LGPL| license. All other tools are
|
||||||
|
copyright© |UPMC| 2008-2018, |SorbonneUniversite| 2018-2019
|
||||||
|
and released under the |GPL| license.
|
||||||
|
|
||||||
|
Others important contributors to |Coriolis| are Christophe |Alexandre|,
|
||||||
|
Roselyne |Chotin|, Hugo |Clement|, Marek |Sroka| and Wu |Yifei|.
|
||||||
|
|
||||||
|
The |Katana| router makes use of the |Flute| software, which is
|
||||||
|
copyright© Chris C. N. |Chu| from the Iowa State University
|
||||||
|
(http://home.eng.iastate.edu/~cnchu/).
|
|
@ -0,0 +1,122 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
Release Notes
|
||||||
|
=============
|
||||||
|
|
||||||
|
Release 1.0.1475
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
This is the first preliminary release of the |Coriolis2| 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:
|
||||||
|
|
||||||
|
1. A graphical user interface (viewer only).
|
||||||
|
2. The |Knik| global router.
|
||||||
|
3. The |Kite| detailed router.
|
||||||
|
|
||||||
|
|noindent| Supported input/output formats:
|
||||||
|
|
||||||
|
* |Alliance| |vst| (netlist) & |ap| (physical) formats.
|
||||||
|
* 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 |Si2| affiliated members.
|
||||||
|
|
||||||
|
|
||||||
|
Release 1.0.1963
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Release 1963 is alpha. All the tools from |Coriolis1| have been ported into
|
||||||
|
this release.
|
||||||
|
|
||||||
|
|noindent| Contents of this release:
|
||||||
|
|
||||||
|
#. The |Stratus| netlist capture language (|GenLib| replacement).
|
||||||
|
#. The |Mauka| placer (still contains bugs).
|
||||||
|
#. A graphical user interface (viewer only).
|
||||||
|
#. The |Knik| global router.
|
||||||
|
#. The |Kite| detailed router.
|
||||||
|
#. Partially implemented python support for configuration files
|
||||||
|
(alternative to |XML|).
|
||||||
|
#. A documentation (imcomplete/obsoleted in |Hurricane|'s case).
|
||||||
|
|
||||||
|
|
||||||
|
Release 1.0.2049
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Release `2049` is Alpha.
|
||||||
|
|
||||||
|
|noindent| Changes of this release:
|
||||||
|
|
||||||
|
#. The |Hurricane| documentation is now accurate. Documentation
|
||||||
|
for the Cell viewer and |CRLcore| has been added.
|
||||||
|
#. More extensive Python support for all the components of
|
||||||
|
|Coriolis|.
|
||||||
|
#. Configuration is now completly migrated under Python.
|
||||||
|
|XML| loaders can still be used for compatibilty.
|
||||||
|
#. The |cgt| main has been rewritten in Python.
|
||||||
|
|
||||||
|
|
||||||
|
Release v2.0.1
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Migrated the repository from |svn| to |git|, and release complete sources.
|
||||||
|
As a consequence, we drop the distribution packaging support and give
|
||||||
|
public read-only access to the repository.
|
||||||
|
#. Deep rewrite of the |Katabatic| database and |Kite| detailed router,
|
||||||
|
achieve a speedup factor greater than 20...
|
||||||
|
|
||||||
|
|
||||||
|
Release v2.1
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Replace the old simulated annealing placer |Mauka| by the analytical placer
|
||||||
|
|Etesian| and its legalization and detailed placement tools.
|
||||||
|
#. Added a Blif format parser to process circuits generated by the Yosys and ABC
|
||||||
|
logic synthetizers.
|
||||||
|
#. The multiple user defined configuration files are now grouped under
|
||||||
|
a common hidden (dot) directory ``.coriolis2`` and the file extension
|
||||||
|
is back from ``.conf`` to ``.py``.
|
||||||
|
|
||||||
|
.. #. Under |RHEL7| / |SL7|, there is a known bug in the graphical visualizer.
|
||||||
|
.. When shifting to the left, the right-half part of the screen gets
|
||||||
|
.. badly redrawn. Uses |CTRL_L| to refresh. It will be corrected as soon
|
||||||
|
.. as possible.
|
||||||
|
|
||||||
|
|
||||||
|
Release v2.2
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Added JSON import/export of the whole Hurricane DataBase. Two save mode
|
||||||
|
are supported: *Cell* mode (standalone) or *Blob* mode, which dump the
|
||||||
|
whole design down and including the standard cells.
|
||||||
|
|
||||||
|
|
||||||
|
Release v2.3
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
#. Reverts to a more standard organisation of the branches. **devel_anabatic** is
|
||||||
|
closed and we go on with **master** (stable version) and **devel**.
|
||||||
|
|
||||||
|
#. Makes |Katana| the default global & detailed router. Put |Knik| & |Kite| in the
|
||||||
|
obsolete menus.
|
||||||
|
|
||||||
|
#. Finally makes use of |PyQt4| widgets. Seems to integrate without problems
|
||||||
|
with the |Coriolis| own |Qt| widget. The drawback is that to build against |Qt| 5
|
||||||
|
needs adjustement from the user.
|
||||||
|
|
||||||
|
#. Improved support for whole chip management. The outer part of the chip containing
|
||||||
|
the pad is decoupled from the core. This allows to cleanly separate real pads from
|
||||||
|
the foundry from a symbolic core. But this does not preclude other combinations
|
||||||
|
as fully symbolic or fully real.
|
||||||
|
|
||||||
|
To perform the separation, an intermediate hierarchical level ``corona`` between chip
|
||||||
|
and core has been introduced.
|
|
@ -0,0 +1,329 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
.. URLs that changes between the various backends.
|
||||||
|
.. _Stratus Documentation: file:///usr/share/doc/coriolis2/en/html/stratus/index.html
|
||||||
|
|
||||||
|
.. .. |ChipStructure-1| image:: ./images/chip-structure-1.png
|
||||||
|
.. :alt: Chip Top Structure
|
||||||
|
.. :align: middle
|
||||||
|
.. :width: 90%
|
||||||
|
|
||||||
|
|
||||||
|
.. _Python Interface to Coriolis:
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
Python Interface for |Hurricane| / |Coriolis|
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
The (almost) complete interface of |Hurricane| is exported as a |Python| module
|
||||||
|
and some part of the other components of |Coriolis| (each one in a separate
|
||||||
|
module). The interface has been made to mirror as closely as possible the
|
||||||
|
C++ one, so the C++ doxygen documentation could be used to write code with
|
||||||
|
either languages.
|
||||||
|
|
||||||
|
`Summary of the C++ Documentation <file:../../../index.html>`_
|
||||||
|
|
||||||
|
A script could be run directly in text mode from the command line or through
|
||||||
|
the graphical interface (see `Python Scripts in Cgt`).
|
||||||
|
|
||||||
|
Aside for this requirement, the python script can contain anything valid
|
||||||
|
in |Python|, so don't hesitate to use any package or extention.
|
||||||
|
|
||||||
|
Small example of Python/Stratus script:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from Hurricane import *
|
||||||
|
from Stratus import *
|
||||||
|
|
||||||
|
def doSomething ():
|
||||||
|
# ...
|
||||||
|
return
|
||||||
|
|
||||||
|
def scriptMain ( **kw ):
|
||||||
|
editor = None
|
||||||
|
if kw.has_key('editor') and kw['editor']:
|
||||||
|
editor = kw['editor']
|
||||||
|
stratus.setEditor( editor )
|
||||||
|
|
||||||
|
doSomething()
|
||||||
|
return
|
||||||
|
|
||||||
|
if __name__ == "__main__" :
|
||||||
|
kw = {}
|
||||||
|
success = scriptMain( **kw )
|
||||||
|
shellSuccess = 0
|
||||||
|
if not success: shellSuccess = 1
|
||||||
|
|
||||||
|
sys.exit( shellSuccess )
|
||||||
|
scriptMain ()
|
||||||
|
|
||||||
|
This typical script can be executed in two ways:
|
||||||
|
|
||||||
|
#. Run directly as a |Python| script, thanks to the
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
if __name__ == "__main__" :
|
||||||
|
|
||||||
|
part (this is standart |Python|). It is a simple adapter that will
|
||||||
|
calls :cb:`scriptMain()`.
|
||||||
|
#. Through |cgt|, either in text or graphical mode. In that case, the
|
||||||
|
:cb:`scriptMain()` is directly called trough a sub-interpreter.
|
||||||
|
The arguments of the script are passed through the ``**kw`` dictionnary.
|
||||||
|
|
||||||
|
+----------------------+-----------------------------------------------+
|
||||||
|
| \*\*kw Dictionnary |
|
||||||
|
+----------------------+-----------------------------------------------+
|
||||||
|
| Parameter Key/Name | Contents type |
|
||||||
|
+======================+===============================================+
|
||||||
|
| ``'cell'`` | A Hurricane cell on which to work. Depending |
|
||||||
|
| | on the context, it may be ``None``. |
|
||||||
|
| | For example, when run from |cgt|, it the cell |
|
||||||
|
| | currently loaded in the viewer, if any. |
|
||||||
|
+----------------------+-----------------------------------------------+
|
||||||
|
| ``'editor'`` | The viewer from which the script is run, when |
|
||||||
|
| | lauched through |cgt|. |
|
||||||
|
+----------------------+-----------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Plugins
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
Plugins are |Python| scripts specially crafted to integrate with |cgt|.
|
||||||
|
Their entry point is a :cb:`scriptMain()` method as described in
|
||||||
|
`Python Interface to Coriolis`_. They can be called by user scripts
|
||||||
|
through this method.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Chip Placement
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Automatically perform the placement of a complete chip. This plugin, as well
|
||||||
|
as the other P&R tools expect a specific top-level hierarchy for the design.
|
||||||
|
The top-level hierarchy must contains the instances of all the I/O pads and
|
||||||
|
**exactly one** instance named ``corona`` of an eponym cell ``corona``.
|
||||||
|
The ``corona`` cell in turn containing the instance of the chip's core model.
|
||||||
|
|
||||||
|
The intermediate ``corona`` hierarchical level has been introduced to handle
|
||||||
|
the possible discoupling between real I/O pads supplied by a foundry and a
|
||||||
|
symbolic core. So the *chip* level contains only real layout and the corona
|
||||||
|
and below only symbolic layer.
|
||||||
|
|
||||||
|
.. note:: This do not prevent having a design either fully symbolic (pads and core)
|
||||||
|
or fully real.
|
||||||
|
|
||||||
|
.. note:: The ``corona`` also avoid the router to actually have to manage directly
|
||||||
|
the pads which simplificate it's configuration and accessorily avoid
|
||||||
|
to have the pads stuffed with blockages.
|
||||||
|
|
||||||
|
|bcenter| |ChipStructure-1| |ecenter|
|
||||||
|
|
||||||
|
The designer must provide a configuration file that defines the rules for the
|
||||||
|
placement of the top-level hierarchy (that is, the pads and the core).
|
||||||
|
This file must be named after the chip's name, by appending ``_ioring.py``
|
||||||
|
(obviously, it is a |Python| file). For instance if the chip netlist file
|
||||||
|
is called ``amd2901.vst``, then the configuration file must be named
|
||||||
|
``amd2901_ioring.vst``.
|
||||||
|
|
||||||
|
Example of chip placement configuration file (for ``AM2901``):
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from helpers import l, u, n
|
||||||
|
|
||||||
|
chip = \
|
||||||
|
{ 'pads.ioPadGauge' : 'pxlib'
|
||||||
|
, 'pads.south' : [ 'p_a3' , 'p_a2' , 'p_a1' , 'p_r0'
|
||||||
|
, 'p_vddick0', 'p_vssick0', 'p_a0' , 'p_i6'
|
||||||
|
, 'p_i8' , 'p_i7' , 'p_r3' ]
|
||||||
|
, 'pads.east' : [ 'p_zero' , 'p_i0' , 'p_i1' , 'p_i2'
|
||||||
|
, 'p_vddeck0', 'p_vsseck0', 'p_q3' , 'p_b0'
|
||||||
|
, 'p_b1' , 'p_b2' , 'p_b3' ]
|
||||||
|
, 'pads.north' : [ 'p_noe' , 'p_y3' , 'p_y2' , 'p_y1'
|
||||||
|
, 'p_y0' , 'p_vddeck1', 'p_vsseck1', 'p_np'
|
||||||
|
, 'p_ovr' , 'p_cout' , 'p_ng' ]
|
||||||
|
, 'pads.west' : [ 'p_cin' , 'p_i4' , 'p_i5' , 'p_i3'
|
||||||
|
, 'p_ck' , 'p_d0' , 'p_d1' , 'p_d2'
|
||||||
|
, 'p_d3' , 'p_q0' , 'p_f3' ]
|
||||||
|
, 'core.size' : ( l(1500), l(1500) )
|
||||||
|
, 'chip.size' : ( l(3000), l(3000) )
|
||||||
|
, 'chip.clockTree' : True
|
||||||
|
}
|
||||||
|
|
||||||
|
The file must contain *one dictionnary* named ``chip``.
|
||||||
|
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| Chip Dictionnary |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| Parameter Key/Name | Value/Contents type |
|
||||||
|
+======================+=======================================================+
|
||||||
|
| ``'pad.ioPadGauge'`` | The routing gauge to use for the pad. Must be given |
|
||||||
|
| | as it differs from the one used to route standard |
|
||||||
|
| | inside the core |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'pad.south'`` | Ordered list (left to right) of pad instances names |
|
||||||
|
| | to put on the south side of the chip |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'pad.east'`` | Ordered list (down to up) of pad instances names |
|
||||||
|
| | to put on the east side of the chip |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'pad.north'`` | Ordered list (left to right) of pad instances names |
|
||||||
|
| | to put on the north side of the chip |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'pad.west'`` | Ordered list (down to up) of pad instances names |
|
||||||
|
| | to put on the west side of the chip |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'core.size'`` | The size of the core (to be used by the placer) |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'chip.size'`` | The size of the whole chip. The sides must be great |
|
||||||
|
| | enough to accomodate all the pads |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
| ``'chip.clockTree'`` | Whether to generate a clock tree or not. This calls |
|
||||||
|
| | the ClockTree plugin |
|
||||||
|
+----------------------+-------------------------------------------------------+
|
||||||
|
|
||||||
|
Configuration parameters, defaults are defined in ``etc/coriolis2/<STECHNO>/plugins.conf``.
|
||||||
|
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| Parameter Identifier | Type | Default |
|
||||||
|
+===================================+==================+============================+
|
||||||
|
| **Chip Plugin Parameters** |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``chip.block.rails.count`` | TypeInt | :cb:`5` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The minimum number of rails around the core |
|
||||||
|
| | block. Must be odd and suppérior to 5. |
|
||||||
|
| | One rail for the clock and at least two pairs |
|
||||||
|
| | of power/grounds |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``chip.block.rails.hWidth`` | TypeInt | :cb:`12` |lambda| |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The horizontal with of the rails |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``chip.block.rails.vWidth`` | TypeInt | :cb:`12` |lambda| |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The vertical with of the rails |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``chip.block.rails.hSpacing`` | TypeInt | :cb:`6` |lambda| |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The spacing, *edge to edge* of two adjacent |
|
||||||
|
| | horizontal rails |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``chip.block.rails.vSpacing`` | TypeInt | :cb:`6` |lambda| |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The spacing, *edge to edge* of two adjacent |
|
||||||
|
| | vertical rails |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If no clock tree is generated, then the clock rail is *not* created.
|
||||||
|
So even if the requested number of rails ``chip.block.rails.count`` is, say 5,
|
||||||
|
only four rails (2* ``power``, 2* ``ground``) will be generateds.
|
||||||
|
|
||||||
|
|
||||||
|
Clock Tree
|
||||||
|
----------
|
||||||
|
|
||||||
|
Inserts a clock tree into a block. The clock tree uses the H strategy.
|
||||||
|
The clock net is splitted into sub-nets, one for each branch of the
|
||||||
|
tree.
|
||||||
|
|
||||||
|
* On **chip** design, the sub-nets are created in the model of the
|
||||||
|
core block (then trans-hierarchically flattened to be shown at
|
||||||
|
chip level).
|
||||||
|
* On **blocks**, the sub nets are created directly in the top block.
|
||||||
|
* The sub-nets are named according to a simple geometrical scheme.
|
||||||
|
A common prefix ``ck_htree``, then one postfix by level telling
|
||||||
|
on which quarter of plane the sub-clock is located:
|
||||||
|
|
||||||
|
#. ``_bl``: bottom left plane quarter.
|
||||||
|
#. ``_br``: bottom right plane quarter.
|
||||||
|
#. ``_tl``: top left plane quarter.
|
||||||
|
#. ``_tr``: top right plane quarter.
|
||||||
|
|
||||||
|
We can have ``ck_htree_bl``, ``ck_htree_bl_bl``, ``ch_htree_bl_tl`` and so on.
|
||||||
|
|
||||||
|
The clock tree plugin works in four steps:
|
||||||
|
|
||||||
|
#. Builds the clock tree: creates the top-block abutment box, compute the
|
||||||
|
required levels of H tree and places the clock buffers.
|
||||||
|
#. Once the clock buffers are placed, calls the placer (|etesian|) to place
|
||||||
|
the ordinary standard cells, whithout disturbing clock H-tree buffers.
|
||||||
|
#. At this point we know the exact positions of all the DFFs, so we can
|
||||||
|
connect them to the nearest H-tree leaf clock signal.
|
||||||
|
#. Leaf clock signals that are not connected to any DFFs are removed.
|
||||||
|
|
||||||
|
Netlist reorganisation:
|
||||||
|
|
||||||
|
* Obviously the top block or chip core model netlist is modified to
|
||||||
|
contain all the clock sub-nets. The interface is *not* changed.
|
||||||
|
* If the top block contains instances of other models *and* those models
|
||||||
|
contain DFFs that get re-connected to the clock sub-nets (from the
|
||||||
|
top level). Changes both the model netlist and interface to propagate
|
||||||
|
the relevant clock sub-nets to the instanciated model. The new model
|
||||||
|
with the added clock signal is renamed with a ``_cts`` suffix.
|
||||||
|
For example, the sub-block model ``ram.vst`` will become ``ram_cts.vst``.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you are to re-run the clock tree plugin on a netlist, be careful
|
||||||
|
to erase any previously generated ``_cts`` file (both netlist and
|
||||||
|
layout: ``rm *_cts.{ap,vst}``). And restart |cgt| to clear its
|
||||||
|
memory cache.
|
||||||
|
|
||||||
|
Configuration parameters, defaults are defined in ``etc/coriolis2/<STECHNO>/plugins.conf``.
|
||||||
|
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| Parameter Identifier | Type | Default |
|
||||||
|
+===================================+==================+============================+
|
||||||
|
| **ClockTree Plugin Parameters** |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``clockTree.minimumSide`` | TypeInt | :cb:`300` |lambda| |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The minimum size below which the clock tree |
|
||||||
|
| | will stop to perform quadri-partitions |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``clockTree.buffer`` | TypeString | :cb:`buf_x2` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The buffer model to use to drive sub-nets |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Recursive-Save (RSave)
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Performs a recursive top down save of all the models from the top cell
|
||||||
|
loaded in |cgt|. Forces a write of any non-terminal model. This plugin is used
|
||||||
|
by the clock tree plugin after the netlist clock sub-nets creation.
|
||||||
|
|
||||||
|
|
||||||
|
A Simple Example: AM2901
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To illustrate the capabilities of |Coriolis| tools and |Python| scripting, a small
|
||||||
|
example, derived from the |Alliance| :cb:`AM2901` is supplied.
|
||||||
|
|
||||||
|
This example contains only the synthetized netlists and the :cb:`doChip.py` script
|
||||||
|
which perform the whole P&R of the design.
|
||||||
|
|
||||||
|
You can generate the chip using one of the following method:
|
||||||
|
|
||||||
|
#. **Command line mode:** directly run the script:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:AM2901> ./doChip -V --cell=amd2901
|
||||||
|
|
||||||
|
#. **Graphic mode:** launch |cgt|, load chip netlist ``amd2901`` (the top cell)
|
||||||
|
then run the |Python| script :cb:`doChip.py`.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Between two consecutive run, be sure to erase the netlist/layout generateds:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
dummy@lepka:AM2901> rm *_cts*.vst *.ap
|
|
@ -0,0 +1,135 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
.. role:: raw-html(raw)
|
||||||
|
:format: html
|
||||||
|
|
||||||
|
.. URLs that changes between the various backends.
|
||||||
|
.. _Coriolis Tools Documentation: http://coriolis.lip6.fr/
|
||||||
|
.. _Stratus Documentation: http://coriolis.lip6.fr/pages/stratus-language.html
|
||||||
|
.. _Here: ../../images/users-guide/UsersGuide.pdf
|
||||||
|
.. _Coriolis User's Guide: ../../images/users-guide/UsersGuide.pdf
|
||||||
|
|
||||||
|
.. For PDF backend
|
||||||
|
.. |BigMouse| image:: ./images/ComputerMouse.png
|
||||||
|
:width: 30%
|
||||||
|
|
||||||
|
.. |ViewerSnapshot_1| image:: ./images/Viewer-1.png
|
||||||
|
:alt: Viewer Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSnapshot_1| image:: ./images/Controller-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerLook_1| image:: ./images/Controller-Look-1.png
|
||||||
|
:alt: Controller Look, Snapshot 1
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerFilter_1| image:: ./images/Controller-Filter-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerLayersGos_1| image:: ./images/Controller-LayersGos-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerNetlist_1| image:: ./images/Controller-Netlist-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ViewerNetlist_1| image:: ./images/Viewer-Netlist-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSelection_1| image:: ./images/Controller-Selection-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_1| image:: ./images/Controller-Inspector-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_2| image:: ./images/Controller-Inspector-2.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_3| image:: ./images/Controller-Inspector-3.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSettings_1| image:: ./images/Controller-Settings-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |Etesian-1| image:: ./images/etesian-1.png
|
||||||
|
:alt: Etesian Abutment Box
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ChipStructure-1| image:: ./images/chip-structure-1.png
|
||||||
|
:alt: Chip Top Structure
|
||||||
|
:align: middle
|
||||||
|
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
|
||||||
|
\hfill \includegraphics[height=2.0cm]{../../../etc/images/Logo-LIP6-bleugris}
|
||||||
|
\hfill \includegraphics[height=1.8cm]{../../../etc/images/Logo-SU}
|
||||||
|
\hfill \includegraphics[height=2.0cm]{../../../etc/images/Logo-CNRS}
|
||||||
|
\hfill
|
||||||
|
\\*[2cm]
|
||||||
|
|
||||||
|
\huge \textsc{Sorbonne Université} \\*[1cm]
|
||||||
|
|
||||||
|
\huge {\textsc{lip6} Laboratory} \\*[3cm]
|
||||||
|
|
||||||
|
\Huge \textbf{\textsc{Coriolis}} \\*[1cm]
|
||||||
|
\Huge \textbf{User's Guide} \\*[1cm]
|
||||||
|
|
||||||
|
\huge {Jean-Paul \textsc{Chaput}} \\
|
||||||
|
\Large\href{mailto:Jean-Paul.Chaput@lip6.fr}{Jean-Paul.Chaput@lip6.fr}\\*[4cm]
|
||||||
|
|
||||||
|
\includegraphics[scale=1.0]{../../../etc/images/logoCC.pdf}
|
||||||
|
|
||||||
|
\normalsize
|
||||||
|
This work is licensed under a \\
|
||||||
|
Creative Commons Attribution-NonCommercial-ShareALike 4.0 International License. \\
|
||||||
|
Creative Commons License \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{creativecommons.org/licenses/by-nc-sa/4.0/}
|
||||||
|
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\pagestyle{fancy}
|
||||||
|
|
||||||
|
|pagestylefancy|
|
||||||
|
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
.. include:: Abstract.rst
|
||||||
|
.. include:: LicenseCredits.rst
|
||||||
|
.. include:: DesignFlow.rst
|
||||||
|
.. include:: Installation.rst
|
||||||
|
.. include:: ViewerTools.rst
|
||||||
|
.. .. include:: ScriptsPlugins.rst
|
|
@ -0,0 +1,116 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
=====================
|
||||||
|
Coriolis User's Guide
|
||||||
|
=====================
|
||||||
|
|
||||||
|
|
||||||
|
:slug: users-guide
|
||||||
|
:date: 2019-12-20 16:00
|
||||||
|
:Authors: Jean-Paul Chaput
|
||||||
|
:Contact: <Jean-Paul.Chaput@lip6.fr>
|
||||||
|
:Version: June 4, 2019 (jpc)
|
||||||
|
:status: hidden
|
||||||
|
|
||||||
|
|
||||||
|
.. role:: raw-html(raw)
|
||||||
|
:format: html
|
||||||
|
|
||||||
|
.. URLs that changes between the various backends.
|
||||||
|
.. _Coriolis Tools Documentation: ../documentation.rst
|
||||||
|
.. _Stratus Documentation: ../stratus/Stratus_HTML.rst
|
||||||
|
.. _Here: {filename}/pdfs/UsersGuide.pdf
|
||||||
|
.. _Coriolis User's Guide: {filename}/pdfs/UsersGuide.pdf
|
||||||
|
|
||||||
|
.. For HTML backend
|
||||||
|
.. |BigMouse| image:: {attach}images/ComputerMouse.png
|
||||||
|
:width: 30%
|
||||||
|
|
||||||
|
.. |ViewerSnapshot_1| image:: {attach}images/Viewer-1.png
|
||||||
|
:alt: Viewer Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSnapshot_1| image:: {attach}images/Controller-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerLook_1| image:: {attach}images/Controller-Look-1.png
|
||||||
|
:alt: Controller Look, Snapshot 1
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerFilter_1| image:: {attach}images/Controller-Filter-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerLayersGos_1| image:: {attach}images/Controller-LayersGos-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerNetlist_1| image:: {attach}images/Controller-Netlist-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ViewerNetlist_1| image:: {attach}images/Viewer-Netlist-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSelection_1| image:: {attach}images/Controller-Selection-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_1| image:: {attach}images/Controller-Inspector-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_2| image:: {attach}images/Controller-Inspector-2.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerInspector_3| image:: {attach}images/Controller-Inspector-3.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ControllerSettings_1| image:: {attach}images/Controller-Settings-1.png
|
||||||
|
:alt: Controller Basic Snapshot
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |Etesian-1| image:: {attach}images/etesian-1.png
|
||||||
|
:alt: Etesian Abutment Box
|
||||||
|
:align: middle
|
||||||
|
:width: 80%
|
||||||
|
|
||||||
|
.. |ChipStructure-1| image:: {attach}images/chip-structure-1.png
|
||||||
|
:alt: Chip Top Structure
|
||||||
|
:align: middle
|
||||||
|
|
||||||
|
|
||||||
|
Printable Version of this Document
|
||||||
|
==================================
|
||||||
|
|
||||||
|
`Coriolis User's Guide`_.
|
||||||
|
|
||||||
|
|
||||||
|
.. contents::
|
||||||
|
:depth: 2
|
||||||
|
|
||||||
|
|
||||||
|
.. include:: ../../../etc/definitions.rst
|
||||||
|
.. include:: Abstract.rst
|
||||||
|
.. include:: LicenseCredits.rst
|
||||||
|
.. include:: DesignFlow.rst
|
||||||
|
.. include:: Installation.rst
|
||||||
|
.. include:: ViewerTools.rst
|
||||||
|
.. .. include:: ScriptsPlugins.rst
|
|
@ -0,0 +1,766 @@
|
||||||
|
.. -*- Mode: rst -*-
|
||||||
|
|
||||||
|
|
||||||
|
CGT - The Graphical Interface
|
||||||
|
=============================
|
||||||
|
|
||||||
|
The |Coriolis| graphical interface is split up into two windows.
|
||||||
|
|
||||||
|
* The **Viewer**, with the following features:
|
||||||
|
|
||||||
|
* Basic load/save capabilities.
|
||||||
|
* Displays the current working cell. Could be empty if the design
|
||||||
|
is not yet placed.
|
||||||
|
* Executes Stratus Scripts.
|
||||||
|
* Menu to run the tools (placement, routage).
|
||||||
|
|
||||||
|
Features are detailed in `Viewer & Tools`_.
|
||||||
|
|
||||||
|
|ViewerSnapShot_1|
|
||||||
|
|
||||||
|
* The **Controller**, which allows to:
|
||||||
|
|
||||||
|
* Tweak what is displayed by the *Viewer*. Through the *Look*,
|
||||||
|
*Filter* and *Layers&Gos* tabs.
|
||||||
|
* Browse the |netlist| with eponym tab.
|
||||||
|
* Show the list of selected objects (if any) with *selection*
|
||||||
|
* Walk through the Database, the Cell or the Selection with *Inspector*.
|
||||||
|
This is an advanced feature, reserved for experimented users.
|
||||||
|
* The tab *Settings* which gives access to all the settings.
|
||||||
|
They are closely related to Configuration & Initialisation.
|
||||||
|
|
||||||
|
|bcenter| |ControllerSnapShot_1| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
.. _Viewer & Tools:
|
||||||
|
|
||||||
|
Viewer & Tools
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|Stratus| Netlist Capture
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
|Stratus| is the replacement for |GenLib| procedural netlist capture language.
|
||||||
|
It is designed as a set of |Python| classes, and comes with it's own documentation
|
||||||
|
(`Stratus Documentation`_)
|
||||||
|
|
||||||
|
|
||||||
|
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|.
|
||||||
|
|
||||||
|
As for the second release, |Coriolis| can be used only for three purposes :
|
||||||
|
|
||||||
|
* **Placing a design**, in which case the |netlist| view must be present.
|
||||||
|
* **Routing a design**, in that case the |netlist|
|
||||||
|
view and the |layout| view must be present and |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 |layout| view will be overwritten.
|
||||||
|
* **Viewing a design**, the |netlist| view must be present, if a |layout|
|
||||||
|
view is present it still must have the same name but it can be in any
|
||||||
|
state.
|
||||||
|
|
||||||
|
|
||||||
|
Synthetizing and loading a design
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
|Coriolis| supports several file formats. It can load all file format
|
||||||
|
from the |Alliance| toolchain (.ap for layout, behavioural and structural vhdl .vbe and .vst),
|
||||||
|
BLIF netlist format as well as benchmark formats from the ISPD contests.
|
||||||
|
|
||||||
|
It can be compiled with LEF/DEF support, although it requires acceptance of the SI2 license
|
||||||
|
and may not be compiled in your version of the software.
|
||||||
|
|
||||||
|
Synthesis under Yosys
|
||||||
|
.....................
|
||||||
|
|
||||||
|
You can create a BLIF file from the |Yosys| synthetizer, which can be imported under Coriolis.
|
||||||
|
Most libraries are specified as a .lib liberty file and a .lef LEF file.
|
||||||
|
|Yosys| opens most .lib files with minor modifications, but LEF support in Coriolis relies on SI2.
|
||||||
|
If Coriolis hasn't been compiled against it, the library is given in |Alliance| .ap format.
|
||||||
|
`Some free libraries <http://vlsitechnology.org>`_ already provide both .ap and .lib files.
|
||||||
|
|
||||||
|
Once you have installed a common library under |Yosys| and Coriolis, just synthetize your design
|
||||||
|
with |Yosys| and import it (as Blif without the extension) under Coriolis to perform place&route.
|
||||||
|
|
||||||
|
Synthesis under Alliance
|
||||||
|
........................
|
||||||
|
|
||||||
|
|Alliance| is an older toolchain but has been extensively used for years. Coriolis can import
|
||||||
|
and write Alliance designs and libraries directly.
|
||||||
|
|
||||||
|
|
||||||
|
Etesian -- Placer
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The |Etesian| placer is a state of the art (as of 2015) analytical placer. It is
|
||||||
|
within ``5%`` of other placers' solutions, but is normally a bit worse than ePlace.
|
||||||
|
This |Coriolis| tool is actually an encapsulation of |Coloquinte| which *is* the placer.
|
||||||
|
|
||||||
|
.. note:: *Instance Uniquification:* a same logical instance cannot have
|
||||||
|
two different placements. So, if you don't supply a placement for it, it will be
|
||||||
|
uniquified (cloned) and you will see the copy files appears on disk upon saving.
|
||||||
|
|
||||||
|
|
||||||
|
|noindent|
|
||||||
|
**Hierarchical Placement**
|
||||||
|
|
||||||
|
The placement area is defined by the top cell abutment box.
|
||||||
|
|
||||||
|
When placing a complete hierarchy, the abutment boxes of the cells (models) other than
|
||||||
|
the top cell are set identical to the one of the top cell and their instances are
|
||||||
|
all placed at position ``(0,0,ID)``. That is, all the abutments boxes, whatever the
|
||||||
|
hierarchical level, define the same area (they are exactly superposed).
|
||||||
|
|
||||||
|
We choose this scheme because the placer will see all the instances as virtually
|
||||||
|
flattened, so they can be placed anywhere inside the top-cell abutment box.
|
||||||
|
|
||||||
|
|bcenter| |Etesian-1| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
|noindent|
|
||||||
|
**Computing the Placement Area**
|
||||||
|
|
||||||
|
The placement area is computed using the ``etesian.aspectRatio`` and ``etesian.spaceMargin``
|
||||||
|
parameters only if the top-cell has an empty abutment box. If the top-cell abutment
|
||||||
|
box has to be set, then it is propagated to all the instances models recursively.
|
||||||
|
|
||||||
|
|
||||||
|
|noindent|
|
||||||
|
**Reseting the Placement**
|
||||||
|
|
||||||
|
Once a placement has been done, the placer cannot reset it (will be implemented
|
||||||
|
later). To perform a new placement, you must restart |cgt|. In addition, if you
|
||||||
|
have saved the placement on disk, you must erase any :cb:`.ap` file, which are
|
||||||
|
automatically reloaded along with the netlist (:cb:`.vst`).
|
||||||
|
|
||||||
|
|noindent|
|
||||||
|
**Limitations**
|
||||||
|
|
||||||
|
Etesian supports standard cells and fixed macros. As for the Coriolis 2.1 version,
|
||||||
|
it doesn't support movable macros, and you must place every macro beforehand.
|
||||||
|
Timing and routability analysis are not included either, and the returned placement
|
||||||
|
may be unroutable.
|
||||||
|
|
||||||
|
|
||||||
|
Etesian Configuration Parameters
|
||||||
|
................................
|
||||||
|
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| Parameter Identifier | Type | Default |
|
||||||
|
+===================================+==================+============================+
|
||||||
|
| **Etesian Parameters** |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.aspectRatio`` | TypePercentage | :cb:`100` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Define the height on width ``H/W`` aspect |
|
||||||
|
| | ratio, can be comprised between 10 and 1000 |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.spaceMargin`` | TypePercentage | :cb:`5` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The extra white space added to the total area |
|
||||||
|
| | of the standard cells |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.uniformDensity`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Whether the cells will be spread envenly |
|
||||||
|
| | across the area or allowed to form denser |
|
||||||
|
| | clusters |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.effort`` | TypeInt | :cb:`2` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Sets the balance between the speed of the |
|
||||||
|
| | placer and the solution quality |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.routingDriven`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Whether the tool will try routing iterations |
|
||||||
|
| | and whitespace allocation to improve |
|
||||||
|
| | routability; to be implemented |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``etesian.graphics`` | TypeInt | :cb:`2` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | How often the display will be refreshed |
|
||||||
|
| | More refreshing slows the placer. |
|
||||||
|
| | |
|
||||||
|
| | * ``1`` shows both upper and lower bounds |
|
||||||
|
| | * ``2`` only shows lower bound results |
|
||||||
|
| | * ``3`` only shows the final results |
|
||||||
|
+-----------------------------------+-----------------------------------------------+
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
Katana -- Global Router
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
The quality of |Katana| global routing solutions are equivalent to those of FGR_ 1.0.
|
||||||
|
For an in-depth description of |Katana| algorithms, you may download the thesis of
|
||||||
|
D. |Dupuis| avalaible from here~: `Knik Thesis`_ (|Knik| has been rewritten as part
|
||||||
|
of |Katana|, the algorithms remains essentially the same).
|
||||||
|
|
||||||
|
The global router is now deterministic.
|
||||||
|
|
||||||
|
|
||||||
|
Katana -- Detailed Router
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
|Katana| 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 `150K` gates.
|
||||||
|
|medskip|
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
**Slow Layer Assignment.** Most of the time, the layer assignment stage is
|
||||||
|
fast (less than a dozen seconds), but in some instances it can take more
|
||||||
|
than a dozen *minutes*. This is a known bug and will be corrected in later
|
||||||
|
releases.
|
||||||
|
|
||||||
|
After each run, |Katana| displays a set of *completion ratios* which must all
|
||||||
|
be equal to `100%` or (``NNNN+0``) if the detailed routing has been successfull.
|
||||||
|
In the event of a failure, on a saturated design, you may tweak the three
|
||||||
|
following configuration parameters:
|
||||||
|
|
||||||
|
#. ``katana.hTrackReservedLocal``, the number of track reserved for local routing,
|
||||||
|
that quantity is substracted from the edge capacities (global routing) to
|
||||||
|
give a sense of the cluttering inside the GCells.
|
||||||
|
#. ``katana.vTrackReservedLocal``, same as above.
|
||||||
|
#. ``etesian.spaceMargin``, increases the free area of the overall design so the
|
||||||
|
routing density decrease.
|
||||||
|
|
||||||
|
The idea is to increase the horizontal and vertical local track reservation until
|
||||||
|
the detailed router succeeds. But in doing so we make the task of the global router
|
||||||
|
more and more difficult as the capacity of the edges decreases, and at some point
|
||||||
|
it will fail too. So this is a balance.
|
||||||
|
|
||||||
|
Routing a design is done in four ordered steps:
|
||||||
|
|
||||||
|
#. Detailed pre-route :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed PreRoute}`
|
||||||
|
#. Global routing :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Global Route}`
|
||||||
|
#. Detailed routing :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Detailed Route}`
|
||||||
|
#. Finalize routing :math:`\textbf{P\&R} \rightarrow \textbf{Step by Step} \rightarrow \textbf{Finalize Route}`
|
||||||
|
|
||||||
|
It is possible to supply to the router a complete wiring for some nets that the user
|
||||||
|
wants to be routed according to a specific topology. The supplied topology must respect
|
||||||
|
the building rules of the |Anabatic| database (contacts must be, *terminals*, *turns*, *h-tee*
|
||||||
|
& *v-tee* only). During the first step :fboxtt:`Detailed Pre-Route` the router will solve
|
||||||
|
overlaps between the segments, without making any dogleg. If no pre-routed topologies
|
||||||
|
are present, this step may be ommited. Any net routed at this step is then fixed and
|
||||||
|
become unmovable for the later stages.
|
||||||
|
|
||||||
|
After the detailed routing step the |Katana| data-structure is still active
|
||||||
|
(the Hurricane wiring is decorated). The finalize step performs the removal of
|
||||||
|
the |Katana| data-structure, and it is not advisable to save the design before
|
||||||
|
that step.
|
||||||
|
|
||||||
|
You may visualize the density (saturation) of either the edges (global routing)
|
||||||
|
or the GCells (detailed routing) until the routing is finalized. Special layers appear
|
||||||
|
to that effect in the `The Layers&Go Tab`_.
|
||||||
|
|
||||||
|
|
||||||
|
Katana Configuration Parameters
|
||||||
|
...............................
|
||||||
|
|
||||||
|
The |Anabatic| parameters control the layer assignment step.
|
||||||
|
|
||||||
|
All the defaults value given below are from the default |Alliance| technology
|
||||||
|
(:cb:`cmos` and :cb:`SxLib` cell gauge/routing gauge).
|
||||||
|
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| Parameter Identifier | Type | Default |
|
||||||
|
+===================================+==================+============================+
|
||||||
|
| **Anabatic Parameters** |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``anabatic.topRoutingLayer`` | TypeString | :cb:`METAL5` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Define the highest metal layer that will be |
|
||||||
|
| | used for routing (inclusive). |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|``anabatic.globalLengthThreshold`` | TypeInt | :cb:`1450` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | This parameter is used by a layer assignment |
|
||||||
|
| | method which is no longer used (did not give |
|
||||||
|
| | good results) |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``anabatic.saturateRatio`` | TypePercentage | :cb:`80` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | If ``M(x)`` density is above this ratio, |
|
||||||
|
| | move up feedthru global segments up from |
|
||||||
|
| | depth ``x`` to ``x+2`` |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``anabatic.saturateRp`` | TypeInt | :cb:`8` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | If a GCell contains more terminals |
|
||||||
|
| | (:cb:`RoutingPad`) than that number, force a |
|
||||||
|
| | move up of the connecting segments to those |
|
||||||
|
| | in excess |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| **Katana Parameters** |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.hTracksReservedLocal`` | TypeInt | :cb:`3` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | To take account the tracks needed *inside* a |
|
||||||
|
| | GCell to build the *local* routing, decrease |
|
||||||
|
| | the capacity of the edges of the global |
|
||||||
|
| | router. Horizontal and vertical locally |
|
||||||
|
| | reserved capacity can be distinguished for |
|
||||||
|
| | more accuracy. |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.vTracksReservedLocal`` | TypeInt | :cb:`3` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | cf. ``kite.hTracksReservedLocal`` |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.eventsLimit`` | TypeInt | :cb:`4000002` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | The maximum number of segment displacements, |
|
||||||
|
| | this is a last ditch safety against infinite |
|
||||||
|
| | loop. It's perhaps a little too low for big |
|
||||||
|
| | designs |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.ripupCost`` | TypeInt | :cb:`3` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Differential introduced between two ripup |
|
||||||
|
| | costs to avoid a loop between two ripped up |
|
||||||
|
| | segments |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.strapRipupLimit`` | TypeInt | :cb:`16` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Maximum number of ripup for *strap* segments |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.localRipupLimit`` | TypeInt | :cb:`9` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Maximum number of ripup for *local* segments |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.globalRipupLimit`` | TypeInt | :cb:`5` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Maximum number of ripup for *global* segments,|
|
||||||
|
| | when this limit is reached, triggers topologic|
|
||||||
|
| | modification |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
| ``katana.longGlobalRipupLimit`` | TypeInt | :cb:`5` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Maximum number of ripup for *long global* |
|
||||||
|
| | segments, when this limit is reached, triggers|
|
||||||
|
| | topological modification |
|
||||||
|
+-----------------------------------+------------------+----------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. _Python Scripts in Cgt:
|
||||||
|
|
||||||
|
Executing Python Scripts in Cgt
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
Python/Stratus scripts can be executed either in text or graphical mode.
|
||||||
|
|
||||||
|
.. note:: **How Cgt Locates Python Scripts:**
|
||||||
|
|cgt| uses the Python ``import`` mechanism to load Python scripts.
|
||||||
|
So you must give the name of your script whithout ``.py`` extension and
|
||||||
|
it must be reachable through the ``PYTHONPATH``. You may use the
|
||||||
|
dotted module notation.
|
||||||
|
|
||||||
|
A Python/Stratus script must contain a function called ``scriptMain()``
|
||||||
|
with one optional argument, the graphical editor into which it may be
|
||||||
|
running (will be set to ``None`` in text mode). The Python interface to
|
||||||
|
the editor (type: :cb:`CellViewer`) is limited to basic capabilities
|
||||||
|
only.
|
||||||
|
|
||||||
|
Any script given on the command line will be run immediatly *after* the
|
||||||
|
initializations and *before* any other argument is processed.
|
||||||
|
|
||||||
|
For more explanation on Python scripts see `Python Interface to Coriolis`.
|
||||||
|
|
||||||
|
|
||||||
|
Printing & Snapshots
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Printing or saving into a |pdf| is fairly simple, just use the **File -> Print**
|
||||||
|
menu or the |CTRL_P| shortcut to open the dialog box.
|
||||||
|
|
||||||
|
The print functionality uses exactly the same rendering mechanism as for the
|
||||||
|
screen, beeing almost *WYSIWYG*. Thus, to obtain the best results it is advisable
|
||||||
|
to select the ``Coriolis.Printer`` look (in the *Controller*), which uses a
|
||||||
|
white background and well suited for high resolutions ``32x32`` pixels patterns
|
||||||
|
|
||||||
|
There is also two modes of printing selectable through the *Controller*
|
||||||
|
**Settings -> Misc -> Printer/Snapshot Mode**:
|
||||||
|
|
||||||
|
=============== ================= =====================================================
|
||||||
|
Mode DPI (approx.) Intended Usage
|
||||||
|
--------------- ----------------- -----------------------------------------------------
|
||||||
|
**Cell Mode** 150 For single ``Cell`` printing or very small designs.
|
||||||
|
Patterns will be bigger and more readable.
|
||||||
|
**Design Mode** 300 For designs (mostly commposed of wires and cells
|
||||||
|
outlines).
|
||||||
|
=============== ================= =====================================================
|
||||||
|
|
||||||
|
.. note:: *The pdf file size*
|
||||||
|
Be aware that the generated |pdf| files are indeed only pixmaps.
|
||||||
|
So they can grew very large if you select paper format above ``A2``
|
||||||
|
or similar.
|
||||||
|
|
||||||
|
|
||||||
|
|noindent|
|
||||||
|
Saving into an image is subject to the same remarks as for |pdf|.
|
||||||
|
|
||||||
|
|
||||||
|
Memento of Shortcuts in Graphic Mode
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
The main application binary is |cgt|.
|
||||||
|
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| Category | Keys | Action |
|
||||||
|
+===============+===================+===========================================================+
|
||||||
|
| **Moves** | | |KeyUp|, | Shifts the view in the according direction |
|
||||||
|
| | |KeyDown| | |
|
||||||
|
| | | |KeyLeft|, | |
|
||||||
|
| | |KeyRight| | |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Fit** | |KeyF| | Fits to the Cell abutment box |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Refresh** | |CTRL_L| | Triggers a complete display redraw |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Goto** | |KeyG| | *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 |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Zoom** | |KeyZ|, | Respectively zoom by a 2 factor and *unzoom* |
|
||||||
|
| | |KeyM| | by a 2 factor |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | | |BigMouse| | You can perform a zoom to an area. |
|
||||||
|
| | | Area Zoom | Define the zoom area by *holding down the left |
|
||||||
|
| | | mouse button* while moving the mouse. |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Selection** | | |BigMouse| | You can select displayed objects under an area. |
|
||||||
|
| | | Area Selection | Define the selection area by *holding down the |
|
||||||
|
| | | right mouse button* while moving the mouse. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | | |BigMouse| | You can toggle the selection of one object under |
|
||||||
|
| | | Toggle Selection| the mouse position by pressing |CTRL| and |
|
||||||
|
| | | pressing down *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. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | |KeyCapS| | Toggle the selection visibility |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Controller**| |CTRL_I| | 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. |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Rulers** | |KeyK|, | One stroke on |KeyK| enters the ruler mode, in |
|
||||||
|
| | |KeyESC| | which you can draw one ruler. You can exit the |
|
||||||
|
| | | ruler mode by pressing |KeyESC|. Once in ruler |
|
||||||
|
| | | mode, the first click on the *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. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | |KeyCapK| | Clears all the drawn rulers |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Print** | |CTRL_P| | 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. |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Open/Close**| |CTRL_O| | Opens a new design. The design name must be |
|
||||||
|
| | | given without path or extention. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | |CTRL_W| | Closes the current viewer window, but does not quit |
|
||||||
|
| | | the application. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | |CTRL_Q| | `CTRL+Q` quits the application |
|
||||||
|
| | | (closing all windows). |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
| **Hierarchy** | |CTRL_Down| | Goes one hierarchy level down. That is, if there |
|
||||||
|
| | | is an *instance* under the cursor position, loads |
|
||||||
|
| | | its *model* Cell in place of the current one. |
|
||||||
|
| +-------------------+-----------------------------------------------------------+
|
||||||
|
| | |CTRL_Up| | Goes one hierarchy level up. If we have entered |
|
||||||
|
| | | the current model through |CTRL_Down| |
|
||||||
|
| | | reloads the previous model (the one |
|
||||||
|
| | | in which this model is instanciated). |
|
||||||
|
+---------------+-------------------+-----------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Cgt Command Line Options
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Appart from the obvious ``--text`` options, all can be used for text and graphical mode.
|
||||||
|
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| Arguments | Meaning |
|
||||||
|
+=============================+================================================+
|
||||||
|
| `-t|--text` | Instructs |cgt| to run in text mode. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-L|--log-mode` | Disables the use of |ANSI| escape sequence on |
|
||||||
|
| | the |tty|. Useful when the output is |
|
||||||
|
| | redirected to a file. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-c <cell>|--cell=<cell>` | The name of the design to load, without |
|
||||||
|
| | leading path or extention. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-m <val>|--margin=<val>` | Percentage *val* of white space for the placer |
|
||||||
|
| | (|Etesian|). |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `--events-limit=<count>` | The maximal number of events after which the |
|
||||||
|
| | router will stop. This is mainly a failsafe |
|
||||||
|
| | against looping. The limit is set to 4 |
|
||||||
|
| | millions of iteration which should suffice to |
|
||||||
|
| | any design of `100K`. gates. For bigger |
|
||||||
|
| | designs you may want to increase this limit. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-G|--global-route` | Runs the global router (|Katana|). |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-R|--detailed-route` | Runs the detailed router (|Katana|). |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `-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. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
| `--stratus-script=<module>` | Run the Python/Stratus script ``module``. |
|
||||||
|
| | See `Python Scripts in Cgt`_. |
|
||||||
|
+-----------------------------+------------------------------------------------+
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
Some Examples :
|
||||||
|
|
||||||
|
* Run both global and detailed router, then save the routed design:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
> cgt -v -t -G -R --cell=design --save-design=design_r
|
||||||
|
|
||||||
|
|
||||||
|
Miscellaneous Settings
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| Parameter Identifier | Type | Default |
|
||||||
|
+=======================================+==================+============================+
|
||||||
|
| **Verbosity/Log Parameters** |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.info`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Enables display of *info* level message |
|
||||||
|
| | (:cb:`cinfo` stream) |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.bug`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Enables display of *bug* level message |
|
||||||
|
| | (:cb:`cbug` stream), messages can be a little |
|
||||||
|
| | scarry |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.logMode`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | If enabled, assumes that the output device |
|
||||||
|
| | is not a ``tty`` and suppresses any escape |
|
||||||
|
| | sequences |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.verboseLevel1`` | TypeBool | :cb:`True` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | First level of verbosity, disables level 2 |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.verboseLevel2`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Second level of verbosity |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| **Development/Debug Parameters** |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.minTraceLevel`` | TypeInt | :cb:`0` |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.maxTraceLevel`` | TypeInt | :cb:`0` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | Displays trace information *between* those two|
|
||||||
|
| | levels (:cb:`cdebug` stream) |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
| ``misc.catchCore`` | TypeBool | :cb:`False` |
|
||||||
|
| +------------------+----------------------------+
|
||||||
|
| | By default, |cgt| does not dump core. |
|
||||||
|
| | To generate one set this flag to :cb:`True` |
|
||||||
|
+---------------------------------------+------------------+----------------------------+
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Controller:
|
||||||
|
|
||||||
|
The Controller
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The *Controller* window is composed of seven tabs:
|
||||||
|
|
||||||
|
#. `The Look Tab`_ to select the display style.
|
||||||
|
#. `The Filter Tab`_ the hierarchical levels to be displayed, the look of
|
||||||
|
rubbers and the dimension units.
|
||||||
|
#. `The Layers&Go Tab`_ to selectively hide/display layers.
|
||||||
|
#. `The Netlist Tab`_ to browse through the |netlist|. Works in association
|
||||||
|
with the *Selection* tab.
|
||||||
|
#. `The Selection Tab`_ allows to view all the currently selected elements.
|
||||||
|
#. `The Inspector Tab`_ browses through either the DataBase, the Cell or
|
||||||
|
the current selection.
|
||||||
|
#. `The Settings Tab`_ accesses all the tool's configuration settings.
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Look Tab:
|
||||||
|
|
||||||
|
The Look Tab
|
||||||
|
------------
|
||||||
|
|
||||||
|
You can select how the layout will be displayed. There is a special one
|
||||||
|
``Printer.Coriolis`` specifically designed for `Printing & Snapshots`_.
|
||||||
|
You should select it prior to calling the print or snapshot dialog boxes.
|
||||||
|
|
||||||
|
|bcenter| |ControllerLook_1| |ecenter|
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Filter Tab:
|
||||||
|
|
||||||
|
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 corresponds 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 Components. 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.
|
||||||
|
|
||||||
|
.. note:: *What are Rubbers:* |Hurricane| uses *Rubbers* to materialize
|
||||||
|
physical gaps in net topology. That is, if some wires are missing to
|
||||||
|
connect two or more parts of net, a *rubber* will be drawn between them
|
||||||
|
to signal the gap.
|
||||||
|
|
||||||
|
For example, after the detailed routing no *rubber* should remain.
|
||||||
|
They have been made *very* visible as big violet lines...
|
||||||
|
|
||||||
|
|bcenter| |ControllerFilter_1| |ecenter|
|
||||||
|
|
||||||
|
|newpage|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Layers&Go Tab:
|
||||||
|
|
||||||
|
The Layers&Go Tab
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Control the individual display of all *layers* and *Gos*.
|
||||||
|
|
||||||
|
* *Layers* correspond to true physical layers. From a |Hurricane| point of
|
||||||
|
view they are all the *BasicLayers* (could be matched to GDSII).
|
||||||
|
* *Gos* stands from *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.
|
||||||
|
|
||||||
|
For each layer/Go there are two check boxes:
|
||||||
|
|
||||||
|
* The normal one triggers the display.
|
||||||
|
* The red-outlined allows objects of that layer to be selectable or not.
|
||||||
|
|
||||||
|
|bcenter| |ControllerLayersGos_1| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Netlist Tab:
|
||||||
|
|
||||||
|
The Netlist Tab
|
||||||
|
---------------
|
||||||
|
|
||||||
|
The *Netlist* tab shows the list of nets... By default the tab is not
|
||||||
|
*synched* with the displayed Cell. To see the nets you must check the
|
||||||
|
**Sync Netlist** checkbox. You can narrow the set of displayed nets by
|
||||||
|
using the filter pattern (supports regular expressions).
|
||||||
|
|
||||||
|
A very useful feature is to enable the **Sync Selection**, which will
|
||||||
|
automatically select all the components of the selected net(s). You can
|
||||||
|
select multiple nets. In the figure the net ``auxsc35`` is selected and
|
||||||
|
is highlighted in the *Viewer*.
|
||||||
|
|
||||||
|
|bcenter| |ControllerNetlist_1| |ecenter|
|
||||||
|
|bcenter| |ViewerNetlist_1| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Selection Tab:
|
||||||
|
|
||||||
|
The Selection Tab
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
The *Selection* tab lists all the components currently selected. They
|
||||||
|
can be filtered thanks to the filter pattern.
|
||||||
|
|
||||||
|
Used in conjunction with the *Netlist* **Sync Selection** you will all see
|
||||||
|
all the components part of *net*.
|
||||||
|
|
||||||
|
In this list, you can toggle individually the selection of component by
|
||||||
|
pressing the ``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 ``t`` key...
|
||||||
|
|
||||||
|
|bcenter| |ControllerSelection_1| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Inspector Tab:
|
||||||
|
|
||||||
|
The Inspector Tab
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
This tab is very useful, but mostly for |Coriolis| developpers. It allows
|
||||||
|
to browse through the live DataBase. The *Inspector* provides three entry points:
|
||||||
|
|
||||||
|
* **DataBase**: Starts from the whole |Hurricane| DataBase.
|
||||||
|
* **Cell**: Inspects the currently loaded Cell.
|
||||||
|
* **Selection**: Inspects the object currently highlighted in the *Selection* tab.
|
||||||
|
|
||||||
|
Once an entry point has been activated, you may recursively expore all
|
||||||
|
its fields using the right/left arrows.
|
||||||
|
|
||||||
|
.. note:: *Do not put your fingers in the socket:* when inspecting
|
||||||
|
anything, do not modify the DataBase. If any object under inspection
|
||||||
|
is deleted, you will crash the application...
|
||||||
|
|
||||||
|
.. note:: *Implementation Detail:* the inspector support is done with
|
||||||
|
``Slot``, ``Record`` and ``getString()``.
|
||||||
|
|
||||||
|
|bcenter| |ControllerInspector_1| |ecenter|
|
||||||
|
|bcenter| |ControllerInspector_2| |ecenter|
|
||||||
|
|bcenter| |ControllerInspector_3| |ecenter|
|
||||||
|
|
||||||
|
|
||||||
|
.. _The Settings Tab:
|
||||||
|
|
||||||
|
The Settings Tab
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Here comes the description of the *Settings* tab.
|
||||||
|
|
||||||
|
|bcenter| |ControllerSettings_1| |ecenter|
|
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 135 135
|
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 9.7 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 51 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 27 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 49 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 454 436
|
After Width: | Height: | Size: 36 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 51 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 44 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 65 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 451 434
|
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 433 420
|
|
@ -0,0 +1,463 @@
|
||||||
|
%!PS-Adobe-3.0 EPSF-3.0
|
||||||
|
%%Title: Coriolis-Soft-Schema.fig
|
||||||
|
%%Creator: fig2dev Version 3.2 Patchlevel 5d
|
||||||
|
%%CreationDate: Sat Feb 28 17:31:06 2015
|
||||||
|
%%For: jpc@lepka (Jean-Paul Chaput)
|
||||||
|
%%BoundingBox: 0 0 433 420
|
||||||
|
%Magnification: 0.7000
|
||||||
|
%%EndComments
|
||||||
|
%%BeginProlog
|
||||||
|
/MyAppDict 100 dict dup begin def
|
||||||
|
/$F2psDict 200 dict def
|
||||||
|
$F2psDict begin
|
||||||
|
$F2psDict /mtrx matrix put
|
||||||
|
/col-1 {0 setgray} bind def
|
||||||
|
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||||
|
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||||
|
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||||
|
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||||
|
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||||
|
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||||
|
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||||
|
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||||
|
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||||
|
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||||
|
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||||
|
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||||
|
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||||
|
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||||
|
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||||
|
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||||
|
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||||
|
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||||
|
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||||
|
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||||
|
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||||
|
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||||
|
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||||
|
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||||
|
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||||
|
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||||
|
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||||
|
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||||
|
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||||
|
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||||
|
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||||
|
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
% left30
|
||||||
|
<<
|
||||||
|
/PatternType 1
|
||||||
|
/PaintType 2
|
||||||
|
/TilingType 2
|
||||||
|
/BBox [-2 -4 10 5]
|
||||||
|
/XStep 8
|
||||||
|
/YStep 4
|
||||||
|
/PaintProc
|
||||||
|
{
|
||||||
|
pop
|
||||||
|
newpath
|
||||||
|
.7 setlinewidth
|
||||||
|
-2 -1 moveto
|
||||||
|
12 6 rlineto
|
||||||
|
stroke
|
||||||
|
} bind
|
||||||
|
|
||||||
|
>>
|
||||||
|
|
||||||
|
matrix
|
||||||
|
makepattern
|
||||||
|
/P1 exch def
|
||||||
|
|
||||||
|
/cp {closepath} bind def
|
||||||
|
/ef {eofill} bind def
|
||||||
|
/gr {grestore} bind def
|
||||||
|
/gs {gsave} bind def
|
||||||
|
/sa {save} bind def
|
||||||
|
/rs {restore} bind def
|
||||||
|
/l {lineto} bind def
|
||||||
|
/m {moveto} bind def
|
||||||
|
/rm {rmoveto} bind def
|
||||||
|
/n {newpath} bind def
|
||||||
|
/s {stroke} bind def
|
||||||
|
/sh {show} bind def
|
||||||
|
/slc {setlinecap} bind def
|
||||||
|
/slj {setlinejoin} bind def
|
||||||
|
/slw {setlinewidth} bind def
|
||||||
|
/srgb {setrgbcolor} bind def
|
||||||
|
/rot {rotate} bind def
|
||||||
|
/sc {scale} bind def
|
||||||
|
/sd {setdash} bind def
|
||||||
|
/ff {findfont} bind def
|
||||||
|
/sf {setfont} bind def
|
||||||
|
/scf {scalefont} bind def
|
||||||
|
/sw {stringwidth} bind def
|
||||||
|
/tr {translate} bind def
|
||||||
|
/tnt {dup dup currentrgbcolor
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||||
|
bind def
|
||||||
|
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||||
|
4 -2 roll mul srgb} bind def
|
||||||
|
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||||
|
/$F2psEnd {$F2psEnteredState restore end} def
|
||||||
|
|
||||||
|
/pageheader {
|
||||||
|
save
|
||||||
|
newpath 0 420 moveto 0 0 lineto 433 0 lineto 433 420 lineto closepath clip newpath
|
||||||
|
-174.6 367.2 translate
|
||||||
|
1 -1 scale
|
||||||
|
$F2psBegin
|
||||||
|
10 setmiterlimit
|
||||||
|
0 slj 0 slc
|
||||||
|
0.04200 0.04200 sc
|
||||||
|
} bind def
|
||||||
|
/pagefooter {
|
||||||
|
$F2psEnd
|
||||||
|
restore
|
||||||
|
} bind def
|
||||||
|
%%EndProlog
|
||||||
|
pageheader
|
||||||
|
%
|
||||||
|
% Fig objects follow
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% here starts figure with depth 70
|
||||||
|
% Polyline
|
||||||
|
0 slj
|
||||||
|
0 slc
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
4560 -27 m 4560 -315 l 4440 -315 l 4440 -27 l 4440 -27 l 4500 -267 l 4560 -27 l cp
|
||||||
|
eoclip
|
||||||
|
n 4500 4200 m
|
||||||
|
4500 -300 l gs col21 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 4560 -27 m 4500 -267 l 4440 -27 l 4560 -27 l cp gs col21 1.00 shd ef gr col21 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
5160 -27 m 5160 -315 l 5040 -315 l 5040 -27 l 5040 -27 l 5100 -267 l 5160 -27 l cp
|
||||||
|
eoclip
|
||||||
|
n 5100 600 m
|
||||||
|
5100 -300 l gs col21 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5160 -27 m 5100 -267 l 5040 -27 l 5160 -27 l cp gs col21 1.00 shd ef gr col21 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
5460 5372 m 5460 5085 l 5340 5085 l 5340 5372 l 5340 5372 l 5400 5132 l 5460 5372 l cp
|
||||||
|
eoclip
|
||||||
|
n 5400 6000 m
|
||||||
|
5400 5100 l gs col8 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5460 5372 m 5400 5132 l 5340 5372 l 5460 5372 l cp gs col8 1.00 shd ef gr col8 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
5610 3572 m 5610 3285 l 5490 3285 l 5490 3572 l 5490 3572 l 5550 3332 l 5610 3572 l cp
|
||||||
|
eoclip
|
||||||
|
n 5550 6000 m
|
||||||
|
5550 3300 l gs col8 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5610 3572 m 5550 3332 l 5490 3572 l 5610 3572 l cp gs col8 1.00 shd ef gr col8 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
4860 5372 m 4860 5085 l 4740 5085 l 4740 5372 l 4740 5372 l 4800 5132 l 4860 5372 l cp
|
||||||
|
eoclip
|
||||||
|
n 4800 7800 m
|
||||||
|
4800 5100 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 4860 5372 m 4800 5132 l 4740 5372 l 4860 5372 l cp gs 0.00 setgray ef gr col0 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
4710 7172 m 4710 6885 l 4590 6885 l 4590 7172 l 4590 7172 l 4650 6932 l 4710 7172 l cp
|
||||||
|
eoclip
|
||||||
|
n 4650 7800 m
|
||||||
|
4650 6900 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 4710 7172 m 4650 6932 l 4590 7172 l 4710 7172 l cp gs 0.00 setgray ef gr col0 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 8310 m 11715 8310 l 11715 8190 l 11428 8190 l 11428 8190 l 11668 8250 l 11428 8310 l cp
|
||||||
|
eoclip
|
||||||
|
n 10800 8250 m
|
||||||
|
11700 8250 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 8310 m 11668 8250 l 11428 8190 l 11428 8310 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 6510 m 11715 6510 l 11715 6390 l 11428 6390 l 11428 6390 l 11668 6450 l 11428 6510 l cp
|
||||||
|
eoclip
|
||||||
|
n 10800 6450 m
|
||||||
|
11700 6450 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 6510 m 11668 6450 l 11428 6390 l 11428 6510 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 4710 m 11715 4710 l 11715 4590 l 11428 4590 l 11428 4590 l 11668 4650 l 11428 4710 l cp
|
||||||
|
eoclip
|
||||||
|
n 7800 4650 m
|
||||||
|
11700 4650 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 4710 m 11668 4650 l 11428 4590 l 11428 4710 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 2910 m 11715 2910 l 11715 2790 l 11428 2790 l 11428 2790 l 11668 2850 l 11428 2910 l cp
|
||||||
|
eoclip
|
||||||
|
n 8400 2850 m
|
||||||
|
11700 2850 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 2910 m 11668 2850 l 11428 2790 l 11428 2910 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 1110 m 11715 1110 l 11715 990 l 11428 990 l 11428 990 l 11668 1050 l 11428 1110 l cp
|
||||||
|
eoclip
|
||||||
|
n 8400 1050 m
|
||||||
|
11700 1050 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 1110 m 11668 1050 l 11428 990 l 11428 1110 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
11428 -689 m 11715 -690 l 11715 -810 l 11428 -809 l 11428 -809 l 11668 -749 l 11428 -689 l cp
|
||||||
|
eoclip
|
||||||
|
n 10800 -750 m
|
||||||
|
11700 -750 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 11428 -689 m 11668 -749 l 11428 -809 l 11428 -689 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
13528 5760 m 13815 5760 l 13815 5640 l 13528 5640 l 13528 5640 l 13768 5700 l 13528 5760 l cp
|
||||||
|
eoclip
|
||||||
|
n 12600 5700 m
|
||||||
|
13800 5700 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 13528 5760 m 13768 5700 l 13528 5640 l 13528 5760 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
12928 2760 m 13215 2760 l 13215 2640 l 12928 2640 l 12928 2640 l 13168 2700 l 12928 2760 l cp
|
||||||
|
eoclip
|
||||||
|
n 12600 2700 m
|
||||||
|
13200 2700 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 12928 2760 m 13168 2700 l 12928 2640 l 12928 2760 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
13560 872 m 13560 585 l 13440 585 l 13440 872 l 13440 872 l 13500 632 l 13560 872 l cp
|
||||||
|
eoclip
|
||||||
|
n 13500 1800 m
|
||||||
|
13500 600 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 13560 872 m 13500 632 l 13440 872 l 13560 872 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
14160 872 m 14160 585 l 14040 585 l 14040 872 l 14040 872 l 14100 632 l 14160 872 l cp
|
||||||
|
eoclip
|
||||||
|
n 14100 4800 m
|
||||||
|
14100 600 l gs col18 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 14160 872 m 14100 632 l 14040 872 l 14160 872 l cp gs col18 1.00 shd ef gr col18 s
|
||||||
|
% Polyline
|
||||||
|
45.000 slw
|
||||||
|
n 13800 4800 m 14400 4800 l 14400 6600 l 13800 6600 l
|
||||||
|
cp gs col18 0.50 tnt ef gr gs col18 s gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
5910 -27 m 5910 -315 l 5790 -315 l 5790 -27 l 5790 -27 l 5850 -267 l 5910 -27 l cp
|
||||||
|
eoclip
|
||||||
|
n 5850 6000 m
|
||||||
|
5850 -300 l gs col8 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5910 -27 m 5850 -267 l 5790 -27 l 5910 -27 l cp gs col8 1.00 shd ef gr col8 s
|
||||||
|
% Polyline
|
||||||
|
45.000 slw
|
||||||
|
n 13200 1800 m 13800 1800 l 13800 3600 l 13200 3600 l
|
||||||
|
cp gs col18 0.50 tnt ef gr gs col18 s gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
5760 1772 m 5760 1485 l 5640 1485 l 5640 1772 l 5640 1772 l 5700 1532 l 5760 1772 l cp
|
||||||
|
eoclip
|
||||||
|
n 5700 6000 m
|
||||||
|
5700 1500 l gs col8 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5760 1772 m 5700 1532 l 5640 1772 l 5760 1772 l cp gs col8 1.00 shd ef gr col8 s
|
||||||
|
% Polyline
|
||||||
|
gs clippath
|
||||||
|
5010 3572 m 5010 3285 l 4890 3285 l 4890 3572 l 4890 3572 l 4950 3332 l 5010 3572 l cp
|
||||||
|
eoclip
|
||||||
|
n 4950 7800 m
|
||||||
|
4950 3300 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5010 3572 m 4950 3332 l 4890 3572 l 5010 3572 l cp gs 0.00 setgray ef gr col0 s
|
||||||
|
% Polyline
|
||||||
|
45.000 slw
|
||||||
|
n 12600 -1200 m 14400 -1200 l 14400 600 l 12600 600 l
|
||||||
|
cp gs col18 0.50 tnt ef gr gs col18 s gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
5160 1772 m 5160 1485 l 5040 1485 l 5040 1772 l 5040 1772 l 5100 1532 l 5160 1772 l cp
|
||||||
|
eoclip
|
||||||
|
n 5100 7800 m
|
||||||
|
5100 1500 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
n 5160 1772 m 5100 1532 l 5040 1772 l 5160 1772 l cp gs 0.00 setgray ef gr col0 s
|
||||||
|
% here ends figure;
|
||||||
|
%
|
||||||
|
% here starts figure with depth 60
|
||||||
|
% Polyline
|
||||||
|
0 slj
|
||||||
|
0 slc
|
||||||
|
45.000 slw
|
||||||
|
n 9000 6000 m 10800 6000 l 10800 6900 l 9000 6900 l
|
||||||
|
cp
|
||||||
|
% Fill with pattern background color
|
||||||
|
gs /DeviceRGB setcolorspace 0.00 0.00 0.56 setcolor fill gr
|
||||||
|
|
||||||
|
% Fill with pattern pen color
|
||||||
|
gs /DeviceRGB setcolorspace 0.00 0.00 0.56 P1 setpattern fill gr
|
||||||
|
|
||||||
|
gs col8 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4200 6000 m 9000 6000 l 9000 6900 l 4200 6900 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col8 s gr
|
||||||
|
% Polyline
|
||||||
|
n 9000 -1200 m 10800 -1200 l 10800 -300 l 9000 -300 l
|
||||||
|
cp
|
||||||
|
% Fill with pattern background color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
|
||||||
|
|
||||||
|
% Fill with pattern pen color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
|
||||||
|
|
||||||
|
gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4200 -1200 m 9000 -1200 l 9000 -300 l 4200 -300 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4800 600 m 6600 600 l 6600 1500 l 4800 1500 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 6600 600 m 8400 600 l 8400 1500 l 6600 1500 l
|
||||||
|
cp
|
||||||
|
% Fill with pattern background color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
|
||||||
|
|
||||||
|
% Fill with pattern pen color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
|
||||||
|
|
||||||
|
gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4800 2400 m 6600 2400 l 6600 3300 l 4800 3300 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 6600 2400 m 8400 2400 l 8400 3300 l 6600 3300 l
|
||||||
|
cp
|
||||||
|
% Fill with pattern background color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
|
||||||
|
|
||||||
|
% Fill with pattern pen color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
|
||||||
|
|
||||||
|
gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4200 4200 m 6000 4200 l 6000 5100 l 4200 5100 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 6000 4200 m 7800 4200 l 7800 5100 l 6000 5100 l
|
||||||
|
cp
|
||||||
|
% Fill with pattern background color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 setcolor fill gr
|
||||||
|
|
||||||
|
% Fill with pattern pen color
|
||||||
|
gs /DeviceRGB setcolorspace 0.56 0.00 0.56 P1 setpattern fill gr
|
||||||
|
|
||||||
|
gs col21 s gr
|
||||||
|
% Polyline
|
||||||
|
n 4200 7800 m 9000 7800 l 9000 8700 l 4200 8700 l
|
||||||
|
cp gs col7 1.00 shd ef gr gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
n 9000 7800 m 10800 7800 l 10800 8700 l 9000 8700 l
|
||||||
|
cp gs col7 0.00 shd ef gr gs col0 s gr
|
||||||
|
% Polyline
|
||||||
|
n 11700 -1200 m 12600 -1200 l 12600 8700 l 11700 8700 l
|
||||||
|
cp gs col18 1.00 shd ef gr gs col18 s gr
|
||||||
|
% here ends figure;
|
||||||
|
%
|
||||||
|
% here starts figure with depth 50
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
6600 6600 m
|
||||||
|
gs 1 -1 sc (CRL Core) dup sw pop 2 div neg 0 rm col8 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
9975 6600 m
|
||||||
|
gs 1 -1 sc (PyCRL) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 533.33 scf sf
|
||||||
|
13650 -300 m
|
||||||
|
gs 1 -1 sc 90.0 rot (cgt) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
9900 -600 m
|
||||||
|
gs 1 -1 sc (PyUnicorn) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
6600 -600 m
|
||||||
|
gs 1 -1 sc (Unicorn) dup sw pop 2 div neg 0 rm col21 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
5700 1200 m
|
||||||
|
gs 1 -1 sc (Kite) dup sw pop 2 div neg 0 rm col21 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
7500 1200 m
|
||||||
|
gs 1 -1 sc (PyKite) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
5700 3000 m
|
||||||
|
gs 1 -1 sc (Knik) dup sw pop 2 div neg 0 rm col21 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
7500 3000 m
|
||||||
|
gs 1 -1 sc (PyKnik) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
6900 4800 m
|
||||||
|
gs 1 -1 sc (PyEtesian) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
5100 4800 m
|
||||||
|
gs 1 -1 sc (Etesian) dup sw pop 2 div neg 0 rm col21 sh gr
|
||||||
|
/Helvetica-Bold ff 533.33 scf sf
|
||||||
|
12375 3600 m
|
||||||
|
gs 1 -1 sc 90.0 rot (Python) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
13650 2700 m
|
||||||
|
gs 1 -1 sc 90.0 rot (Stratus) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
14250 5700 m
|
||||||
|
gs 1 -1 sc 90.0 rot (Plugin) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
/Helvetica-Bold ff 400.00 scf sf
|
||||||
|
6600 8400 m
|
||||||
|
gs 1 -1 sc (Hurricane) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||||
|
/Helvetica-Bold ff 300.00 scf sf
|
||||||
|
9900 8400 m
|
||||||
|
gs 1 -1 sc (Isobar) dup sw pop 2 div neg 0 rm col7 sh gr
|
||||||
|
% here ends figure;
|
||||||
|
pagefooter
|
||||||
|
showpage
|
||||||
|
%%Trailer
|
||||||
|
end
|
||||||
|
%EOF
|
|
@ -0,0 +1,117 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5c
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
70.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
2 2 0 4 8 8 60 -1 41 0.000 0 0 -1 0 0 5
|
||||||
|
9000 6000 10800 6000 10800 6900 9000 6900 9000 6000
|
||||||
|
2 2 0 4 8 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 6000 9000 6000 9000 6900 4200 6900 4200 6000
|
||||||
|
2 1 0 2 21 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
4500 4200 4500 -300
|
||||||
|
2 1 0 2 21 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5100 600 5100 -300
|
||||||
|
2 1 0 2 8 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5400 6000 5400 5100
|
||||||
|
2 1 0 2 8 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5550 6000 5550 3300
|
||||||
|
2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
4800 7800 4800 5100
|
||||||
|
2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
4650 7800 4650 6900
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
10800 8250 11700 8250
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
10800 6450 11700 6450
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
7800 4650 11700 4650
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
8400 2850 11700 2850
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
8400 1050 11700 1050
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
10800 -750 11700 -750
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
12600 5700 13800 5700
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
12600 2700 13200 2700
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
13500 1800 13500 600
|
||||||
|
2 1 0 2 18 5 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
14100 4800 14100 600
|
||||||
|
2 2 0 4 21 21 60 -1 41 0.000 0 0 -1 0 0 5
|
||||||
|
9000 -1200 10800 -1200 10800 -300 9000 -300 9000 -1200
|
||||||
|
2 2 0 4 21 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 -1200 9000 -1200 9000 -300 4200 -300 4200 -1200
|
||||||
|
2 2 0 4 21 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4800 600 6600 600 6600 1500 4800 1500 4800 600
|
||||||
|
2 2 0 4 21 21 60 -1 41 0.000 0 0 -1 0 0 5
|
||||||
|
6600 600 8400 600 8400 1500 6600 1500 6600 600
|
||||||
|
2 2 0 4 21 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4800 2400 6600 2400 6600 3300 4800 3300 4800 2400
|
||||||
|
2 2 0 4 21 21 60 -1 41 0.000 0 0 -1 0 0 5
|
||||||
|
6600 2400 8400 2400 8400 3300 6600 3300 6600 2400
|
||||||
|
2 2 0 4 21 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 4200 6000 4200 6000 5100 4200 5100 4200 4200
|
||||||
|
2 2 0 4 21 21 60 -1 41 0.000 0 0 -1 0 0 5
|
||||||
|
6000 4200 7800 4200 7800 5100 6000 5100 6000 4200
|
||||||
|
2 2 0 4 0 7 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
4200 7800 9000 7800 9000 8700 4200 8700 4200 7800
|
||||||
|
2 2 0 4 0 7 60 -1 0 0.000 0 0 -1 0 0 5
|
||||||
|
9000 7800 10800 7800 10800 8700 9000 8700 9000 7800
|
||||||
|
2 2 0 4 18 18 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
11700 -1200 12600 -1200 12600 8700 11700 8700 11700 -1200
|
||||||
|
2 2 0 4 18 18 70 -1 30 0.000 0 0 -1 0 0 5
|
||||||
|
13800 4800 14400 4800 14400 6600 13800 6600 13800 4800
|
||||||
|
2 1 0 2 8 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5850 6000 5850 -300
|
||||||
|
2 2 0 4 18 18 70 -1 30 0.000 0 0 -1 0 0 5
|
||||||
|
13200 1800 13800 1800 13800 3600 13200 3600 13200 1800
|
||||||
|
2 1 0 2 8 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5700 6000 5700 1500
|
||||||
|
2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
4950 7800 4950 3300
|
||||||
|
2 2 0 4 18 18 70 -1 30 0.000 0 0 -1 0 0 5
|
||||||
|
12600 -1200 14400 -1200 14400 600 12600 600 12600 -1200
|
||||||
|
2 1 0 2 0 7 70 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 2.00 120.00 240.00
|
||||||
|
5100 7800 5100 1500
|
||||||
|
4 1 8 50 -1 18 24 0.0000 4 300 1920 6600 6600 CRL Core\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 285 990 9975 6600 PyCRL\001
|
||||||
|
4 1 7 50 -1 18 32 1.5708 4 480 810 13650 -300 cgt\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 285 1500 9900 -600 PyUnicorn\001
|
||||||
|
4 1 21 50 -1 18 24 0.0000 4 300 1575 6600 -600 Unicorn\001
|
||||||
|
4 1 21 50 -1 18 24 0.0000 4 300 780 5700 1200 Kite\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 285 945 7500 1200 PyKite\001
|
||||||
|
4 1 21 50 -1 18 24 0.0000 4 300 900 5700 3000 Knik\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 285 1020 7500 3000 PyKnik\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 285 1425 6900 4800 PyEtesian\001
|
||||||
|
4 1 21 50 -1 18 24 0.0000 4 300 1455 5100 4800 Etesian\001
|
||||||
|
4 1 7 50 -1 18 32 1.5708 4 510 1830 12375 3600 Python\001
|
||||||
|
4 1 7 50 -1 18 24 1.5708 4 300 1410 13650 2700 Stratus\001
|
||||||
|
4 1 7 50 -1 18 24 1.5708 4 390 1275 14250 5700 Plugin\001
|
||||||
|
4 1 0 50 -1 18 24 0.0000 4 300 1935 6600 8400 Hurricane\001
|
||||||
|
4 1 7 50 -1 18 18 0.0000 4 225 900 9900 8400 Isobar\001
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 378 B |
After Width: | Height: | Size: 425 B |
|
@ -0,0 +1,23 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.7a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Metric
|
||||||
|
A4
|
||||||
|
400.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 3555 675 4095 1215
|
||||||
|
2 1 0 6 7 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
3780 720 3960 720
|
||||||
|
2 2 0 6 7 7 50 -1 -1 0.000 0 2 -1 0 0 5
|
||||||
|
3690 810 3960 810 3960 1080 3690 1080 3690 810
|
||||||
|
2 1 0 6 7 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
3600 990 3600 810
|
||||||
|
2 1 0 6 7 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
4050 1080 4050 900
|
||||||
|
2 1 0 6 7 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
3690 1170 3870 1170
|
||||||
|
-6
|
||||||
|
2 2 0 0 0 0 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3510 630 4140 630 4140 1260 3510 1260 3510 630
|
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 459 B |
|
@ -0,0 +1,653 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.7a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Metric
|
||||||
|
A4
|
||||||
|
400.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 3240 2070 3870 2700
|
||||||
|
6 3345 2175 3765 2595
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3366 2196 3744 2196 3744 2574 3366 2574 3366 2196
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3450 2280 3660 2280 3660 2490 3450 2490 3450 2280
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3366 2238 3408 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2217 3387 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2259 3429 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2280 3450 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2301 3471 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2322 3492 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2343 3513 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2364 3534 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2385 3450 2301
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2406 3450 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2427 3450 2343
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2448 3450 2364
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2469 3450 2385
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2490 3450 2406
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2511 3450 2427
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2532 3450 2448
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2553 3450 2469
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3366 2574 3450 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3387 2574 3471 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3408 2574 3492 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3429 2574 3513 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3450 2574 3534 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3471 2574 3555 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3492 2574 3576 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3534 2574 3618 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3513 2574 3597 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3555 2574 3639 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3576 2574 3744 2406
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3597 2574 3744 2427
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3618 2574 3744 2448
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3639 2574 3744 2469
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2574 3744 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3681 2574 3744 2511
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3702 2574 3744 2532
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3723 2574 3744 2553
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2469 3744 2385
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2448 3744 2364
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2427 3744 2343
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2406 3744 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2385 3744 2301
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2364 3744 2280
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2343 3744 2259
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2322 3744 2238
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2301 3744 2217
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3660 2280 3744 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3639 2280 3723 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3618 2280 3702 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3597 2280 3681 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3576 2280 3660 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3555 2280 3639 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3534 2280 3618 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3513 2280 3597 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3492 2280 3576 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 2
|
||||||
|
3471 2280 3555 2196
|
||||||
|
-6
|
||||||
|
6 3240 2301 3366 2595
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3261 2322 3345 2322 3345 2574 3261 2574 3261 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2364 3303 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2406 3345 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2448 3345 2364
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2490 3345 2406
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2532 3345 2448
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2574 3345 2490
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3303 2574 3345 2532
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2343 3282 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2385 3324 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2427 3345 2343
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2469 3345 2385
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2511 3345 2427
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3261 2553 3345 2469
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3282 2574 3345 2511
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3324 2574 3345 2553
|
||||||
|
-6
|
||||||
|
6 3345 2070 3639 2196
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3366 2091 3618 2091 3618 2175 3366 2175 3366 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3366 2112 3387 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3366 2133 3408 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3366 2154 3429 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3366 2175 3450 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3387 2175 3471 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3408 2175 3492 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3450 2175 3534 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3492 2175 3576 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3534 2175 3618 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3576 2175 3618 2133
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3429 2175 3513 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3471 2175 3555 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3513 2175 3597 2091
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 2175 3618 2112
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3597 2175 3618 2154
|
||||||
|
-6
|
||||||
|
6 3744 2175 3870 2469
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3765 2196 3849 2196 3849 2448 3765 2448 3765 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2238 3807 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2280 3849 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2322 3849 2238
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2364 3849 2280
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2406 3849 2322
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2448 3849 2364
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3807 2448 3849 2406
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2217 3786 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2259 3828 2196
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2301 3849 2217
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2343 3849 2259
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2385 3849 2301
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3765 2427 3849 2343
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3786 2448 3849 2385
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3828 2448 3849 2427
|
||||||
|
-6
|
||||||
|
6 3471 2574 3765 2700
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3492 2595 3744 2595 3744 2679 3492 2679 3492 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3492 2616 3513 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3492 2637 3534 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3492 2658 3555 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3492 2679 3576 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3513 2679 3597 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3534 2679 3618 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3576 2679 3660 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3618 2679 3702 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3660 2679 3744 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3702 2679 3744 2637
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 2679 3639 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3597 2679 3681 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3639 2679 3723 2595
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3681 2679 3744 2616
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3723 2679 3744 2658
|
||||||
|
-6
|
||||||
|
6 3240 2070 3870 2700
|
||||||
|
6 3261 2091 3324 2154
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3282 2091 3303 2091 3303 2154 3282 2154 3282 2091
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3261 2112 3324 2112 3324 2133 3261 2133 3261 2112
|
||||||
|
-6
|
||||||
|
6 3261 2343 3324 2406
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3282 2343 3303 2343 3303 2406 3282 2406 3282 2343
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3261 2364 3324 2364 3324 2385 3261 2385 3261 2364
|
||||||
|
-6
|
||||||
|
6 3387 2217 3450 2280
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3408 2217 3429 2217 3429 2280 3408 2280 3408 2217
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3387 2238 3450 2238 3450 2259 3387 2259 3387 2238
|
||||||
|
-6
|
||||||
|
6 3513 2091 3576 2154
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3534 2091 3555 2091 3555 2154 3534 2154 3534 2091
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3513 2112 3576 2112 3576 2133 3513 2133 3513 2112
|
||||||
|
-6
|
||||||
|
6 3513 2343 3576 2406
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3534 2343 3555 2343 3555 2406 3534 2406 3534 2343
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3513 2364 3576 2364 3576 2385 3513 2385 3513 2364
|
||||||
|
-6
|
||||||
|
6 3639 2217 3702 2280
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3660 2217 3681 2217 3681 2280 3660 2280 3660 2217
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3639 2238 3702 2238 3702 2259 3639 2259 3639 2238
|
||||||
|
-6
|
||||||
|
6 3765 2091 3828 2154
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3786 2091 3807 2091 3807 2154 3786 2154 3786 2091
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3765 2112 3828 2112 3828 2133 3765 2133 3765 2112
|
||||||
|
-6
|
||||||
|
6 3765 2343 3828 2406
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3786 2343 3807 2343 3807 2406 3786 2406 3786 2343
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3765 2364 3828 2364 3828 2385 3765 2385 3765 2364
|
||||||
|
-6
|
||||||
|
6 3387 2469 3450 2532
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3408 2469 3429 2469 3429 2532 3408 2532 3408 2469
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3387 2490 3450 2490 3450 2511 3387 2511 3387 2490
|
||||||
|
-6
|
||||||
|
6 3261 2595 3324 2658
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3282 2595 3303 2595 3303 2658 3282 2658 3282 2595
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3261 2616 3324 2616 3324 2637 3261 2637 3261 2616
|
||||||
|
-6
|
||||||
|
6 3513 2595 3576 2658
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3534 2595 3555 2595 3555 2658 3534 2658 3534 2595
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3513 2616 3576 2616 3576 2637 3513 2637 3513 2616
|
||||||
|
-6
|
||||||
|
6 3639 2469 3702 2532
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3660 2469 3681 2469 3681 2532 3660 2532 3660 2469
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3639 2490 3702 2490 3702 2511 3639 2511 3639 2490
|
||||||
|
-6
|
||||||
|
6 3765 2595 3828 2658
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3786 2595 3807 2595 3807 2658 3786 2658 3786 2595
|
||||||
|
2 2 0 0 0 7 55 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
3765 2616 3828 2616 3828 2637 3765 2637 3765 2616
|
||||||
|
-6
|
||||||
|
2 2 0 0 0 7 60 -1 17 0.000 0 0 -1 0 0 5
|
||||||
|
3240 2070 3870 2070 3870 2700 3240 2700 3240 2070
|
||||||
|
-6
|
||||||
|
-6
|
||||||
|
6 3960 2070 4500 2610
|
||||||
|
2 1 0 6 0 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
4185 2115 4365 2115
|
||||||
|
2 1 0 6 0 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
4005 2385 4005 2205
|
||||||
|
2 2 0 6 0 7 50 -1 -1 0.000 0 2 -1 0 0 5
|
||||||
|
4095 2205 4365 2205 4365 2475 4095 2475 4095 2205
|
||||||
|
2 1 0 6 0 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
4455 2475 4455 2295
|
||||||
|
2 1 0 6 0 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
4095 2565 4275 2565
|
||||||
|
-6
|
||||||
|
6 4680 1800 6120 3240
|
||||||
|
6 5265 1845 5805 2115
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5310 1890 5760 1890 5760 2070 5310 2070 5310 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5310 1980 5400 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5310 2070 5490 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5400 2070 5580 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5490 2070 5670 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2070 5760 1890
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5670 2070 5760 1980
|
||||||
|
-6
|
||||||
|
6 4725 2115 4995 2655
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
4770 2160 4950 2160 4950 2610 4770 2610 4770 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4770 2250 4860 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4770 2340 4950 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4770 2430 4950 2250
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4770 2520 4950 2340
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4770 2610 4950 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
4860 2610 4950 2520
|
||||||
|
-6
|
||||||
|
6 5805 2385 6075 2925
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5850 2430 6030 2430 6030 2880 5850 2880 5850 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5850 2520 5940 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5850 2610 6030 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5850 2700 6030 2520
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5850 2790 6030 2610
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5850 2880 6030 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5940 2880 6030 2790
|
||||||
|
-6
|
||||||
|
6 4995 2925 5535 3195
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5040 2970 5490 2970 5490 3150 5040 3150 5040 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 3060 5130 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 3150 5220 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5130 3150 5310 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5220 3150 5400 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5310 3150 5490 2970
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5400 3150 5490 3060
|
||||||
|
-6
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5040 2160 5760 2160 5760 2880 5040 2880 5040 2160
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5220 2340 5580 2340 5580 2700 5220 2700 5220 2340
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2250 5130 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2340 5220 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2430 5310 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2520 5400 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2610 5220 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2700 5220 2520
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2790 5220 2610
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5040 2880 5220 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5130 2880 5310 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5220 2880 5400 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5310 2880 5490 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5400 2880 5760 2520
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5490 2880 5760 2610
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2880 5760 2700
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5670 2880 5760 2790
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2610 5760 2430
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2520 5760 2340
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2430 5760 2250
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5580 2340 5760 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5490 2340 5670 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5400 2340 5580 2160
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
5310 2340 5490 2160
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
4815 2205 4905 2205 4905 2295 4815 2295 4815 2205
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
5625 1935 5715 1935 5715 2025 5625 2025 5625 1935
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
5895 2745 5985 2745 5985 2835 5895 2835 5895 2745
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
5085 3015 5175 3015 5175 3105 5085 3105 5085 3015
|
||||||
|
2 2 0 0 26 26 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
4680 1800 6120 1800 6120 3240 4680 3240 4680 1800
|
||||||
|
-6
|
||||||
|
6 3150 900 3960 1710
|
||||||
|
6 3479 926 3783 1077
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3505 950 3758 950 3758 1052 3505 1052 3505 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3505 1002 3555 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3505 1052 3605 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 1052 3657 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3605 1052 3707 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1052 3758 950
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3707 1052 3758 1002
|
||||||
|
-6
|
||||||
|
6 3176 1077 3327 1381
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3200 1103 3302 1103 3302 1355 3200 1355 3200 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3200 1153 3252 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3200 1203 3302 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3200 1255 3302 1153
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3200 1305 3302 1203
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3200 1355 3302 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3252 1355 3302 1305
|
||||||
|
-6
|
||||||
|
6 3783 1229 3934 1533
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3808 1255 3910 1255 3910 1508 3808 1508 3808 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3808 1305 3858 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3808 1355 3910 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3808 1407 3910 1305
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3808 1457 3910 1355
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3808 1508 3910 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3858 1508 3910 1457
|
||||||
|
-6
|
||||||
|
6 3327 1533 3631 1684
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3353 1558 3605 1558 3605 1660 3353 1660 3353 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1608 3403 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1660 3453 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3403 1660 3505 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3453 1660 3555 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3505 1660 3605 1558
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 1660 3605 1608
|
||||||
|
-6
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3353 1103 3758 1103 3758 1508 3353 1508 3353 1103
|
||||||
|
2 2 0 2 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3453 1203 3657 1203 3657 1407 3453 1407 3453 1203
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1153 3403 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1203 3453 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1255 3505 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1305 3555 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1355 3453 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1407 3453 1305
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1457 3453 1355
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3353 1508 3453 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3403 1508 3505 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3453 1508 3555 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3505 1508 3605 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 1508 3758 1305
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3605 1508 3758 1355
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1508 3758 1407
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3707 1508 3758 1457
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1355 3758 1255
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1305 3758 1203
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1255 3758 1153
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3657 1203 3758 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3605 1203 3707 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3555 1203 3657 1103
|
||||||
|
2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
|
||||||
|
3505 1203 3605 1103
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
3226 1128 3276 1128 3276 1179 3226 1179 3226 1128
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
3681 976 3732 976 3732 1026 3681 1026 3681 976
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
3834 1431 3884 1431 3884 1482 3834 1482 3834 1431
|
||||||
|
2 2 0 0 0 0 49 -1 18 0.000 0 0 -1 0 0 5
|
||||||
|
3378 1584 3429 1584 3429 1634 3378 1634 3378 1584
|
||||||
|
2 2 0 0 26 26 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
3150 900 3960 900 3960 1710 3150 1710 3150 900
|
||||||
|
-6
|
||||||
|
6 6570 1800 7560 6480
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
6660 6300 7470 6300 7470 6390 6660 6390 6660 6300
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
6660 3150 6750 3150 6750 6390 6660 6390 6660 3150
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
7380 3150 7470 3150 7470 6390 7380 6390 7380 3150
|
||||||
|
2 2 0 0 4 4 50 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
6840 2970 6930 2970 6930 6210 6840 6210 6840 2970
|
||||||
|
2 2 0 0 4 4 50 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
7200 2970 7290 2970 7290 6210 7200 6210 7200 2970
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
7020 2610 7110 2610 7110 6030 7020 6030 7020 2610
|
||||||
|
2 2 0 0 12 12 65 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
6570 5040 7560 5040 7560 6120 6570 6120 6570 5040
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
7020 6300 7110 6300 7110 6480 7020 6480 7020 6300
|
||||||
|
2 2 0 0 31 31 65 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
6570 3060 7560 3060 7560 4770 6570 4770 6570 3060
|
||||||
|
2 2 0 0 1 1 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
6660 1800 7470 1800 7470 2610 6660 2610 6660 1800
|
||||||
|
-6
|
||||||
|
6 5805 1105 5895 1530
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
5813 1514 5887 1514 5887 1522 5813 1522 5813 1514
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
5813 1228 5821 1228 5821 1522 5813 1522 5813 1228
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
5879 1228 5887 1228 5887 1522 5879 1522 5879 1228
|
||||||
|
2 2 0 0 4 4 50 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
5830 1211 5838 1211 5838 1505 5830 1505 5830 1211
|
||||||
|
2 2 0 0 4 4 50 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
5862 1211 5870 1211 5870 1505 5862 1505 5862 1211
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
5846 1179 5854 1179 5854 1489 5846 1489 5846 1179
|
||||||
|
2 2 0 0 12 12 65 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
5805 1399 5895 1399 5895 1497 5805 1497 5805 1399
|
||||||
|
2 2 0 0 1 1 60 -1 36 0.000 0 0 -1 0 0 5
|
||||||
|
5846 1514 5854 1514 5854 1530 5846 1530 5846 1514
|
||||||
|
2 2 0 0 31 31 65 -1 22 0.000 0 0 -1 0 0 5
|
||||||
|
5805 1219 5895 1219 5895 1375 5805 1375 5805 1219
|
||||||
|
2 2 0 0 1 1 60 -1 20 0.000 0 0 -1 0 0 5
|
||||||
|
5813 1105 5887 1105 5887 1179 5813 1179 5813 1105
|
||||||
|
-6
|
||||||
|
2 1 0 3 0 7 50 -1 -1 0.000 0 2 -1 0 0 2
|
||||||
|
3960 900 3960 1710
|
||||||
|
2 2 0 3 0 7 50 -1 -1 0.000 0 2 -1 0 0 5
|
||||||
|
3150 900 6570 900 6570 1710 3150 1710 3150 900
|
||||||
|
4 0 0 50 -1 18 36 0.0000 4 360 330 5940 1530 s\001
|
||||||
|
4 0 0 50 -1 18 36 0.0000 4 465 1755 4140 1530 Coriol\001
|
After Width: | Height: | Size: 40 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 200 20
|
|
@ -0,0 +1,164 @@
|
||||||
|
%!PS-Adobe-2.0 EPSF-2.0
|
||||||
|
%%Title: PR-DetailedPreRoute.fig
|
||||||
|
%%Creator: fig2dev Version 3.2 Patchlevel 5
|
||||||
|
%%CreationDate: Wed Jul 2 13:20:44 2014
|
||||||
|
%%For: jpc@lepka (Jean-Paul Chaput)
|
||||||
|
%%BoundingBox: 0 0 200 20
|
||||||
|
%Magnification: 1.0000
|
||||||
|
%%EndComments
|
||||||
|
/$F2psDict 200 dict def
|
||||||
|
$F2psDict begin
|
||||||
|
$F2psDict /mtrx matrix put
|
||||||
|
/col-1 {0 setgray} bind def
|
||||||
|
/col0 {0.000 0.000 0.000 srgb} bind def
|
||||||
|
/col1 {0.000 0.000 1.000 srgb} bind def
|
||||||
|
/col2 {0.000 1.000 0.000 srgb} bind def
|
||||||
|
/col3 {0.000 1.000 1.000 srgb} bind def
|
||||||
|
/col4 {1.000 0.000 0.000 srgb} bind def
|
||||||
|
/col5 {1.000 0.000 1.000 srgb} bind def
|
||||||
|
/col6 {1.000 1.000 0.000 srgb} bind def
|
||||||
|
/col7 {1.000 1.000 1.000 srgb} bind def
|
||||||
|
/col8 {0.000 0.000 0.560 srgb} bind def
|
||||||
|
/col9 {0.000 0.000 0.690 srgb} bind def
|
||||||
|
/col10 {0.000 0.000 0.820 srgb} bind def
|
||||||
|
/col11 {0.530 0.810 1.000 srgb} bind def
|
||||||
|
/col12 {0.000 0.560 0.000 srgb} bind def
|
||||||
|
/col13 {0.000 0.690 0.000 srgb} bind def
|
||||||
|
/col14 {0.000 0.820 0.000 srgb} bind def
|
||||||
|
/col15 {0.000 0.560 0.560 srgb} bind def
|
||||||
|
/col16 {0.000 0.690 0.690 srgb} bind def
|
||||||
|
/col17 {0.000 0.820 0.820 srgb} bind def
|
||||||
|
/col18 {0.560 0.000 0.000 srgb} bind def
|
||||||
|
/col19 {0.690 0.000 0.000 srgb} bind def
|
||||||
|
/col20 {0.820 0.000 0.000 srgb} bind def
|
||||||
|
/col21 {0.560 0.000 0.560 srgb} bind def
|
||||||
|
/col22 {0.690 0.000 0.690 srgb} bind def
|
||||||
|
/col23 {0.820 0.000 0.820 srgb} bind def
|
||||||
|
/col24 {0.500 0.190 0.000 srgb} bind def
|
||||||
|
/col25 {0.630 0.250 0.000 srgb} bind def
|
||||||
|
/col26 {0.750 0.380 0.000 srgb} bind def
|
||||||
|
/col27 {1.000 0.500 0.500 srgb} bind def
|
||||||
|
/col28 {1.000 0.630 0.630 srgb} bind def
|
||||||
|
/col29 {1.000 0.750 0.750 srgb} bind def
|
||||||
|
/col30 {1.000 0.880 0.880 srgb} bind def
|
||||||
|
/col31 {1.000 0.840 0.000 srgb} bind def
|
||||||
|
|
||||||
|
end
|
||||||
|
save
|
||||||
|
newpath 0 20 moveto 0 0 lineto 200 0 lineto 200 20 lineto closepath clip newpath
|
||||||
|
-161.3 126.7 translate
|
||||||
|
1 -1 scale
|
||||||
|
|
||||||
|
/cp {closepath} bind def
|
||||||
|
/ef {eofill} bind def
|
||||||
|
/gr {grestore} bind def
|
||||||
|
/gs {gsave} bind def
|
||||||
|
/sa {save} bind def
|
||||||
|
/rs {restore} bind def
|
||||||
|
/l {lineto} bind def
|
||||||
|
/m {moveto} bind def
|
||||||
|
/rm {rmoveto} bind def
|
||||||
|
/n {newpath} bind def
|
||||||
|
/s {stroke} bind def
|
||||||
|
/sh {show} bind def
|
||||||
|
/slc {setlinecap} bind def
|
||||||
|
/slj {setlinejoin} bind def
|
||||||
|
/slw {setlinewidth} bind def
|
||||||
|
/srgb {setrgbcolor} bind def
|
||||||
|
/rot {rotate} bind def
|
||||||
|
/sc {scale} bind def
|
||||||
|
/sd {setdash} bind def
|
||||||
|
/ff {findfont} bind def
|
||||||
|
/sf {setfont} bind def
|
||||||
|
/scf {scalefont} bind def
|
||||||
|
/sw {stringwidth} bind def
|
||||||
|
/tr {translate} bind def
|
||||||
|
/tnt {dup dup currentrgbcolor
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add
|
||||||
|
4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
|
||||||
|
bind def
|
||||||
|
/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
|
||||||
|
4 -2 roll mul srgb} bind def
|
||||||
|
/reencdict 12 dict def /ReEncode { reencdict begin
|
||||||
|
/newcodesandnames exch def /newfontname exch def /basefontname exch def
|
||||||
|
/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
|
||||||
|
basefontdict { exch dup /FID ne { dup /Encoding eq
|
||||||
|
{ exch dup length array copy newfont 3 1 roll put }
|
||||||
|
{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
|
||||||
|
newfont /FontName newfontname put newcodesandnames aload pop
|
||||||
|
128 1 255 { newfont /Encoding get exch /.notdef put } for
|
||||||
|
newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
|
||||||
|
newfontname newfont definefont pop end } def
|
||||||
|
/isovec [
|
||||||
|
8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
|
||||||
|
8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
|
||||||
|
8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
|
||||||
|
8#220 /dotlessi 8#230 /oe 8#231 /OE
|
||||||
|
8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
|
||||||
|
8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
|
||||||
|
8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
|
||||||
|
8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
|
||||||
|
8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
|
||||||
|
8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
|
||||||
|
8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
|
||||||
|
8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
|
||||||
|
8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
|
||||||
|
8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
|
||||||
|
8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
|
||||||
|
8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
|
||||||
|
8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
|
||||||
|
8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
|
||||||
|
8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
|
||||||
|
8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
|
||||||
|
8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
|
||||||
|
8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
|
||||||
|
8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
|
||||||
|
8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
|
||||||
|
8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
|
||||||
|
8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
|
||||||
|
/Helvetica-Bold /Helvetica-Bold-iso isovec ReEncode
|
||||||
|
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
|
||||||
|
/$F2psEnd {$F2psEnteredState restore end} def
|
||||||
|
|
||||||
|
$F2psBegin
|
||||||
|
10 setmiterlimit
|
||||||
|
0 slj 0 slc
|
||||||
|
0.06000 0.06000 sc
|
||||||
|
%
|
||||||
|
% Fig objects follow
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% here starts figure with depth 50
|
||||||
|
% Polyline
|
||||||
|
0 slj
|
||||||
|
0 slc
|
||||||
|
7.500 slw
|
||||||
|
n 2700 1800 m 3300 1800 l 3300 2100 l 2700 2100 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
/Helvetica-Bold-iso ff 183.33 scf sf
|
||||||
|
3000 2025 m
|
||||||
|
gs 1 -1 sc (P&R) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||||
|
% Polyline
|
||||||
|
15.000 slw
|
||||||
|
gs clippath
|
||||||
|
3404 1995 m 3615 1995 l 3615 1905 l 3404 1905 l 3404 1905 l 3584 1950 l 3404 1995 l cp
|
||||||
|
eoclip
|
||||||
|
n 3300 1950 m
|
||||||
|
3600 1950 l gs col0 s gr gr
|
||||||
|
|
||||||
|
% arrowhead
|
||||||
|
7.500 slw
|
||||||
|
n 3404 1995 m 3584 1950 l 3404 1905 l 3404 1995 l cp gs 0.00 setgray ef gr col0 s
|
||||||
|
% Polyline
|
||||||
|
n 3600 1800 m 6000 1800 l 6000 2100 l 3600 2100 l
|
||||||
|
cp gs col0 s gr
|
||||||
|
/Helvetica-Bold-iso ff 183.33 scf sf
|
||||||
|
4800 2025 m
|
||||||
|
gs 1 -1 sc (Kite - Detailed Pre-Route) dup sw pop 2 div neg 0 rm col0 sh gr
|
||||||
|
% here ends figure;
|
||||||
|
$F2psEnd
|
||||||
|
rs
|
||||||
|
showpage
|
||||||
|
%%Trailer
|
||||||
|
%EOF
|
|
@ -0,0 +1,20 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5a
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 6000 1800 6000 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 2115 4800 2025 Kite - Detailed Pre-Route\001
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 5700 1800 5700 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 1860 4650 2025 Kite - Detailed Route\001
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 5700 1800 5700 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 1785 4650 2025 Kite - Finalize Route\001
|
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,20 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 5475 1800 5475 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 1695 4575 2025 Kite - Global Route\001
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,28 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
6 3600 1800 4950 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 4950 1800 4950 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 180 1185 4275 2025 Step by Step\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
4950 1950 5250 1950
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5250 1800 7800 1800 7800 2100 5250 2100 5250 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 180 2325 6525 2025 Kite - Load Global Routing\001
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,30 @@
|
||||||
|
#FIG 3.2 Produced by xfig version 3.2.5b
|
||||||
|
Landscape
|
||||||
|
Center
|
||||||
|
Inches
|
||||||
|
Letter
|
||||||
|
100.00
|
||||||
|
Single
|
||||||
|
-2
|
||||||
|
1200 2
|
||||||
|
6 2700 1800 3300 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
2700 1800 3300 1800 3300 2100 2700 2100 2700 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 135 390 3000 2025 P&R\001
|
||||||
|
-6
|
||||||
|
6 3600 1800 4950 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
3600 1800 4950 1800 4950 2100 3600 2100 3600 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 180 1185 4275 2025 Step by Step\001
|
||||||
|
-6
|
||||||
|
6 5250 1800 7800 2100
|
||||||
|
2 2 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 5
|
||||||
|
5250 1800 7800 1800 7800 2100 5250 2100 5250 1800
|
||||||
|
4 1 0 50 -1 18 11 0.0000 4 180 2370 6525 2025 Kite - Save Global Routing\001
|
||||||
|
-6
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
3300 1950 3600 1950
|
||||||
|
2 1 0 2 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
|
||||||
|
1 1 1.00 90.00 180.00
|
||||||
|
4950 1950 5250 1950
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -0,0 +1 @@
|
||||||
|
%%BoundingBox: 0 0 301 351
|