Licensing
=========

Ibex is released under the Apache license, version 2.0.

Ibex can be used, modified, and distributed for any purpose (including commercial) and without any royalties.
There are some requirements on including copyright notices and the original license.

Please see the ``LICENSE`` file in the source code for the full (and legally binding) license text.

Even though the license doesn't require it, we appreciate feedback and contributions to make Ibex work better for everyone.
Please open an `issue <https://github.com/lowRISC/ibex/issues>`_ for bug reports, questions, or suggested improvements, or a `pull request <https://github.com/lowRISC/ibex/pulls>`_ if you'd like to contribute code.

.. note::

  Commercial support for Ibex is available from `lowRISC <https://www.lowrisc.org/>`_.
