coriolis/documentation/_build/html/Stratus/Language.html

3001 lines
247 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>Stratus Users Guide &mdash; Coriolis 2 documentation</title>
<link rel="stylesheet" href="../_static/SoC.css" type="text/css" />
<link rel="index" title="Index"
href="../genindex.html"/>
<link rel="search" title="Search" href="../search.html"/>
<link rel="top" title="Coriolis 2 documentation" href="../index.html"/>
<link rel="up" title="Stratus : Netlist Capture Language" href="index.html"/>
<link rel="next" title="Stratus Developpers Guide" href="Developper.html"/>
<link rel="prev" title="Stratus : Netlist Capture Language" href="index.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"><a class="reference internal" href="../UsersGuide/index.html">Coriolis User&#8217;s Guide</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/LicenseCredits.html">Credits &amp; License</a></li>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/Releases.html">Release Notes</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-1-0-1475">Release 1.0.1475</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-1-0-1963">Release 1.0.1963</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-1-0-2049">Release 1.0.2049</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-v2-0-1">Release v2.0.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-v2-1">Release v2.1</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Releases.html#release-v2-2"><strong>Release v2.2</strong></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/Installation.html">Installation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Installation.html#fixed-directory-tree">Fixed Directory Tree</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Installation.html#building-coriolis">Building Coriolis</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/Installation.html#building-the-devel-branch">Building the Devel Branch</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/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="../UsersGuide/Installation.html#packaging-coriolis">Packaging Coriolis</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/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="../UsersGuide/Installation.html#setting-up-the-environment-coriolisenv-py">Setting up the Environment (coriolisEnv.py)</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/Configuration.html">Coriolis Configuration &amp; Initialisation</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Configuration.html#general-software-architecture">General Software Architecture</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Configuration.html#first-stage-technology-selection">First Stage: Technology Selection</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Configuration.html#second-stage-technology-configuration-loading">Second Stage: Technology Configuration Loading</a></li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Configuration.html#configuration-helpers">Configuration Helpers</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/Configuration.html#alliance-helper"><span class="sc">Alliance</span> Helper</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/Configuration.html#tools-configuration-helpers">Tools Configuration Helpers</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/Configuration.html#hacking-the-configuration-files">Hacking the Configuration Files</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/ViewerTools.html">CGT - The Graphical Interface</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/ViewerTools.html#viewer-tools">Viewer &amp; Tools</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#stratus-netlist-capture"><span class="sc">Stratus</span> Netlist Capture</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/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="../UsersGuide/ViewerTools.html#synthetizing-and-loading-a-design">Synthetizing and loading a design</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#etesian-placer">Etesian &#8211; Placer</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#knik-global-router">Knik &#8211; Global Router</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#kite-detailed-router">Kite &#8211; Detailed Router</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#executing-python-scripts-in-cgt">Executing Python Scripts in Cgt</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#printing-snapshots">Printing &amp; Snapshots</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/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="../UsersGuide/ViewerTools.html#cgt-command-line-options">Cgt Command Line Options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#miscellaneous-settings">Miscellaneous Settings</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-controller">The Controller</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-look-tab">The Look Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-filter-tab">The Filter Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-layers-go-tab">The Layers&amp;Go Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-netlist-tab">The Netlist Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-selection-tab">The Selection Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-inspector-tab">The Inspector Tab</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ViewerTools.html#the-settings-tab">The Settings Tab</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../UsersGuide/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="../UsersGuide/ScriptsPlugins.html#plugins">Plugins</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ScriptsPlugins.html#chip-placement">Chip Placement</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ScriptsPlugins.html#clock-tree">Clock Tree</a></li>
<li class="toctree-l4"><a class="reference internal" href="../UsersGuide/ScriptsPlugins.html#recursive-save-rsave">Recursive-Save (RSave)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../UsersGuide/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="../PythonTutorial/index.html">Hurricane+Python Tutorial</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/Introduction.html">1. Introduction</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Introduction.html#terminology">1.1 Terminology</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Introduction.html#generalities">1.2 Generalities</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Introduction.html#various-kinds-of-constructors">1.3 Various Kinds of Constructors</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/Environment.html">2. Setting up the Environment</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Environment.html#setting-up-the-pathes">2.1 Setting up the Pathes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Environment.html#user-s-configurations-file">2.2 User&#8217;s Configurations File</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Environment.html#the-techno-py-file">2.2.1 The <span class="cb">techno.py</span> File</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Environment.html#the-settings-py-file">2.2.2 The <span class="cb">settings.py</span> File</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html">3. Making a Standard Cell &#8211; Layout</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#the-allianceframework-crl-core">3.1 The AllianceFramework (CRL Core)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#session-mechanism-hurricane">3.2 Session Mechanism (Hurricane)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#creating-a-new-cell-crl-core">3.3 Creating a new Cell (CRL Core)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#the-dbu-measurement-unit">3.4 The DbU Measurement Unit</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#setting-up-the-abutment-box">3.5 Setting up the Abutment Box</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#adding-nets-and-components">3.6 Adding Nets and Components</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#getting-a-layer">3.6.1 Getting a Layer</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#creating-a-net">3.6.2 Creating a Net</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#id1">3.6.3 Creating a Component</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#saving-to-disk-crl-core">3.7 Saving to Disk (CRL Core)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CellNetComponent.html#the-complete-example-file">3.8 The Complete Example File</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/Collections.html">4. Manipulating Cells, Nets and Components</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Collections.html#hurricane-collections">4.1 Hurricane Collections</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Collections.html#restrictions-about-using-collections">4.1.1 Restrictions about using Collections</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Collections.html#loading-a-cell-with-allianceframework">4.2 Loading a Cell with AllianceFramework</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/CgtScript.html">5. Make a script runnable through <span class="cb">cgt</span></a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/CgtScript.html#using-breakpoints">5.1 Using Breakpoints</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/Netlist.html">6. Making a hierarchical Cell &#8211; Netlist</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Netlist.html#creating-an-instance">6.1 Creating an Instance</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Netlist.html#id1">6.2 Creating Nets and connecting to Instances</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Netlist.html#power-supplies-special-case">6.3 Power supplies special case</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Netlist.html#creating-the-physical-view-of-a-cell-netlist">6.4 Creating the physical view of a Cell netlist</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Netlist.html#id2">6.4.1 Transformation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Netlist.html#placing-an-instance">6.4.2 Placing an Instance</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Netlist.html#nets-from-plugs-to-routingpads">6.4.3 Nets &#8211; From Plugs to RoutingPads</a></li>
<li class="toctree-l4"><a class="reference internal" href="../PythonTutorial/Netlist.html#nets-regular-wiring">6.4.4 Nets &#8211; Regular wiring</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/Netlist.html#the-complete-example-file">6.5 The Complete Example File</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/RealDesigns.html">7. Working in real mode</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/RealDesigns.html#loading-a-lef-file">7.1 Loading a <span class="sc">lef</span> file</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/RealDesigns.html#loading-a-blif-file-yosys">7.2 Loading a <span class="sc">blif</span> file &#8211; <span class="sc">Yosys</span></a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/ToolEngines.html">8. Tool Engines (CRL Core)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/ToolEngines.html#placer-etesian">8.1 Placer &#8211; Etesian</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/ToolEngines.html#router-katana">8.1 Router &#8211; Katana</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/ToolEngines.html#a-complete-example">8.2 A Complete Example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../PythonTutorial/AdvancedTopics.html">9. Advanced Topics</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/AdvancedTopics.html#id1">9.1 Occurrence</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/AdvancedTopics.html#id2">9.2 RoutingPads</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/AdvancedTopics.html#hypernets">9.3 HyperNets</a></li>
<li class="toctree-l3"><a class="reference internal" href="../PythonTutorial/AdvancedTopics.html#miscellaeous-trans-hierarchical-functions">9.4 Miscellaeous trans-hierarchical functions</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Stratus : Netlist Capture Language</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Stratus User&#8217;s Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#introduction">Introduction</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#stratus">Stratus</a></li>
<li class="toctree-l4"><a class="reference internal" href="#example">Example</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#description-of-a-netlist">Description of a netlist</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#nets">Nets</a></li>
<li class="toctree-l4"><a class="reference internal" href="#instances">Instances</a></li>
<li class="toctree-l4"><a class="reference internal" href="#generators">Generators</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#description-of-a-layout">Description of a layout</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#place">Place</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placetop">PlaceTop</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placebottom">PlaceBottom</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placeright">PlaceRight</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placeleft">PlaceLeft</a></li>
<li class="toctree-l4"><a class="reference internal" href="#setrefins">SetRefIns</a></li>
<li class="toctree-l4"><a class="reference internal" href="#defab">DefAb</a></li>
<li class="toctree-l4"><a class="reference internal" href="#resizeab">ResizeAb</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#patterns-generation-extension">Patterns generation extension</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#description-of-the-stimuli">Description of the stimuli</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#place-and-route">Place and Route</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#placesegment">PlaceSegment</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placecontact">PlaceContact</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placepin">PlacePin</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placeref">PlaceRef</a></li>
<li class="toctree-l4"><a class="reference internal" href="#getrefxy">GetRefXY</a></li>
<li class="toctree-l4"><a class="reference internal" href="#copyupsegment">CopyUpSegment</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placecentric">PlaceCentric</a></li>
<li class="toctree-l4"><a class="reference internal" href="#placeglu">PlaceGlu</a></li>
<li class="toctree-l4"><a class="reference internal" href="#fillcell">FillCell</a></li>
<li class="toctree-l4"><a class="reference internal" href="#pads">Pads</a></li>
<li class="toctree-l4"><a class="reference internal" href="#alimentation-rails">Alimentation rails</a></li>
<li class="toctree-l4"><a class="reference internal" href="#alimentation-connectors">Alimentation connectors</a></li>
<li class="toctree-l4"><a class="reference internal" href="#powerring">PowerRing</a></li>
<li class="toctree-l4"><a class="reference internal" href="#routeck">RouteCk</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#instanciation-facilities">Instanciation facilities</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#buffer">Buffer</a></li>
<li class="toctree-l4"><a class="reference internal" href="#multiplexor">Multiplexor</a></li>
<li class="toctree-l4"><a class="reference internal" href="#shifter">Shifter</a></li>
<li class="toctree-l4"><a class="reference internal" href="#register">Register</a></li>
<li class="toctree-l4"><a class="reference internal" href="#constants">Constants</a></li>
<li class="toctree-l4"><a class="reference internal" href="#boolean-operations">Boolean operations</a></li>
<li class="toctree-l4"><a class="reference internal" href="#arithmetical-operations">Arithmetical operations</a></li>
<li class="toctree-l4"><a class="reference internal" href="#comparison-operations">Comparison operations</a></li>
<li class="toctree-l4"><a class="reference internal" href="#virtual-library">Virtual library</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#useful-links">Useful links</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#dpgen-generators">DpGen generators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#arithmetic-package-of-stratus">Arithmetic package of stratus</a></li>
<li class="toctree-l4"><a class="reference internal" href="#arithmetic-generators-and-some-stratus-packages">Arithmetic generators and some stratus packages</a></li>
<li class="toctree-l4"><a class="reference internal" href="#patterns-module">Patterns module</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Developper.html">Stratus Developper&#8217;s Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Developper.html#class-model">Class Model</a><ul>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#synopsys">Synopsys</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#parameters">Parameters</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#attributes">Attributes</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#methods">Methods</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="Developper.html#nets">Nets</a><ul>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id1">Synopsys</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id2">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id3">Parameters</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id4">Attributes</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id5">Methods</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="Developper.html#instances">Instances</a><ul>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id6">Synopsys</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id7">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id8">Parameters</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id9">Attributes</a></li>
<li class="toctree-l4"><a class="reference internal" href="Developper.html#id10">Methods</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="Patterns.html">Patterns module User&#8217;s Guide</a><ul>
<li class="toctree-l3"><a class="reference internal" href="Patterns.html#description">Description</a></li>
<li class="toctree-l3"><a class="reference internal" href="Patterns.html#syntax">Syntax</a><ul>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#declaration-part">Declaration part</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#description-part">Description part</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="Patterns.html#methods">Methods</a><ul>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#patwrite">PatWrite</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#declar">declar</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#declar-interface">declar_interface</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#id2">declar</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#affect-int">affect_int</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#affect-fix">affect_fix</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#affect-any">affect_any</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#addpat">addpat</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#pattern-begin">pattern_begin</a></li>
<li class="toctree-l4"><a class="reference internal" href="Patterns.html#pattern-end">pattern_end</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="Patterns.html#example">Example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="DpGen.html">DpGen generators manual</a><ul>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgeninv">DpgenInv</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenbuff">DpgenBuff</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennand2">DpgenNand2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennand3">DpgenNand3</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennand4">Dpgennand4</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenand2">DpgenAnd2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenand3">DpgenAnd3</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenand4">DpgenAnd4</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennor2">DpgenNor2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennor3">DpgenNor3</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennor4">DpgenNor4</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenor2">DpgenOr2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenor3">DpgenOr3</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenor4">DpgenOr4</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenxor2">DpgenXor2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenxnor2">DpgenXnor2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennmux2">DpgenNmux2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenmux2">DpgenMux2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennbuse">DpgenNbuse</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenbuse">DpgenBuse</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennand2mask">DpgenNand2mask</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennor2mask">DpgenNor2mask</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenxnor2mask">DpgenXnor2mask</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenadsb2f">DpgenAdsb2f</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenshift">DpgenShift</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenshrot">DpgenShrot</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgennul">DpgenNul</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenconst">DpgenConst</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenrom2">DpgenRom2</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenrom4">DpgenRom4</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenram">DpgenRam</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenrf1">DpgenRf1</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenrf1d">DpgenRf1d</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgenfifo">DpgenFifo</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgendff">DpgenDff</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgendfft">DpgenDfft</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgensff">DpgenSff</a></li>
<li class="toctree-l3"><a class="reference internal" href="DpGen.html#dpgensfft">DpgenSfft</a></li>
</ul>
</li>
</ul>
</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>
<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>
<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">RDS &#8211; 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 &amp; Lambda Value</a></li>
<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>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../Analog/Analog.html">Hurricane/Analog Reference</a></li>
<li class="toctree-l1"><a class="reference internal" href="../Oroshi/Oroshi.html">Oroshi Reference</a></li>
<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>
<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>
</ul>
</div>
&nbsp;
</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> &raquo;</li>
<li><a href="index.html">Stratus : Netlist Capture Language</a> &raquo;</li>
<li>Stratus User&#8217;s Guide</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document">
<div class="section" id="stratus-user-s-guide">
<h1>Stratus User&#8217;s Guide<a class="headerlink" href="#stratus-user-s-guide" title="Permalink to this headline"></a></h1>
<p>Sophie Belloeil</p>
<div class="toctree-wrapper compound">
</div>
<div class="section" id="introduction">
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h2>
<div class="section" id="stratus">
<h3>Stratus<a class="headerlink" href="#stratus" title="Permalink to this headline"></a></h3>
<div class="section" id="name">
<h4>Name<a class="headerlink" href="#name" title="Permalink to this headline"></a></h4>
<p>Stratus Procedural design language based upon <em>Python</em></p>
</div>
<div class="section" id="description">
<h4>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h4>
<p><em>Stratus</em> is a set of <em>Python</em> methods/functions dedicated to
procedural generation purposes. From a user point of view, <em>Stratus</em> is
a circuits description language that allows <em>Python</em> programming flow
control, variable use, and specialized functions in order to handle vlsi
objects.</p>
<p>Based upon the <em>Hurricane</em> data structures, the <em>Stratus</em> language gives
the user the ability to describe netlist and layout views.</p>
</div>
<div class="section" id="configuration">
<h4>Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline"></a></h4>
<p>A configuration file can be used to direct the generation process of
Stratus. With this file, the user can choose the output format (vst,
vhdl...), the simulator (asimut, ghdl...), the standard cell library...
This configuration file named <code class="docutils literal"><span class="pre">.st_config.py</span></code> must be placed either in
the HOME directory or in the current directory. This file contains a set
of variables used in the process generation of Stratus, as for example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="nb">format</span> <span class="o">=</span> <span class="s1">&#39;vhdl&#39;</span>
<span class="n">simulator</span> <span class="o">=</span> <span class="s1">&#39;ghdl&#39;</span>
</pre></div>
</div>
<p>The default configuration of Stratus uses the Alliance CAD system, ie
<code class="docutils literal"><span class="pre">'vst'</span></code> as <code class="docutils literal"><span class="pre">format</span></code> and <code class="docutils literal"><span class="pre">'asimut'</span></code> as <code class="docutils literal"><span class="pre">simulator</span></code>.</p>
</div>
<div class="section" id="description-of-a-cell">
<h4>Description of a cell<a class="headerlink" href="#description-of-a-cell" title="Permalink to this headline"></a></h4>
<p>A cell is a hierachical structural description of a circuit in terms
of ports (I/Os), signals (nets) and instances.</p>
<p>The description of a cell is done by creating a new class, derivating
for class <code class="docutils literal"><span class="pre">Model</span></code>, with different methods :</p>
<ul class="simple">
<li>Method <code class="docutils literal"><span class="pre">Interface</span></code> : Description of the external ports of the cell
:<ul>
<li>SignalIn, SignalOut, ...</li>
</ul>
</li>
<li>Method <code class="docutils literal"><span class="pre">Netlist</span></code> : Description of the netlist of the cell :<ul>
<li>Inst, Signal</li>
</ul>
</li>
<li>Method <code class="docutils literal"><span class="pre">Layout</span></code> : Description of the layout of the cell :<ul>
<li>Place, PlaceTop, PlaceBottom, PlaceRight, PlaceLeft ...</li>
</ul>
</li>
<li>Method <code class="docutils literal"><span class="pre">Stimuli</span></code> : Description of the simulation stimuli of the
cell :<ul>
<li>affect, addd ...</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="creation-of-the-cell">
<h4>Creation of the cell<a class="headerlink" href="#creation-of-the-cell" title="Permalink to this headline"></a></h4>
<p>After the description of a cell as a sub-class of <code class="docutils literal"><span class="pre">Model</span></code>, the cell
has to be instantiated. The different methods described before have to
be called.</p>
<p>Then different methods are provided :</p>
<ul class="simple">
<li>Method <code class="docutils literal"><span class="pre">View</span></code> : Opens/Refreshes the editor in order to see the
created layout</li>
<li>Method <code class="docutils literal"><span class="pre">Save</span></code> : Saves the created cell in the desired format thanks
to the configuration file<ul>
<li>no argument : creation of a netlist file</li>
<li>PHYSICAL : creation of a netlist file AND a layout file</li>
<li>STRATUS : creation of a python/stratus file<ul>
<li>FileName : optionnal argument when using Save(STRATUS) in order
to choose the name of the file to be generated</li>
<li>Be careful : if one wants to create a stratus file AND a
netlist, always use Save(STRATUS) before Save() !</li>
</ul>
</li>
</ul>
</li>
<li>Method <code class="docutils literal"><span class="pre">Testbench</span></code> : Creates the testbench of the cell using the
<code class="docutils literal"><span class="pre">Stimuli</span></code> method to compute the stimuli. The output format depends
of the <code class="docutils literal"><span class="pre">format</span></code> variable given in the configuration file</li>
<li>Method <code class="docutils literal"><span class="pre">Simul</span></code> : Runs the simulation using the simulator named in
the configuration file</li>
</ul>
</div>
<div class="section" id="syntax">
<h4>Syntax<a class="headerlink" href="#syntax" title="Permalink to this headline"></a></h4>
<p>A <em>Stratus</em> file must have a .py extension and must begin as follow :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="ch">#!/usr/bin/env python</span>
<span class="kn">from</span> <span class="nn">stratus</span> <span class="k">import</span> <span class="o">*</span>
</pre></div>
</div>
<p>The description of a cell as a sub-class of <code class="docutils literal"><span class="pre">Model</span></code> is done as follow
:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">myClass</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="o">...</span>
</pre></div>
</div>
<p>The creation of the cell is done by instantiating the previous class as
follow :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">exemple</span> <span class="o">=</span> <span class="n">myClass</span> <span class="p">(</span> <span class="n">name</span><span class="p">,</span> <span class="n">param</span> <span class="p">)</span>
</pre></div>
</div>
<p>After the different methods can be called as follow :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">exemple</span><span class="o">.</span><span class="n">Interface</span><span class="p">()</span>
<span class="n">exemple</span><span class="o">.</span><span class="n">Netlist</span><span class="p">()</span>
<span class="n">exemple</span><span class="o">.</span><span class="n">Save</span><span class="p">()</span>
<span class="o">...</span>
</pre></div>
</div>
<p>In order to execute a <em>Stratus</em> file (named <code class="docutils literal"><span class="pre">file</span></code> for example), one
has two choices :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">file</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>Or :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">chmod</span> <span class="n">u</span><span class="o">+</span><span class="n">x</span> <span class="n">file</span><span class="o">.</span><span class="n">py</span>
<span class="o">./</span><span class="n">file</span><span class="o">.</span><span class="n">py</span>
</pre></div>
</div>
<p>The names used in <em>Stratus</em>, as arguments to <em>Stratus</em> functions,
should be alphanumerical, including the underscore. The arguments of
<em>Stratus</em> are case sensitive, so VDD is not equivalent to vdd.</p>
<div class="line-block">
<div class="line">Vectorized connectors or signal can be used using the [n:m] construct.</div>
</div>
</div>
<div class="section" id="syntax-highlighting">
<h4>Syntax highlighting<a class="headerlink" href="#syntax-highlighting" title="Permalink to this headline"></a></h4>
<p>When using vi, its possible to have the right syntax highlighting :</p>
<ul class="simple">
<li>Commands to do when you want to change once the coloration of your
file :</li>
</ul>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="p">:</span><span class="n">syntax</span> <span class="n">off</span>
<span class="p">:</span><span class="n">source</span> <span class="o">/</span><span class="n">asim</span><span class="o">/</span><span class="n">coriolis</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">stratus</span><span class="o">.</span><span class="n">vim</span>
</pre></div>
</div>
<ul class="simple">
<li>Modification of your .vimrc in order to have the syntax highlighting
each time you open a file :</li>
</ul>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">syntax</span> <span class="n">off</span>
<span class="n">autocmd</span> <span class="n">BufRead</span><span class="p">,</span><span class="n">BufNewfile</span> <span class="o">*.</span><span class="n">py</span> <span class="n">so</span> <span class="o">/</span><span class="n">asim</span><span class="o">/</span><span class="n">coriolis</span><span class="o">/</span><span class="n">share</span><span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">stratus</span><span class="o">.</span><span class="n">vim</span>
<span class="n">syntax</span> <span class="n">on</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="example">
<h3>Example<a class="headerlink" href="#example" title="Permalink to this headline"></a></h3>
<div class="section" id="the-addaccu-circuit">
<h4>The addaccu circuit<a class="headerlink" href="#the-addaccu-circuit" title="Permalink to this headline"></a></h4>
<p><img alt="add1" src="../_images/add1.png" /></p>
</div>
<div class="section" id="the-data-path">
<h4>The data-path<a class="headerlink" href="#the-data-path" title="Permalink to this headline"></a></h4>
<p><img alt="add2" src="../_images/add2.png" /></p>
</div>
<div class="section" id="description-of-the-circuit-with-stratus-file-addaccu-py">
<h4>Description of the circuit with <em>Stratus</em> : file addaccu.py<a class="headerlink" href="#description-of-the-circuit-with-stratus-file-addaccu-py" title="Permalink to this headline"></a></h4>
<p><img alt="addaccu" src="../_images/addaccu.png" /></p>
</div>
<div class="section" id="creation-of-the-circuit-file-test-py">
<h4>Creation of the circuit : file test.py<a class="headerlink" href="#creation-of-the-circuit-file-test-py" title="Permalink to this headline"></a></h4>
<p><img alt="test" src="../_images/test.png" /></p>
</div>
<div class="section" id="how-to-execute-the-file">
<h4>How to execute the file<a class="headerlink" href="#how-to-execute-the-file" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">test</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">n</span> <span class="mi">4</span>
</pre></div>
</div>
<p>or :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">chmod</span> <span class="n">u</span><span class="o">+</span><span class="n">x</span> <span class="n">test</span><span class="o">.</span><span class="n">py</span>
<span class="o">./</span><span class="n">test</span> <span class="o">-</span><span class="n">n</span> <span class="mi">4</span>
</pre></div>
</div>
</div>
<div class="section" id="the-editor">
<h4>The editor<a class="headerlink" href="#the-editor" title="Permalink to this headline"></a></h4>
<p>The method <code class="docutils literal"><span class="pre">View</span></code> permits to open an editor in which one can see the
cell being created as shown in the picture below.</p>
<p><img alt="editor" src="../_images/editor.png" /></p>
</div>
<div class="section" id="function-param">
<h4>Function Param<a class="headerlink" href="#function-param" title="Permalink to this headline"></a></h4>
<p>This function allows the user to give parameters when creating a cell.
When one wants to give values to two parameters, one can type on the
shell :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">test</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">n</span> <span class="mi">4</span> <span class="o">-</span><span class="n">w</span> <span class="mi">8</span>
</pre></div>
</div>
<p>The file <code class="docutils literal"><span class="pre">test.py</span></code> has then to contain :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">nbit</span><span class="p">,</span> <span class="n">nword</span> <span class="o">=</span> <span class="n">Param</span> <span class="p">(</span> <span class="s2">&quot;n&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span> <span class="p">)</span>
</pre></div>
</div>
<p>The letters typed on the shell must be the ones given as parameters of
function <code class="docutils literal"><span class="pre">Param</span></code>.</p>
</div>
<div class="section" id="how-to-instanciate-your-generator-in-another-generator">
<h4>How to instanciate your generator in another generator<a class="headerlink" href="#how-to-instanciate-your-generator-in-another-generator" title="Permalink to this headline"></a></h4>
<p>One can create a generator and instantiate it in another generator.
To do that, the model name of the generator must have the form :
“file_name.class_name”.
Note that if the two generators are not in the same directory, the
directory of the generator to be instantiated has to be added in the
CRL_CATA_LIB environment variable.</p>
<p>For example, in order to instanciate the addaccu created above in a cell
:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">n</span> <span class="o">=</span> <span class="mi">4</span>
<span class="n">Generate</span> <span class="p">(</span> <span class="s2">&quot;addaccu.addaccu&quot;</span><span class="p">,</span> <span class="s2">&quot;my_addaccu_</span><span class="si">%d</span><span class="s2">bits&quot;</span> <span class="o">%</span> <span class="n">n</span>
<span class="p">,</span> <span class="n">param</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;nbit&#39;</span> <span class="p">:</span> <span class="n">n</span> <span class="p">}</span> <span class="p">)</span>
<span class="n">Inst</span> <span class="p">(</span> <span class="s2">&quot;my_addaccu_</span><span class="si">%d</span><span class="s2">bits&quot;</span> <span class="o">%</span> <span class="n">n</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;a&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netA</span>
<span class="p">,</span> <span class="s1">&#39;b&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netB</span>
<span class="p">,</span> <span class="s1">&#39;c&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netC</span>
<span class="p">,</span> <span class="s1">&#39;v&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netV</span>
<span class="p">,</span> <span class="s1">&#39;cmd&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netCmd</span>
<span class="p">,</span> <span class="s1">&#39;cout&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netCout</span>
<span class="p">,</span> <span class="s1">&#39;s&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">netS</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="description-of-a-netlist">
<h2>Description of a netlist<a class="headerlink" href="#description-of-a-netlist" title="Permalink to this headline"></a></h2>
<div class="section" id="nets">
<h3>Nets<a class="headerlink" href="#nets" title="Permalink to this headline"></a></h3>
<div class="section" id="id1">
<h4>Name<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h4>
<p>SignalIn, SignalOut ... Creation of nets</p>
</div>
<div class="section" id="synopsys">
<h4>Synopsys<a class="headerlink" href="#synopsys" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netA</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id2">
<h4>Description<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h4>
<p>How to create and use nets.</p>
</div>
<div class="section" id="id3">
<h4>Nets<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h4>
<p>Differents kind of nets are listed below :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">SignalIn</span></code> : Creation of an input port</li>
<li><code class="docutils literal"><span class="pre">SignalOut</span></code> : Creation of an output port</li>
<li><code class="docutils literal"><span class="pre">SignalInOut</span></code> : Creation of an inout port</li>
<li><code class="docutils literal"><span class="pre">SignalUnknown</span></code> : Creation of an input/output port which direction
is not defined</li>
<li><code class="docutils literal"><span class="pre">TriState</span></code> : Creation of a tristate port</li>
<li><code class="docutils literal"><span class="pre">CkIn</span></code> : Creation of a clock port</li>
<li><code class="docutils literal"><span class="pre">VddIn</span></code> : Creation of the vdd alimentation</li>
<li><code class="docutils literal"><span class="pre">VssIn</span></code> : Creation of the vss alimentation</li>
<li><code class="docutils literal"><span class="pre">Signal</span></code> : Creation of an internal net</li>
</ul>
</div>
<div class="section" id="parameters">
<h4>Parameters<a class="headerlink" href="#parameters" title="Permalink to this headline"></a></h4>
<p>All kind of constructors have the same parameters :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">name</span></code> : the name of the net (mandatory argument)</li>
<li><code class="docutils literal"><span class="pre">arity</span></code> : the arity of the net (mandatory argument)</li>
<li><code class="docutils literal"><span class="pre">indice</span></code> : for bit vectors only : the LSB bit (optional argument :
set to 0 by default)</li>
</ul>
<p>Only <code class="docutils literal"><span class="pre">CkIn</span></code>, <code class="docutils literal"><span class="pre">VddIn</span></code> and <code class="docutils literal"><span class="pre">VssIn</span></code> do not have the same parameters :
there is only the <code class="docutils literal"><span class="pre">name</span></code> parameter (they are 1 bit nets).</p>
</div>
<div class="section" id="functions-and-methods">
<h4>Functions and methods<a class="headerlink" href="#functions-and-methods" title="Permalink to this headline"></a></h4>
<p>Some functions/methods are provided in order to handle nets :</p>
<ul>
<li><p class="first">function <code class="docutils literal"><span class="pre">Cat</span></code> : Concatenation of nets, beginning with the MSB</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Inst</span> <span class="p">(</span> <span class="s1">&#39;DpgenInv&#39;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;i0&#39;</span> <span class="p">:</span> <span class="n">Cat</span> <span class="p">(</span> <span class="n">A</span><span class="p">,</span> <span class="n">B</span> <span class="p">)</span>
<span class="p">,</span> <span class="s1">&#39;nq&#39;</span> <span class="p">:</span> <span class="n">S</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
<p>Or :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">tab</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">tab</span><span class="o">.</span><span class="n">append</span> <span class="p">(</span> <span class="n">A</span> <span class="p">)</span>
<span class="n">tab</span><span class="o">.</span><span class="n">append</span> <span class="p">(</span> <span class="n">B</span> <span class="p">)</span>
<span class="n">Inst</span> <span class="p">(</span> <span class="s1">&#39;DpgenInv&#39;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;i0&#39;</span> <span class="p">:</span> <span class="n">Cat</span> <span class="p">(</span> <span class="n">tab</span> <span class="p">)</span>
<span class="p">,</span> <span class="s1">&#39;nq&#39;</span> <span class="p">:</span> <span class="n">S</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
<p>If A and B are 2 bits nets, the net <code class="docutils literal"><span class="pre">myNet</span></code> will be such as :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">myNet</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">A</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">myNet</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">A</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">myNet</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">B</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">myNet</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">B</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</pre></div>
</div>
</li>
<li><p class="first">function <code class="docutils literal"><span class="pre">Extend</span></code> : Creation of a net which is an extension of the
net which it is applied to</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">temp</span> <span class="o">=</span> <span class="n">Signal</span> <span class="p">(</span> <span class="s2">&quot;temp&quot;</span><span class="p">,</span> <span class="mi">5</span> <span class="p">)</span>
<span class="n">tempExt</span> <span class="o">=</span> <span class="n">Signal</span> <span class="p">(</span> <span class="s2">&quot;temp_ext&quot;</span><span class="p">,</span> <span class="mi">8</span> <span class="p">)</span>
<span class="n">tempExt</span> <span class="o">&lt;=</span> <span class="n">temp</span><span class="o">.</span><span class="n">Extand</span> <span class="p">(</span> <span class="mi">8</span><span class="p">,</span> <span class="s1">&#39;one&#39;</span> <span class="p">)</span>
</pre></div>
</div>
</li>
<li><p class="first">method <code class="docutils literal"><span class="pre">Alias</span></code> : Creation of an alias name for a net</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">cin</span><span class="o">.</span><span class="n">Alias</span> <span class="p">(</span> <span class="n">c_temp</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="p">)</span>
<span class="n">cout</span><span class="o">.</span><span class="n">Alias</span> <span class="p">(</span> <span class="n">c_temp</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="p">)</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span> <span class="p">(</span> <span class="mi">4</span> <span class="p">)</span> <span class="p">:</span>
<span class="n">Inst</span> <span class="p">(</span> <span class="s2">&quot;Fulladder&quot;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;a&#39;</span> <span class="p">:</span> <span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;b&#39;</span> <span class="p">:</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;cin&#39;</span> <span class="p">:</span> <span class="n">c_temp</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;sout&#39;</span> <span class="p">:</span> <span class="n">sout</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;cout&#39;</span> <span class="p">:</span> <span class="n">c_temp</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
</li>
</ul>
</div>
<div class="section" id="errors">
<h4>Errors<a class="headerlink" href="#errors" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul>
<li><div class="first line-block">
<div class="line"><code class="docutils literal"><span class="pre">Error</span> <span class="pre">in</span> <span class="pre">SignalIn</span> <span class="pre">:</span></code></div>
<div class="line"><code class="docutils literal"><span class="pre">the</span> <span class="pre">lenght</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">net</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">positive</span> <span class="pre">value.</span></code></div>
<div class="line">One can not create a net with a negative lenght.</div>
</div>
</li>
</ul>
</div>
</div>
<div class="section" id="instances">
<h3>Instances<a class="headerlink" href="#instances" title="Permalink to this headline"></a></h3>
<div class="section" id="id4">
<h4>Name<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h4>
<p>Inst Creation of instances</p>
</div>
<div class="section" id="id5">
<h4>Synopsys<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Inst</span> <span class="p">(</span> <span class="n">model</span>
<span class="p">,</span> <span class="n">name</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="n">connectmap</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id6">
<h4>Description<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h4>
<p>Instantiation of an instance. The type of the instance is given by the
<code class="docutils literal"><span class="pre">model</span></code> parameter. The connexions are made thanks to the
<code class="docutils literal"><span class="pre">connectmap</span></code> parameters.</p>
</div>
<div class="section" id="id7">
<h4>Parameters<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Model</span></code> : Name of the mastercell of the instance to create
(mandatory argument)</li>
<li><code class="docutils literal"><span class="pre">name</span></code> : Name of the instance (optional)
When this argument is not defined, the instance has a name created
by default. This argument is usefull when one wants to create a
layout as well. Indeed, the placement of the instances is much easier
when the conceptor has chosen himself the name f the
instances.&lt;/para&gt;</li>
<li><code class="docutils literal"><span class="pre">connectmap</span></code> : Connexions in order to make the netlist</li>
</ul>
<p><code class="docutils literal"><span class="pre">param</span></code> and <code class="docutils literal"><span class="pre">map</span></code> are dictionnaries as shown in the example below.</p>
</div>
<div class="section" id="id8">
<h4>Example<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Inst</span> <span class="p">(</span> <span class="s1">&#39;a2_x2&#39;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;i0&#39;</span> <span class="p">:</span> <span class="n">in0</span>
<span class="p">,</span> <span class="s1">&#39;i1&#39;</span> <span class="p">:</span> <span class="n">in1</span>
<span class="p">,</span> <span class="s1">&#39;q&#39;</span> <span class="p">:</span> <span class="n">out</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
<p>You can see a concrete example at :</p>
</div>
<div class="section" id="id9">
<h4>Errors<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Error</span> <span class="pre">in</span> <span class="pre">Inst</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">model</span> <span class="pre">Model</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">exist.</span></code>
<code class="docutils literal"><span class="pre">Check</span> <span class="pre">CRL_CATA_LIB.</span></code>
Either one has made a mistake in the name of the model, either the
environment variable is not correct.</li>
<li><code class="docutils literal"><span class="pre">Error</span> <span class="pre">in</span> <span class="pre">Inst</span> <span class="pre">:</span> <span class="pre">port</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">exist</span> <span class="pre">in</span> <span class="pre">model</span> <span class="pre">Model.</span></code>
One port in map is not correct.</li>
<li><code class="docutils literal"><span class="pre">Error</span> <span class="pre">in</span> <span class="pre">Inst</span> <span class="pre">:</span> <span class="pre">one</span> <span class="pre">input</span> <span class="pre">net</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">dimensionned.</span></code>
The size of the output nets is automatically calculated bus the
input nets must be dimensionned before being connected.</li>
</ul>
</div>
</div>
<div class="section" id="generators">
<h3>Generators<a class="headerlink" href="#generators" title="Permalink to this headline"></a></h3>
<div class="section" id="id10">
<h4>Name<a class="headerlink" href="#id10" title="Permalink to this headline"></a></h4>
<p>Generate Interface with the generators</p>
</div>
<div class="section" id="id11">
<h4>Synopsys<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Generate</span> <span class="p">(</span> <span class="n">model</span><span class="p">,</span> <span class="n">modelname</span><span class="p">,</span> <span class="n">param</span> <span class="o">=</span> <span class="nb">dict</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id12">
<h4>Description<a class="headerlink" href="#id12" title="Permalink to this headline"></a></h4>
<p>The <code class="docutils literal"><span class="pre">Generate</span></code> function call is the generic interface to all
generators.</p>
</div>
<div class="section" id="arguments">
<h4>Arguments<a class="headerlink" href="#arguments" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">model</span></code> : Specifies which generator is to be invoked<ul>
<li>If the generator belongs to the Dpgen library provided by Stratus,
the model name of the generator is simply the name of the class of
the generator.</li>
<li>If the generator is created by the user, the model name of the
generator must have the form : “file_name.class_name”. (Note
that if the the generator is not in the working directory, the
directory of the generator to be instantiated has to be added in
the CRL_CATA_LIB environment variable)</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">modelname</span></code> : Specifies the name of the model to be generated</li>
<li><code class="docutils literal"><span class="pre">dict</span></code> : Specifies the parameters of the generator</li>
</ul>
</div>
<div class="section" id="id13">
<h4>Parameters<a class="headerlink" href="#id13" title="Permalink to this headline"></a></h4>
<p>Every generator has its own parameters. They must be described in the
map <code class="docutils literal"><span class="pre">dict</span></code>.
Every generator provides a netlist view. Two other views can be
generated, if they are provided by the generator. Two parameters have to
be given, in order to choose those views :</p>
<ul class="simple">
<li>physical : True/False, generation of the physical view (optionnal,
False by default)</li>
<li>behavioral : True/False, generation of the behavioral view
(optionnal, False by default)</li>
</ul>
</div>
<div class="section" id="id14">
<h4>Errors<a class="headerlink" href="#id14" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Generate</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">model</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">described</span> <span class="pre">in</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
</ul>
</div>
</div>
</div>
<div class="section" id="description-of-a-layout">
<h2>Description of a layout<a class="headerlink" href="#description-of-a-layout" title="Permalink to this headline"></a></h2>
<div class="section" id="place">
<h3>Place<a class="headerlink" href="#place" title="Permalink to this headline"></a></h3>
<div class="section" id="id15">
<h4>Name<a class="headerlink" href="#id15" title="Permalink to this headline"></a></h4>
<p>Place Places an instance</p>
</div>
<div class="section" id="id16">
<h4>Synopsys<a class="headerlink" href="#id16" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">ins</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">point</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id17">
<h4>Description<a class="headerlink" href="#id17" title="Permalink to this headline"></a></h4>
<p>Placement of an instance.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code>, in
order to use the <code class="docutils literal"><span class="pre">Place</span></code> function.</p>
</div>
<div class="section" id="id18">
<h4>Parameters<a class="headerlink" href="#id18" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place.</li>
<li><code class="docutils literal"><span class="pre">sym</span></code> : Geometrical operation to be performed on the instance
before beeing placed.
The <code class="docutils literal"><span class="pre">sym</span></code> argument can take eight legal values :<ul>
<li><code class="docutils literal"><span class="pre">NOSYM</span></code> : no geometrical operation is performed</li>
<li><code class="docutils literal"><span class="pre">SYM_Y</span></code> : Y becomes -Y, that means toward X axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYM_X</span></code> : X becomes -X, that means toward Y axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYMXY</span></code> : X becomes -X, Y becomes -Y</li>
<li><code class="docutils literal"><span class="pre">ROT_P</span></code> : a positive 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">ROT_M</span></code> : a negative 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RP</span></code> : Y becomes -Y, and then a positive 90 degrees rotation
takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RM</span></code> : Y becomes -Y, and then a negative 90 degrees rotation
takes place</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">point</span></code> : coordinates of the lower left corner of the abutment box
of the instance in the current figure.</li>
</ul>
</div>
<div class="section" id="id19">
<h4>Example<a class="headerlink" href="#id19" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="n">XY</span> <span class="p">(</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id20">
<h4>Errors<a class="headerlink" href="#id20" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul>
<li><div class="first line-block">
<div class="line"><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code></div>
<div class="line">The instance must be instanciated in order to be placed.</div>
</div>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code></p>
</li>
<li><div class="first line-block">
<div class="line"><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code></div>
<div class="line">One can not place an instance twice</div>
</div>
</li>
<li><div class="first line-block">
<div class="line"><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Place</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement</span> <span class="pre">type.</span></code></div>
<div class="line">The symetry given as argument is not correct.</div>
</div>
</li>
<li><div class="first line-block">
<div class="line"><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Place</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement,</span></code></div>
<div class="line">`` the coordinates must be put in a XY object.``</div>
<div class="line">The coordinates are not descrobed the bood way.</div>
</div>
</li>
</ul>
</div>
</div>
<div class="section" id="placetop">
<h3>PlaceTop<a class="headerlink" href="#placetop" title="Permalink to this headline"></a></h3>
<div class="section" id="id21">
<h4>Name<a class="headerlink" href="#id21" title="Permalink to this headline"></a></h4>
<p>PlaceTop Places an instance at the top of the “reference instance”</p>
</div>
<div class="section" id="id22">
<h4>Synopsys<a class="headerlink" href="#id22" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceTop</span> <span class="p">(</span> <span class="n">ins</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">offsetX</span><span class="p">,</span> <span class="n">offsetY</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id23">
<h4>Description<a class="headerlink" href="#id23" title="Permalink to this headline"></a></h4>
<p>Placement of an instance.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code> in order
to use the <code class="docutils literal"><span class="pre">PlaceTop</span></code> function.</p>
<p>The bottom left corner of the abutment box of the instance is placed,
after beeing symetrized and/or rotated, toward the top left corner of
the abutment box of the “reference instance”. The newly placed instance
becomes the “reference instance”.</p>
</div>
<div class="section" id="id24">
<h4>Parameters<a class="headerlink" href="#id24" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place.</li>
<li><code class="docutils literal"><span class="pre">sym</span></code> : Geometrical operation to be performed on the instance
before beeing placed.
The <code class="docutils literal"><span class="pre">sym</span></code> argument can take eight legal values :<ul>
<li><code class="docutils literal"><span class="pre">NOSYM</span></code> : no geometrical operation is performed</li>
<li><code class="docutils literal"><span class="pre">SYM_Y</span></code> : Y becomes -Y, that means toward X axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYM_X</span></code> : X becomes -X, that means toward Y axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYMXY</span></code> : X becomes -X, Y becomes -Y</li>
<li><code class="docutils literal"><span class="pre">ROT_P</span></code> : a positive 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">ROT_M</span></code> : a negative 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RP</span></code> : Y becomes -Y, and then a positive 90 degrees rotation
takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RM</span></code> : Y becomes -Y, and then a negative 90 degrees rotation
takes place</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">offsetX</span></code> (optionnal) : An offset is put horizontally. The value
given as argument must be a multiple of PITCH</li>
<li><code class="docutils literal"><span class="pre">offsetY</span></code> (optionnal) : An offset is put vertically. The value
given as argument must be a multiple of SLICE</li>
</ul>
</div>
<div class="section" id="id25">
<h4>Example<a class="headerlink" href="#id25" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst1</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
<span class="n">PlaceTop</span> <span class="p">(</span> <span class="n">myInst2</span><span class="p">,</span> <span class="n">SYM_Y</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id26">
<h4>Errors<a class="headerlink" href="#id26" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
The instance must be instanciated in order to be placed.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code>
One can not place an instance twice</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceTop</span> <span class="pre">:</span> <span class="pre">no</span> <span class="pre">previous</span> <span class="pre">instance.</span></code>
One can use <code class="docutils literal"><span class="pre">PlaceTop</span></code> only if a reference instance exist. Use a
<code class="docutils literal"><span class="pre">Place</span></code> call before.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceTop</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement</span> <span class="pre">type.</span></code>
The symetry given as argument is not correct.</li>
</ul>
</div>
</div>
<div class="section" id="placebottom">
<h3>PlaceBottom<a class="headerlink" href="#placebottom" title="Permalink to this headline"></a></h3>
<div class="section" id="id27">
<h4>Name<a class="headerlink" href="#id27" title="Permalink to this headline"></a></h4>
<p>PlaceBottom Places an instance below the “reference instance”</p>
</div>
<div class="section" id="id28">
<h4>Synopsys<a class="headerlink" href="#id28" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceBottom</span> <span class="p">(</span> <span class="n">ins</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">offsetX</span><span class="p">,</span> <span class="n">offsetY</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id29">
<h4>Description<a class="headerlink" href="#id29" title="Permalink to this headline"></a></h4>
<p>Placement of an instance.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code> in order
to use the <code class="docutils literal"><span class="pre">PlaceTop</span></code> function.</p>
<p>The top left corner of the abutment box of the instance is placed, after
beeing symetrized and/or rotated, toward the bottom left corner of the
abutment box of the “reference instance”. The newly placed instance
becomes the “reference instance”.</p>
</div>
<div class="section" id="id30">
<h4>Parameters<a class="headerlink" href="#id30" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place.</li>
<li><code class="docutils literal"><span class="pre">sym</span></code> : Geometrical operation to be performed on the instance
before beeing placed.
The <code class="docutils literal"><span class="pre">sym</span></code> argument can take eight legal values :<ul>
<li><code class="docutils literal"><span class="pre">NOSYM</span></code> : no geometrical operation is performed</li>
<li><code class="docutils literal"><span class="pre">SYM_Y</span></code> : Y becomes -Y, that means toward X axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYM_X</span></code> : X becomes -X, that means toward Y axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYMXY</span></code> : X becomes -X, Y becomes -Y</li>
<li><code class="docutils literal"><span class="pre">ROT_P</span></code> : a positive 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">ROT_M</span></code> : a negative 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RP</span></code> : Y becomes -Y, and then a positive 90 degrees rotation
takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RM</span></code> : Y becomes -Y, and then a negative 90 degrees rotation
takes place</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">offsetX</span></code> (optionnal) : An offset is put horizontally. The value
given as argument must be a multiple of PITCH</li>
<li><code class="docutils literal"><span class="pre">offsetY</span></code> (optionnal) : An offset is put vertically. The value
given as argument must be a multiple of SLICE</li>
</ul>
</div>
<div class="section" id="id31">
<h4>Example<a class="headerlink" href="#id31" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst1</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
<span class="n">PlaceBottom</span> <span class="p">(</span> <span class="n">myInst2</span><span class="p">,</span> <span class="n">SYM_Y</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id32">
<h4>Errors<a class="headerlink" href="#id32" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
The instance must be instanciated in order to be placed.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code>
One can not place an instance twice</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceBottom</span> <span class="pre">:</span> <span class="pre">no</span> <span class="pre">previous</span> <span class="pre">instance.</span></code>
One can use <code class="docutils literal"><span class="pre">PlaceBottom</span></code> only if a reference instance exist. Use
a <code class="docutils literal"><span class="pre">Place</span></code> call before.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceBottom</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement</span> <span class="pre">type.</span></code>
The symetry given as argument is not correct.</li>
</ul>
</div>
</div>
<div class="section" id="placeright">
<h3>PlaceRight<a class="headerlink" href="#placeright" title="Permalink to this headline"></a></h3>
<div class="section" id="id33">
<h4>Name<a class="headerlink" href="#id33" title="Permalink to this headline"></a></h4>
<p>PlaceRight Places an instance at the right of the “reference instance”</p>
</div>
<div class="section" id="id34">
<h4>Synopsys<a class="headerlink" href="#id34" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceRight</span> <span class="p">(</span> <span class="n">ins</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">offsetX</span><span class="p">,</span> <span class="n">offsetY</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id35">
<h4>Description<a class="headerlink" href="#id35" title="Permalink to this headline"></a></h4>
<p>Placement of an instance.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code> in order
to use the <code class="docutils literal"><span class="pre">PlaceTop</span></code> function.</p>
<p>The bottom left corner of the abutment box of the instance is placed,
after beeing symetrized and/or rotated, toward the bottom right corner
of the abutment box of the “reference instance”. The newly placed
instance becomes the “reference instance”.</p>
</div>
<div class="section" id="id36">
<h4>Parameters<a class="headerlink" href="#id36" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place.</li>
<li><code class="docutils literal"><span class="pre">sym</span></code> : Geometrical operation to be performed on the instance
before beeing placed.
The <code class="docutils literal"><span class="pre">sym</span></code> argument can take eight legal values :<ul>
<li><code class="docutils literal"><span class="pre">NOSYM</span></code> : no geometrical operation is performed</li>
<li><code class="docutils literal"><span class="pre">SYM_Y</span></code> : Y becomes -Y, that means toward X axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYM_X</span></code> : X becomes -X, that means toward Y axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYMXY</span></code> : X becomes -X, Y becomes -Y</li>
<li><code class="docutils literal"><span class="pre">ROT_P</span></code> : a positive 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">ROT_M</span></code> : a negative 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RP</span></code> : Y becomes -Y, and then a positive 90 degrees rotation
takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RM</span></code> : Y becomes -Y, and then a negative 90 degrees rotation
takes place</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">offsetX</span></code> (optionnal) : An offset is put horizontally. The value
given as argument must be a multiple of PITCH</li>
<li><code class="docutils literal"><span class="pre">offsetY</span></code> (optionnal) : An offset is put vertically. The value
given as argument must be a multiple of SLICE</li>
</ul>
</div>
<div class="section" id="id37">
<h4>Example<a class="headerlink" href="#id37" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst1</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
<span class="n">PlaceRight</span> <span class="p">(</span> <span class="n">myInst2</span><span class="p">,</span> <span class="n">NOSYM</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id38">
<h4>Errors<a class="headerlink" href="#id38" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
The instance must be instanciated in order to be placed.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code>
One can not place an instance twice</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceRight</span> <span class="pre">:</span> <span class="pre">no</span> <span class="pre">previous</span> <span class="pre">instance.</span></code>
One can use <code class="docutils literal"><span class="pre">PlaceRight</span></code> only if a reference instance exist. Use
a <code class="docutils literal"><span class="pre">Place</span></code> call before.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceRight</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement</span> <span class="pre">type.</span></code>
The symetry given as argument is not correct.</li>
</ul>
</div>
</div>
<div class="section" id="placeleft">
<h3>PlaceLeft<a class="headerlink" href="#placeleft" title="Permalink to this headline"></a></h3>
<div class="section" id="id39">
<h4>Name<a class="headerlink" href="#id39" title="Permalink to this headline"></a></h4>
<p>PlaceLeft Places an instance at the left of the “reference instance”</p>
</div>
<div class="section" id="id40">
<h4>Synopsys<a class="headerlink" href="#id40" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceLeft</span> <span class="p">(</span> <span class="n">ins</span><span class="p">,</span> <span class="n">sym</span><span class="p">,</span> <span class="n">offsetX</span><span class="p">,</span> <span class="n">offsetY</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id41">
<h4>Description<a class="headerlink" href="#id41" title="Permalink to this headline"></a></h4>
<p>Placement of an instance.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code> in order
to use the <code class="docutils literal"><span class="pre">PlaceTop</span></code> function.</p>
<p>The bottom right corner of the abutment box of the instance is placed,
after beeing symetrized and/or rotated, toward the bottom left corner of
the abutment box of the “reference instance”. The newly placed instance
becomes the “reference instance”.</p>
</div>
<div class="section" id="id42">
<h4>Parameters<a class="headerlink" href="#id42" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place.</li>
<li><code class="docutils literal"><span class="pre">sym</span></code> : Geometrical operation to be performed on the instance
before beeing placed.
The <code class="docutils literal"><span class="pre">sym</span></code> argument can take eight legal values :<ul>
<li><code class="docutils literal"><span class="pre">NOSYM</span></code> : no geometrical operation is performed</li>
<li><code class="docutils literal"><span class="pre">SYM_Y</span></code> : Y becomes -Y, that means toward X axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYM_X</span></code> : X becomes -X, that means toward Y axe symetry</li>
<li><code class="docutils literal"><span class="pre">SYMXY</span></code> : X becomes -X, Y becomes -Y</li>
<li><code class="docutils literal"><span class="pre">ROT_P</span></code> : a positive 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">ROT_M</span></code> : a negative 90 degrees rotation takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RP</span></code> : Y becomes -Y, and then a positive 90 degrees rotation
takes place</li>
<li><code class="docutils literal"><span class="pre">SY_RM</span></code> : Y becomes -Y, and then a negative 90 degrees rotation
takes place</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">offsetX</span></code> (optionnal) : An offset is put horizontally. The value
given as argument must be a multiple of PITCH</li>
<li><code class="docutils literal"><span class="pre">offsetY</span></code> (optionnal) : An offset is put vertically. The value
given as argument must be a multiple of SLICE</li>
</ul>
</div>
<div class="section" id="id43">
<h4>Example<a class="headerlink" href="#id43" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst1</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
<span class="n">PlaceLeft</span> <span class="p">(</span> <span class="n">myInst2</span><span class="p">,</span> <span class="n">NOSYM</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id44">
<h4>Errors<a class="headerlink" href="#id44" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
The instance must be instanciated in order to be placed.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code>
One can not place an instance twice</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceLeft</span> <span class="pre">:</span> <span class="pre">no</span> <span class="pre">previous</span> <span class="pre">instance.</span></code>
One can use <code class="docutils literal"><span class="pre">PlaceLeft</span></code> only if a reference instance exist. Use a
<code class="docutils literal"><span class="pre">Place</span></code> call before.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceLeft</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">for</span> <span class="pre">placement</span> <span class="pre">type.</span></code>
The symetry given as argument is not correct.</li>
</ul>
</div>
</div>
<div class="section" id="setrefins">
<h3>SetRefIns<a class="headerlink" href="#setrefins" title="Permalink to this headline"></a></h3>
<div class="section" id="id45">
<h4>Name<a class="headerlink" href="#id45" title="Permalink to this headline"></a></h4>
<p>SetRefIns Defines the new “reference instance” for placement</p>
</div>
<div class="section" id="id46">
<h4>Synopsys<a class="headerlink" href="#id46" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">SetRefIns</span> <span class="p">(</span> <span class="n">ins</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id47">
<h4>Description<a class="headerlink" href="#id47" title="Permalink to this headline"></a></h4>
<p>This function defines the new “reference instance”, used as starting
point in the relative placement functions.
Its regarding the abutmentbox of the instance <code class="docutils literal"><span class="pre">ins</span></code> that the next
instance is going to be placed, if using the appropriate functions.</p>
<p>Note that the more recently placed instance becomes automaticaly the
“reference instance”, if SetRefIns isnt called.</p>
</div>
<div class="section" id="id48">
<h4>Parameters<a class="headerlink" href="#id48" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : defines the new “reference instance”</li>
</ul>
</div>
<div class="section" id="id49">
<h4>Example<a class="headerlink" href="#id49" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Place</span> <span class="p">(</span> <span class="n">myInst1</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span> <span class="p">)</span>
<span class="n">PlaceRight</span> <span class="p">(</span> <span class="n">myInst2</span><span class="p">,</span> <span class="n">NOSYM</span> <span class="p">)</span>
<span class="n">SetRefIns</span> <span class="p">(</span> <span class="n">myInst1</span> <span class="p">)</span>
<span class="n">PlaceTop</span> <span class="p">(</span> <span class="n">myInst3</span><span class="p">,</span> <span class="n">SYM_Y</span> <span class="p">)</span>
</pre></div>
</div>
<p><code class="docutils literal"><span class="pre">myInst3</span></code> is on top of <code class="docutils literal"><span class="pre">myInst1</span></code> instead of <code class="docutils literal"><span class="pre">myInst2</span></code>.</p>
</div>
<div class="section" id="id50">
<h4>Errors<a class="headerlink" href="#id50" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">SetRefIns</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
If the instance has not been instanciated, it is impossible do to
any placement from it.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">SetRefIns</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">...is</span> <span class="pre">not</span> <span class="pre">placed.</span></code>
If the instance has not been placed, it is impossible do to any
placement from it.</li>
</ul>
</div>
</div>
<div class="section" id="defab">
<h3>DefAb<a class="headerlink" href="#defab" title="Permalink to this headline"></a></h3>
<div class="section" id="id51">
<h4>Name<a class="headerlink" href="#id51" title="Permalink to this headline"></a></h4>
<p>DefAb Creates the abutment box of the current cell</p>
</div>
<div class="section" id="id52">
<h4>Synopsys<a class="headerlink" href="#id52" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">DefAb</span> <span class="p">(</span> <span class="n">point1</span><span class="p">,</span> <span class="n">point2</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id53">
<h4>Description<a class="headerlink" href="#id53" title="Permalink to this headline"></a></h4>
<p>This function creates the abutment box of the current cell.</p>
<p>Note that one does not have to call this function before saving in order
to create the abutment box. The abutment box is created nevertheless
(given to placed instances). This function is usefull if one wants to
create an abutment before placing the instances.</p>
</div>
<div class="section" id="id54">
<h4>Parameters<a class="headerlink" href="#id54" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">point1</span></code> : coordinates of the bottom left corner of the created
abutment box.</li>
<li><code class="docutils literal"><span class="pre">point2</span></code> : coordinates of the top right corner of the created
abutment box.</li>
</ul>
</div>
<div class="section" id="id55">
<h4>Example<a class="headerlink" href="#id55" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">DefAb</span> <span class="p">(</span> <span class="n">XY</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">XY</span><span class="p">(</span><span class="mi">500</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span> <span class="p">)</span>
<span class="n">Place</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">inst</span><span class="p">,</span> <span class="n">NOSYM</span><span class="p">,</span> <span class="n">XY</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id56">
<h4>Errors<a class="headerlink" href="#id56" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">DefAb</span> <span class="pre">:</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">box</span> <span class="pre">already</span> <span class="pre">exists.</span></code>
`` Maybe you should use ResizeAb function.``
One has called DefAb but the current cell already has an abutment
box.
In order to modify the current abutment box, the function to call
is ResizeAb.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">DefAb</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument,</span></code>
`` the coordinates must be put in a XY object.``
The type of one of the arguments is not correct. Coordinates must
be put in a <code class="docutils literal"><span class="pre">XY</span></code> object.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">DefAb</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">Coordinates</span> <span class="pre">of</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">Box</span> <span class="pre">in</span> <span class="pre">y</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">multiple</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">slice.</span></code>
<code class="docutils literal"><span class="pre">Coordinates</span> <span class="pre">of</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">Box</span> <span class="pre">in</span> <span class="pre">x</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">multiple</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">pitch.</span></code>
One has called DefAb with non authorized values.</li>
</ul>
</div>
</div>
<div class="section" id="resizeab">
<h3>ResizeAb<a class="headerlink" href="#resizeab" title="Permalink to this headline"></a></h3>
<div class="section" id="id57">
<h4>Name<a class="headerlink" href="#id57" title="Permalink to this headline"></a></h4>
<p>ResizeAb Modifies the abutment box of the current cell</p>
</div>
<div class="section" id="id58">
<h4>Synopsys<a class="headerlink" href="#id58" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">ResizeAb</span> <span class="p">(</span> <span class="n">dx1</span><span class="p">,</span> <span class="n">dy1</span><span class="p">,</span> <span class="n">dx2</span><span class="p">,</span> <span class="n">dy2</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id59">
<h4>Description<a class="headerlink" href="#id59" title="Permalink to this headline"></a></h4>
<p>This function modifies the abutment box of the current cell.
The coordinates of the abutment box are the coordinates of the envelop
of the abutment boxes of each instance plus the delta values given as
argument.</p>
<p>Note that one can not call this function in order to create the abutment
box. This fonction only modifies the already created abutment box.</p>
</div>
<div class="section" id="id60">
<h4>Parameters<a class="headerlink" href="#id60" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">(dx1,</span> <span class="pre">dy1)</span></code> : Values to be substracted to the lower left corner of
the previous abutment box.</li>
<li><code class="docutils literal"><span class="pre">(dx2,</span> <span class="pre">dy2)</span></code> : Values to be added to the upper right corner of the
previous abutment box.</li>
</ul>
<p>The Values are used as follow :</p>
<p><img alt="resize" src="../_images/resizeAb.png" /></p>
</div>
<div class="section" id="id61">
<h4>Example<a class="headerlink" href="#id61" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="o">%</span> <span class="n">Expansion</span> <span class="n">of</span> <span class="n">the</span> <span class="n">abutment</span> <span class="n">box</span> <span class="n">at</span> <span class="n">the</span> <span class="n">top</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">bottom</span>
<span class="n">ResizeAb</span> <span class="p">(</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">100</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id62">
<h4>Errors<a class="headerlink" href="#id62" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li>`` [Stratus ERROR] ResizeAb :``
<code class="docutils literal"><span class="pre">Coordinates</span> <span class="pre">of</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">Box</span> <span class="pre">in</span> <span class="pre">y</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">multiple</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">slice.</span></code>
<code class="docutils literal"><span class="pre">Coordinates</span> <span class="pre">of</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">Box</span> <span class="pre">in</span> <span class="pre">x</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">multiple</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">pitch.</span></code>
One has called ResizeAb with non authorized values</li>
<li>`` [Stratus ERROR] ResizeAb :``
<code class="docutils literal"><span class="pre">one</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">values</span> <span class="pre">of</span> <span class="pre">dx1</span> <span class="pre">or</span> <span class="pre">dx2</span> <span class="pre">(dy1</span> <span class="pre">or</span> <span class="pre">dy2)</span>&#160; <span class="pre">is</span> <span class="pre">incompatible</span> <span class="pre">with</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">size</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">abutment</span> <span class="pre">box.</span></code>
<code class="docutils literal"><span class="pre">Coordinates</span> <span class="pre">of</span> <span class="pre">an</span> <span class="pre">abutment</span> <span class="pre">Box</span> <span class="pre">in</span> <span class="pre">x</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">multiple</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">pitch.</span></code>
One has called ResizeAb with a value which deteriorates the
abtument box</li>
</ul>
</div>
</div>
</div>
<div class="section" id="patterns-generation-extension">
<h2>Patterns generation extension<a class="headerlink" href="#patterns-generation-extension" title="Permalink to this headline"></a></h2>
<div class="section" id="description-of-the-stimuli">
<h3>Description of the stimuli<a class="headerlink" href="#description-of-the-stimuli" title="Permalink to this headline"></a></h3>
<p>The stimuli used for the simulation are described in a <code class="docutils literal"><span class="pre">Stimuli</span></code>
method. This method is a Python function generator that is automatically
called by the <code class="docutils literal"><span class="pre">Testbench</span></code> method to generate all the stimuli. As a
Python function generator, the <code class="docutils literal"><span class="pre">yield</span></code> instruction have to be used at
the end of each stimuli computation.</p>
<div class="section" id="affect-value-to-signals">
<h4>Affect value to signals<a class="headerlink" href="#affect-value-to-signals" title="Permalink to this headline"></a></h4>
<p>The method <code class="docutils literal"><span class="pre">affect</span></code> permits to affect a value to a given signal as
follow</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">_stim</span><span class="o">.</span><span class="n">affect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Ck</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="add-stimuli">
<h4>Add stimuli<a class="headerlink" href="#add-stimuli" title="Permalink to this headline"></a></h4>
<p>The method <code class="docutils literal"><span class="pre">add</span></code> permits to finish a step of simulation by add all the
values to the current stimuli</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="bp">self</span><span class="o">.</span><span class="n">_stim</span><span class="o">.</span><span class="n">add</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="place-and-route">
<h2>Place and Route<a class="headerlink" href="#place-and-route" title="Permalink to this headline"></a></h2>
<div class="section" id="placesegment">
<h3>PlaceSegment<a class="headerlink" href="#placesegment" title="Permalink to this headline"></a></h3>
<div class="section" id="id63">
<h4>Name<a class="headerlink" href="#id63" title="Permalink to this headline"></a></h4>
<p>PlaceSegment Places a segment</p>
</div>
<div class="section" id="id64">
<h4>Synopsys<a class="headerlink" href="#id64" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceSegment</span> <span class="p">(</span> <span class="n">net</span><span class="p">,</span> <span class="n">layer</span><span class="p">,</span> <span class="n">point1</span><span class="p">,</span> <span class="n">point2</span><span class="p">,</span> <span class="n">width</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id65">
<h4>Description<a class="headerlink" href="#id65" title="Permalink to this headline"></a></h4>
<p>Placement of a segment.
The segment is created between <code class="docutils literal"><span class="pre">point1</span></code> and <code class="docutils literal"><span class="pre">point2</span></code> on the layer
<code class="docutils literal"><span class="pre">layer</span></code> and with width <code class="docutils literal"><span class="pre">width</span></code>. It belongs to the net <code class="docutils literal"><span class="pre">net</span></code>.
Note that the segment must be horizontal or vertival.</p>
</div>
<div class="section" id="id66">
<h4>Parameters<a class="headerlink" href="#id66" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">net</span></code> : Net which the segment belongs to</li>
<li><code class="docutils literal"><span class="pre">layer</span></code> : Layer of the segment.
The <code class="docutils literal"><span class="pre">layer</span></code> argument is a string wich can take different values,
thanks to the technology (file described in HUR_TECHNO_NAME)<ul>
<li>NWELL, PWELL, ptie, ntie, pdif, ndif, ntrans, ptrans, poly, ALU1,
ALU2, ALU3, ALU4, ALU5, ALU6, VIA1, VIA2, VIA3, VIA4, VIA5, TEXT,
UNDEF, SPL1, TALU1, TALU2, TALU3, TALU4, TALU5, TALU6, POLY, NTIE,
PTIE, NDIF, PDIF, PTRANS, NTRANS, CALU1, CALU2, CALU3, CALU4,
CALU5, CALU6, CONT_POLY, CONT_DIF_N, CONT_DIF_P,
CONT_BODY_N, CONT_BODY_P, via12, via23, via34, via45, via56,
via24, via25, via26, via35, via36, via46, CONT_TURN1,
CONT_TURN2, CONT_TURN3, CONT_TURN4, CONT_TURN5, CONT_TURN6</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">point1</span></code>, <code class="docutils literal"><span class="pre">point2</span></code> : The segment is created between those two
points</li>
</ul>
</div>
<div class="section" id="id67">
<h4>Example<a class="headerlink" href="#id67" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceSegment</span> <span class="p">(</span> <span class="n">myNet</span><span class="p">,</span> <span class="s2">&quot;ALU3&quot;</span><span class="p">,</span> <span class="n">XY</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">XY</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">),</span> <span class="mi">2</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id68">
<h4>Errors<a class="headerlink" href="#id68" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceSegment</span> <span class="pre">:</span> <span class="pre">Argument</span> <span class="pre">layer</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceSegment</span> <span class="pre">:</span> <span class="pre">Wrong</span> <span class="pre">argument,</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">coordinates</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">segment</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">in</span> <span class="pre">XY</span> <span class="pre">objects.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceSegment</span> <span class="pre">:</span> <span class="pre">Segments</span> <span class="pre">are</span> <span class="pre">vertical</span> <span class="pre">or</span> <span class="pre">horizontal.</span></code>
The two references given as argument do not describe a vertical or
horizontal segment. Wether coordinate x or y of the references must
be identical.</li>
</ul>
<p>]*CopyUpSegment*CopyUpSegmentseccopy</p>
</div>
</div>
<div class="section" id="placecontact">
<h3>PlaceContact<a class="headerlink" href="#placecontact" title="Permalink to this headline"></a></h3>
<div class="section" id="id69">
<h4>Name<a class="headerlink" href="#id69" title="Permalink to this headline"></a></h4>
<p>PlaceContact Places a contact</p>
</div>
<div class="section" id="id70">
<h4>Synopsys<a class="headerlink" href="#id70" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceContact</span> <span class="p">(</span> <span class="n">net</span><span class="p">,</span> <span class="n">layer</span><span class="p">,</span> <span class="n">point</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id71">
<h4>Description<a class="headerlink" href="#id71" title="Permalink to this headline"></a></h4>
<p>Placement of a contact.
The contact is located at the coodinates of <code class="docutils literal"><span class="pre">point</span></code>, on the layer
<code class="docutils literal"><span class="pre">layer</span></code> and has a size of 1 per 1. It belongs to the net <code class="docutils literal"><span class="pre">net</span></code>.
Note that the segment must be horizontal or vertival.</p>
</div>
<div class="section" id="id72">
<h4>Parameters<a class="headerlink" href="#id72" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">net</span></code> : Net which the contact belongs to</li>
<li><code class="docutils literal"><span class="pre">layer</span></code> : Layer of the segment.
The <code class="docutils literal"><span class="pre">layer</span></code> argument is a string wich can take different values,
thanks to the technology (file described in HUR_TECHNO_NAME)<ul>
<li>NWELL, PWELL, ptie, ntie, pdif, ndif, ntrans, ptrans, poly, ALU1,
ALU2, ALU3, ALU4, ALU5, ALU6, VIA1, VIA2, VIA3, VIA4, VIA5, TEXT,
UNDEF, SPL1, TALU1, TALU2, TALU3, TALU4, TALU5, TALU6, POLY, NTIE,
PTIE, NDIF, PDIF, PTRANS, NTRANS, CALU1, CALU2, CALU3, CALU4,
CALU5, CALU6, CONT_POLY, CONT_DIF_N, CONT_DIF_P,
CONT_BODY_N, CONT_BODY_P, via12, via23, via34, via45, via56,
via24, via25, via26, via35, via36, via46, CONT_TURN1,
CONT_TURN2, CONT_TURN3, CONT_TURN4, CONT_TURN5, CONT_TURN6</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">point</span></code> : Coodinates of the contact</li>
<li><code class="docutils literal"><span class="pre">width</span></code> : Width of the contact</li>
<li><code class="docutils literal"><span class="pre">height</span></code> : Height of the contact</li>
</ul>
</div>
<div class="section" id="id73">
<h4>Example<a class="headerlink" href="#id73" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceContact</span> <span class="p">(</span> <span class="n">myNet</span><span class="p">,</span> <span class="s2">&quot;ALU2&quot;</span><span class="p">,</span> <span class="n">XY</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id74">
<h4>Errors<a class="headerlink" href="#id74" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceContact</span> <span class="pre">:</span> <span class="pre">Argument</span> <span class="pre">layer</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceContact</span> <span class="pre">:</span> <span class="pre">Wrong</span> <span class="pre">argument,</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">coordinates</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">contact</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">in</span> <span class="pre">a</span> <span class="pre">XY</span> <span class="pre">object.</span></code></li>
</ul>
</div>
</div>
<div class="section" id="placepin">
<h3>PlacePin<a class="headerlink" href="#placepin" title="Permalink to this headline"></a></h3>
<div class="section" id="id75">
<h4>Name<a class="headerlink" href="#id75" title="Permalink to this headline"></a></h4>
<p>PlacePin Places a pin</p>
</div>
<div class="section" id="id76">
<h4>Synopsys<a class="headerlink" href="#id76" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlacePin</span> <span class="p">(</span> <span class="n">net</span><span class="p">,</span> <span class="n">layer</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="n">point</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id77">
<h4>Description<a class="headerlink" href="#id77" title="Permalink to this headline"></a></h4>
<p>Placement of a pin.
The pin is located at the coodinates of <code class="docutils literal"><span class="pre">point</span></code>, on the layer
<code class="docutils literal"><span class="pre">layer</span></code>, has a a direction of <code class="docutils literal"><span class="pre">direction</span></code> and size of 1 per 1. It
belongs to the net <code class="docutils literal"><span class="pre">net</span></code>.</p>
</div>
<div class="section" id="id78">
<h4>Parameters<a class="headerlink" href="#id78" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">net</span></code> : Net which the pin belongs to</li>
<li><code class="docutils literal"><span class="pre">layer</span></code> : Layer of the segment.
The <code class="docutils literal"><span class="pre">layer</span></code> argument is a string wich can take different values,
thanks to the technology (file described in HUR_TECHNO_NAME)<ul>
<li>NWELL, PWELL, ptie, ntie, pdif, ndif, ntrans, ptrans, poly, ALU1,
ALU2, ALU3, ALU4, ALU5, ALU6, VIA1, VIA2, VIA3, VIA4, VIA5, TEXT,
UNDEF, SPL1, TALU1, TALU2, TALU3, TALU4, TALU5, TALU6, POLY, NTIE,
PTIE, NDIF, PDIF, PTRANS, NTRANS, CALU1, CALU2, CALU3, CALU4,
CALU5, CALU6, CONT_POLY, CONT_DIF_N, CONT_DIF_P,
CONT_BODY_N, CONT_BODY_P, via12, via23, via34, via45, via56,
via24, via25, via26, via35, via36, via46, CONT_TURN1,
CONT_TURN2, CONT_TURN3, CONT_TURN4, CONT_TURN5, CONT_TURN6</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">direction</span></code> : Direction of the pin<ul>
<li>UNDEFINED, NORTH, SOUTH, EAST, WEST</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">point</span></code> : Coodinates of the pin</li>
<li><code class="docutils literal"><span class="pre">width</span></code> : Width of the pin</li>
<li><code class="docutils literal"><span class="pre">height</span></code> : Height of the pin</li>
</ul>
</div>
<div class="section" id="id79">
<h4>Example<a class="headerlink" href="#id79" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlacePin</span> <span class="p">(</span> <span class="n">myNet</span><span class="p">,</span> <span class="s2">&quot;ALU2&quot;</span><span class="p">,</span> <span class="n">NORTH</span><span class="p">,</span> <span class="n">XY</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id80">
<h4>Errors<a class="headerlink" href="#id80" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlacePin</span> <span class="pre">:</span> <span class="pre">Argument</span> <span class="pre">layer</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlacePin</span> <span class="pre">:</span> <span class="pre">Illegal</span> <span class="pre">pin</span> <span class="pre">access</span> <span class="pre">direction.</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">values</span> <span class="pre">are</span> <span class="pre">:</span> <span class="pre">UNDEFINED,</span> <span class="pre">NORTH,</span> <span class="pre">SOUTH,</span> <span class="pre">EAST,</span> <span class="pre">WEST.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlacePin</span> <span class="pre">:</span> <span class="pre">Wrong</span> <span class="pre">argument,</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">coordinates</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">pin</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">in</span> <span class="pre">a</span> <span class="pre">XY</span> <span class="pre">object.</span></code></li>
</ul>
</div>
</div>
<div class="section" id="placeref">
<h3>PlaceRef<a class="headerlink" href="#placeref" title="Permalink to this headline"></a></h3>
<div class="section" id="id81">
<h4>Name<a class="headerlink" href="#id81" title="Permalink to this headline"></a></h4>
<p>PlaceRef Places a reference</p>
</div>
<div class="section" id="id82">
<h4>Synopsys<a class="headerlink" href="#id82" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceRef</span> <span class="p">(</span> <span class="n">point</span><span class="p">,</span> <span class="n">name</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id83">
<h4>Description<a class="headerlink" href="#id83" title="Permalink to this headline"></a></h4>
<p>Placement of a reference.
The reference is located at the coordinates of <code class="docutils literal"><span class="pre">point</span></code>, with name
<code class="docutils literal"><span class="pre">name</span></code>.</p>
</div>
<div class="section" id="id84">
<h4>Parameters<a class="headerlink" href="#id84" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">point</span></code> : Coodinates of the reference</li>
<li><code class="docutils literal"><span class="pre">name</span></code> : Name of the reference</li>
</ul>
</div>
<div class="section" id="id85">
<h4>Example<a class="headerlink" href="#id85" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceRef</span> <span class="p">(</span> <span class="n">XY</span> <span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="s2">&quot;myref&quot;</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id86">
<h4>Errors<a class="headerlink" href="#id86" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceRef</span> <span class="pre">:</span> <span class="pre">Wrong</span> <span class="pre">argument,</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">coordinates</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">reference</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">in</span> <span class="pre">a</span> <span class="pre">XY</span> <span class="pre">object.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceRef</span> <span class="pre">:</span> <span class="pre">Argument</span> <span class="pre">layer</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
</ul>
</div>
</div>
<div class="section" id="getrefxy">
<h3>GetRefXY<a class="headerlink" href="#getrefxy" title="Permalink to this headline"></a></h3>
<div class="section" id="id87">
<h4>Name<a class="headerlink" href="#id87" title="Permalink to this headline"></a></h4>
<p>GetRefXY Returns the coordinates of a reference</p>
</div>
<div class="section" id="id88">
<h4>Synopsys<a class="headerlink" href="#id88" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">GetRefXY</span> <span class="p">(</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">refname</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id89">
<h4>Description<a class="headerlink" href="#id89" title="Permalink to this headline"></a></h4>
<p>Computation of coordinates.
The point returned (object XY) represents the location of the
reference of name <code class="docutils literal"><span class="pre">refname</span></code> within the coodinates system of the top
cell. The reference <code class="docutils literal"><span class="pre">refname</span></code> is instanciated in an instance found
thanks to <code class="docutils literal"><span class="pre">pathname</span></code> which represents an ordered sequence of instances
through the hierarchy.</p>
</div>
<div class="section" id="id90">
<h4>Parameters<a class="headerlink" href="#id90" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">pathname</span></code> : The path in order to obtain, from the top cell, the
instance the reference <code class="docutils literal"><span class="pre">refname</span></code> belongs to</li>
<li><code class="docutils literal"><span class="pre">refname</span></code> : The name of the reference</li>
</ul>
</div>
<div class="section" id="id91">
<h4>Example<a class="headerlink" href="#id91" title="Permalink to this headline"></a></h4>
<p>The cell which is being created (the top cell), instanciates a generator
with instance name “my_dpgen_and2”. This generator instanciates an
instance called “cell_1” which the reference “i0_20” belongs to.</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">GetRefXY</span> <span class="p">(</span> <span class="s2">&quot;my_dpgen_and2.cell_1&quot;</span><span class="p">,</span> <span class="s2">&quot;i0_20&quot;</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id92">
<h4>Errors<a class="headerlink" href="#id92" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">GetRefXY</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">instance's</span> <span class="pre">path</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">with</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">GetRefXY</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">reference</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">done</span> <span class="pre">with</span> <span class="pre">it's</span> <span class="pre">name</span> <span class="pre">:</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">GetRefXY</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">No</span> <span class="pre">reference</span> <span class="pre">found</span> <span class="pre">with</span> <span class="pre">name</span> <span class="pre">...</span> <span class="pre">in</span> <span class="pre">masterCell</span> <span class="pre">...</span></code></li>
</ul>
</div>
</div>
<div class="section" id="copyupsegment">
<h3>CopyUpSegment<a class="headerlink" href="#copyupsegment" title="Permalink to this headline"></a></h3>
<div class="section" id="id93">
<h4>Name<a class="headerlink" href="#id93" title="Permalink to this headline"></a></h4>
<p>CopyUpSegment Copies the segment of an instance in the current cell</p>
</div>
<div class="section" id="id94">
<h4>Synopsys<a class="headerlink" href="#id94" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">CopyUpSegment</span> <span class="p">(</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">netname</span><span class="p">,</span> <span class="n">newnet</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id95">
<h4>Description<a class="headerlink" href="#id95" title="Permalink to this headline"></a></h4>
<p>Duplication of a segment.
The segment is created with the same cordinates and layer as the
segment corresponding to the net <code class="docutils literal"><span class="pre">netname</span></code> in the instance found
thanks to <code class="docutils literal"><span class="pre">pathname</span></code>. It belongs to the net <code class="docutils literal"><span class="pre">newnet</span></code>.
Note that if several segments correspond to the net, they are all
going to be copied.</p>
</div>
<div class="section" id="id96">
<h4>Parameters<a class="headerlink" href="#id96" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">pathname</span></code> : The path in order to obtain, from the top cell, the
instance the net <code class="docutils literal"><span class="pre">netname</span></code> belongs to</li>
<li><code class="docutils literal"><span class="pre">netname</span></code> : The name of the net which the segment belongs to</li>
<li><code class="docutils literal"><span class="pre">net</span></code> : The net which the top cell segment os going to belong to</li>
</ul>
</div>
<div class="section" id="id97">
<h4>Example<a class="headerlink" href="#id97" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">CopuUpSegment</span> <span class="p">(</span> <span class="s2">&quot;my_dpgen_and2.cell_1&quot;</span><span class="p">,</span> <span class="s2">&quot;i0&quot;</span><span class="p">,</span> <span class="n">myNet</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id98">
<h4>Errors<a class="headerlink" href="#id98" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">CopyUpSegment</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">instance's</span> <span class="pre">path</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">put</span> <span class="pre">with</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">CopyUpSegment</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">segment</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">done</span> <span class="pre">with</span> <span class="pre">it's</span> <span class="pre">name</span> <span class="pre">:</span> <span class="pre">a</span> <span class="pre">string.</span></code></li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">CopyUpSegment</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">No</span> <span class="pre">net</span> <span class="pre">found</span> <span class="pre">with</span> <span class="pre">name</span> <span class="pre">...</span> <span class="pre">in</span> <span class="pre">masterCell</span> <span class="pre">...</span></code>
There is no net with name <code class="docutils literal"><span class="pre">netname</span></code> in the instance found thanks
to the path <code class="docutils literal"><span class="pre">pathname</span></code>.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">CopyUpSegment</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">No</span> <span class="pre">segment</span> <span class="pre">found</span> <span class="pre">with</span> <span class="pre">net</span> <span class="pre">...</span> <span class="pre">in</span> <span class="pre">masterCell</span> <span class="pre">...</span></code>
The net with name <code class="docutils literal"><span class="pre">netname</span></code> has no segment. So the copy of
segment can not be done.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">CopyUpSegment</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">segment</span> <span class="pre">of</span> <span class="pre">net</span> <span class="pre">...</span> <span class="pre">are</span> <span class="pre">not</span> <span class="pre">of</span> <span class="pre">type</span> <span class="pre">CALU.</span></code>
In other words, the net is not an external net. The copy can be
done only with external nets.</li>
</ul>
</div>
</div>
<div class="section" id="placecentric">
<h3>PlaceCentric<a class="headerlink" href="#placecentric" title="Permalink to this headline"></a></h3>
<div class="section" id="id99">
<h4>Name<a class="headerlink" href="#id99" title="Permalink to this headline"></a></h4>
<p>PlaceCentric Placement of an instance in the middle of an abutment box</p>
</div>
<div class="section" id="id100">
<h4>Synopsys<a class="headerlink" href="#id100" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceCentric</span> <span class="p">(</span> <span class="n">ins</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id101">
<h4>Description<a class="headerlink" href="#id101" title="Permalink to this headline"></a></h4>
<p>This function places an instance in the middle of and abutment box.
The instance has to be instantiated in the method <code class="docutils literal"><span class="pre">Netlist</span></code> in order
to use this function.</p>
</div>
<div class="section" id="id102">
<h4>Parameters<a class="headerlink" href="#id102" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">ins</span></code> : Instance to place</li>
</ul>
</div>
<div class="section" id="id103">
<h4>Errors<a class="headerlink" href="#id103" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceCentric:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">exist.</span></code>
The instance must be instanciated in order to be placed.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PlaceCentric</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">instance's</span> <span class="pre">size</span> <span class="pre">is</span> <span class="pre">greater</span> <span class="pre">than</span> <span class="pre">this</span> <span class="pre">model.</span></code>
The instance must fit in the abutment box. The abutment box may not
be big enough.</li>
</ul>
</div>
</div>
<div class="section" id="placeglu">
<h3>PlaceGlu<a class="headerlink" href="#placeglu" title="Permalink to this headline"></a></h3>
<div class="section" id="id104">
<h4>Name<a class="headerlink" href="#id104" title="Permalink to this headline"></a></h4>
<p>PlaceGlue Automatic placement of non placed instances</p>
</div>
<div class="section" id="id105">
<h4>Synopsys<a class="headerlink" href="#id105" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PlaceGlue</span> <span class="p">(</span> <span class="n">cell</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id106">
<h4>Description<a class="headerlink" href="#id106" title="Permalink to this headline"></a></h4>
<p>This function places, thanks to the automatic placer Mistral of
Coriolis, all the non placed instances of the cell.</p>
</div>
<div class="section" id="id107">
<h4>Parameters<a class="headerlink" href="#id107" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">cell</span></code> : the cell which the fonction is applied to</li>
</ul>
</div>
</div>
<div class="section" id="fillcell">
<h3>FillCell<a class="headerlink" href="#fillcell" title="Permalink to this headline"></a></h3>
<div class="section" id="id108">
<h4>Name<a class="headerlink" href="#id108" title="Permalink to this headline"></a></h4>
<p>FillCell Automatic placement of ties.</p>
</div>
<div class="section" id="id109">
<h4>Synopsys<a class="headerlink" href="#id109" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">FillCell</span> <span class="p">(</span> <span class="n">cell</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id110">
<h4>Description<a class="headerlink" href="#id110" title="Permalink to this headline"></a></h4>
<p>This function places automatically ties.</p>
</div>
<div class="section" id="id111">
<h4>Parameters<a class="headerlink" href="#id111" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">cell</span></code> : the cell which the fonction is applied to</li>
</ul>
</div>
<div class="section" id="id112">
<h4>Errors<a class="headerlink" href="#id112" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">FillCell</span> <span class="pre">:</span> <span class="pre">Given</span> <span class="pre">cell</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
The argument is wrong. Check if one has created the cell correctly.</li>
</ul>
</div>
</div>
<div class="section" id="pads">
<h3>Pads<a class="headerlink" href="#pads" title="Permalink to this headline"></a></h3>
<div class="section" id="id113">
<h4>Name<a class="headerlink" href="#id113" title="Permalink to this headline"></a></h4>
<p>PadNorth, PadSouth, PadEast, PasWest Placement of pads at the
periphery of the cell</p>
</div>
<div class="section" id="id114">
<h4>Synopsys<a class="headerlink" href="#id114" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PadNorth</span> <span class="p">(</span> <span class="n">args</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id115">
<h4>Description<a class="headerlink" href="#id115" title="Permalink to this headline"></a></h4>
<p>These functions place the pads given as arguments at the given side of
the cell (PadNorth : up north, PadSouth : down south ...). Pads are
placed from bottom to top for PadNorth and PadSouth and from left to
right for PadWest and PasEast.</p>
</div>
<div class="section" id="id116">
<h4>Parameters<a class="headerlink" href="#id116" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">args</span></code> : List of pads to be placed</li>
</ul>
</div>
<div class="section" id="id117">
<h4>Example<a class="headerlink" href="#id117" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PadSouth</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_cin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_np</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_ng</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_vssick0</span>
<span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_vddeck0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_vsseck1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_vddeck1</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_cout</span>
<span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_y</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_y</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">p_y</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id118">
<h4>Errors<a class="headerlink" href="#id118" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PadNorth</span> <span class="pre">:</span> <span class="pre">not</span> <span class="pre">enough</span> <span class="pre">space</span> <span class="pre">for</span> <span class="pre">all</span> <span class="pre">pads.</span></code>
The abutment box is not big enough in order to place all the pads.
Maybe one could put pads on other faces of the cell.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PadNorth</span> <span class="pre">:</span> <span class="pre">one</span> <span class="pre">instance</span> <span class="pre">doesn't</span> <span class="pre">exist.</span></code>
One of the pads given as arguments does not exist</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PadNorth</span> <span class="pre">:</span> <span class="pre">one</span> <span class="pre">argument</span> <span class="pre">is</span> <span class="pre">not</span> <span class="pre">an</span> <span class="pre">instance.</span></code>
One of the pads is not one of the pads of the cell.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PadNorth</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">instance</span> <span class="pre">ins</span> <span class="pre">is</span> <span class="pre">already</span> <span class="pre">placed.</span></code>
One is trying to place a pad twice.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PadNorth</span> <span class="pre">:</span> <span class="pre">pad</span> <span class="pre">ins</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">closer</span> <span class="pre">to</span> <span class="pre">the</span> <span class="pre">center.</span></code>
The pad name ins must be put closer to the center in order to route
the cell</li>
</ul>
</div>
</div>
<div class="section" id="alimentation-rails">
<h3>Alimentation rails<a class="headerlink" href="#alimentation-rails" title="Permalink to this headline"></a></h3>
<div class="section" id="id119">
<h4>Name<a class="headerlink" href="#id119" title="Permalink to this headline"></a></h4>
<p>AlimVerticalRail, AlimHorizontalRail Placement of a
vertical/horizontal alimentation call back</p>
</div>
<div class="section" id="id120">
<h4>Synopsys<a class="headerlink" href="#id120" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">AlimVerticalRail</span> <span class="p">(</span> <span class="n">nb</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id121">
<h4>Description<a class="headerlink" href="#id121" title="Permalink to this headline"></a></h4>
<p>These functions place a vertical/horizontal alimentation call back. Its
position is given by the parameter given.</p>
</div>
<div class="section" id="id122">
<h4>Parameters<a class="headerlink" href="#id122" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">nb</span></code> : coordinate of the rail<ul>
<li>For AlimVerticalRail, <code class="docutils literal"><span class="pre">nb</span></code> is in pitches i.e. 5 lambdas</li>
<li>For AlimHorizontalRail, <code class="docutils literal"><span class="pre">nb</span></code> is in slices i.e. 50 lambdas</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id123">
<h4>Example<a class="headerlink" href="#id123" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">AlimVerticalRail</span> <span class="p">(</span> <span class="mi">50</span> <span class="p">)</span>
<span class="n">AlimVerticalRail</span> <span class="p">(</span> <span class="mi">150</span> <span class="p">)</span>
<span class="n">AlimHorizontalRail</span> <span class="p">(</span> <span class="mi">10</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id124">
<h4>Errors<a class="headerlink" href="#id124" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">AlimHorizontalRail</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">Illegal</span> <span class="pre">argument</span> <span class="pre">y,</span> <span class="pre">y</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">between</span> <span class="pre">...</span> <span class="pre">and</span> <span class="pre">...</span></code>
The argument given is wrong : the call back would not be in the
abutment box.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Placement</span> <span class="pre">of</span> <span class="pre">cells</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">please</span> <span class="pre">check</span> <span class="pre">your</span> <span class="pre">file</span> <span class="pre">of</span> <span class="pre">layout</span> <span class="pre">with</span> <span class="pre">DRUC.</span></code>
The placement of the cell needs to be correct in order to place a
call back. Check the errors of placement.</li>
</ul>
</div>
</div>
<div class="section" id="alimentation-connectors">
<h3>Alimentation connectors<a class="headerlink" href="#alimentation-connectors" title="Permalink to this headline"></a></h3>
<div class="section" id="id125">
<h4>Name<a class="headerlink" href="#id125" title="Permalink to this headline"></a></h4>
<p>AlimConnectors Creation of connectors at the periphery of the core of
a circuit</p>
</div>
<div class="section" id="id126">
<h4>Synopsys<a class="headerlink" href="#id126" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">AlimConnectors</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="section" id="id127">
<h4>Description<a class="headerlink" href="#id127" title="Permalink to this headline"></a></h4>
<p>This function creates the connectors in Alu 1 at the periphery of the
core.</p>
</div>
</div>
<div class="section" id="powerring">
<h3>PowerRing<a class="headerlink" href="#powerring" title="Permalink to this headline"></a></h3>
<div class="section" id="id128">
<h4>Name<a class="headerlink" href="#id128" title="Permalink to this headline"></a></h4>
<p>PowerRing Placement of power rings.</p>
</div>
<div class="section" id="id129">
<h4>Synopsys<a class="headerlink" href="#id129" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PowerRing</span> <span class="p">(</span> <span class="n">nb</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id130">
<h4>Description<a class="headerlink" href="#id130" title="Permalink to this headline"></a></h4>
<p>This function places power rings around the core and around the plots.</p>
</div>
<div class="section" id="id131">
<h4>Parameters<a class="headerlink" href="#id131" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">nb</span></code> : Number of pair of rings vdd/vss</li>
</ul>
</div>
<div class="section" id="id132">
<h4>Example<a class="headerlink" href="#id132" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">PowerRing</span> <span class="p">(</span> <span class="mi">3</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id133">
<h4>Errors<a class="headerlink" href="#id133" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PowerRing</span> <span class="pre">:</span> <span class="pre">Pads</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">north</span> <span class="pre">haven't</span> <span class="pre">been</span> <span class="pre">placed.</span></code>
The pads of the 4 sides of the chip must be placed before calling
function PowerRing.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">PowerRing</span> <span class="pre">:</span> <span class="pre">too</span> <span class="pre">many</span> <span class="pre">rings,</span> <span class="pre">not</span> <span class="pre">enough</span> <span class="pre">space.</span></code>
Wether The argument of PowerRing is to big, or the abutment box of
the chip is to small. Theres no space to put the rings.</li>
</ul>
</div>
</div>
<div class="section" id="routeck">
<h3>RouteCk<a class="headerlink" href="#routeck" title="Permalink to this headline"></a></h3>
<div class="section" id="id134">
<h4>Name<a class="headerlink" href="#id134" title="Permalink to this headline"></a></h4>
<p>RouteCk Routing of signal Ck to standard cells</p>
</div>
<div class="section" id="id135">
<h4>Synopsys<a class="headerlink" href="#id135" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">RouteCk</span> <span class="p">(</span> <span class="n">net</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id136">
<h4>Description<a class="headerlink" href="#id136" title="Permalink to this headline"></a></h4>
<p>This function routes signal Ck to standard cells.</p>
</div>
<div class="section" id="id137">
<h4>Parameters<a class="headerlink" href="#id137" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">net</span></code> : the net which the fonction is applied to</li>
</ul>
</div>
<div class="section" id="id138">
<h4>Errors<a class="headerlink" href="#id138" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">RouteCk</span> <span class="pre">:</span> <span class="pre">Pads</span> <span class="pre">in</span> <span class="pre">the</span> <span class="pre">north</span> <span class="pre">haven't</span> <span class="pre">been</span> <span class="pre">placed</span></code>
The pads must be placed before calling RoutageCk.</li>
</ul>
</div>
</div>
</div>
<div class="section" id="instanciation-facilities">
<h2>Instanciation facilities<a class="headerlink" href="#instanciation-facilities" title="Permalink to this headline"></a></h2>
<div class="section" id="buffer">
<h3>Buffer<a class="headerlink" href="#buffer" title="Permalink to this headline"></a></h3>
<div class="section" id="id139">
<h4>Name<a class="headerlink" href="#id139" title="Permalink to this headline"></a></h4>
<p>Buffer Easy way to instantiate a buffer</p>
</div>
<div class="section" id="id140">
<h4>Synopsys<a class="headerlink" href="#id140" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOut</span> <span class="o">&lt;=</span> <span class="n">netIn</span><span class="o">.</span><span class="n">Buffer</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="section" id="id141">
<h4>Description<a class="headerlink" href="#id141" title="Permalink to this headline"></a></h4>
<p>This method is a method of net. The net which this method is applied
to is the input net of the buffer. The method returns a net : the output
net.
Note that it is possible to change the generator instanciated with the
<code class="docutils literal"><span class="pre">SetBuff</span></code> method.</p>
</div>
<div class="section" id="id142">
<h4>Example<a class="headerlink" href="#id142" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="o">.</span><span class="n">Buffer</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="multiplexor">
<h3>Multiplexor<a class="headerlink" href="#multiplexor" title="Permalink to this headline"></a></h3>
<div class="section" id="id143">
<h4>Name<a class="headerlink" href="#id143" title="Permalink to this headline"></a></h4>
<p>Mux Easy way to instantiate a multiplexor</p>
</div>
<div class="section" id="id144">
<h4>Synopsys<a class="headerlink" href="#id144" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOut</span> <span class="o">&lt;=</span> <span class="n">netCmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="n">arg</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id145">
<h4>Description<a class="headerlink" href="#id145" title="Permalink to this headline"></a></h4>
<p>This method is a method of net. The net which this method is applied
to is the command of the multiplexor. The nets given as parameters are
all the input nets. This method returns a net : the output net.
There are two ways to describe the multiplexor : the argument <code class="docutils literal"><span class="pre">arg</span></code>
can be a list or a dictionnary.
Note that it is possible to change the generator instanciated with the
<code class="docutils literal"><span class="pre">SetMux</span></code> method.</p>
</div>
<div class="section" id="id146">
<h4>Parameters<a class="headerlink" href="#id146" title="Permalink to this headline"></a></h4>
<ul>
<li><p class="first">List :
For each value of the command, the corresponding net is specified.
All values must be specified.
For example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">&lt;=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">[</span><span class="n">in0</span><span class="p">,</span> <span class="n">in1</span><span class="p">,</span> <span class="n">in2</span><span class="p">,</span> <span class="n">in3</span><span class="p">]</span> <span class="p">)</span>
</pre></div>
</div>
<p>The net out is then initialised like this :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">cmd</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in0</span>
<span class="k">if</span> <span class="n">cmd</span> <span class="o">==</span> <span class="mi">1</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in1</span>
<span class="k">if</span> <span class="n">cmd</span> <span class="o">==</span> <span class="mi">2</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in2</span>
<span class="k">if</span> <span class="n">cmd</span> <span class="o">==</span> <span class="mi">3</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in3</span>
</pre></div>
</div>
</li>
<li><p class="first">Dictionnary :
A dictionnary makes the correspondance between a value of the
command and the corresponding net.
For example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">&lt;=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">{</span><span class="s2">&quot;0&quot;</span> <span class="p">:</span> <span class="n">in0</span><span class="p">,</span> <span class="s2">&quot;1&quot;</span> <span class="p">:</span> <span class="n">in1</span><span class="p">,</span> <span class="s2">&quot;2&quot;</span> <span class="p">:</span> <span class="n">in2</span><span class="p">,</span> <span class="s2">&quot;3&quot;</span> <span class="p">:</span> <span class="n">in3</span><span class="p">}</span> <span class="p">)</span>
</pre></div>
</div>
<p>This initialisation corresponds to the one before. Thanks to the use
of a dictionnary, the connections can be clearer :</p>
<ul>
<li><p class="first"><code class="docutils literal"><span class="pre">'default'</span></code>: This key of the dictionnary corresponds to all
the nets that are not specified
For example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">&lt;=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">{</span><span class="s2">&quot;0&quot;</span> <span class="p">:</span> <span class="n">in0</span><span class="p">,</span> <span class="s2">&quot;default&quot;</span> <span class="p">:</span> <span class="n">in1</span><span class="p">}</span> <span class="p">)</span>
</pre></div>
</div>
<p>This notation corresponds to :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">cmd</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in0</span>
<span class="k">else</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in1</span>
</pre></div>
</div>
<p>Note that if there is no <code class="docutils literal"><span class="pre">'default'</span></code> key specified and that not
all the nets are specified, the non specified nets are set to 0.</p>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">#</span></code> and <code class="docutils literal"><span class="pre">?</span></code> : When a key of the dictionnary begins with
<code class="docutils literal"><span class="pre">#</span></code>, the number after the <code class="docutils literal"><span class="pre">#</span></code> has to be binary and each ? in
the number means that this bit is not precised
For example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">&lt;=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">{</span><span class="s2">&quot;#01?&quot;</span> <span class="p">:</span> <span class="n">in0</span><span class="p">,</span> <span class="s2">&quot;default&quot;</span> <span class="p">:</span> <span class="n">in1</span><span class="p">}</span> <span class="p">)</span>
</pre></div>
</div>
<p>This notation corresponds to :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="p">(</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span> <span class="p">)</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in0</span>
<span class="k">else</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in1</span>
</pre></div>
</div>
</li>
<li><p class="first"><code class="docutils literal"><span class="pre">,</span></code> and <code class="docutils literal"><span class="pre">-</span></code> : When keys contains thoses symbols, it permits
to enumerate intervals
For example :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">out</span> <span class="o">&lt;=</span> <span class="n">cmd</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">{</span><span class="s2">&quot;0,4&quot;</span> <span class="p">:</span> <span class="n">in0</span><span class="p">,</span> <span class="s2">&quot;1-3,5&quot;</span> <span class="p">:</span> <span class="n">in1</span><span class="p">}</span> <span class="p">)</span>
</pre></div>
</div>
<p>This notation corresponds to :</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="p">(</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in0</span>
<span class="k">elif</span> <span class="n">cmd</span> <span class="ow">in</span> <span class="p">(</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="n">in1</span>
<span class="k">else</span> <span class="p">:</span> <span class="n">out</span> <span class="o">&lt;=</span> <span class="mi">0</span>
</pre></div>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id147">
<h4>Example<a class="headerlink" href="#id147" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">B</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;b&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">C</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;c&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">D</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;d&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Cmd1</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;cmd1&quot;</span><span class="p">,</span> <span class="mi">2</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Cmd2</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;cmd2&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S1</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s1&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S2</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s2&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S1</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Cmd1</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">[</span><span class="n">sefl</span><span class="o">.</span><span class="n">A</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">B</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">C</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">D</span><span class="p">]</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S2</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Cmd2</span><span class="o">.</span><span class="n">Mux</span> <span class="p">(</span> <span class="p">{</span> <span class="s2">&quot;0&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span>
<span class="p">,</span> <span class="s2">&quot;1,5-7&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">B</span>
<span class="p">,</span> <span class="s2">&quot;#1?1?&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">C</span>
<span class="p">,</span> <span class="s2">&quot;default&quot;</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">D</span>
<span class="p">}</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id148">
<h4>Errors<a class="headerlink" href="#id148" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span> <span class="pre">all</span> <span class="pre">the</span> <span class="pre">nets</span> <span class="pre">must</span> <span class="pre">have</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">lenght.</span></code>
All the input nets pust have the same lenght.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span> <span class="pre">there</span> <span class="pre">are</span> <span class="pre">no</span> <span class="pre">input</span> <span class="pre">nets.</span></code>
The input nets seem to have been forgotten.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">argument</span> <span class="pre">type.</span></code>
The connections of the buses are not described by a list nor a
dictionnary.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">nets</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">match</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">lenght</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">command.</span></code>
When using a list, the number of nets has to correspond to the
number of possible values of the command.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span> <span class="pre">wrong</span> <span class="pre">key.</span></code>
One of the key of the dictionnary is not un number, neither a list
or an interval.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">when</span> <span class="pre">an</span> <span class="pre">interval</span> <span class="pre">is</span> <span class="pre">specified,</span> <span class="pre">the</span> <span class="pre">second</span> <span class="pre">number</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">interval</span></code>
<code class="docutils literal"><span class="pre">must</span> <span class="pre">be</span> <span class="pre">greater</span> <span class="pre">than</span> <span class="pre">the</span> <span class="pre">first</span> <span class="pre">one.</span></code>
When creating an interval with “-”, the second number has to be
greater than the first one.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">binary</span> <span class="pre">number</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">match</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">lenght</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">command.</span></code>
When using the <code class="docutils literal"><span class="pre">#</span></code> notation, each digit of the binary number
corresponds to a wire of the cmd. The leghts have to correspond.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Mux</span> <span class="pre">:</span> <span class="pre">after</span> <span class="pre">#,</span> <span class="pre">the</span> <span class="pre">number</span> <span class="pre">has</span> <span class="pre">to</span> <span class="pre">be</span> <span class="pre">binary.</span></code>
When using the <code class="docutils literal"><span class="pre">#</span></code> notation, the number has to be binary : one
can use 0, 1 or ?.</li>
</ul>
</div>
</div>
<div class="section" id="shifter">
<h3>Shifter<a class="headerlink" href="#shifter" title="Permalink to this headline"></a></h3>
<div class="section" id="id149">
<h4>Name<a class="headerlink" href="#id149" title="Permalink to this headline"></a></h4>
<p>Shift Easy way to instantiate a shifter</p>
</div>
<div class="section" id="id150">
<h4>Synopsys<a class="headerlink" href="#id150" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOut</span> <span class="o">&lt;=</span> <span class="n">netCmd</span><span class="o">.</span><span class="n">Shift</span> <span class="p">(</span> <span class="n">netIn</span><span class="p">,</span> <span class="n">direction</span><span class="p">,</span> <span class="nb">type</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id151">
<h4>Description<a class="headerlink" href="#id151" title="Permalink to this headline"></a></h4>
<p>This method is a method of net. The net which this method is applied
to is the command of the shifter, its the one which defines the number
of bits to shift. The net given as parameter is the input net. The other
arguments set the different patameters. The method returns a net : the
output net.
Note that it is possible to change the generator instanciated with the
<code class="docutils literal"><span class="pre">SetShift</span></code> method.</p>
</div>
<div class="section" id="id152">
<h4>Parameters<a class="headerlink" href="#id152" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">netIn</span></code> : the net which is going to be shifted</li>
<li><code class="docutils literal"><span class="pre">direction</span></code> : this string represents the direction of the shift :<ul>
<li>“left”</li>
<li>“right”</li>
</ul>
</li>
<li><code class="docutils literal"><span class="pre">type</span></code> : this string represents the type of the shift :<ul>
<li>“logical” : only “zeros” are put in the net</li>
<li>“arith” : meaningful for “right” shift, the values put in the nets
are an extension of the MSB</li>
<li>“circular” : the values put in the nets are the ones which have
just been taken off</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id153">
<h4>Example<a class="headerlink" href="#id153" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Cmd</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;cmd&quot;</span><span class="p">,</span> <span class="mi">2</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S1</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s1&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S2</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s2&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S3</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s3&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S1</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Cmd</span><span class="o">.</span><span class="n">Shift</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="s2">&quot;logical&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S2</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Cmd</span><span class="o">.</span><span class="n">Shift</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="p">,</span> <span class="s2">&quot;right&quot;</span><span class="p">,</span> <span class="s2">&quot;arith&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S3</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Cmd</span><span class="o">.</span><span class="n">Shift</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="p">,</span> <span class="s2">&quot;left&quot;</span><span class="p">,</span> <span class="s2">&quot;circular&quot;</span> <span class="p">)</span>
</pre></div>
</div>
<p>If the value of “a” is “0b1001” and the value of “cmd” is “0b10”, we
will have :</p>
<ul class="simple">
<li>“s1” : “0b0010”</li>
<li>“s2” : “0b1110”</li>
<li>“s3” : “0b0110”</li>
</ul>
</div>
<div class="section" id="id154">
<h4>Errors<a class="headerlink" href="#id154" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Shift</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">input</span> <span class="pre">net</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">positive</span> <span class="pre">arity.</span></code>
The net which is going to be shifted must have a positive arity.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Shift</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">direction</span> <span class="pre">parameter</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">&quot;left&quot;</span> <span class="pre">or</span> <span class="pre">&quot;right&quot;.</span></code>
The “direction” argument is not correct.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Shift</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">The</span> <span class="pre">type</span> <span class="pre">parameter</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">&quot;logical&quot;</span> <span class="pre">or</span> <span class="pre">&quot;arith&quot;</span> <span class="pre">or</span> <span class="pre">&quot;circular&quot;.</span></code>
The “type” argument is not correct.</li>
</ul>
</div>
</div>
<div class="section" id="register">
<h3>Register<a class="headerlink" href="#register" title="Permalink to this headline"></a></h3>
<div class="section" id="id155">
<h4>Name<a class="headerlink" href="#id155" title="Permalink to this headline"></a></h4>
<p>Reg Easy way to instantiate a register</p>
</div>
<div class="section" id="id156">
<h4>Synopsys<a class="headerlink" href="#id156" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOut</span> <span class="o">&lt;=</span> <span class="n">netCk</span><span class="o">.</span><span class="n">Reg</span> <span class="p">(</span> <span class="n">netIn</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id157">
<h4>Description<a class="headerlink" href="#id157" title="Permalink to this headline"></a></h4>
<p>This method is a method of net. The net which this method is applied
to is the clock of the register. The net given as parameter is the input
net. The method returns a net : the output net.
Note that it is possible to change the generator instanciated with the
<code class="docutils literal"><span class="pre">SetReg</span></code> method.</p>
</div>
<div class="section" id="id158">
<h4>Example<a class="headerlink" href="#id158" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Ck</span> <span class="o">=</span> <span class="n">CkIn</span> <span class="p">(</span> <span class="s2">&quot;ck&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Ck</span><span class="o">.</span><span class="n">Reg</span> <span class="p">(</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id159">
<h4>Errors<a class="headerlink" href="#id159" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Reg</span> <span class="pre">:</span> <span class="pre">The</span> <span class="pre">input</span> <span class="pre">net</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">positive</span> <span class="pre">arity.</span></code>
The input net must have a positive arity.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Reg</span> <span class="pre">:</span> <span class="pre">The</span> <span class="pre">clock</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">have</span> <span class="pre">a</span> <span class="pre">positive</span> <span class="pre">arity.</span></code>
The clock must have a positive arity.</li>
</ul>
</div>
</div>
<div class="section" id="constants">
<h3>Constants<a class="headerlink" href="#constants" title="Permalink to this headline"></a></h3>
<div class="section" id="id160">
<h4>Name<a class="headerlink" href="#id160" title="Permalink to this headline"></a></h4>
<p>Constant Easy way to instantiate constants</p>
</div>
<div class="section" id="id161">
<h4>Synopsys<a class="headerlink" href="#id161" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOne</span> <span class="o">&lt;=</span> <span class="n">One</span> <span class="p">(</span> <span class="mi">2</span> <span class="p">)</span>
<span class="n">net8</span> <span class="o">&lt;=</span> <span class="s2">&quot;8&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="id162">
<h4>Description<a class="headerlink" href="#id162" title="Permalink to this headline"></a></h4>
<p>These functions simplify the way to instanciate constants.</p>
<ul class="simple">
<li>The functions <code class="docutils literal"><span class="pre">One</span></code> and<code class="docutils literal"><span class="pre">Zero</span></code> permits to initialise all the
bits of a net to one or zero.</li>
<li>The instanciation of a constant thanks to a string can be done in
decimal, hecadecimal or binary.</li>
</ul>
</div>
<div class="section" id="id163">
<h4>Parameters<a class="headerlink" href="#id163" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li>For <code class="docutils literal"><span class="pre">One</span></code> and <code class="docutils literal"><span class="pre">Zero</span></code> :<ul>
<li><code class="docutils literal"><span class="pre">n</span></code> : the arity of the net</li>
</ul>
</li>
<li>For the instanciation of a constant :<ul>
<li>the constant given must be a string representing :<ul>
<li>A decimal number</li>
<li>A binary number : the string must begin with “0b”</li>
<li>An hexadecimal number : the string must begin with “0x”</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id164">
<h4>Example<a class="headerlink" href="#id164" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Ones</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;ones&quot;</span><span class="p">,</span> <span class="mi">2</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Zeros</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;zeros&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Eight</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;eight&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Twentu</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;twenty&quot;</span><span class="p">,</span> <span class="mi">5</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Two</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;two&quot;</span><span class="p">,</span> <span class="mi">5</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Ones</span> <span class="o">&lt;=</span> <span class="n">One</span> <span class="p">(</span> <span class="mi">2</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Zero</span> <span class="o">&lt;=</span> <span class="n">Zero</span> <span class="p">(</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Eight</span> <span class="o">&lt;=</span> <span class="s2">&quot;8&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Twenty</span> <span class="o">&lt;=</span> <span class="s2">&quot;0x14&quot;</span>
<span class="bp">self</span><span class="o">.</span><span class="n">Two</span> <span class="o">&lt;=</span> <span class="s2">&quot;0b10&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="id165">
<h4>Errors<a class="headerlink" href="#id165" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Const</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">argument</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string</span> <span class="pre">representing</span> <span class="pre">a</span> <span class="pre">number</span> <span class="pre">in</span> <span class="pre">decimal,</span></code>
<code class="docutils literal"><span class="pre">binary</span> <span class="pre">(0b)</span> <span class="pre">or</span> <span class="pre">hexa</span> <span class="pre">(0x).</span></code>
The string given as argument does not have the right form.</li>
</ul>
</div>
</div>
<div class="section" id="boolean-operations">
<h3>Boolean operations<a class="headerlink" href="#boolean-operations" title="Permalink to this headline"></a></h3>
<div class="section" id="id166">
<h4>Description<a class="headerlink" href="#id166" title="Permalink to this headline"></a></h4>
<p>Most common boolean operators can be instantiated without the <code class="docutils literal"><span class="pre">Inst</span></code>
constructor.</p>
</div>
<div class="section" id="list">
<h4>List<a class="headerlink" href="#list" title="Permalink to this headline"></a></h4>
<p>Boolean operators are listed below :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">And2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Or2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">|</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Xor2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">^</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Inv</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">~i0</span></code></li>
</ul>
</div>
<div class="section" id="generators-to-instantiate">
<h4>Generators to instantiate<a class="headerlink" href="#generators-to-instantiate" title="Permalink to this headline"></a></h4>
<p>One can choose the generator to be used. Some methods are applied to
the cell and set the generator used when using <code class="docutils literal"><span class="pre">&amp;</span></code>, <code class="docutils literal"><span class="pre">|</span></code>, <code class="docutils literal"><span class="pre">^</span></code> and
<code class="docutils literal"><span class="pre">~</span></code>. The generators used by default are the ones from the virtual
library.</p>
<p>Methods are :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">SetAnd</span></code></li>
<li><code class="docutils literal"><span class="pre">SetOr</span></code></li>
<li><code class="docutils literal"><span class="pre">SetXor</span></code></li>
<li><code class="docutils literal"><span class="pre">SetNot</span></code></li>
</ul>
</div>
<div class="section" id="id167">
<h4>Example<a class="headerlink" href="#id167" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">B</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;b&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">B</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;c&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">&lt;=</span> <span class="p">(</span> <span class="o">~</span><span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">&amp;</span> <span class="bp">self</span><span class="o">.</span><span class="n">B</span> <span class="p">)</span> <span class="o">|</span> <span class="bp">self</span><span class="o">.</span><span class="n">C</span>
</pre></div>
</div>
</div>
<div class="section" id="id168">
<h4>Errors<a class="headerlink" href="#id168" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">&amp;</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">nets</span> <span class="pre">must</span> <span class="pre">have</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">lenght.</span></code>
When one uses boolean expressions, one has to check that the sizes
of both nets are equivalent.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">:</span> <span class="pre">there</span> <span class="pre">is</span> <span class="pre">no</span> <span class="pre">alim.</span></code>
The cell being created does not have the alimentation nets. The
instanciation is impossible.</li>
</ul>
</div>
</div>
<div class="section" id="arithmetical-operations">
<h3>Arithmetical operations<a class="headerlink" href="#arithmetical-operations" title="Permalink to this headline"></a></h3>
<div class="section" id="id169">
<h4>Description<a class="headerlink" href="#id169" title="Permalink to this headline"></a></h4>
<p>Most common arithmetic operators can be instantiated without the
<code class="docutils literal"><span class="pre">Inst</span></code> constructor.</p>
</div>
<div class="section" id="id170">
<h4>List<a class="headerlink" href="#id170" title="Permalink to this headline"></a></h4>
<p>Arithmetical operators are listed below :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Addition</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">+</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Substraction</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span></code> - <code class="docutils literal"><span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Multiplication</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">*</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">Division</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">/</span> <span class="pre">i1</span></code></li>
</ul>
</div>
<div class="section" id="id171">
<h4>Generators to instantiate<a class="headerlink" href="#id171" title="Permalink to this headline"></a></h4>
<p>One can choose the generator to be used. Some methods are applied to the
cell and set the generator used when using overloard. Methods are :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">SetAdd</span></code> (for addition and substraction)</li>
<li><code class="docutils literal"><span class="pre">SetMult</span></code></li>
<li><code class="docutils literal"><span class="pre">SetDiv</span></code></li>
</ul>
<p>The generators used by default are :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Addition</span></code> : Slansky adder</li>
<li><code class="docutils literal"><span class="pre">Substraction</span></code> : Slansky adder + inversor + cin = 1</li>
<li><code class="docutils literal"><span class="pre">Multiplication</span></code> : CA2 multiplier (signed, modified booth/Wallace
tree)</li>
<li><code class="docutils literal"><span class="pre">Division</span></code> : not available yet</li>
</ul>
</div>
<div class="section" id="id172">
<h4>Example<a class="headerlink" href="#id172" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">B</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;b&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">T</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;t&quot;</span><span class="p">,</span> <span class="mi">8</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">B</span>
<span class="bp">self</span><span class="o">.</span><span class="n">T</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">B</span>
</pre></div>
</div>
</div>
<div class="section" id="id173">
<h4>Errors<a class="headerlink" href="#id173" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">+</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">nets</span> <span class="pre">must</span> <span class="pre">have</span> <span class="pre">the</span> <span class="pre">same</span> <span class="pre">lenght.</span></code>
When one uses arithmetic expressions, one has to check that the
sizes of both nets are equivalent.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">:</span> <span class="pre">there</span> <span class="pre">is</span> <span class="pre">no</span> <span class="pre">alim.</span></code>
The cell being created does not have the alimentation nets. The
instanciation is impossible.</li>
</ul>
</div>
</div>
<div class="section" id="comparison-operations">
<h3>Comparison operations<a class="headerlink" href="#comparison-operations" title="Permalink to this headline"></a></h3>
<div class="section" id="id174">
<h4>Name<a class="headerlink" href="#id174" title="Permalink to this headline"></a></h4>
<p>Eq/Ne : Easy way to test the value of the nets</p>
</div>
<div class="section" id="id175">
<h4>Synopsys<a class="headerlink" href="#id175" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">netOut</span> <span class="o">&lt;=</span> <span class="n">net</span><span class="o">.</span><span class="n">Eq</span> <span class="p">(</span> <span class="s2">&quot;n&quot;</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id176">
<h4>Description<a class="headerlink" href="#id176" title="Permalink to this headline"></a></h4>
<p>Comparaison functions are listed below :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">Eq</span></code> : returns <code class="docutils literal"><span class="pre">true</span></code> if the value of the net is equal to <code class="docutils literal"><span class="pre">n</span></code>.</li>
<li><code class="docutils literal"><span class="pre">Ne</span></code> : returns <code class="docutils literal"><span class="pre">true</span></code> if the value of the net is different from
<code class="docutils literal"><span class="pre">n</span></code>.</li>
</ul>
<p>Note that it is possible to change the generator instanciated with the
<code class="docutils literal"><span class="pre">SetComp</span></code> method.</p>
</div>
<div class="section" id="id177">
<h4>Parameters<a class="headerlink" href="#id177" title="Permalink to this headline"></a></h4>
<p>The constant given as argument must be a string representing :</p>
<ul class="simple">
<li>A decimal number</li>
<li>A binary number : the string must begin with “0b”</li>
<li>An hexadecimal number : the string must begin with “0x”</li>
</ul>
</div>
<div class="section" id="id178">
<h4>Example<a class="headerlink" href="#id178" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">class</span> <span class="nc">essai</span> <span class="p">(</span> <span class="n">Model</span> <span class="p">)</span> <span class="p">:</span>
<span class="k">def</span> <span class="nf">Interface</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">A</span> <span class="o">=</span> <span class="n">SignalIn</span> <span class="p">(</span> <span class="s2">&quot;a&quot;</span><span class="p">,</span> <span class="mi">4</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;s&quot;</span><span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">T</span> <span class="o">=</span> <span class="n">SignalOut</span> <span class="p">(</span> <span class="s2">&quot;t&quot;</span><span class="p">,</span> <span class="mi">1</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vdd</span> <span class="o">=</span> <span class="n">VddIn</span> <span class="p">(</span> <span class="s2">&quot;vdd&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">vss</span> <span class="o">=</span> <span class="n">VssIn</span> <span class="p">(</span> <span class="s2">&quot;vss&quot;</span> <span class="p">)</span>
<span class="k">def</span> <span class="nf">Netlist</span> <span class="p">(</span> <span class="bp">self</span> <span class="p">)</span> <span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">S</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="o">.</span><span class="n">Eq</span> <span class="p">(</span> <span class="s2">&quot;4&quot;</span> <span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">T</span> <span class="o">&lt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">A</span><span class="o">.</span><span class="n">Ne</span> <span class="p">(</span> <span class="s2">&quot;1&quot;</span> <span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id179">
<h4>Errors<a class="headerlink" href="#id179" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Eq</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">number</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">match</span> <span class="pre">with</span> <span class="pre">the</span> <span class="pre">net's</span> <span class="pre">lenght.</span></code>
When one uses comparaison functions on one net, one has to check
that the number corresponds to the size of the net.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Eq</span> <span class="pre">:</span></code>
<code class="docutils literal"><span class="pre">the</span> <span class="pre">argument</span> <span class="pre">must</span> <span class="pre">be</span> <span class="pre">a</span> <span class="pre">string</span> <span class="pre">representing</span> <span class="pre">a</span> <span class="pre">number</span> <span class="pre">in</span> <span class="pre">decimal,</span></code>
<code class="docutils literal"><span class="pre">binary</span> <span class="pre">(0b)</span> <span class="pre">or</span> <span class="pre">hexa</span> <span class="pre">(0x).</span></code>
The string given as argument does not have the right form.</li>
</ul>
</div>
</div>
<div class="section" id="virtual-library">
<h3>Virtual library<a class="headerlink" href="#virtual-library" title="Permalink to this headline"></a></h3>
<div class="section" id="id180">
<h4>Description<a class="headerlink" href="#id180" title="Permalink to this headline"></a></h4>
<p>The virtual library permits to create a cell and map it to different
libraries without having to change it.</p>
</div>
<div class="section" id="list-of-the-generators-provided">
<h4>List of the generators provided<a class="headerlink" href="#list-of-the-generators-provided" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">a2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">a3</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span></code></li>
<li><code class="docutils literal"><span class="pre">a4</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">&amp;</span> <span class="pre">i3</span></code></li>
<li><code class="docutils literal"><span class="pre">na2</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">na3</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">na4</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">&amp;</span> <span class="pre">i3</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">o2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">o3</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span></code></li>
<li><code class="docutils literal"><span class="pre">o4</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">&amp;</span> <span class="pre">i3</span></code></li>
<li><code class="docutils literal"><span class="pre">no2</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">no3</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">no4</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">&amp;</span> <span class="pre">i1</span> <span class="pre">&amp;</span> <span class="pre">i2</span> <span class="pre">&amp;</span> <span class="pre">i3</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">inv</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">i</span></code></li>
<li><code class="docutils literal"><span class="pre">buf</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i</span></code></li>
<li><code class="docutils literal"><span class="pre">xr2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i0</span> <span class="pre">^</span> <span class="pre">i1</span></code></li>
<li><code class="docutils literal"><span class="pre">nxr2</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~</span> <span class="pre">(</span> <span class="pre">i0</span> <span class="pre">^</span> <span class="pre">i1</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">zero</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">'0'</span></code></li>
<li><code class="docutils literal"><span class="pre">one</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">'1'</span></code></li>
<li><code class="docutils literal"><span class="pre">halfadder</span></code> : <code class="docutils literal"><span class="pre">sout</span> <span class="pre">&lt;=</span> <span class="pre">a</span> <span class="pre">^</span> <span class="pre">b</span></code> and <code class="docutils literal"><span class="pre">cout</span> <span class="pre">&lt;=</span> <span class="pre">a</span> <span class="pre">&amp;</span> <span class="pre">b</span></code></li>
<li><code class="docutils literal"><span class="pre">fulladder</span></code> : <code class="docutils literal"><span class="pre">sout</span> <span class="pre">&lt;=</span> <span class="pre">a</span> <span class="pre">^</span> <span class="pre">b</span> <span class="pre">^</span> <span class="pre">cin</span></code>
and <code class="docutils literal"><span class="pre">cout</span> <span class="pre">&lt;=</span> <span class="pre">(</span> <span class="pre">a</span> <span class="pre">&amp;</span> <span class="pre">b</span> <span class="pre">)</span> <span class="pre">|</span> <span class="pre">(</span> <span class="pre">a</span> <span class="pre">&amp;</span> <span class="pre">cin</span> <span class="pre">)</span> <span class="pre">|</span> <span class="pre">(</span> <span class="pre">b</span> <span class="pre">&amp;</span> <span class="pre">cin</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">mx2</span></code> : <code class="docutils literal"><span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">(i0</span> <span class="pre">&amp;</span> <span class="pre">~cmd)</span> <span class="pre">|</span> <span class="pre">(i1</span> <span class="pre">&amp;</span> <span class="pre">cmd)</span></code></li>
<li><code class="docutils literal"><span class="pre">nmx2</span></code> : <code class="docutils literal"><span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~(</span> <span class="pre">(i0</span> <span class="pre">&amp;</span> <span class="pre">~cmd)</span> <span class="pre">|</span> <span class="pre">(i1</span> <span class="pre">&amp;</span> <span class="pre">cmd)</span> <span class="pre">)</span></code></li>
<li><code class="docutils literal"><span class="pre">sff</span></code> : <code class="docutils literal"><span class="pre">if</span> <span class="pre">RISE</span> <span class="pre">(</span> <span class="pre">ck</span> <span class="pre">)</span> <span class="pre">:</span> <span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i</span></code></li>
<li><code class="docutils literal"><span class="pre">sff2</span></code> : <code class="docutils literal"><span class="pre">if</span> <span class="pre">RISE</span> <span class="pre">(</span> <span class="pre">ck</span> <span class="pre">)</span> <span class="pre">:</span> <span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">(i0</span> <span class="pre">&amp;</span> <span class="pre">~cmd)</span> <span class="pre">|</span> <span class="pre">(i1</span> <span class="pre">&amp;</span> <span class="pre">cmd)</span></code></li>
<li><code class="docutils literal"><span class="pre">sff3</span></code> : <code class="docutils literal"><span class="pre">if</span> <span class="pre">RISE</span> <span class="pre">(</span> <span class="pre">ck</span> <span class="pre">)</span> <span class="pre">:</span></code>
`` q &lt;= (i0 &amp; ~cmd0) | (((i1 &amp; cmd1)|(i2&amp;~cmd1)) &amp; cmd0)``</li>
<li><code class="docutils literal"><span class="pre">ts</span></code> : <code class="docutils literal"><span class="pre">if</span> <span class="pre">cmd</span> <span class="pre">:</span> <span class="pre">q</span> <span class="pre">&lt;=</span> <span class="pre">i</span></code></li>
<li><code class="docutils literal"><span class="pre">nts</span></code> : <code class="docutils literal"><span class="pre">if</span> <span class="pre">cmd</span> <span class="pre">:</span> <span class="pre">nq</span> <span class="pre">&lt;=</span> <span class="pre">~i</span></code></li>
</ul>
</div>
<div class="section" id="mapping-file">
<h4>Mapping file<a class="headerlink" href="#mapping-file" title="Permalink to this headline"></a></h4>
<p>The virtual library is mapped to the sxlib library. A piece of the
corresponding mapping file is shown below.
In order to map the virtual library to another library, on has to
write a .xml file which makes correspond models and interfaces.
Note that the interfaces of the cells must be the same (except for the
names of the ports). Otherwise, one has to create .vst file in order to
make the interfaces match.</p>
<p>The environment variable used to point the right file is
<code class="docutils literal"><span class="pre">STRATUS_MAPPING_NAME</span></code>.</p>
<p><img alt="xml" src="../_images/xml.png" /></p>
</div>
<div class="section" id="id181">
<h4>Generators<a class="headerlink" href="#id181" title="Permalink to this headline"></a></h4>
<p>Some generators are also provided in order to use the cells of the
library with nets of more than 1 bit. One has to upper the first letter
of the model name in order to user those generators. What is simply done
is a for loop with the bits of the nets. The parameter <code class="docutils literal"><span class="pre">'nbit'</span></code> gives
the size of the generator.</p>
</div>
<div class="section" id="id182">
<h4>Example<a class="headerlink" href="#id182" title="Permalink to this headline"></a></h4>
<ul class="simple">
<li>Direct instanciation of a cell</li>
</ul>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span> <span class="p">(</span> <span class="mi">4</span> <span class="p">)</span> <span class="p">:</span>
<span class="n">Inst</span> <span class="p">(</span> <span class="s1">&#39;a2&#39;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;i0&#39;</span> <span class="p">:</span> <span class="n">neti0</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;i1&#39;</span> <span class="p">:</span> <span class="n">neti1</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;q&#39;</span> <span class="p">:</span> <span class="n">netq</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">netvdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">netvss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
<ul class="simple">
<li>Instanciation of a generator</li>
</ul>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">Generate</span> <span class="p">(</span> <span class="s1">&#39;A2&#39;</span><span class="p">,</span> <span class="s2">&quot;my_and2_4bits&quot;</span><span class="p">,</span> <span class="n">param</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;nbit&#39;</span> <span class="p">:</span> <span class="mi">4</span> <span class="p">}</span> <span class="p">)</span>
<span class="n">Inst</span> <span class="p">(</span> <span class="s1">&#39;my_and2_4bits&#39;</span>
<span class="p">,</span> <span class="nb">map</span> <span class="o">=</span> <span class="p">{</span> <span class="s1">&#39;i0&#39;</span> <span class="p">:</span> <span class="n">neti0</span>
<span class="p">,</span> <span class="s1">&#39;i1&#39;</span> <span class="p">:</span> <span class="n">neti1</span>
<span class="p">,</span> <span class="s1">&#39;q&#39;</span> <span class="p">:</span> <span class="n">netq</span>
<span class="p">,</span> <span class="s1">&#39;vdd&#39;</span> <span class="p">:</span> <span class="n">vdd</span>
<span class="p">,</span> <span class="s1">&#39;vss&#39;</span> <span class="p">:</span> <span class="n">vss</span>
<span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="id183">
<h4>Errors<a class="headerlink" href="#id183" title="Permalink to this headline"></a></h4>
<p>Some errors may occur :</p>
<ul class="simple">
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Inst</span> <span class="pre">:</span> <span class="pre">the</span> <span class="pre">model</span> <span class="pre">...</span> <span class="pre">does</span> <span class="pre">not</span> <span class="pre">exist.</span></code>
<code class="docutils literal"><span class="pre">Check</span> <span class="pre">CRL_CATA_LIB.</span></code>
The model of the cell has not been found. One has to check the
environment variable.</li>
<li><code class="docutils literal"><span class="pre">[Stratus</span> <span class="pre">ERROR]</span> <span class="pre">Virtual</span> <span class="pre">library</span> <span class="pre">:</span> <span class="pre">No</span> <span class="pre">file</span> <span class="pre">found</span> <span class="pre">in</span> <span class="pre">order</span> <span class="pre">to</span> <span class="pre">parse.</span></code>
<code class="docutils literal"><span class="pre">Check</span> <span class="pre">STRATUS_MAPPING_NAME.</span></code>
The mapping file is not given in the environment variable.</li>
</ul>
</div>
</div>
</div>
<div class="section" id="useful-links">
<h2>Useful links<a class="headerlink" href="#useful-links" title="Permalink to this headline"></a></h2>
<div class="section" id="dpgen-generators">
<h3>DpGen generators<a class="headerlink" href="#dpgen-generators" title="Permalink to this headline"></a></h3>
<p>You can find the documentation of the DPGEN library at :
<a class="reference external" href="file:./DpGen.html">file:./DpGen.html</a></p>
</div>
<div class="section" id="arithmetic-package-of-stratus">
<h3>Arithmetic package of stratus<a class="headerlink" href="#arithmetic-package-of-stratus" title="Permalink to this headline"></a></h3>
<p>You can find the documentation of the arithmetic stratuss package at:
<a class="reference external" href="file:////users/outil/arith/latest/modules_stratus/arithmetic/doc/arith/index.html">file:////users/outil/arith/latest/modules_stratus/arithmetic/doc/arith/index.html</a></p>
</div>
<div class="section" id="arithmetic-generators-and-some-stratus-packages">
<h3>Arithmetic generators and some stratus packages<a class="headerlink" href="#arithmetic-generators-and-some-stratus-packages" title="Permalink to this headline"></a></h3>
<p>You can find the documentation of the arithmetic library at :
<a class="reference external" href="file:////users/outil/arith/latest/doc/index.html">file:////users/outil/arith/latest/doc/index.html</a></p>
</div>
<div class="section" id="patterns-module">
<h3>Patterns module<a class="headerlink" href="#patterns-module" title="Permalink to this headline"></a></h3>
<p>You can find the documentation of the patterns module :
<a class="reference external" href="file:../patterns/index.html">file:../patterns/index.html</a></p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="Developper.html" class="btn btn-neutral float-right" title="Stratus Developpers Guide" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral" title="Stratus : Netlist Capture Language" 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>
using a <a href="https://readthedocs.org">RTD</a> theme on Mar 04, 2019.
</small></td>
<td class="RFooter"></td>
</tr>
</table>
<table class="footer2">
<tr>
<td class="LFooter">Coriolis 2 Documentation</td>
<td class="RFooter"><small>
&copy; Copyright 2000-2018, UPMC.
</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>