Update Sky130-OpenROAD-Tutorial.rst

This commit is contained in:
Nayiri
2022-09-14 14:27:10 -07:00
committed by GitHub
parent 5c48d039a0
commit 237146577e

View File

@@ -72,18 +72,6 @@ Pull the Hammer environment into the shell:
export HAMMER_HOME=$PWD/hammer
source $HAMMER_HOME/sourceme.sh
Building the Design
--------------------
To elaborate the ``TinyRocketConfig`` and set up all prerequisites for the build system to push the design and SRAM macros through the flow:
.. code-block:: shell
make buildfile tech_name=sky130 CONFIG=TinyRocketConfig
The ``CONFIG=TinyRocketConfig`` selects the target generator config in the same manner as the rest of the Chipyard framework. This elaborates a stripped-down Rocket Chip in the interest of minimizing tool runtime.
For the curious, ``make buildfile`` generates a set of Make targets in ``build/hammer.d``. It needs to be re-run if environment variables are changed. It is recommended that you edit these variables directly in the Makefile rather than exporting them to your shell environment.
Running the VLSI Flow
---------------------
@@ -101,8 +89,46 @@ First, set ``technology.sky130.<sky130A, sky130_nda, openram_lib>`` to the absol
for details about the PDK setup.
Generating SRAMs
----------------
To map the generic memory macros in the generarted Verilog to the SRAMs in your technology process, run the following command:
.. code-block:: shell
make srams tech_name=sky130 CONFIG=TinyRocketConfig
Generating Verilog
------------------
To elaborate the ``TinyRocketConfig`` from Chisel to Verilog, run:
.. code-block:: shell
make verilog tech_name=sky130 CONFIG=TinyRocketConfig
The ``CONFIG=TinyRocketConfig`` selects the target generator config in the same manner as the rest of the Chipyard framework. This elaborates a stripped-down Rocket Chip in the interest of minimizing tool runtime. The resulting verilog is located in ``./generated-src/chipyard.TestHarness.TinyRocketConfig/chipyard.TestHarness.TinyRocketConfig.top.v``.
Note that in the generated Verilog, there are generic memory macros for the various memory components (dcache, icache, tag array, PTW).
This is the same Verilog that is generated for RTL simulations in the ``~chipyard/sims/verilator`` directory, see ` :ref:`Simulation/Software-RTL-Simulation:sw-rtl-sim-intro` for directions on how to run these simulations.
Building the Design
^^^^^^^^^^^^^^^^^^^
To set up all prerequisites for the build system to push the design and SRAM macros through the flow:
.. code-block:: shell
make buildfile tech_name=sky130 CONFIG=TinyRocketConfig
For the curious, ``make buildfile`` generates a set of Make targets in ``build/hammer.d``. It needs to be re-run if environment variables are changed. It is recommended that you edit these variables directly in the Makefile rather than exporting them to your shell environment.
example-openroad.yml
^^^^^^^^^^^^^^^^^^^^
This contains the Hammer configuration for the OpenROAD tool flow. It selects tools for the SRAM "compiler" (already specified in ``example-sky130.yml``), synthesis (Yosys), place and route (OpenROAD), DRC (Magic), and LVS (NetGen). For the remaining commands, we will need to specify this file as the tool configuration to hammer via the ``TOOLS_CONF`` Makefile variable.
Synthesis
^^^^^^^^^
.. code-block:: shell
make syn tech_name=sky130 TOOLS_CONF=example-openroad.yml CONFIG=TinyRocketConfig