aboutsummaryrefslogtreecommitdiffstats
path: root/doc/using/pyGHDL/index.rst
blob: a30beea7a4b12d02b5ce3062719f9a00184ac618 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
.. _python_interface:

Python Interfaces
#################

.. #
   we have 2 interfaces (libghdl, dom) and a service (LSP) as well as CLI entry points.

GHDL offers two Python interfaces and a language server protocol service. All
this is provided from a ``pyGHDL`` packages with four sub-packages:

* ``pyGHDL.cli`` - Command line interface (CLI) applications.
* ``pyGHDL.dom`` - High-level API as document object model (DOM).
* ``pyGHDL.libghdl`` - Low-level API to ``libghdl``
* ``pyGHDL.lsp`` - Language server protocol (LSP) implementation and service


.. topic:: pyGHDL.libghdl

   *pyGHDL.libghdl* is a low-level API directly interacting with the shared
   library ``libghdl....so``/``libghdl....dll``. This is a procedural and C-like
   interface.

   It comes with some Python generators for easier iterating linked lists.


.. topic:: pyGHDL.dom

   *pyGHDL.dom* is a high-level API offering a document object model (DOM).
   The underlying abstract VHDL language model is provided by `pyVHDLModel <https://github.com/VHDL/pyVHDLModel>`__.
   The DOM is using ``libghdl`` for file analysis and parsing.


.. topic:: pyGHDL.dom

   *pyGHDL.dom* is language server protocol (LSP) written in Python. The
   implementation offers an HTTPS service that can be used e.g. by editors and
   IDEs supporting LSP.


.. toctree::
   :hidden:

   ../../pyGHDL/pyGHDL.cli
   ../../pyGHDL/pyGHDL.dom
   ../../pyGHDL/pyGHDL.libghdl
   ../../pyGHDL/pyGHDL.lsp


.. toctree::
   :hidden:

   libghdl
   vhdl
   utils