summaryrefslogtreecommitdiff
path: root/doc/Introduction.rst
blob: 135c8cb281bbf9be80cfbeb114b059cc7b437fad (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
************
Introduction
************


Content of this manual
======================

This manual is the user and reference manual for GHDL.  It does not
contain an introduction to VHDL.  Thus, the reader should have at least
a basic knowledge of VHDL.  A good knowledge of VHDL language reference
manual (usually called LRM) is a plus.

What is `VHDL`?
===============

`VHDL` is an acronym for Very High Speed Integrated Circuit Hardware
Description Language which is a programming language used to describe a
logic circuit by function, data flow behaviour, or structure.

`VHDL` *is* a programming language: although `VHDL` was
not designed for writing general purpose programs, you can write any
algorithm with the `VHDL` language.  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`.
`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` (hardware description language).  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.

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.

Like a program written in another hardware description language, a
`VHDL` program can be transformed with a :dfn:`synthesis tool`
into a netlist, that is, a detailed gate-level implementation.

What is `GHDL`?
===============

`GHDL` is a shorthand for G Hardware Design Language.  Currently,
`G` has no meaning.

`GHDL` is a `VHDL` compiler that can execute (nearly) any
`VHDL` program. `GHDL` is *not* a synthesis tool: you cannot
create a netlist with `GHDL`.

Unlike some other simulators, `GHDL` is a compiler: it directly
translates a `VHDL` file to machine code, using the `GCC` or `LLVM`
back-end and 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.

The Windows(TM) version of `GHDL` is not based on `GCC` but on
an internal code generator.

The current version of `GHDL` does not contain any graphical
viewer: you cannot see signal waves.  You can still check with a test
bench.  The current version can produce a `VCD` file which can be
viewed with a wave viewer, as well as `ghw` files to be viewed by
`gtkwave`.

`GHDL` aims at implementing `VHDL` as defined by IEEE 1076.
It supports most of the 1987 standard and most features added by the
1993 standard.