OpenFPGA/docs/source/tutorials/getting_started/compile.rst

121 lines
3.9 KiB
ReStructuredText
Raw Normal View History

.. _tutorial_compile:
How to Compile
--------------
.. note:: We recommend you to watch a tutorial `video <https://youtu.be/F9sMRmDewM0>`_ about how-to-compile before getting started
.. only:: html
.. youtube:: F9sMRmDewM0
General Guidelines
~~~~~~~~~~~~~~~~~~
2021-04-24 03:31:52 -05:00
OpenFPGA uses CMake to generate the Makefile scripts.
In general, please follow the steps to compile
2020-05-25 01:31:01 -05:00
.. code-block:: shell
git clone https://github.com/LNIS-Projects/OpenFPGA.git
cd OpenFPGA
make all
.. note:: OpenFPGA requires gcc/g++ version >5
.. note:: cmake3.12+ is recommended to compile OpenFPGA with GUI
2021-06-16 15:00:31 -05:00
.. note:: Recommend using ``make -j<int>`` to accelerate the compilation, where ``<int>`` denotes the number of cores to be used in compilation.
2020-10-05 15:27:08 -05:00
.. note:: VPR's GUI requires gtk-3, and can be enabled with ``cmake .. -DVPR_USE_EZGL=on``
2020-05-24 19:22:45 -05:00
**Quick Compilation Verification**
2022-07-21 19:52:21 -05:00
.. note:: Ensure that you install python dependences in :ref:`tutorial_compile_dependencies`.
2021-06-14 15:51:19 -05:00
To quickly verify the tool is well compiled, users can run the following command from OpenFPGA root repository
2020-05-25 01:31:01 -05:00
.. code-block:: shell
python3 openfpga_flow/scripts/run_fpga_task.py compilation_verification --debug --show_thread_logs
2022-09-26 18:22:40 -05:00
.. _tutorial_compile_build_options:
Build Options
~~~~~~~~~~~~~
General build targets are available in the top-level makefile. Call help desk to see details
.. code-block:: shell
make help
The following options are available for a custom build
.. option:: BUILD_TYPE=<string>
Specify the type of build. Can be either ``release`` or ``debug``. By default, release mode is selected (full optimization on runtime)
.. option:: CMAKE_FLAGS=<string>
Force build flags to CMake. The following flags are available
- ``DOPENFPGA_WITH_TEST=[ON|OFF]``: Enable/Disable the test build
- ``DOPENFPGA_WITH_YOSYS=[ON|OFF]``: Enable/Disable the build of yosys. Note that when disabled, the build of yosys-plugin is also disabled
- ``DOPENFPGA_WITH_YOSYS_PLUGIN=[ON|OFF]``: Enable/Disable the build of yosys-plugin.
.. warning:: By default, only required modules in *Verilog-to-Routing* (VTR) is enabled. On other words, ``abc``, ``odin``, ``yosys`` and other add-ons inside VTR are not built. If you want to enable them, please look into the dedicated options of CMake scripts.
2022-07-21 19:52:21 -05:00
.. _tutorial_compile_dependencies:
Dependencies
~~~~~~~~~~~~
2021-06-14 15:51:19 -05:00
Full list of dependencies can be found at install_dependencies_build_.
In particular, OpenFPGA requires specific versions for the following dependencies:
:cmake:
version >3.12 for graphical interface
:iverilog:
version 10.1+ is required to run Verilog-to-Verification flow
2021-07-26 16:12:59 -05:00
2021-08-17 11:18:51 -05:00
:python dependencies:
python packages are also required:
2021-07-26 16:18:23 -05:00
2022-07-21 19:52:21 -05:00
.. code-block::
2021-08-17 11:18:51 -05:00
python3 -m pip install -r requirements.txt
2022-07-21 19:52:21 -05:00
2021-02-04 12:58:59 -06:00
.. _install_dependencies_build: https://github.com/lnis-uofu/OpenFPGA/blob/master/.github/workflows/install_dependencies_build.sh
Running with the docker image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-06-14 15:51:19 -05:00
Users can skip the traditional installation process by using the Dockerized version
of the OpenFPGA tool. The OpenFPGA project maintains the docker image/Github package of
the latest stable version of OpenFPGA in the following repository
`openfpga-master <https://github.com/orgs/lnis-uofu/packages/container/package/openfpga-master>`_.
This image contains precompiled OpenFPGA binaries with all prerequisites installed.
.. code-block:: bash
2022-05-08 14:03:16 -05:00
# To get the docker image from the repository,
docker pull ghcr.io/lnis-uofu/openfpga-master:latest
# To invoke openfpga_shell
2022-05-08 14:03:16 -05:00
docker run -it ghcr.io/lnis-uofu/openfpga-master:latest openfpga/openfpga bash
# To run the task that already exists in the repository.
docker run -it ghcr.io/lnis-uofu/openfpga-master:latest bash -c "source openfpga.sh && run-task compilation_verification"
2022-05-08 14:03:16 -05:00
# To link the local directory wihth docker
mkdir work
docker run -it -v work:/opt/openfpga/ ghcr.io/lnis-uofu/openfpga-master:latest bash
# Inside container
source openfpga.sh
cd work
create_task _my_task yosys_vpr