aboutsummaryrefslogtreecommitdiffstats
path: root/doc/internals/index.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/internals/index.rst')
-rw-r--r--doc/internals/index.rst34
1 files changed, 34 insertions, 0 deletions
diff --git a/doc/internals/index.rst b/doc/internals/index.rst
new file mode 100644
index 000000000..4614d0edc
--- /dev/null
+++ b/doc/internals/index.rst
@@ -0,0 +1,34 @@
+.. _INT:Overview:
+
+Overview
+########
+
+.. figure:: ../_static/internals.png
+ :width: 100%
+ :align: center
+
+ Architecture overview of the GHDL toolkit (CLI, libghdl, pyGHDL and ghdl-yosys-plugin).
+
+`GHDL` is architectured like a traditionnal compiler. It has:
+
+* a driver (sources in :ghdlsrc:`src/ghdldrv <ghdldrv>`) to call the programs (compiler, assembler, linker) if needed.
+
+* a runtime library named GRT (sources in :ghdlsrc:`src/grt <grt>`) to help execution at run-time.
+ This ensures that execution is cycle-accurate.
+
+* a front-end (sources in :ghdlsrc:`src/vhdl <vhdl>`) to parse and analyse VHDL.
+ See :ref:`INT:Frontend` and :ref:`INT:AST`.
+
+* multiple back-ends to generate either code or netlists.
+
+ * Three for :ref:`simulation <USING:Simulation>` (sources are in :ghdlsrc:`src/ortho <ortho>`): mcode, LLVM and GCC.
+ See :ref:`BUILD`.
+ * Two for :ref:`synthesis <USING:Synthesis>` (sources in :ghdlsrc:`src/synth <synth>`):
+ :ref:`--synth <Synth:command>` and :ref:`Synth:plugin`.
+
+The architecture is modular and some of the components are available through the shared library ``libghdl``.
+``libghdl`` is used by the :ref:`Synth:plugin`, the Language Server Protocol (LSP) server, and to fill the data of
+pyVHDLModel (see :doc:`vhdlmodel:index`).
+
+The main work with regard to understanding the VHDL language is performed by the front-end, which is documented in the
+next section.