Laygo is an add-on to BAG2 framework for layout generation, written by Jaeduk Han, Woorham Bae, Zhongkai Wang, and Eric Jan. The physical design of analog and mixed-signal (AMS) circuits is very challenging in advanced CMOS processes, due to their complex design rules. Laygo abstracts the design rules by introducing quantized templates and grids. With Laygo, the AMS layout is constructed by placing templates and routing wires on grids; designers don't need to deal with complex design rules. Using Laygo, you can script your layout construction process in Python, which gives higher productivity and process portability over multiple technology nodes.
-
Install BAG2 (skip if you are using the GDS flow)
-
Clone laygo repo
$ git clone [email protected]:ucb-art/laygo.git
-
Prepare setup files for your technology.
-
laygo_config.yaml - contains general technology information.
Example: labs/laygo_config.yaml
-
(technology_name).layermap(optional) - layer mapping file only for the GDS flow. Usually the layermap file can be found in your PDK library.
Example: labs/laygo_faketech.layermap
-
primitive template and grid database : laygo stores template and grid information in yaml files. Users can construct their yaml files, or provided from external vendors under NDA.
Example database files (for laygo_faketech, used in the GDS flow): labs/laygo_faketech_microtemplates_dense_templates.yaml, labs/laygo_faketech_microtemplates_dense_grids.yaml
An example script for constructing the yaml database: labs/lab2_a_gridlayoutgenerator_constructtemplate.py
Example setup files for generic technologies are released for reference, which can be found here:
* [cds_ff_mpt]([email protected]:ucb-art/BAG2_cds_ff_mpt.git) * [NCSU FreePDK45]([email protected]:ucb-art/BAG2_freePDK45.git)
For BWRC users, default setup files for various technologies are provided under proper NDAs.
-
-
Let's run a toy example. Launch ipython and run the GDS tutorial script quick_start_GDS.py.
$ start_bag.sh (or ipython) > cd laygo > run quick_start_GDS.py
It will create a nand gate layout and save the layout to output.gds.
KLayout was used for the gds display. Detailed explanations on the tutorial script are here. You can also export the layout to the BAG framework. Refer to this document for details.
-
For more practice examples, go over lab materials in labs/. Detailed instructions can be found in lab readme.
-
More generator examples are being uploaded in https://ucb-art.github.io/laygo/ for reference.
Documents are stored in https://ucb-art.github.io/laygo/.
Various lab modules are provided to guide the layout generation procedure. Users are strongly recommended to finish all lab modules before working on their designs. Labs modules can be found here
Example generaters can be found here.
This project is licensed under the BSD License - check the LICENSE file for details.