.. _compiling:

Build systems
#############

PyStim can be used with any HDL simulator which supports shared library loading
with global symbol visibility.

PyStim calls internal Python method therefore PyStim shared library
should be loaded with global symbol visibility to resolve Python symbols at runtime.
In addition PyStim version should match the Python version installed on the system.

.. note::

    Note that the Python installation on the target OS must include Python shared libraries.
    PyStim utilizes these shared libraries to embed the Python interpreter.

PyStim SystemVerilog package should be compiled as part of the project.

.. _questa-sim-run:

Questa sim
==========

To run PyStim under questa simulator, the following arguments are required:

.. code-block:: bash

    vlog ... -f $PY_STIM_INSTALL_DIR/system_verilog/list/py_stim.f
    vsim ... -gblso ${PY_STIM_INSTALL_DIR}/lib/libpystim.so -sv_lib ${PY_STIM_INSTALL_DIR}/lib/libpystim


-gblso - Open the specified shared object(s) with global symbol visibility.
If multiple shared objects are specified, they will first be merged internally
and then loaded as single shared object.
                                 

.. _synopsys-vcs-run:

Synopsys VCS
============

To run PyStim under Synopsys VCS simulator, the following arguments are required:


.. code-block:: bash

    vcs ... -full64 -f $PY_STIM_INSTALL_DIR/system_verilog/list/py_stim.f -sverilog -sv_root ${PY_STIM_INSTALL_DIR}/lib/libpystim.so -sv_lib ${PY_STIM_INSTALL_DIR}/lib/libpystim.so

Cadence Xcelium
===============

To run PyStim under Cadence Xcelium simulator, the following arguments are required:


.. code-block:: bash

    xrun ... -f $PY_STIM_INSTALL_DIR/system_verilog/list/py_stim.f -sv_lib ${PY_STIM_INSTALL_DIR}/lib/libpystim.so



Verilator
==========

To run PyStim under Verilator, the following arguments are required:

.. code-block:: bash

    verilator ... ${PY_STIM_INSTALL_DIR}/lib/libpystim.so"




