2017-07-15 10:35:02 -05:00
<!DOCTYPE html>
<!-- [if IE 8]><html class="no - js lt - ie9" lang="en" > <![endif] -->
<!-- [if gt IE 8]><! --> < html class = "no-js" lang = "en" > <!-- <![endif] -->
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Coriolis Configuration & Initialisation — Coriolis 2 documentation< / title >
< link rel = "stylesheet" href = "../_static/SoC.css" type = "text/css" / >
2017-10-30 09:33:37 -05:00
< link rel = "index" title = "Index"
href="../genindex.html"/>
< link rel = "search" title = "Search" href = "../search.html" / >
2017-07-15 10:35:02 -05:00
< link rel = "top" title = "Coriolis 2 documentation" href = "../index.html" / >
< link rel = "up" title = "Coriolis User’ s Guide" href = "index.html" / >
< link rel = "next" title = "CGT - The Graphical Interface" href = "ViewerTools.html" / >
< link rel = "prev" title = "Installation" href = "Installation.html" / >
< script src = "_static/js/modernizr.min.js" > < / script >
< / head >
< body class = "wy-body-for-nav" role = "document" >
< div class = "wy-grid-for-nav" >
< nav data-toggle = "wy-nav-shift" class = "wy-nav-side" >
< div class = "wy-side-nav-search" >
< a href = "../index.html" class = "icon icon-home" > Coriolis
< / a >
< div role = "search" >
< form id = "rtd-search-form" class = "wy-form" action = "../search.html" method = "get" >
< input type = "text" name = "q" placeholder = "Search docs" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< / div >
< / div >
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
< ul class = "current" >
< li class = "toctree-l1 current" > < a class = "reference internal" href = "index.html" > Coriolis User’ s Guide< / a > < ul class = "current" >
< li class = "toctree-l2" > < a class = "reference internal" href = "LicenseCredits.html" > Credits & License< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "Releases.html" > Release Notes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-1475" > Release 1.0.1475< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-1963" > Release 1.0.1963< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-1-0-2049" > Release 1.0.2049< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-0-1" > Release v2.0.1< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-1" > Release v2.1< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Releases.html#release-v2-2" > < strong > Release v2.2< / strong > < / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "Installation.html" > Installation< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#fixed-directory-tree" > Fixed Directory Tree< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#building-coriolis" > Building Coriolis< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "Installation.html#building-the-devel-branch" > Building the Devel Branch< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "Installation.html#additionnal-requirement-under-macos" > Additionnal Requirement under < span class = "sc" > MacOS< / span > < / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#packaging-coriolis" > Packaging Coriolis< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#hooking-up-into-alliance" > Hooking up into < span class = "sc" > Alliance< / span > < / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "Installation.html#setting-up-the-environment-coriolisenv-py" > Setting up the Environment (coriolisEnv.py)< / a > < / li >
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l2 current" > < a class = "current reference internal" href = "#" > Coriolis Configuration & Initialisation< / a > < ul >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#general-software-architecture" > General Software Architecture< / a > < / li >
2017-11-17 05:04:33 -06:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#first-stage-technology-selection" > First Stage: Technology Selection< / a > < / li >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "#second-stage-technology-configuration-loading" > Second Stage: Technology Configuration Loading< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "#configuration-helpers" > Configuration Helpers< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "#alliance-helper" > < span class = "sc" > Alliance< / span > Helper< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "#tools-configuration-helpers" > Tools Configuration Helpers< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "#hacking-the-configuration-files" > Hacking the Configuration Files< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "ViewerTools.html" > CGT - The Graphical Interface< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "ViewerTools.html#viewer-tools" > Viewer & Tools< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#stratus-netlist-capture" > < span class = "sc" > Stratus< / span > Netlist Capture< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-hurricane-data-base" > The < span class = "sc" > Hurricane< / span > Data-Base< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#synthetizing-and-loading-a-design" > Synthetizing and loading a design< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#etesian-placer" > Etesian – Placer< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#knik-global-router" > Knik – Global Router< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#kite-detailed-router" > Kite – Detailed Router< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#executing-python-scripts-in-cgt" > Executing Python Scripts in Cgt< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#printing-snapshots" > Printing & Snapshots< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#memento-of-shortcuts-in-graphic-mode" > Memento of Shortcuts in Graphic Mode< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#cgt-command-line-options" > Cgt Command Line Options< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#miscellaneous-settings" > Miscellaneous Settings< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "ViewerTools.html#the-controller" > The Controller< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-look-tab" > The Look Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-filter-tab" > The Filter Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-layers-go-tab" > The Layers& Go Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-netlist-tab" > The Netlist Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-selection-tab" > The Selection Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-inspector-tab" > The Inspector Tab< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ViewerTools.html#the-settings-tab" > The Settings Tab< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "ScriptsPlugins.html" > Python Interface for < span class = "sc" > Hurricane< / span > / < span class = "sc" > Coriolis< / span > < / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "ScriptsPlugins.html#plugins" > Plugins< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#chip-placement" > Chip Placement< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#clock-tree" > Clock Tree< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "ScriptsPlugins.html#recursive-save-rsave" > Recursive-Save (RSave)< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "ScriptsPlugins.html#a-simple-example-am2901" > A Simple Example: AM2901< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Stratus/Stratus.html" > Stratus Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../DpGen/DpGen.html" > DpGen Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Patterns/Patterns.html" > Patterns Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Hurricane/Hurricane.html" > Hurricane Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Viewer/Viewer.html" > Viewer Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../CrlCore/CrlCore.html" > CRL Core Reference< / a > < / li >
2017-07-17 12:12:18 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../Katabatic/Katabatic.html" > Katabatic Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../Kite/Kite.html" > Kite Reference< / a > < / li >
2017-07-15 10:35:02 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../Unicorn/Unicorn.html" > Unicorn Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../PythonCpp/index.html" > Hurricane Python/C++ API Tutorial< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Introduction.html" > 1. Introduction< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#first-a-disclaimer" > 1.1 First, A Disclaimer< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#about-technical-choices" > 1.2 About Technical Choices< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/Introduction.html#botched-design" > 1.3 Botched Design< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Configuration.html" > 2. Basic File Structure and CMake configuration< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html" > 3. Case 1 - DBo Derived, Standalone< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#class-associated-header-file" > 3.1 Class Associated Header File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#class-associated-file" > 3.2 Class Associated File< / a > < ul >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#head-of-the-file" > 3.2.1 Head of the file< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#the-python-module-part" > 3.2.2 The Python Module Part< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#python-type-linking" > 3.2.3 Python Type Linking< / a > < / li >
< li class = "toctree-l4" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#the-shared-library-part" > 3.2.4 The Shared Library Part< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoStandalone.html#python-module-c-namespace" > 3.3 Python Module (C++ namespace)< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html" > 4. Case 2 - Hierarchy of DBo Derived Classes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#base-class-header" > 4.1 Base Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#base-class-file" > 4.2 Base Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#intermediate-class-header" > 4.3 Intermediate Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#intermediate-class-file" > 4.4 Intermediate Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#terminal-class-header" > 4.5 Terminal Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#terminal-class-file" > 4.6 Terminal Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/DBoHierarchy.html#python-module" > 4.8 Python Module< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html" > 5. Case 3 - Non-DBo Standalone Classe< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#class-header" > 5.1 Class Header< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#class-file" > 5.2 Class File< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../PythonCpp/NonDBo.html#id1" > 5.2 Class File< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/DbU.html" > 6. Encapsulating DbU< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../PythonCpp/Name.html" > 7. No C++ Hurricane::Name encapsulation< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../RDS/index.html" > Symbolic to Real Conversion in Alliance< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../RDS/RDSpage.html" > Symbolic Layout< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#symbolic-components" > Symbolic Components< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#symbolic-segments" > Symbolic Segments< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-rds-file" > The RDS File< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#physical-grid-lambda-value" > Physical Grid & Lambda Value< / a > < / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-segment-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_SEGMENT< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-via-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_VIA< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-bigvia-hole-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_BIGVIA_HOLE< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-to-rds-bigvia-metal-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_TO_RDS_BIGVIA_METAL< / span > < / code > table< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../RDS/RDSpage.html#the-mbk-wiresetting-table" > The < code class = "docutils literal" > < span class = "pre" > MBK_WIRESETTING< / span > < / code > table< / a > < / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
< / ul >
< / li >
2017-11-17 05:04:33 -06:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../lefapi/lefapi.html" > LEF API Reference< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "../lefapi/lefapi.html#implementation-notes" > Implementation Notes< / a > < ul >
< li class = "toctree-l3" > < a class = "reference internal" href = "../lefapi/lefapi.html#understanding-units" > Understanding Units< / a > < / li >
< li class = "toctree-l3" > < a class = "reference internal" href = "../lefapi/lefapi.html#callback-calling-order" > Callback Calling Order< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li class = "toctree-l1" > < a class = "reference internal" href = "../defapi/defapi.html" > DEF API Reference< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../lefdef/lefdef.html" > LEF/DEF Language Reference< / a > < / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / div >
< / nav >
< section data-toggle = "wy-nav-shift" class = "wy-nav-content-wrap" >
< nav class = "wy-nav-top" role = "navigation" aria-label = "top navigation" >
< i data-toggle = "wy-nav-top" class = "fa fa-bars" > < / i >
< a href = "../index.html" > Coriolis< / a >
< / nav >
< div class = "wy-nav-content" >
< div class = "rst-content" >
< div role = "navigation" aria-label = "breadcrumbs navigation" >
< ul class = "wy-breadcrumbs" >
< li > < a href = "../index.html" > Docs< / a > » < / li >
< li > < a href = "index.html" > Coriolis User’ s Guide< / a > » < / li >
< li > Coriolis Configuration & Initialisation< / li >
< li class = "wy-breadcrumbs-aside" >
< / li >
< / ul >
< hr / >
< / div >
< div role = "main" class = "document" >
< p > < / p >
< div class = "section" id = "coriolis-configuration-initialisation" >
< h1 > Coriolis Configuration & Initialisation< a class = "headerlink" href = "#coriolis-configuration-initialisation" title = "Permalink to this headline" > ¶< / a > < / h1 >
< div class = "section" id = "general-software-architecture" >
< h2 > General Software Architecture< a class = "headerlink" href = "#general-software-architecture" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < span class = "sc" > Coriolis< / span > has been build with respect of the classical paradigm that the
computational instensive parts have been written in C++, and almost
everything else in < span class = "sc" > Python< / span > . To build the < span class = "sc" > Python< / span > interface we used
two methods:< / p >
< ul class = "simple" >
< li > For self-contained modules < span class = "cb" > boost::python< / span > (mainly in < span class = "cb" > vlsisapd< / span > ).< / li >
< li > For all modules based on < span class = "sc" > Hurricane< / span > , we created our own wrappers due
to very specific requirements such as shared functions between modules
or C++/< span class = "sc" > Python< / span > secure bi-directional object deletion.< / li >
< / ul >
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
< p class = "last" > < strong > Python Documentation:< / strong >
Most of the documentation is related to the C++ API and implemetation of
the tools. However, the < span class = "sc" > Python< / span > bindings have been created so they
mimic < em > as closely as possible< / em > the C++ interface, so the documentation
applies to both languages with only minor syntactic changes.< / p >
< / div >
2017-10-30 09:33:37 -05:00
< p > < a class = "reference internal" href = "../_images/Coriolis-Soft-Schema.png" > < img alt = "Coriolis Software Schematic" class = "align-middle" src = "../_images/Coriolis-Soft-Schema.png" style = "width: 60%;" / > < / a > < / p >
2017-07-15 10:35:02 -05:00
< p > All configuration & initialization files are Python scripts, despite their
< span class = "cb" > .conf< / span > extention. From a syntactic point of view, there is no difference
between the system-wide configuration files and the user’ s configuration,
2017-12-02 08:51:21 -06:00
they use the same Python helpers.
2017-07-15 10:35:02 -05:00
< span class = "raw-html" > < br class = "medskip" / > < / span > < / p >
< p > Configuration is done in two stages:< / p >
< ol class = "arabic simple" >
2017-12-02 08:51:21 -06:00
< li > Selecting the technology.< / li >
< li > Loading the complete configuration for the given technology
and the user’ s settings.< / li >
2017-07-15 10:35:02 -05:00
< / ol >
< p > < / p >
< / div >
2017-11-17 05:04:33 -06:00
< div class = "section" id = "first-stage-technology-selection" >
< h2 > First Stage: Technology Selection< a class = "headerlink" href = "#first-stage-technology-selection" title = "Permalink to this headline" > ¶< / a > < / h2 >
2017-07-15 10:35:02 -05:00
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span >
2017-12-02 08:51:21 -06:00
The initialization process is done by executing, in order, the following file(s):< / p >
2017-07-15 10:35:02 -05:00
< table border = "1" class = "docutils" >
< colgroup >
< col width = "8%" / >
< col width = "39%" / >
< col width = "53%" / >
< / colgroup >
< thead valign = "bottom" >
< tr class = "row-odd" > < th class = "head" > Order< / th >
< th class = "head" > Meaning< / th >
< th class = "head" > File< / th >
< / tr >
< / thead >
< tbody valign = "top" >
< tr class = "row-even" > < td > < strong > 1< / strong > < / td >
< td > The system setting< / td >
< td > < span class = "cb" > /etc/coriolis2/techno.conf< / span > < / td >
< / tr >
< tr class = "row-odd" > < td > < strong > 2< / strong > < / td >
< td > The user’ s global setting< / td >
< td > < span class = "cb" > ${HOME}/.coriolis2/techno.py< / span > < / td >
< / tr >
< tr class = "row-even" > < td > < strong > 3< / strong > < / td >
< td > The user’ s local setting< / td >
< td > < span class = "cb" > < CWD> /.coriolis2/techno.py< / span > < / td >
< / tr >
< / tbody >
< / table >
2017-11-17 05:04:33 -06:00
< p > Thoses files must provides only one variable, the name of the technology. Each technology
will provide configuration for both the symbolic part and the real part. < span class = "sc" > Coriolis< / span > can
work with purely symbolic technology (< code class = "docutils literal" > < span class = "pre" > symbolic/cmos< / span > < / code > ) in that case, the real technology
part is a dummy one.< / p >
< p > For example, to use < span class = "sc" > mosis< / span > 180nm:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # -*- Mode:Python -*-< / span >
2017-07-15 10:35:02 -05:00
2017-11-17 05:04:33 -06:00
< span class = "n" > technology< / span > < span class = "o" > =< / span > < span class = "s1" > ' 180/scn6m_deep_09' < / span >
2017-07-15 10:35:02 -05:00
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "second-stage-technology-configuration-loading" >
< h2 > Second Stage: Technology Configuration Loading< a class = "headerlink" href = "#second-stage-technology-configuration-loading" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span >
2017-12-02 08:51:21 -06:00
The < span class = "cb" > technology< / span > variable is set by the first stage and it’ s the name of the
technology. A directory of that name, with all the configuration files,
must exists in the configuration directory (< span class = "cb" > /etc/coriolis2< / span > ).
In addition to the technology-specific directories, a < span class = "cb" > common/< / span > directory is
there to provides a trunk for all the identical datas across the various technologies.
The initialization process is done by executing, in order, the following file(s):< / p >
2017-07-15 10:35:02 -05:00
< table border = "1" class = "docutils" >
< colgroup >
< col width = "8%" / >
< col width = "39%" / >
< col width = "53%" / >
< / colgroup >
< thead valign = "bottom" >
< tr class = "row-odd" > < th class = "head" > Order< / th >
< th class = "head" > Meaning< / th >
< th class = "head" > File< / th >
< / tr >
< / thead >
< tbody valign = "top" >
< tr class = "row-even" > < td > < strong > 1< / strong > < / td >
< td > The system initialization< / td >
2017-12-02 08:51:21 -06:00
< td > < span class = "cb" > /etc/coriolis2/< technology> /< TOOL> .conf< / span > < / td >
2017-07-15 10:35:02 -05:00
< / tr >
< tr class = "row-odd" > < td > < strong > 2< / strong > < / td >
< td > The user’ s global initialization< / td >
< td > < span class = "cb" > ${HOME}/.coriolis2/settings.py< / span > < / td >
< / tr >
< tr class = "row-even" > < td > < strong > 3< / strong > < / td >
< td > The user’ s local initialization< / td >
< td > < span class = "cb" > < CWD> /.coriolis2/settings.py< / span > < / td >
< / tr >
< / tbody >
< / table >
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
< p > < em > The loading policy is not hard-coded.< / em > It is implemented
2017-12-02 08:51:21 -06:00
at Python level in < span class = "cb" > /etc/coriolis2/coriolisInit.py< / span > , and thus may be easily
2017-07-15 10:35:02 -05:00
amended to whatever site policy.< / p >
2017-12-02 08:51:21 -06:00
< p > The truly mandatory requirement is the existence of < span class = "cb" > coriolisInit.py< / span >
2017-07-15 10:35:02 -05:00
which < em > must< / em > contain a < span class = "cb" > coriolisConfigure()< / span > function with no argument.< / p >
2017-12-02 08:51:21 -06:00
< p > The < span class = "cb" > coriolisInit.py< / span > script execution is triggered by the < em > import< / em > of
the < code class = "docutils literal" > < span class = "pre" > CRL< / span > < / code > module:< / p >
< div class = "code python last highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > sys< / span >
< span class = "kn" > import< / span > < span class = "nn" > os.path< / span >
< span class = "kn" > import< / span > < span class = "nn" > Cfg< / span >
< span class = "kn" > import< / span > < span class = "nn" > Hurricane< / span >
< span class = "kn" > import< / span > < span class = "nn" > CRL< / span > < span class = "c1" > # Triggers execution of " coriolisInit.py" .< / span >
< span class = "kn" > import< / span > < span class = "nn" > Viewer< / span >
< / pre > < / div >
< / div >
2017-07-15 10:35:02 -05:00
< / div >
< / div >
< div class = "section" id = "configuration-helpers" >
< h2 > Configuration Helpers< a class = "headerlink" href = "#configuration-helpers" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > To ease the writing of configuration files, a set of small helpers
is available. They allow to setup the configuration parameters through
simple assembly of tuples. The helpers are installed under the directory:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "o" > < < / span > < span class = "n" > install< / span > < span class = "o" > > /< / span > < span class = "n" > etc< / span > < span class = "o" > /< / span > < span class = "n" > coriolis2< / span > < span class = "o" > /< / span >
< / pre > < / div >
2017-07-15 10:35:02 -05:00
< / div >
< p > Where < span class = "cb" > < install> /< / span > is the root of the installation.< / p >
< p > < / p >
< div class = "section" id = "alliance-helper" >
< span id = "id1" > < / span > < h3 > < span class = "sc" > Alliance< / span > Helper< a class = "headerlink" href = "#alliance-helper" title = "Permalink to this headline" > ¶< / a > < / h3 >
2017-12-02 08:51:21 -06:00
< p > The configuration file must provide an < span class = "cb" > allianceConfig< / span > tuple as shown below.
Like all the < span class = "sc" > Coriolis< / span > configuration file, it is to be executed through < span class = "sc" > Python< / span > ,
so we can use it to perform a not so dumb search of the < span class = "sc" > Alliance< / span > installation
directory. Our default policy is to try to read the < code class = "docutils literal" > < span class = "pre" > ALLIANCE_TOP< / span > < / code > environment
variable, and if not found, default to < code class = "docutils literal" > < span class = "pre" > /soc/alliance< / span > < / code > .< / p >
< div class = "code python highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > os< / span >
< span class = "kn" > from< / span > < span class = "nn" > helpers.Alliance< / span > < span class = "k" > import< / span > < span class = "n" > AddMode< / span >
< span class = "kn" > from< / span > < span class = "nn" > helpers.Alliance< / span > < span class = "k" > import< / span > < span class = "n" > Gauge< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > environ< / span > < span class = "o" > .< / span > < span class = "n" > has_key< / span > < span class = "p" > (< / span > < span class = "s1" > ' ALLIANCE_TOP' < / span > < span class = "p" > ):< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > environ< / span > < span class = "p" > [< / span > < span class = "s1" > ' ALLIANCE_TOP' < / span > < span class = "p" > ]< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > path< / span > < span class = "o" > .< / span > < span class = "n" > isdir< / span > < span class = "p" > (< / span > < span class = "n" > allianceTop< / span > < span class = "p" > ):< / span >
< span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "kc" > None< / span >
< span class = "k" > if< / span > < span class = "ow" > not< / span > < span class = "n" > allianceTop< / span > < span class = "p" > :< / span > < span class = "n" > allianceTop< / span > < span class = "o" > =< / span > < span class = "s1" > ' /soc/alliance' < / span >
< span class = "n" > cellsTop< / span > < span class = "o" > =< / span > < span class = "n" > allianceTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' /cells/' < / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > allianceConfig< / span > < span class = "o" > =< / span > \
2017-12-02 08:51:21 -06:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' CATALOG' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' CATAL' < / span > < span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' WORKING_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .' < / span > < span class = "p" > )< / span >
2017-12-02 08:51:21 -06:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' SYSTEM_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' sxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' dp_sxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' ramlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' romlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' rflib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' rf2lib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' pxlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > cellsTop< / span > < span class = "o" > +< / span > < span class = "s1" > ' padlib' < / span > < span class = "p" > ,< / span > < span class = "n" > AddMode< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' IN_LO' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vst' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' IN_PH' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ap' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' OUT_LO' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vst' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' OUT_PH' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ap' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' POWER' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vdd' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' GROUND' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vss' < / span > < span class = "p" > )< / span >
2017-12-02 08:51:21 -06:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' CLOCK' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .*ck.*|.*nck.*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' BLOCKAGE' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' ^blockage[Nn]et*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' PAD' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' .*_px$' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< p > < span class = "raw-html" > < p class = "noindent" > < / p > < / span > The example above shows the system configuration file, with all the
available settings. Some important remarks about thoses settings:< / p >
< ul >
< li > < p class = "first" > In it’ s configuration file, the user do not need to redefine all the settings,
2017-10-30 09:33:37 -05:00
just the one he wants to change. In most of the cases, the < code class = "docutils literal" > < span class = "pre" > SYSTEM_LIBRARY< / span > < / code > ,
the < code class = "docutils literal" > < span class = "pre" > WORKING_LIBRARY< / span > < / code > and the special net names (at this point there is not
2017-07-15 10:35:02 -05:00
much alternatives for the others settings).< / p >
< / li >
2017-10-30 09:33:37 -05:00
< li > < p class = "first" > < code class = "docutils literal" > < span class = "pre" > SYSTEM_LIBRARY< / span > < / code > setting: Setting up the library search path.
2017-07-15 10:35:02 -05:00
Each library entry in the tuple will be added to the search path according
to the second parameter:< / p >
< ul class = "simple" >
2017-12-02 08:51:21 -06:00
< li > < span class = "cb" > AddMode::Append< / span > : append to the search path.< / li >
< li > < span class = "cb" > AddMode::Prepend< / span > : insert in head of the search path.< / li >
< li > < span class = "cb" > AddMode::Replace< / span > : look for a library of the same name and replace
2017-07-15 10:35:02 -05:00
it, whithout changing the search path order. If no library of that name
already exists, it is appended.< / li >
< / ul >
< p > A library is identified by it’ s name, this name is the last component of the
2017-10-30 09:33:37 -05:00
path name. For instance: < code class = "docutils literal" > < span class = "pre" > /soc/alliance/sxlib< / span > < / code > will be named < code class = "docutils literal" > < span class = "pre" > sxlib< / span > < / code > .
Implementing the < span class = "sc" > Alliance< / span > specification, when looking for a < em > Cell< / em > < code class = "docutils literal" > < span class = "pre" > name< / span > < / code > ,
2017-07-15 10:35:02 -05:00
the system will browse sequentially trought the library list and returns
the first < em > Cell< / em > whose name match.< / p >
< / li >
2017-10-30 09:33:37 -05:00
< li > < p class = "first" > For < code class = "docutils literal" > < span class = "pre" > POWER< / span > < / code > , < code class = "docutils literal" > < span class = "pre" > GROUND< / span > < / code > , < code class = "docutils literal" > < span class = "pre" > CLOCK< / span > < / code > and < code class = "docutils literal" > < span class = "pre" > BLOCKAGE< / span > < / code > net names, a regular
2017-07-15 10:35:02 -05:00
expression (< span class = "sc" > gnu< / span > regexp) is expected.< / p >
< / li >
< / ul >
< p > A typical user’ s configuration file would be:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "kn" > import< / span > < span class = "nn" > os< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "n" > homeDir< / span > < span class = "o" > =< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > getenv< / span > < span class = "p" > (< / span > < span class = "s1" > ' HOME' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > allianceConfig< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' WORKING_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "n" > homeDir< / span > < span class = "o" > +< / span > < span class = "s1" > ' /worklib' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' SYSTEM_LIBRARY' < / span > < span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > homeDir< / span > < span class = "o" > +< / span > < span class = "s1" > ' /mylib' < / span > < span class = "p" > ,< / span > < span class = "n" > Environment< / span > < span class = "o" > .< / span > < span class = "n" > Append< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' POWER' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vdd.*' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' GROUND' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' vss.*' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "tools-configuration-helpers" >
< h3 > Tools Configuration Helpers< a class = "headerlink" href = "#tools-configuration-helpers" title = "Permalink to this headline" > ¶< / a > < / h3 >
< p > All the tools uses the same helper to load their configuration (a.k.a.
< em > Configuration Helper< / em > ). Currently the following configuration system-wide
configuration files are defined:< / p >
< ul class = "simple" >
< li > < span class = "cb" > misc.conf< / span > : commons settings or not belonging specifically to a tool.< / li >
< li > < span class = "cb" > etesian.conf< / span > : for the < span class = "sc" > Etesian< / span > tool.< / li >
< li > < span class = "cb" > kite.conf< / span > : for the < span class = "sc" > Kite< / span > tool.< / li >
< li > < span class = "cb" > stratus1.conf< / span > : for the < span class = "sc" > Stratus1< / span > tool.< / li >
< / ul >
< p > Here is the contents of < span class = "cb" > etesian.conf< / span > :< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # Etesian parameters.< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > parametersTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.aspectRatio' < / span > < span class = "p" > ,< / span > < span class = "n" > TypePercentage< / span > < span class = "p" > ,< / span > < span class = "mi" > 100< / span > < span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' min' < / span > < span class = "p" > :< / span > < span class = "mi" > 10< / span > < span class = "p" > ,< / span > < span class = "s1" > ' max' < / span > < span class = "p" > :< / span > < span class = "mi" > 1000< / span > < span class = "p" > }< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.spaceMargin' < / span > < span class = "p" > ,< / span > < span class = "n" > TypePercentage< / span > < span class = "p" > ,< / span > < span class = "mi" > 5< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.uniformDensity' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' etesian.routingDriven' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " etesian.effort" < / span > < span class = "p" > ,< / span > < span class = "n" > TypeEnumerate< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span >
< span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' values' < / span > < span class = "p" > :(< / span > < span class = "p" > (< / span > < span class = "s2" > " Fast" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Standard" < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " High" < / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Extreme" < / span > < span class = "p" > ,< / span > < span class = "mi" > 4< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > }< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " etesian.graphics" < / span > < span class = "p" > ,< / span > < span class = "n" > TypeEnumerate< / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span >
< span class = "p" > ,< / span > < span class = "p" > {< / span > < span class = "s1" > ' values' < / span > < span class = "p" > :(< / span > < span class = "p" > (< / span > < span class = "s2" > " Show every step" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Show lower bound" < / span > < span class = "p" > ,< / span > < span class = "mi" > 2< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s2" > " Show result only" < / span > < span class = "p" > ,< / span > < span class = "mi" > 3< / span > < span class = "p" > )< / span > < span class = "p" > )< / span > < span class = "p" > }< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
< span class = "p" > )< / span >
< span class = "n" > layoutTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "n" > TypeTab< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Etesian' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' etesian' < / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeTitle< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Placement area' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.aspectRatio" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Aspect Ratio, X/Y (%)" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.spaceMargin" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Space Margin" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeRule< / span > < span class = "p" > ,)< / span >
2017-10-30 09:33:37 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeTitle< / span > < span class = "p" > ,< / span > < span class = "s1" > ' Etesian - Placer' < / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.uniformDensity" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Uniform density" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.routingDriven" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Routing driven" < / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.effort" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Placement effort" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeOption< / span > < span class = "p" > ,< / span > < span class = "s2" > " etesian.graphics" < / span > < span class = "p" > ,< / span > < span class = "s2" > " Placement view" < / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "n" > TypeRule< / span > < span class = "p" > ,)< / span >
< span class = "p" > )< / span >
< / pre > < / div >
< / div >
< p > < / p >
< p > Taxonomy of the file:< / p >
< ul class = "simple" >
< li > It must contains, at least, the two tables:< ul >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > parametersTable< / span > < / code > , defines & initialise the configuration variables.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > layoutTables< / span > < / code > , defines how the various parameters will be displayed
in the configuration window (< a class = "reference internal" href = "ViewerTools.html#the-settings-tab" > < span class = "std std-ref" > The Settings Tab< / span > < / a > ).< / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li > The < code class = "docutils literal" > < span class = "pre" > parametersTable< / span > < / code > , is a tuple (list) of tuples. Each entry in the list
2017-07-15 10:35:02 -05:00
describe a configuration parameter. In it’ s simplest form, it’ s a quadruplet
< span class = "cb" > (TypeOption, ‘ paramId’ , ParameterType, DefaultValue)< / span > with:< ol class = "arabic" >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > TypeOption< / span > < / code > , tells that this tuple describe a parameter.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > paramId< / span > < / code > , the identifier of the parameter. Identifiers are defined
2017-07-15 10:35:02 -05:00
by the tools. The list of parameters is detailed in each tool section.< / li >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > ParameterType< / span > < / code > , the kind of parameter. Could be:< ul >
< li > < code class = "docutils literal" > < span class = "pre" > TypeBool< / span > < / code > , boolean.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeInt< / span > < / code > , signed integer.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeEnumerate< / span > < / code > , enumerated type, needs extra entry.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypePercentage< / span > < / code > , percentage, expressed between 0 and 100.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeDouble< / span > < / code > , float.< / li >
< li > < code class = "docutils literal" > < span class = "pre" > TypeString< / span > < / code > , character string.< / li >
2017-07-15 10:35:02 -05:00
< / ul >
< / li >
2017-10-30 09:33:37 -05:00
< li > < code class = "docutils literal" > < span class = "pre" > DefaultValue< / span > < / code > , the default value for that parameter.< / li >
2017-07-15 10:35:02 -05:00
< / ol >
< / li >
< / ul >
< / div >
< / div >
< div class = "section" id = "hacking-the-configuration-files" >
< h2 > Hacking the Configuration Files< a class = "headerlink" href = "#hacking-the-configuration-files" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Asides from the symbols that gets used by the configuration helpers like
< span class = "cb" > allianceConfig< / span > or < span class = "cb" > parametersTable< / span > , you can put pretty much anything
in < span class = "cb" > < CWD> /.coriolis2/settings.py< / span > (that is, written in < span class = "sc" > Python< / span > ).< / p >
< p > For example:< / p >
2017-10-30 09:33:37 -05:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "c1" > # -*- Mode:Python -*-< / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "n" > defaultStyle< / span > < span class = "o" > =< / span > < span class = "s1" > ' Alliance.Classic [black]' < / span >
2017-07-15 10:35:02 -05:00
2017-10-30 09:33:37 -05:00
< span class = "c1" > # Regular Coriolis configuration.< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > parametersTable< / span > < span class = "o" > =< / span > \
2017-10-30 09:33:37 -05:00
< span class = "p" > (< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.catchCore' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.info' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.paranoid' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.bug' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.logMode' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.verboseLevel1' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > False< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.verboseLevel2' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeBool< / span > < span class = "p" > ,< / span > < span class = "kc" > True< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.minTraceLevel' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeInt< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "p" > ,< / span > < span class = "p" > (< / span > < span class = "s1" > ' misc.maxTraceLevel' < / span > < span class = "p" > ,< / span > < span class = "n" > TypeInt< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
2017-07-15 10:35:02 -05:00
< span class = "p" > )< / span >
2017-10-30 09:33:37 -05:00
< span class = "c1" > # Some ordinary Python script...< / span >
2017-07-15 10:35:02 -05:00
< span class = "kn" > import< / span > < span class = "nn" > os< / span >
2017-10-30 09:33:37 -05:00
< span class = "nb" > print< / span > < span class = "s1" > ' o Cleaning up ClockTree previous run.' < / span >
< span class = "k" > for< / span > < span class = "n" > fileName< / span > < span class = "ow" > in< / span > < span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > listdir< / span > < span class = "p" > (< / span > < span class = "s1" > ' .' < / span > < span class = "p" > ):< / span >
< span class = "k" > if< / span > < span class = "n" > fileName< / span > < span class = "o" > .< / span > < span class = "n" > endswith< / span > < span class = "p" > (< / span > < span class = "s1" > ' .ap' < / span > < span class = "p" > )< / span > < span class = "ow" > or< / span > < span class = "p" > (< / span > < span class = "n" > fileName< / span > < span class = "o" > .< / span > < span class = "n" > find< / span > < span class = "p" > (< / span > < span class = "s1" > ' _clocked.' < / span > < span class = "p" > )< / span > < span class = "o" > > =< / span > < span class = "mi" > 0< / span > < span class = "p" > ):< / span >
< span class = "nb" > print< / span > < span class = "s1" > ' - < < / span > < span class = "si" > %s< / span > < span class = "s1" > > ' < / span > < span class = "o" > %< / span > < span class = "n" > fileName< / span >
2017-07-15 10:35:02 -05:00
< span class = "n" > os< / span > < span class = "o" > .< / span > < span class = "n" > unlink< / span > < span class = "p" > (< / span > < span class = "n" > fileName< / span > < span class = "p" > )< / span >
< / pre > < / div >
< / div >
2017-10-30 09:33:37 -05:00
< p > See < a class = "reference internal" href = "ScriptsPlugins.html#python-interface-to-coriolis" > < span class = "std std-ref" > Python Interface for Hurricane / Coriolis< / span > < / a > for more details those capabilities.< / p >
2017-07-15 10:35:02 -05:00
< / div >
< / div >
< / div >
< footer >
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
< a href = "ViewerTools.html" class = "btn btn-neutral float-right" title = "CGT - The Graphical Interface" accesskey = "n" > Next < span class = "fa fa-arrow-circle-right" > < / span > < / a >
< a href = "Installation.html" class = "btn btn-neutral" title = "Installation" accesskey = "p" > < span class = "fa fa-arrow-circle-left" > < / span > Previous< / a >
< / div >
< hr / >
< div role = "contentinfo" >
< table class = "footer1" >
< tr >
< td class = "LFooter" > < small >
Generated by < a href = "http://sphinx-doc.org/" > Sphinx< / a >
2018-01-06 10:55:44 -06:00
using a < a href = "https://readthedocs.org" > RTD< / a > theme on Jan 06, 2018.
2017-07-15 10:35:02 -05:00
< / small > < / td >
< td class = "RFooter" > < / td >
< / tr >
< / table >
< table class = "footer2" >
< tr >
< td class = "LFooter" > Coriolis 2 Documentation< / td >
< td class = "RFooter" > < small >
2018-01-06 10:55:44 -06:00
© Copyright 2000-2018, UPMC.
2017-07-15 10:35:02 -05:00
< / small > < / td >
< / tr >
< / table >
< / div >
< / footer >
< / div >
< / div >
< / section >
< / div >
< script type = "text/javascript" >
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../',
VERSION:'2',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true
};
< / script >
< script type = "text/javascript" src = "../_static/jquery.js" > < / script >
< script type = "text/javascript" src = "../_static/underscore.js" > < / script >
< script type = "text/javascript" src = "../_static/doctools.js" > < / script >
< script type = "text/javascript" src = "../_static/js/theme.js" > < / script >
< script type = "text/javascript" >
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
< / script >
< / body >
< / html >