use klayout for sky130-openroad tutorial, update conda install directions so that openroad/klayout installs don't fail
This commit is contained in:
@@ -50,7 +50,7 @@ Prerequisites
|
|||||||
|
|
||||||
* Yosys (synthesis), install `using conda <https://anaconda.org/litex-hub/yosys>`__ or `from source <https://yosyshq.net/yosys/download.html>`__
|
* Yosys (synthesis), install `using conda <https://anaconda.org/litex-hub/yosys>`__ or `from source <https://yosyshq.net/yosys/download.html>`__
|
||||||
* OpenROAD (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or `from source <https://openroad.readthedocs.io/en/latest/main/README.html#install-dependencies>`__
|
* OpenROAD (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or `from source <https://openroad.readthedocs.io/en/latest/main/README.html#install-dependencies>`__
|
||||||
* KLayout (DEF to GDSII conversion), install `using conda <https://anaconda.org/litex-hub/klayout>`__ or `from source <https://www.klayout.de/build.html>`__
|
* KLayout (DEF to GDSII conversion, DRC), install `using conda <https://anaconda.org/litex-hub/klayout>`__ or `from source <https://www.klayout.de/build.html>`__
|
||||||
* Magic (DRC), , install `using conda <https://anaconda.org/litex-hub/magic>`__ or `from source <http://www.opencircuitdesign.com/magic/install.html>`__
|
* Magic (DRC), , install `using conda <https://anaconda.org/litex-hub/magic>`__ or `from source <http://www.opencircuitdesign.com/magic/install.html>`__
|
||||||
* NetGen (LVS), , install `using conda <https://anaconda.org/litex-hub/netgen>`__ or `from source <http://www.opencircuitdesign.com/netgen/install.html>`__
|
* NetGen (LVS), , install `using conda <https://anaconda.org/litex-hub/netgen>`__ or `from source <http://www.opencircuitdesign.com/netgen/install.html>`__
|
||||||
|
|
||||||
@@ -67,6 +67,10 @@ Note that we create a new conda environment for each tool because some of them h
|
|||||||
|
|
||||||
.. code-block:: shell
|
.. code-block:: shell
|
||||||
|
|
||||||
|
# channel settings so openroad/klayout install properly
|
||||||
|
conda config --set channel_priority true
|
||||||
|
conda config --add channels defaults
|
||||||
|
|
||||||
# download all files for Sky130A PDK
|
# download all files for Sky130A PDK
|
||||||
conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9
|
conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9
|
||||||
# clone the SRAM22 Sky130 SRAM macros
|
# clone the SRAM22 Sky130 SRAM macros
|
||||||
@@ -78,6 +82,10 @@ Note that we create a new conda environment for each tool because some of them h
|
|||||||
conda create -c litex-hub --prefix ~/.conda-klayout klayout=0.28.5_98_g87e2def28
|
conda create -c litex-hub --prefix ~/.conda-klayout klayout=0.28.5_98_g87e2def28
|
||||||
conda create -c litex-hub --prefix ~/.conda-signoff magic=8.3.376_0_g5e5879c netgen=1.5.250_0_g178b172
|
conda create -c litex-hub --prefix ~/.conda-signoff magic=8.3.376_0_g5e5879c netgen=1.5.250_0_g178b172
|
||||||
|
|
||||||
|
# revert conda settings
|
||||||
|
conda config --set channel_priority strict
|
||||||
|
conda config --remove channels defaults
|
||||||
|
|
||||||
Initial Setup
|
Initial Setup
|
||||||
-------------
|
-------------
|
||||||
In the Chipyard root, ensure that you have the Chipyard conda environment activated. Then, run:
|
In the Chipyard root, ensure that you have the Chipyard conda environment activated. Then, run:
|
||||||
@@ -118,7 +126,7 @@ Add the following YAML keys to the top of this file to specify the location of t
|
|||||||
example-openroad.yml
|
example-openroad.yml
|
||||||
^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
This contains the Hammer configuration for the OpenROAD tool flow.
|
This contains the Hammer configuration for the OpenROAD tool flow.
|
||||||
It selects tools for synthesis (Yosys), place and route (OpenROAD), DRC (Magic), and LVS (NetGen).
|
It selects tools for synthesis (Yosys), place and route (OpenROAD), DRC (KLayout or Magic), and LVS (NetGen).
|
||||||
|
|
||||||
Add the following YAML keys to the top of this file to specify the locations of the tool binaries.
|
Add the following YAML keys to the top of this file to specify the locations of the tool binaries.
|
||||||
Note that this is not required if the tools are already on your PATH.
|
Note that this is not required if the tools are already on your PATH.
|
||||||
@@ -129,7 +137,8 @@ Note that this is not required if the tools are already on your PATH.
|
|||||||
# tool binary paths
|
# tool binary paths
|
||||||
synthesis.yosys.yosys_bin: ~/.conda-yosys/bin/yosys
|
synthesis.yosys.yosys_bin: ~/.conda-yosys/bin/yosys
|
||||||
par.openroad.openroad_bin: ~/.conda-openroad/bin/openroad
|
par.openroad.openroad_bin: ~/.conda-openroad/bin/openroad
|
||||||
par.openroad.klayout_bin: ~/.conda-klayout/bin/klayout
|
par.openroad.klayout_bin: ~/.conda-klayout/bin/klayout # binary that OpenROAD calls for final GDS writeout
|
||||||
|
drc.klayout.klayout_bin: ~/.conda-klayout/bin/klayout # binary that runs for DRC step
|
||||||
drc.magic.magic_bin: ~/.conda-signoff/bin/magic
|
drc.magic.magic_bin: ~/.conda-signoff/bin/magic
|
||||||
lvs.netgen.netgen_bin: ~/.conda-signoff/bin/netgen
|
lvs.netgen.netgen_bin: ~/.conda-signoff/bin/netgen
|
||||||
|
|
||||||
@@ -237,10 +246,14 @@ DRC & LVS
|
|||||||
|
|
||||||
As a note, this tutorial has been run extensively through commercial signoff tools,
|
As a note, this tutorial has been run extensively through commercial signoff tools,
|
||||||
thus the open-source signoff flow is not stable or guaranteed to produce useful results.
|
thus the open-source signoff flow is not stable or guaranteed to produce useful results.
|
||||||
We welcome any contributions to improving both our `Magic tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/magic>`__
|
We welcome any contributions to improving our `KLayout tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/klayout>`__,
|
||||||
|
`Magic tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/magic>`__,
|
||||||
and `Netgen tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/lvs/netgen>`__.
|
and `Netgen tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/lvs/netgen>`__.
|
||||||
|
|
||||||
To run DRC & LVS in Magic & Netgen, respectively:
|
We recommend KLayout for DRC to produce readable results, but Magic may be selected in ``example-openroad.yml``
|
||||||
|
by uncommenting the line ``vlsi.core.drc_tool: "hammer.drc.magic"``.
|
||||||
|
|
||||||
|
To run DRC & LVS and view the results:
|
||||||
|
|
||||||
.. code-block:: shell
|
.. code-block:: shell
|
||||||
|
|
||||||
@@ -259,7 +272,7 @@ Note that in ``sky130-openroad.yml`` we have set the following YAML keys:
|
|||||||
These keys cause the Hammer plugin to only generate all necessary scripts, without executing them with the respective tool.
|
These keys cause the Hammer plugin to only generate all necessary scripts, without executing them with the respective tool.
|
||||||
This is because Magic and Netgen, as of the writing of this tutorial, do not have a database format that may be loaded interactively,
|
This is because Magic and Netgen, as of the writing of this tutorial, do not have a database format that may be loaded interactively,
|
||||||
so to view the DRC/LVS results for debugging you must launch the tool interactively, then run DRC/LVS checks,
|
so to view the DRC/LVS results for debugging you must launch the tool interactively, then run DRC/LVS checks,
|
||||||
which is done by the ``generated-scripts/view_[drc|lvs]`` scripts.
|
which is done by the ``generated-scripts/view_[drc|lvs]`` scripts. This is not the case for KLayout, which does have a loadable database format.
|
||||||
|
|
||||||
|
|
||||||
VLSI Flow Control
|
VLSI Flow Control
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
# Tool options. Replace with your tool plugin of choice.
|
# Tool options. Replace with your tool plugin of choice.
|
||||||
vlsi.core.build_system: make
|
vlsi.core.build_system: make
|
||||||
# Yosys
|
# Synthesis: Yosys
|
||||||
vlsi.core.synthesis_tool: "hammer.synthesis.yosys"
|
vlsi.core.synthesis_tool: "hammer.synthesis.yosys"
|
||||||
# OpenROAD
|
# Place-and-Route: OpenROAD
|
||||||
vlsi.core.par_tool: "hammer.par.openroad"
|
vlsi.core.par_tool: "hammer.par.openroad"
|
||||||
# Magic
|
# DRC: KLayout or Magic (comment other one out)
|
||||||
vlsi.core.drc_tool: "hammer.drc.magic"
|
vlsi.core.drc_tool: "hammer.drc.klayout"
|
||||||
# Netgen
|
# vlsi.core.drc_tool: "hammer.drc.magic"
|
||||||
|
# LVS: Netgen
|
||||||
vlsi.core.lvs_tool: "hammer.lvs.netgen"
|
vlsi.core.lvs_tool: "hammer.lvs.netgen"
|
||||||
|
|||||||
Reference in New Issue
Block a user