.. _installation:
Installation
============
There are two ways of installing the FVM:
Installing from pip
-------------------
The recommended way of installing the FVM is to install it from the Python
Package Index (`PyPI `_), using pip:
.. code-block:: zsh
pip3 install --pre fvm-formal
Here, we use the ``--pre`` flag to tell pip to include development and release
candidate versions in its search. After ``1.0.0`` becomes stable, we can stop
using the ``--pre`` flag.
.. note::
In recent pip versions you may need to create a python virtual environment
(``venv``), or else you will get an "externally-managed-environment" error
when trying to install packages using pip.
The following code:
.. code-block:: zsh
python3 -m venv venv # Create the venv in the venv folder
source venv/bin/activate # Activate the newly created venv
will create a ``venv`` and activate it in the current shell. With the
``venv`` activated, ``pip3 install`` will install the FVM inside the venv.
See https://docs.python.org/3/tutorial/venv.html for details.
Installing from the git repository
----------------------------------
Installing from the repository allows to perform an editable installation
(passing the ``-e`` flag to ``pip3 install``), so you can modify the python sources
and the changes will be immediately available.
This option is also interesting if you want a specific version that was not
tagged and pushed on PyPI, for example if you need to check out a specific
commit, branch or tag.
.. code-block:: zsh
git clone https://gitlab.com/fvmformal/fvm.git
pip3 install -e fvm
.. note::
The FVM is also available on github:
.. code-block:: zsh
git clone https://github.com/fvmformal/fvm.git
pip3 install -e fvm
.. note::
The ``-e`` option tells python that the FVM sources reside in the recently
cloned ``fvm`` directory. If you intend to remove that directory, you should
remove the ``-e`` flag, but of course in that case the installation will not
be editable.
Non-python dependencies
-----------------------
All python dependencies should be correctly managed by ``pip`` when you install
the FVM. Nevertheless, there are two non-python dependencies which you should
make sure you have in your system:
- **The actual formal tools:** The FVM currently only supports the Questa
formal tools (and the Questa OneSim simulator to compute simulation code
coverage). You should have the tools installed in the system and the
executables (``qverify``, ``vlib``, ``vcom``, ``vsim``, etc) in your
``PATH``, and of course a valid license.
- **Java:** The FVM uses `Allure Report `_ to create
beautiful HTML reports with the formal verification results. The FVM
framework will download and use a specific release of Allure Report when
needed. This framework is based on Java, so if you want to be able to create
and view the reports you will need to install it, for example you can install
the Open Java Development Kit (OpenJDK):
- On Debian 13:
.. code:: zsh
sudo apt install openjdk-11-jre
- On Rocky Linux 8:
.. code:: zsh
sudo yum install java-1.8.0-openjdk