.. only:: html .. exec:: from helpers import createShields createShields('shieldswho') About ##### .. _INTRO:VHDL: What is `VHDL`? =============== :wikipedia:`VHDL ` is an acronym for *Verification and Hardware Description Language* (:wikipedia:`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 `), 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 `__ 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 `, :wikipedia:`Python `, or :wikipedia:`Ada `. 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-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 meaning. At the same time, like a design written in another `HDL`, a set of VHDL sources can be transformed with a :dfn:`synthesis tool` into a netlist, that is, a detailed gate-level implementation. The development of VHDL started in 1983 and the standard is named `IEEE `__ `1076`. Five revisions exist: `1987 `__, `1993 `__, `2002 `__, `2008 `__ and `2019 `__. The standardization is handled by the :doc:`vasg:index`. Find on-going work towards *VHDL 202X* in `gitlab.com/IEEE-P1076/VHDL-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: 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. Unlike some other simulators, GHDL is a compiler: it directly translates a VHDL file to machine code, without using an intermediary language such as `C` or `C++`. Therefore, the compiled code should be faster and the analysis time should be shorter than with a compiler using an intermediary language. GHDL can use multiple back-ends, i.e. code generators, (`GCC `__, `LLVM `__ or :wikipedia:`x86 `/:wikipedia:`i386 ` only, a built-in one named *mcode*) and runs on :wikipedia:`GNU/Linux `, :wikipedia:`Windows ` |trade| and :wikipedia:`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: 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 ` or `FST` files can be produced, which can be viewed with an external :wikipedia:`waveform viewer `, such as `GtkWave `__. GHDL aims at implementing VHDL as defined by `IEEE 1076 `__. It supports the `1987 `__, `1993 `__ and `2002 `__ revisions and, partially, `2008 `__ and `2019 `__. :wikipedia:`Property Specification Language (PSL) ` is also partially supported. Several third party projects are supported: `Yosys `__ (through the `ghdl-yosys-plugin `__) `cocotb `__, (through the :wikipedia:`VPI interface `), `VUnit `__, `OSVVM `__, :doc:`vhdlmodel:index`, ... .. _INTRO:WHO: Who uses GHDL? ============== .. container:: whouses .. only:: html +-------------------+--------------------+-----------------------------------------------------+----------------------------------------------------------------+ | Project hub | Documentation | Name | Brief description | +===================+====================+=====================================================+================================================================+ | |SHIELD:gh-poc| | |SHIELD:rtd-poc| | `PoC-Library `__ | A Vendor-Independent, Open-Source IP Core and Utility Library. | +-------------------+--------------------+-----------------------------------------------------+----------------------------------------------------------------+ | |SHIELD:gh-vunit| | |SHIELD:doc-vunit| | `VUnit `__ | A unit testing framework for VHDL/SystemVerilog | +-------------------+--------------------+-----------------------------------------------------+----------------------------------------------------------------+ | |SHIELD:gl-p1076| | |SHIELD:tw-p1076| | `IEEE P1076 WG `__ | IEEE P1076 Working Group [VASG] | +-------------------+--------------------+-----------------------------------------------------+----------------------------------------------------------------+ | |SHIELD:gh-tce| | |SHIELD:doc-tce| | `TCE `__ | TTA-Based Co-Design Environment - an open-source ASIP toolset. | +-------------------+--------------------+-----------------------------------------------------+----------------------------------------------------------------+