|
|
|
|
@@ -49,7 +49,7 @@ Prerequisites
|
|
|
|
|
* OpenROAD flow tools (NOTE: tutorial may break with different tool versions):
|
|
|
|
|
|
|
|
|
|
* **Yosys 0.27+3** (synthesis), install `using conda <https://anaconda.org/litex-hub/yosys>`__ or `from source <https://yosyshq.net/yosys/download.html>`__
|
|
|
|
|
* **OpenROAD v2.0-7070-g0264023b6** (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or
|
|
|
|
|
* **OpenROAD v2.0-7070-g0264023b6** (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or
|
|
|
|
|
`from source <https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/docs/user/Build.md>`__ (git hash: 0264023b6c2a8ae803b8d440478d657387277d93)
|
|
|
|
|
* **KLayout 0.28.5** (DEF to GDSII conversion, DRC), install `using conda <https://anaconda.org/litex-hub/klayout>`__ or `from source <https://www.klayout.de/build.html>`__
|
|
|
|
|
* **Magic 8.3.376** (DRC), install `using conda <https://anaconda.org/litex-hub/magic>`__ or `from source <http://www.opencircuitdesign.com/magic/install.html>`__
|
|
|
|
|
@@ -161,8 +161,7 @@ The ``buildfile`` make target has dependencies on both (1) the Verilog that is e
|
|
|
|
|
and (2) the mapping of memory instances in the design to SRAM macros;
|
|
|
|
|
all files related to these two steps reside in the ``generated-src/chipyard.harness.TestHarness.TinyRocketConfig-ChipTop`` directory.
|
|
|
|
|
Note that the files in ``generated-src`` vary for each tool/technology flow.
|
|
|
|
|
This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows
|
|
|
|
|
(due to the ``ENABLE_YOSYS_FLOW`` flag, explained below), so these flows should be run in separate
|
|
|
|
|
This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows, so these flows should be run in separate
|
|
|
|
|
chipyard installations. If the wrong sources are generated, simply run ``make buildfile -B`` to rebuild all targets correctly.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -175,7 +174,6 @@ which will cause additional variables to be set in ``tutorial.mk``, a few of whi
|
|
|
|
|
* ``DESIGN_CONF`` and ``EXTRA_CONFS`` allow for additonal design-specific overrides of the Hammer IR in ``example-sky130.yml``
|
|
|
|
|
* ``VLSI_OBJ_DIR=build-sky130-openroad`` gives the build directory a unique name to allow running multiple flows in the same repo. Note that for the rest of the tutorial we will still refer to this directory in file paths as ``build``, again for brevity.
|
|
|
|
|
* ``VLSI_TOP`` is by default ``ChipTop``, which is the name of the top-level Verilog module generated in the Chipyard SoC configs. By instead setting ``VLSI_TOP=Rocket``, we can use the Rocket core as the top-level module for the VLSI flow, which consists only of a single RISC-V core (and no caches, peripherals, buses, etc). This is useful to run through this tutorial quickly, and does not rely on any SRAMs.
|
|
|
|
|
* ``ENABLE_YOSYS_FLOW = 1`` is required for synthesis through Yosys. This reverts to the Scala FIRRTL Compiler so that unsupported multidimensional arrays are not generated in the Verilog.
|
|
|
|
|
|
|
|
|
|
Running the VLSI Flow
|
|
|
|
|
---------------------
|
|
|
|
|
@@ -275,7 +273,7 @@ This is because Magic and Netgen, as of the writing of this tutorial, do not hav
|
|
|
|
|
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. This is not the case for KLayout, which does have a loadable database format.
|
|
|
|
|
|
|
|
|
|
Below is the window you should see when loading the KLayout DRC results interactively. Note that most of these DRC errors are
|
|
|
|
|
Below is the window you should see when loading the KLayout DRC results interactively. Note that most of these DRC errors are
|
|
|
|
|
from special rules relating to Sky130 SRAMs, which have been verified separately. In the future the KLayout tool plugin should blackbox these
|
|
|
|
|
SRAM macros by default, but this feature does not exist yet.
|
|
|
|
|
|
|
|
|
|
|