yosys/docs/source/appendix/auxlibs.rst

82 lines
2.3 KiB
ReStructuredText
Raw Normal View History

Auxiliary libraries
===================
The Yosys source distribution contains some auxiliary libraries that are
compiled into Yosys and can be used in plugins.
BigInt
------
The files in ``libs/bigint/`` provide a library for performing arithmetic with
arbitrary length integers. It is written by Matt McCutchen.
The BigInt library is used for evaluating constant expressions, e.g. using the
ConstEval class provided in kernel/consteval.h.
See also: http://mattmccutchen.net/bigint/
dlfcn-win32
-----------
2024-01-17 17:14:00 -06:00
The ``dlfcn`` library enables runtime loading of plugins without requiring
recompilation of Yosys. The files in ``libs/dlfcn-win32`` provide an
implementation of ``dlfcn`` for Windows.
See also: https://github.com/dlfcn-win32/dlfcn-win32
ezSAT
-----
The files in ``libs/ezsat`` provide a library for simplifying generating CNF
formulas for SAT solvers. It also contains bindings of MiniSAT. The ezSAT
2024-05-02 20:16:48 -05:00
library is written by C. Wolf. It is used by the `sat` pass (see
2024-01-17 17:14:00 -06:00
:doc:`/cmd/sat`).
fst
---
2024-01-17 17:14:00 -06:00
``libfst`` files from `gtkwave`_ are included in ``libs/fst`` to support
reading/writing signal traces from/to the GTKWave developed FST format. This is
2024-05-02 20:16:48 -05:00
primarily used in the `sim` command.
2024-01-17 17:14:00 -06:00
.. _gtkwave: https://github.com/gtkwave/gtkwave
json11
------
2024-05-02 20:16:48 -05:00
For reading/writing designs from/to JSON, `read_json` and
`write_json` should be used. For everything else there is the `json11
2024-01-17 17:14:00 -06:00
library`_:
json11 is a tiny JSON library for C++11, providing JSON parsing and
serialization.
2024-05-02 20:16:48 -05:00
This library is used for outputting machine-readable statistics (`stat`
with ``-json`` flag), using the RPC frontend (`connect_rpc`), and the
2024-01-17 17:14:00 -06:00
yosys-witness ``yw`` format.
.. _json11 library: https://github.com/dropbox/json11
MiniSAT
-------
2024-01-17 17:14:00 -06:00
The files in ``libs/minisat`` provide a high-performance SAT solver, used by the
2024-05-02 20:16:48 -05:00
`sat` command.
SHA1
----
The files in ``libs/sha1/`` provide a public domain SHA1 implementation written
by Steve Reid, Bruce Guenter, and Volker Grabsch. It is used for generating
unique names when specializing parameterized modules.
.. _sec:SubCircuit:
SubCircuit
----------
The files in ``libs/subcircuit`` provide a library for solving the subcircuit
isomorphism problem. It is written by C. Wolf and based on the Ullmann Subgraph
Isomorphism Algorithm :cite:p:`UllmannSubgraphIsomorphism`. It is used by the
extract pass (see :doc:`../cmd/extract`).