Stratus - Procedural design language based upon Python
Stratus is a set of Python methods/functions dedicated to procedural generation purposes. From a user point of view, Stratus is a circuit's description language that allows Python programming flow control, variable use, and specialized functions in order to handle vlsi objects.
Based upon the Hurricane data structures, the Stratus language gives the user the ability to describe netlist and layout views.
A cell is a hierachical structural description of a circuit in terms of ports (I/Os), signals (nets) and instances.
The creation of a cell is done by creating a new class, derivating for class Model
, with different methods :
Interface
: Description of the external ports of the cell :
Netlist
: Description of the netlist of the cell :
Layout
: Description of the layout of the cell :
Two methods are provided :
View
: Opens/Refreshes the editor in order to see the created layout
Save
: Saves the created cell
A Stratus file must have a .py extension and must begin as follow :
#!/usr/bin/env python from stratus import *
The creation of a class is done as follow :
class myClass ( Model ) : ... exemple = myClass ( name, param )
In order to execute a Stratus file (named file
for example), one has two choices :
python file.pyOr :
chmod u+x file.py ./file.py
The names used in Stratus, as arguments to Stratus functions, should be alphanumerical, including the underscore. The arguments of Stratus are case sensitive, so VDD is not equivalent to VDD.
Vectorized connectors or signal can be used using the [N:M] construct.
When using vi, it's possible to have the right syntax highlighting when using vi :
:syntax off :source /asim/coriolis/share/etc/stratus.vim
syntax off autocmd BufRead,BufNewfile *.py so /asim/coriolis/share/etc/stratus.vim syntax on
def
def
def
def
.
CATAL
You can see a concrete example at : Example
Netlist Layout Place and Route Virtual libraty Instanciation facilities
Sophie BELLOEIL