aboutsummaryrefslogtreecommitdiffstats
path: root/doc/about.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/about.rst')
-rw-r--r--doc/about.rst57
1 files changed, 37 insertions, 20 deletions
diff --git a/doc/about.rst b/doc/about.rst
index fea576f21..088f98b3a 100644
--- a/doc/about.rst
+++ b/doc/about.rst
@@ -12,21 +12,28 @@ About
What is `VHDL`?
===============
-:wikipedia:`VHDL <VHDL>` is an acronym for Very High Speed Integrated Circuit (:wikipedia:`VHSIC <VHSIC>`) Hardware
-Description Language (:wikipedia:`HDL <HDL>`), which is a programming language used to describe a logic circuit by
-function, data flow behavior, or structure.
-
-Although VHDL was not designed for writing general purpose programs, VHDL *is* a programming language, and you can write
-any algorithm with it.
-If you are able to write programs, you will find in VHDL features similar to those found in procedural languages such as
-`C`, `Python`, or `Ada`.
+:wikipedia:`VHDL <VHDL>` is an acronym for *Verification and Hardware Description Language* (:wikipedia:`HDL <HDL>`),
+which is a computer language used to describe a logic circuit by function, data flow behavior, or structure.
+
+.. NOTE::
+ Historically the 'V' in the language's acronym came from the Very High Speed Integrated Circuit (:wikipedia:`VHSIC <VHSIC>`),
+ which was the U.S. government program that funded the early work on the standard.
+ Changing the 'V' to mean *verification* reflects the language's increasing usage for verification as well as design.
+ See `VHDL 202X PAR <http://www.eda-twiki.org/twiki/pub/P1076/PrivateDocuments/Par1076_202X.pdf>`__ via :ref:`vasg:VHDL202X`.
+
+Although VHDL was not designed for writing general purpose programs, VHDL *is* a programming language: any algorithm can
+be written with it, it can interact with files, the environment, stdin and stdout, etc.
+VHDL has features similar to those found in procedural languages such as
+:wikipedia:`C <C_(programming_language)>`,
+:wikipedia:`Python <Python_(programming_language)>`,
+or :wikipedia:`Ada <Ada_(programming_language)>`.
Indeed, VHDL derives most of its syntax and semantics from Ada. Knowing `Ada` is an advantage for learning VHDL (it is
an advantage in general as well).
However, VHDL was not designed as a general purpose language but as an `HDL`.
As the name implies, VHDL aims at modeling or documenting electronics systems.
-Due to the nature of hardware components which are always running, VHDL is a highly concurrent language, built upon an
-event-based timing model.
+Due to the nature of hardware components --which are always running--, VHDL is a highly concurrent language, built upon
+an event-driven execution model.
Like a program written in any other language, a VHDL program can be executed.
Since VHDL is used to model designs, the term :dfn:`simulation` is often used instead of `execution`, with the same
@@ -41,18 +48,26 @@ Five revisions exist:
`2002 <http://ieeexplore.ieee.org/document/1003477/>`__,
`2008 <http://ieeexplore.ieee.org/document/4772740/>`__ and
`2019 <https://ieeexplore.ieee.org/document/8938196>`__.
-The standardization is handled by the VHDL Analysis and Standardization Group (`VASG/P1076 <http://www.eda-twiki.org/vasg/>`__).
+The standardization is handled by the :doc:`vasg:index`.
+Find on-going work towards *VHDL 202X* in `gitlab.com/IEEE-P1076/VHDL-Issues <https://gitlab.com/IEEE-P1076/VHDL-Issues/-/issues>`__.
.. _INTRO:GHDL:
What is GHDL?
=============
+.. figure:: _static/internals.png
+ :width: 100%
+ :align: center
+ :target: internals/index.html
+
+ Architecture overview of the GHDL toolkit (CLI, libghdl, pyGHDL and ghdl-yosys-plugin).
+
`GHDL` is a shorthand for `G Hardware Design Language` (currently, `G` has no meaning).
It is a VHDL analyzer, compiler, simulator and (experimental) synthesizer that can process (nearly) any VHDL design.
.. NOTE::
- For almost 20 years, GHDL was *not* a synthesis tool: you could not create a netlist.
+ For almost 20 years, GHDL was *not* a synthesis tool: a netlist could not be created.
Hence, most of the content in this documentation corresponds to the usage of GHDL as a compiler/simulator.
See :ref:`USING:Synthesis` for further details regarding synthesis.
@@ -66,11 +81,10 @@ GHDL can use multiple back-ends, i.e. code generators, (`GCC <http://gcc.gnu.org
:wikipedia:`GNU/Linux <Linux_distribution>`, :wikipedia:`Windows <Microsoft_Windows>` |trade| and
:wikipedia:`macOS <MacOS>` |trade|; on x86, x86_64, armv6/armv7/aarch32/aarch64, ppc64, etc.
-The current version of GHDL does not contain any built-in graphical viewer: you cannot see signal waves.
-You can still check the behavior of your design with a test bench.
-Moreover, :ref:`GHW`, :wikipedia:`VCD <Value_change_dump>` or `FST` files can be produced, which can be viewed with a
-:wikipedia:`waveform viewer <Waveform_viewer>`,
-such as `GtkWave <http://gtkwave.sourceforge.net/>`__.
+The current version of GHDL does not contain any built-in graphical viewer: signal waves cannot be seen through GHDL.
+However, the behavior of the designs can still be checked through test benches and verification frameworks.
+Moreover, :ref:`GHW`, :wikipedia:`VCD <Value_change_dump>` or `FST` files can be produced, which can be viewed with an
+external :wikipedia:`waveform viewer <Waveform_viewer>`, such as `GtkWave <http://gtkwave.sourceforge.net/>`__.
GHDL aims at implementing VHDL as defined by `IEEE 1076 <http://ieeexplore.ieee.org/document/4772740/>`__.
It supports the
@@ -83,9 +97,12 @@ It supports the
Several third party projects are supported:
`Yosys <https://github.com/YosysHQ/yosys>`__
(through the `ghdl-yosys-plugin <https://github.com/ghdl/ghdl-yosys-plugin>`__)
-`cocotb <https://github.com/potentialventures/cocotb>`__
-(through the `VPI interface <https://en.wikipedia.org/wiki/Verilog_Procedural_Interface>`__),
-`VUnit <https://vunit.github.io/>`__, `OSVVM <http://osvvm.org/>`__, ...
+`cocotb <https://github.com/potentialventures/cocotb>`__,
+(through the :wikipedia:`VPI interface <Verilog_Procedural_Interface>`),
+`VUnit <https://vunit.github.io/>`__,
+`OSVVM <http://osvvm.org/>`__,
+:doc:`vhdlmodel:index`,
+...
.. _INTRO:WHO: