coriolis/documentation/output/pages/stratus-developpers.html

433 lines
21 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Printable version of this document Stratus.pdf. Contents Class Model Nets Instances Class Model Synopsys class myClass ( Model ) : ... exemple = myClass ( name, param ) Description Every cell made is ...">
<meta name="keywords" content="">
<link rel="icon" href="../favicon.ico">
<title>Stratus : Developper's Documentation - Coriolis VLSI CAD Tools [offline]</title>
<!-- Stylesheets -->
<link href="../theme/css/bootstrap.css" rel="stylesheet">
<link href="../theme/css/fonts.css" rel="stylesheet">
<link href="../theme/css/nest.css" rel="stylesheet">
<link href="../theme/css/pygment.css" rel="stylesheet">
<link href="../theme/css/coriolis.css" rel="stylesheet">
<!-- /Stylesheets -->
<script src="../theme/js/jquery.min.js"></script>
<script src="../theme/js/bootstrap.min.js"></script>
<!-- RSS Feeds -->
<!-- /RSS Feeds -->
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<!-- Header -->
<div class="header-container" style="background: linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2)), url('../images/common/layout-motif-faded-4.png'); background-position: center; ">
<!--
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="../"><img class="mr20" src="../images/common/Coriolis-logo-white-4-small.png" alt="logo">Coriolis VLSI CAD Tools [offline]</a>
</div>
<ul class="nav navbar-nav">
<li><a href="../pages/gitlab.html">Git</a></li>
<li><a href="../pages/documentation.html">Documentation</a></li>
<li class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>Topics
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item " href="../pages/homepage.html">Coriolis <span class="sc">vlsi</span> Backend Tools</a></li>
<li><a class="dropdown-item " href="../pages/symbolic-layout.html">Symbolic Layout</a></li>
</ul>
</li>
</ul>
</div>
</nav>
</div> <!-- navbar container -->
-->
<!-- Static navbar -->
<div class="container">
<div class="header-nav">
<div class="header-logo">
<a class="pull-left" href="../"><img class="mr20" src="../images/common/Coriolis-logo-white-4-small.png" alt="logo">Coriolis VLSI CAD Tools [offline]</a>
</div>
<div class="nav pull-right">
<a href="../pages/gitlab.html">Git</a>
<a href="../pages/documentation.html">Documentation</a>
</div>
<div class="nav pull-right">
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>Topics
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item " href="../pages/homepage.html">Coriolis <span class="sc">vlsi</span> Backend Tools</a></li>
<li><a class="dropdown-item " href="../pages/symbolic-layout.html">Symbolic Layout</a></li>
</ul>
</div>
</div>
</div>
</div>
<!-- /Static navbar -->
<!-- Header -->
<div class="container header-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="header-content">
<a href="https://www.lip6.fr/"><img class="mr20" height="60px" src="../images/common/LogoLIP6Blanc.png" alt="LIP6"></a>
<a href="https://www.sorbonne-universite.fr/"><img class="mr20" height="60px" src="../images/common/logo-SU-blanc-700px.png" alt="Sorbonne Universite"></a>
<a href="https://www.cnrs.fr/"><img class="mr20" height="60px" src="../images/common/LOGO-cnrs-white-large.png" alt="CNRS"></a>
<h1 class="header-title text-uppercase">Stratus : Developper's Documentation</h1>
<div class="header-underline"></div>
</div>
</div>
</div>
</div>
<!-- /Header -->
</div>
<!-- /Header -->
<!-- Content -->
<div class="container content">
<!-- -*- mode: rst; explicit-buffer-name: "Developper_HTML.rst<pelican>" -*- -->
<!-- -*- Mode: rst; explicit-buffer-name: "definition.rst<documentation/etc>" -*- -->
<!-- HTML/LaTeX backends mixed macros. -->
<!-- Acronyms & names. -->
<!-- URLs -->
<!-- Standard CAO/VLSI Concepts. -->
<!-- Alliance & MBK Concepts -->
<!-- Hurricane Concepts. -->
<p>Printable version of this document <a class="reference external" href="../../../pdf/main/Stratus.pdf">Stratus.pdf</a>.</p>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#class-model" id="id12">Class Model</a></li>
<li><a class="reference internal" href="#nets" id="id13">Nets</a></li>
<li><a class="reference internal" href="#instances" id="id14">Instances</a></li>
</ul>
</div>
<div class="section" id="class-model">
<h2><a class="toc-backref" href="#id12">Class Model</a></h2>
<div class="section" id="synopsys">
<h3>Synopsys</h3>
<pre class="literal-block">
class myClass ( Model ) :
...
exemple = myClass ( name, param )
</pre>
</div>
<div class="section" id="description">
<h3>Description</h3>
<p>Every cell made is a class herited from class <tt class="docutils literal">Model</tt>.
Some methods have to be created, like <tt class="docutils literal">Interface</tt>, <tt class="docutils literal">Netlist</tt> ...
Some methods are inherited from the class <tt class="docutils literal">Model</tt>.</p>
</div>
<div class="section" id="parameters">
<h3>Parameters</h3>
<ul class="simple">
<li><tt class="docutils literal">name</tt> : The name of the cell (which is the name of the files which
will be created)</li>
<li><tt class="docutils literal">param</tt> : A dictionnary which gives all the parameters useful in
order to create the cell</li>
</ul>
</div>
<div class="section" id="attributes">
<h3>Attributes</h3>
<ul class="simple">
<li><tt class="docutils literal">_name</tt> : Name of the cell</li>
<li><tt class="docutils literal">_st_insts</tt> : List of all the instances of the cell</li>
<li><tt class="docutils literal">_st_ports</tt> : List of all the external nets of the cell (except for
alimentations and clock)</li>
<li><tt class="docutils literal">_st_sigs</tt> : List of all the internal nets of the cell</li>
<li><tt class="docutils literal">_st_vdds</tt>, <tt class="docutils literal">_st_vsss</tt> : Two tabs of the nets which are
instancied as <tt class="docutils literal">VddIn</tt> and <tt class="docutils literal">VssIn</tt></li>
<li><tt class="docutils literal">_st_cks</tt> : List of all the nets which are instancied as <tt class="docutils literal">CkIn</tt></li>
<li><tt class="docutils literal">_st_merge</tt> : List of all the internal nets which have to be merged</li>
<li><tt class="docutils literal">_param</tt> : The map given as argument at the creation of the cell</li>
<li><tt class="docutils literal">_underCells</tt> : List of all the instances which are cells that have
to be created</li>
<li><tt class="docutils literal">_and</tt>, <tt class="docutils literal">_or</tt>, <tt class="docutils literal">_xor</tt>, <tt class="docutils literal">_not</tt>, <tt class="docutils literal">_buff</tt>, <tt class="docutils literal">_mux</tt>, <tt class="docutils literal">_reg</tt>,
<tt class="docutils literal">_shift</tt>, <tt class="docutils literal">_comp</tt>, <tt class="docutils literal">_add</tt>, <tt class="docutils literal">_mult</tt>, <tt class="docutils literal">_div</tt> : tells which
generator to use when using overloard</li>
<li><tt class="docutils literal">_NB_INST</tt> : The number of instances of the cell (useful in order
to automatically give a name to the instances)</li>
<li><tt class="docutils literal">_TAB_NETS_OUT</tt> and <tt class="docutils literal">_TAB_NETS_CAT</tt> : Lists of all the nets
automatically created</li>
<li><tt class="docutils literal">_insref</tt> : The reference instance (for placement)</li>
</ul>
<p>And, in connection with Hurricane :</p>
<ul class="simple">
<li><tt class="docutils literal">_hur_cell</tt> : The hurricane cell (None by default)</li>
<li><tt class="docutils literal">_db</tt> : The database</li>
<li><tt class="docutils literal">_lib0</tt> : <tt class="docutils literal">self._db.Get_CATA_LIB ( 0 )</tt></li>
<li><tt class="docutils literal">_nb_alims_verticales</tt>, <tt class="docutils literal">_nb_pins</tt>, <tt class="docutils literal">_nb_vdd_pins</tt>,
<tt class="docutils literal">_nb_vss_pins</tt>, <tt class="docutils literal">standard_instances_list</tt>, <tt class="docutils literal">pad_north</tt>,
<tt class="docutils literal">pad_south</tt>, <tt class="docutils literal">pad_east</tt>, <tt class="docutils literal">pad_west</tt> : all place and route
stuffs ...</li>
</ul>
</div>
<div class="section" id="methods">
<h3>Methods</h3>
<p>Methods of class <tt class="docutils literal">Model</tt> are listed below :</p>
<ul class="simple">
<li><tt class="docutils literal">HurricanePlug</tt> : Creates the Hurricane cell thanks to the
stratus cell.
Before calling this method, only the stratus cell is created, after
this method, both cells are created. This method has to be called
before View and Save, and before Layout.</li>
<li><tt class="docutils literal">View</tt> : Opens/Refreshes the editor in order to see the created
layout</li>
<li><tt class="docutils literal">Quit</tt> : Finishes a cell without saving</li>
<li><tt class="docutils literal">Save</tt> : Saves the created cell
If several cells have been created, they are all going to be saved
in separated files</li>
</ul>
<p>Some of those methods have to be defined in order to create a new cell :</p>
<ul class="simple">
<li><tt class="docutils literal">Interface</tt> : Description of the external ports of the cell</li>
<li><tt class="docutils literal">Netlist</tt> : Description of the netlist of the cell</li>
<li><tt class="docutils literal">Layout</tt> : Description of the layout of the cell</li>
<li><tt class="docutils literal">Vbe</tt> : Description of the behavior of the cell</li>
<li><tt class="docutils literal">Pattern</tt> : Description of the patterns in order to test the cell</li>
</ul>
</div>
</div>
<div class="section" id="nets">
<h2><a class="toc-backref" href="#id13">Nets</a></h2>
<div class="section" id="id2">
<h3>Synopsys</h3>
<pre class="literal-block">
netInput = LogicIn ( name, arity )
</pre>
</div>
<div class="section" id="id3">
<h3>Description</h3>
<p>Instanciation of net. Differents kind of nets are listed below :</p>
<ul class="simple">
<li><tt class="docutils literal">LogicIn</tt> : Creation of an input port</li>
<li><tt class="docutils literal">LogicOut</tt> : Creation of an output port</li>
<li><tt class="docutils literal">LogicInOut</tt> : Creation of an inout port</li>
<li><tt class="docutils literal">LogicUnknown</tt> : Creation of an input/output port which direction
is not defined</li>
<li><tt class="docutils literal">TriState</tt> : Creation of a tristate port</li>
<li><tt class="docutils literal">CkIn</tt> : Creation of a clock port</li>
<li><tt class="docutils literal">VddIn</tt> : Creation of the vdd alimentation</li>
<li><tt class="docutils literal">VssIn</tt> : Creation of the vss alimentation</li>
<li><tt class="docutils literal">Signal</tt> : Creation of an internal net</li>
</ul>
</div>
<div class="section" id="id4">
<h3>Parameters</h3>
<ul class="simple">
<li><tt class="docutils literal">name</tt> : Name of the net (mandatory argument)</li>
<li><tt class="docutils literal">arity</tt> : Arity of the net (mandatory argument)</li>
<li><tt class="docutils literal">indice</tt> : For buses only : the LSB bit (optional argument : set
to 0 by default)</li>
</ul>
<p>Only <tt class="docutils literal">CkIn, ``\ ``VddIn</tt> and <tt class="docutils literal">VssIn</tt> do not have the same parameters: there is only the <tt class="docutils literal">name</tt> parameter (they are 1 bit nets).</p>
</div>
<div class="section" id="id5">
<h3>Attributes</h3>
<ul>
<li><p class="first"><tt class="docutils literal">_name</tt> : Name of the net</p>
</li>
<li><p class="first"><tt class="docutils literal">_arity</tt> : Arity of the net (by default set to 0)</p>
</li>
<li><p class="first"><tt class="docutils literal">_ind</tt> : LSB of the net</p>
</li>
<li><p class="first"><tt class="docutils literal">_ext</tt> : Tells if the net is external or not (True/False)</p>
</li>
<li><p class="first"><tt class="docutils literal">_direct</tt> : If the net is external, tells the direction (“IN”,
“OUT”, “INOUT”, “TRISTATE”, “UNKNOWN”)</p>
</li>
<li><p class="first"><tt class="docutils literal">_h_type</tt> : If the net is an alimentation or a clock, tells the
type (“POWER”, “GROUND”, “CLOCK”)</p>
</li>
<li><p class="first"><tt class="docutils literal">_type</tt> : The arithmetic type of the net ( “nr” )</p>
</li>
<li><p class="first"><tt class="docutils literal">_st_cell</tt> : The stratus cell which the net is instanciated in</p>
</li>
<li><p class="first"><tt class="docutils literal">_real_net</tt> : If the net is a part of a net (Sig) it is the real
net corresponding</p>
</li>
<li><p class="first"><tt class="docutils literal">_alias</tt> : [] by default. When the net has an alias, its a tab.
Each element of the tab correspond to a bit of the net (from the LSB
to the MSB), ita a dictionnary : the only key is the net which this
net is an alias from, the value is the bit of the net</p>
</li>
<li><p class="first"><tt class="docutils literal">_to_merge</tt> : [] by default. The same as _alias</p>
</li>
<li><div class="first line-block">
<div class="line"><tt class="docutils literal">_to_cat</tt> : [] by default. The same as _alias</div>
</div>
</li>
</ul>
<p>And, in connection with Hurricane :</p>
<ul class="simple">
<li><tt class="docutils literal">_hur_net</tt> : A tab with all the hurricane nets corresponding to the
stratus net ; From the LSB to the MSB (for example, with a 1 bit net,
one gets the hurricane net by doing : <tt class="docutils literal">net._hur_net[0]</tt> ).</li>
</ul>
</div>
<div class="section" id="id6">
<h3>Methods</h3>
<ul>
<li><p class="first"><tt class="docutils literal">Buffer</tt> : Instanciation of a Buffer</p>
</li>
<li><p class="first"><tt class="docutils literal">Shift</tt> : Instanciation of a shifter</p>
</li>
<li><p class="first"><tt class="docutils literal">Mux</tt> : Instanciation of a multiplexor</p>
</li>
<li><p class="first"><tt class="docutils literal">Reg</tt> : Instanciation of a register</p>
</li>
<li><p class="first"><tt class="docutils literal">Eq/Ne</tt> : Instanciation of comparison generator</p>
</li>
<li><p class="first"><tt class="docutils literal">Extend</tt> : A net is extended</p>
</li>
<li><p class="first"><tt class="docutils literal">Alias</tt> : A net is an alias of another net</p>
</li>
<li><div class="first line-block">
<div class="line"><tt class="docutils literal">Delete</tt> : Deletion of the Hurricane nets</div>
</div>
</li>
</ul>
<p>And the overloards :</p>
<ul class="simple">
<li>__init__ : Initialisation of nets</li>
<li>__le__ : initialisation of a net thanks to &lt;= notation</li>
<li>__getitem__, __geslice__ : Creation of “Sig” nets : which are
part of nets (use of <tt class="docutils literal">[]</tt> and <tt class="docutils literal">[:]</tt>)</li>
<li>__and__, __or__, __xor__, __invert__ : boolean
operation with &amp;, |, ^ ,</li>
<li>__add__, __mul__, __div__ : arithmetic operators with +,
* and /</li>
</ul>
</div>
</div>
<div class="section" id="instances">
<h2><a class="toc-backref" href="#id14">Instances</a></h2>
<div class="section" id="id7">
<h3>Synopsys</h3>
<pre class="literal-block">
Inst ( model
, name
, param = myParam
, map = myMap
)
</pre>
</div>
<div class="section" id="id8">
<h3>Description</h3>
<p>Instantiation of an instance. The type of the instance is given by the
<tt class="docutils literal">model</tt> parameter. The connexions are made thanks to the <tt class="docutils literal">map</tt>
parameters.</p>
</div>
<div class="section" id="id9">
<h3>Parameters</h3>
<ul class="simple">
<li><tt class="docutils literal">model</tt> : Name of the mastercell of the instance to create
(mandatory argument)</li>
<li><tt class="docutils literal">name</tt> : 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.</li>
<li><tt class="docutils literal">param</tt> : Dictionnary for parameters of the mastercell (optional :
only for mastercells which require it)</li>
<li><tt class="docutils literal">map</tt> : Dictionnary for connexions in order to make the netlist</li>
</ul>
</div>
<div class="section" id="id10">
<h3>Attributes</h3>
<ul class="simple">
<li><tt class="docutils literal">_name</tt> : Name of the instance (the name given as parameter if
theres one, a name created otherwise)</li>
<li><tt class="docutils literal">_model</tt> : Name of the model given as argument</li>
<li><tt class="docutils literal">_real_model</tt> : Name of the model created thanks to <tt class="docutils literal">_model</tt> and
all the parameters</li>
<li><tt class="docutils literal">_map</tt> : Dictionnary <tt class="docutils literal">map</tt> given at the instanciation</li>
<li><tt class="docutils literal">_param</tt> : Dictionnary <tt class="docutils literal">param</tt> given at the instanciation</li>
<li><tt class="docutils literal">_st_cell</tt> : The stratus cell which the instance is instanciated in</li>
<li><tt class="docutils literal">_st_masterCell</tt> : The stratus master cell of the instance</li>
</ul>
<p>For placement :</p>
<ul class="simple">
<li><tt class="docutils literal">_plac</tt> : tells if the instance is placed or not (UNPLACED by
default)</li>
<li><tt class="docutils literal">_x</tt>, <tt class="docutils literal">_y</tt> : the coordinates of the instance (only for placed
instances)</li>
<li><tt class="docutils literal">_sym</tt> : the symetry of the instance (only for placed instances)</li>
</ul>
<p>And, in connection with Hurricane :</p>
<ul class="simple">
<li><tt class="docutils literal">_hur_instance</tt> : The hurricane instance (None by default)</li>
<li><tt class="docutils literal">_hur_masterCell</tt> : The Hurricane master cell of the instance (None
by default)</li>
</ul>
</div>
<div class="section" id="id11">
<h3>Methods</h3>
<ul class="simple">
<li>Delete : Deletion of the Hurricane instance</li>
</ul>
</div>
</div>
</div>
<!-- /Content -->
<!-- Footer -->
<div class="footer gradient-2">
<div class="container footer-container ">
<div class="row">
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-3">
<div class="footer-title">Social</div>
<ul class="list-unstyled">
</ul>
</div>
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-2">
</div>
<div class="col-xs-4 col-sm-3 col-md-3 col-lg-3">
<div class="footer-title">Links</div>
<ul class="list-unstyled">
<li><a href="https://coriolis.lip6.fr/" target="_blank">Alliance/Coriolis</a></li>
<li><a href="https://www-soc.lip6.fr/" target="_blank">CIAN Team Website</a></li>
<li><a href="https://f-si.org" target="_blank">Free Silicon Foundation</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-4">
<p class="pull-right text-right">
<small><em>Proudly powered by <a href="http://docs.getpelican.com/" target="_blank">pelican</a></em></small><br/>
<small><em><span class="sc">NEST</span> theme by <a href="https://github.com/molivier" target="_blank">molivier</a></em></small><br/>
<small>Copyright © 2020-2020 Sorbonne Universite</small>
</p>
</div>
</div>
</div>
</div>
<!-- /Footer -->
</body>
</html>