aboutsummaryrefslogtreecommitdiffstats
path: root/doc/references
diff options
context:
space:
mode:
author1138-4EB <1138-4EB@users.noreply.github.com>2019-11-11 18:46:36 +0000
committertgingold <tgingold@users.noreply.github.com>2019-11-11 19:46:36 +0100
commit8599d9ddd15b15afdeced6059b1e1b7a972f4db1 (patch)
tree499b9c6fe0f85ce7ed221f72ac31036eefde0194 /doc/references
parent22775978be88c5ea8e5b740734e42eeb2fef0968 (diff)
downloadghdl-8599d9ddd15b15afdeced6059b1e1b7a972f4db1.tar.gz
ghdl-8599d9ddd15b15afdeced6059b1e1b7a972f4db1.tar.bz2
ghdl-8599d9ddd15b15afdeced6059b1e1b7a972f4db1.zip
Update doc (#1003)
* doc: update makefile and build scripts * actions: add workflow 'doc' * doc: reorganize sections * doc: fix 'unknown option' warnings, headings, spaces, etc. * doc: add subdir 'examples', move 'quick_start' sources * doc: add section 'Development/Debugging' * doc: add section'Development/Synthesis' * doc: update roadmap * doc: add section examples * doc: use standard domain * doc: add comment about 'vhd' vs 'vhdl'
Diffstat (limited to 'doc/references')
-rw-r--r--doc/references/CodingStyle.rst139
-rw-r--r--doc/references/CommandReference.rst210
-rw-r--r--doc/references/ImplementationOfVHDL.rst297
-rw-r--r--doc/references/ImplementationOfVITAL.rst94
4 files changed, 0 insertions, 740 deletions
diff --git a/doc/references/CodingStyle.rst b/doc/references/CodingStyle.rst
deleted file mode 100644
index 6af869067..000000000
--- a/doc/references/CodingStyle.rst
+++ /dev/null
@@ -1,139 +0,0 @@
-.. _REF:Style:
-
-Coding Style
-############
-
-Ada subset: use only a simple (VHDL like) subset of Ada: no tasking, no
-controlled types... VHDL users should easily understand that subset.
-Allowed Ada95 features: the standard library, child packages.
-Use assertions.
-
-We try to follow the 'GNU Coding Standards' when possible: comments before
-declarations, one space at the end of sentences, finish sentences with a dot.
-But: 2 spaces for indentation in code blocks.
-
-No trailing spaces, no TAB (HT).
-
-Subprograms must have a comment before to describe them, like:
-
-.. code-block:: Ada
-
- -- Analyze the concurrent statements of PARENT.
- procedure Sem_Concurrent_Statement_Chain (Parent : Iir);
-
-The line before the comment must be a blank line (unless this is the first
-declaration). Don't repeat the comment before the subprogram body.
-
-* For subprograms:
-
- 1. Declare on one line when possible:
-
- .. code-block:: Ada
-
- function Translate_Static_Aggregate (Aggr : Iir) return O_Cnode
-
- 2. If not possible, put the return on the next line:
-
- .. code-block:: Ada
-
- function Translate_Static_String (Str_Type : Iir; Str_Ident : Name_Id)
- return O_Cnode
-
- 3. If not possible, put parameters and return on the next line:
-
- .. code-block:: Ada
-
- function Create_String_Literal_Var_Inner
- (Str : Iir; Element_Type : Iir; Str_Type : O_Tnode) return Var_Type
-
- 4. If not possible, return on the next line:
-
- .. code-block:: Ada
-
- function Translate_Shortcut_Operator
- (Imp : Iir_Implicit_Function_Declaration; Left, Right : Iir)
- return O_Enode
-
- 5. If not possible, one parameter per line, just after subprogram name:
-
- .. code-block:: Ada
-
- procedure Translate_Static_Aggregate_1 (List : in out O_Array_Aggr_List;
- Aggr : Iir;
- Info : Iir;
- El_Type : Iir)
-
- 6. If not possible, add a return after subprogram name:
-
- .. code-block:: Ada
-
- function Translate_Predefined_TF_Array_Element
- (Op : Predefined_Boolean_Logical;
- Left, Right : Iir;
- Res_Type : Iir;
- Loc : Iir)
- return O_Enode
-
- 7. If not possible, ask yourself what is wrong! Shorten a name.
-
-* Rule for the 'is': on a new line only if the declarative part is not empty:
-
- .. code-block:: Ada
-
- procedure Translate_Assign (Target : Mnode; Expr : Iir; Target_Type : Iir)
- is
- Val : O_Enode;
- begin
-
- vs.
-
- .. code-block:: Ada
-
- function Translate_Static_Range_Dir (Expr : Iir) return O_Cnode is
- begin
-
- If the parameter line is too long with the 'is', put in on a separate line:
-
- .. code-block:: Ada
-
- procedure Predeclare_Scope_Type
- (Scope : in out Var_Scope_Type; Name : O_Ident) is
-
-* Generic instantiation: put the generic actual part on a new line:
-
- .. code-block:: Ada
-
- procedure Free is new Ada.Unchecked_Deallocation
- (Action_List, Action_List_Acc);
-
-* For if/then statement:
-
- 1. 'then' on the same line:
-
- .. code-block:: Ada
-
- if Get_Expr_Staticness (Decl) = Locally then
-
- 2. If not possible, 'then' is alone on its line aligned with the 'if':
-
- .. code-block:: Ada
-
- if Expr = Null_Iir
- or else Get_Kind (Expr) = Iir_Kind_Overflow_Literal
- then
-
- 3. For a multiline condition, 'or else' and 'and then' should start lines.
-
-* 'Local' variable declaration:
- Do not initialize variables, constants must be declared before variables:
-
- .. code-block:: Ada
-
- is
- N_Info : constant Iir := Get_Sub_Aggregate_Info (Info);
- Assoc : Iir;
- Sub : Iir;
- begin
-
- If the initialization expression has a side effect (such as allocation), do
- not use a constant.
diff --git a/doc/references/CommandReference.rst b/doc/references/CommandReference.rst
deleted file mode 100644
index 2b53e51f3..000000000
--- a/doc/references/CommandReference.rst
+++ /dev/null
@@ -1,210 +0,0 @@
-.. program:: ghdl
-.. _REF:Command:
-
-Command Reference
-#################
-
-.. HINT:: The most common commands and options are shown in section :ref:`USING:Invoking`. Here the advanced and experimental features are described.
-
-Environment variables
-=====================
-
-.. envvar:: GHDL_PREFIX
-
-Misc commands
-=============
-
-There are a few GHDL commands which are seldom useful.
-
-.. index:: cmd help
-
-Help [``-h``]
------------------
-
-.. option:: --help, -h
-
-Display (on the standard output) a short description of the all the commands
-available. If the help switch is followed by a command switch, then options
-for that second command are displayed::
-
- ghdl --help
- ghdl -h
- ghdl -h command
-
-.. index:: cmd display configuration
-
-Display config [``--disp-config``]
---------------------------------------
-
-.. option:: --disp-config <[options]>
-
-Display the program paths and options used by GHDL. This may be useful to track installation errors.
-
-.. index:: cmd display standard
-.. index:: display ``std.standard``
-
-Display standard [``--disp-standard``]
-------------------------------------------
-
-.. option:: --disp-standard <[options]>
-
-Display the ``std.standard`` package.
-
-.. index:: cmd version
-
-Version [``--version``]
----------------------------
-
-.. option:: --version, -v
-
-Display the GHDL version.
-
-File commands
-=============
-
-The following commands act on one or several files. These are not analyzed, therefore, they work even if a file has semantic errors.
-
-.. index:: cmd file pretty printing
-.. index:: vhdl to html
-
-Pretty print [``--pp-html``]
---------------------------------
-
-.. option:: --pp-html <[options] file...>
-
-The files are just scanned and an html file with syntax highlighting is generated on standard output. Since the files are not even parsed, erroneous files or incomplete designs can be pretty printed.
-
-The style of the html file can be modified with the :option:`--format=` option:
-
-* By default or when the :option:`--format=html2` option is specified, the output is an HTML 2.0 file, with colours set through `<FONT>` tags.
-* When the :option:`--format=css` option is specified, the output is an HTML 4.0 file, with colours set through a CSS file, whose name is :file:`ghdl.css`. See :ref:`Cross-reference_command`, for more details about this CSS file.
-
-.. index:: cmd file find
-
-Find [``-f``]
------------------
-
-.. option:: -f <file...>
-
-The files are scanned, parsed and the names of design units are displayed. Design units marked with two stars are candidates to be at the apex of a design hierarchy.
-
-.. index:: cmd file chop
-
-Chop [``--chop``]
----------------------
-
-.. option:: --chop <files...>
-
-The provided files are read, and a file is written in the current directory for every design unit. Each filename is built according to the type:
-
-* For an entity declaration, a package declaration, or a configuration the file name is :file:`NAME.vhdl`, where `NAME` is the name of the design unit.
-* For a package body, the filename is :file:`NAME-body.vhdl`.
-* Finally, for an architecture `ARCH` of an entity `ENTITY`, the filename is :file:`ENTITY-ARCH.vhdl`.
-
-Since the input files are parsed, this command aborts in case of syntax error. The command aborts too if a file to be written already exists.
-
-Comments between design units are stored into the most adequate files.
-
-This command may be useful to split big files, if your computer doesn't have enough memory to compile such files. The size of the executable is reduced too.
-
-.. index:: cmd file lines
-
-Lines [``--lines``]
------------------------
-
-.. option:: --lines <files...>
-
-Display on the standard output lines of files preceded by line number.
-
-.. _gccllvm-only-programs:
-
-GCC/LLVM only commands
-======================
-
-.. index:: cmd GCC/LLVM binding
-
-Bind [``--bind``]
----------------------
-
-.. option:: --bind <[options] primary_unit [secondary_unit]>
-
-Performs only the first stage of the elaboration command; the list of object files is created but the executable is not built. This command should be used only when the main entry point is not GHDL.
-
-.. HINT::
- Currently, the objects generated by ``--bind`` are created in the working directory. This behaviour is different from other object files generated with ``-a``, which are always placed in the same directory as the `WORK` library. It is possible to provide an output path with ``ghdl --bind -o path/primary_unit primary_unit``. However, ``ghdl --list-link`` will only search in the current path.
-
-.. index:: cmd GCC/LLVM linking
-
-Link [``--link``]
----------------------
-
-.. option:: --link <[options] primary_unit [secondary_unit]>
-
-Performs only the second stage of the elaboration command: the executable is created by linking the files of the object files list. This command is available only for completeness. The elaboration command is equivalent to the bind command followed by the link command.
-
-.. index:: cmd GCC/LLVM list link
-
-List link [``--list-link``]
--------------------------------
-
-.. option:: --list-link <primary_unit [secondary_unit]>
-
-This command may be used only after a bind command. GHDL displays all the files which will be linked to create an executable and additional arguments for the linker. This command is intended to add object files in a link of a foreign program. This command should be used only after ``ghdl --bind``, as some files generated by it are looked for in the current path.
-
-.. HINT::
- One of the arguments returned by ``--list-link`` is ``-Wl,--version-script=PREFIX/lib/ghdl/grt.ver``, where `PREFIX` is the installation path of GHDL. This will hide most of the symbols when the target executable binary is built. In some contexts, where the binary is to be loaded dynamically, the user might want additional symbols to be accessible. There are two possible approaches to have it done:
-
- * Filter the output of ``--list-link`` with e.g. ``sed``.
- * Provide an additional non-anonymous version script: ``-Wl,-Wl,--version-script=file.ver``.
-
-Options
-=======
-
-.. option:: --mb-comments, -C
-
-Allow multi-bytes chars in a comment.
-
-.. option:: --syn-binding
-
-Use synthesizer rules for component binding. During elaboration, if a component is not bound to an entity using VHDL LRM rules, try to find in any known library an entity whose name is the same as the component name.
-
-This rule is known as the synthesizer rule.
-
-There are two key points: normal VHDL LRM rules are tried first and entities are searched only in known libraries. A known library is a library which has been named in your design.
-
-This option is only useful during elaboration.
-
-.. option:: --GHDL1<=COMMAND>
-
-Use ``COMMAND`` as the command name for the compiler. If ``COMMAND`` is not a path, then it is searched in the path.
-
-.. option:: --AS<=COMMAND>
-
-Use ``COMMAND`` as the command name for the assembler. If ``COMMAND`` is not a path, then it is searched in the path. The default is ``as``.
-
-.. option:: --LINK<=COMMAND>
-
-Use ``COMMAND`` as the linker driver. If ``COMMAND`` is not a path, then it is searched in the path. The default is ``gcc``.
-
-.. _passing-options-to-other-programs:
-
-Passing options to other programs
-=================================
-
-.. WARNING:: These options are only available with GCC/LLVM.
-
-For many commands, GHDL acts as a driver: it invokes programs to perform the command. You can pass arbitrary options to these programs.
-
-Both the compiler and the linker are in fact GCC programs. See the GCC manual for details on GCC options.
-
-.. option:: -Wc,<OPTION>
-
-Pass `OPTION` as an option to the compiler.
-
-.. option:: -Wa,<OPTION>
-
-Pass `OPTION` as an option to the assembler.
-
-.. option:: -Wl,<OPTION>
-
-Pass `OPTION` as an option to the linker.
diff --git a/doc/references/ImplementationOfVHDL.rst b/doc/references/ImplementationOfVHDL.rst
deleted file mode 100644
index 7c43aad83..000000000
--- a/doc/references/ImplementationOfVHDL.rst
+++ /dev/null
@@ -1,297 +0,0 @@
-.. _REF:ImplVHDL:
-
-***************************
-Implementation of VHDL
-***************************
-
-This chapter describes several implementation defined aspects of VHDL in GHDL.
-
-.. _VHDL_standards:
-
-VHDL standards
-==============
-
-.. index:: VHDL standards
-
-.. index:: IEEE 1076
-
-.. index:: IEEE 1076a
-
-.. index:: 1076
-
-.. index:: 1076a
-
-.. index:: v87
-
-.. index:: v93
-
-.. index:: v93c
-
-.. index:: v00
-
-.. index:: v02
-
-.. index:: v08
-
-Unfortunately, there are many versions of the VHDL
-language, and they aren't backward compatible.
-
-The VHDL language was first standardized in 1987 by IEEE as IEEE 1076-1987, and
-is commonly referred as VHDL-87. This is certainly the most important version,
-since most of the VHDL tools are still based on this standard.
-
-Various problems of this first standard have been analyzed by experts groups
-to give reasonable ways of interpreting the unclear portions of the standard.
-
-VHDL was revised in 1993 by IEEE as IEEE 1076-1993. This revision is still
-well-known.
-
-Unfortunately, VHDL-93 is not fully compatible with VHDL-87, i.e. some perfectly
-valid VHDL-87 programs are invalid VHDL-93 programs. Here are some of the
-reasons:
-
-* the syntax of file declaration has changed (this is the most visible source
- of incompatibility),
-* new keywords were introduced (group, impure, inertial, literal,
- postponed, pure, reject, rol, ror, shared, sla, sll, sra, srl,
- unaffected, xnor),
-* some dynamic behaviours have changed (the concatenation is one of them),
-* rules have been added.
-
-Shared variables were replaced by protected types in the 2000 revision of
-the VHDL standard. This modification is also known as 1076a. Note that this
-standard is not fully backward compatible with VHDL-93, since the type of a
-shared variable must now be a protected type (there was no such restriction
-before).
-
-Minor corrections were added by the 2002 revision of the VHDL standard. This
-revision is not fully backward compatible with VHDL-00 since, for example,
-the value of the `'instance_name` attribute has slightly changed.
-
-The latest version is 2008. Many features have been added, and GHDL
-doesn't implement all of them.
-
-You can select the VHDL standard expected by GHDL with the
-``--std=<STANDARD>`` option, where ``<STANDARD>`` is one of the list below:
-
-
-87
- Select VHDL-87 standard as defined by IEEE 1076-1987. LRM bugs corrected by
- later revisions are taken into account.
-
-93
- Select VHDL-93; VHDL-87 file declarations are not accepted.
-
-93c
- Select VHDL-93 standard with relaxed rules:
-
-
- * VHDL-87 file declarations are accepted;
-
- * default binding indication rules of VHDL-02 are used. Default binding rules
- are often used, but they are particularly obscure before VHDL-02.
-
-00
- Select VHDL-2000 standard, which adds protected types.
-
-02
- Select VHDL-2002 standard.
-
-08
- Select VHDL-2008 standard (partially implemented).
-
-Multiple standards can be used in a design:
-
-+-----+----------------+
-|GROUP| VHDL Standard |
-+=====+================+
-| 87 | 87 |
-+-----+----------------+
-| 93 | 93, 93c, 00, 02|
-+-----+----------------+
-| 08 | 08 |
-+-----+----------------+
-
-.. note::
-
- The standards in each group are considered compatible: you can elaborate a design mixing these standards. However, standards of different groups are not compatible.
-
-.. _psl_implementation:
-
-PSL support
-==================
-
-GHDL implements a subset of :wikipedia:`PSL <Property_Specification_Language>`.
-
-PSL implementation
------------------
-
-A PSL statement is considered a process, so it's not allowed within
-a process.
-
-All PSL assertions must be clocked (GHDL doesn't support unclocked assertion).
-Furthermore only one clock per assertion is allowed.
-
-You can either use a default clock like this:
-
-.. code-block:: VHDL
-
- default clock is rising_edge (CLK);
- assert always
- a -> eventually! b;
-
-or use a clocked expression (note the use of parentheses):
-
-.. code-block:: VHDL
-
- assert (always a -> next[3](b)) @rising_edge(clk);
-
-
-Of course only the simple subset of PSL is allowed.
-
-Currently the built-in functions are not implemented, see `issue #662 <https://github.com/ghdl/ghdl/issues/662>`_.
-
-PSL usage
------------------
-
-PSL annotations embedded in comments
- GHDL understands embedded PSL annotations in VHDL files:
-
- .. code-block:: VHDL
-
- -- psl default clock is rising_edge (CLK);
- -- psl assert always
- -- a -> eventually! b;
- end architecture rtl;
-
- * A PSL assertion statement must appear within a comment that starts
- with the `psl` keyword. The keyword must be followed (on the
- same line) by a PSL keyword such as `assert` or `default`.
- To continue a PSL statement on the next line, just start a new comment.
-
- .. HINT::
- As PSL annotations are embedded within comments, you must analyze
- your design with option ``-fpsl`` to enable PSL annotations.
-
- .. code-block:: bash
-
- ghdl -a -fpsl vhdl_design.vhd
- ghdl -e vhdl_design
-
-PSL annotations (VHDL-2008 only)
- Since VHDL-2008 PSL is integrated in the VHDL language. You can use
- PSL in a VHDL(-2008) design without embedding it in comments.
-
- .. code-block:: VHDL
-
- default clock is rising_edge (CLK);
- assert always
- a -> eventually! b;
- end architecture rtl;
-
- .. HINT::
- You have to use the ``--std=08`` option
-
- .. code-block:: bash
-
- ghdl -a --std=08 vhdl_design.vhd
- ghdl -e --std=08 vhdl_design
-
-PSL vunit files
- GHDL supports vunit (Verification Unit) files.
-
- .. code-block:: VHDL
-
- vunit vunit_name (design_name)
- {
- default clock is rising_edge(clk);
- assert always cnt /= 5 abort rst;
- }
-
- * A vunit can contain PSL and VHDL code.
-
- * It is bound to a VHDL entity or an instance of it.
-
- * The PSL vunit is in the same scope as the VHDL design it is bound
- to. You have access to all objects (ports, types, signals) of the
- VHDL design.
-
- .. HINT::
- The PSL vunit file has to be analyzed/elaborated together with the VHDL design file, for example:
-
- .. code-block:: bash
-
- ghdl -a --std=08 vhdl_design.vhd vunit.psl
- ghdl -e --std=08 vhdl_design
-
-
-
-Source representation
-=====================
-
-According to the VHDL standard, design units (i.e. entities,
-architectures, packages, package bodies, and configurations) may be
-independently analyzed.
-
-Several design units may be grouped into a design file.
-
-In GHDL, a system file represents a design file. That is, a file compiled by
-GHDL may contain one or more design units.
-
-It is common to have several design units in a design file.
-
-GHDL does not impose any restriction on the name of a design file
-(except that the filename may not contain any control character or
-spaces).
-
-GHDL does not keep a binary representation of the design units analyzed like
-other VHDL analyzers. The sources of the design units are re-read when
-needed (for example, an entity is re-read when one of its architectures is
-analyzed). Therefore, if you delete or modify a source file of a unit
-analyzed, GHDL will refuse to use it.
-
-.. _Library_database:
-
-Library database
-================
-
-Each design unit analyzed is placed into a design library. By default,
-the name of this design library is ``work``; however, this can be
-changed with the :option:`--work=<LIB_NAME>` option of GHDL.
-
-To keep the list of design units in a design library, GHDL creates
-library files. The name of these files is :file:`<LIB_NAME>-obj<GROUP>.cf`, where
-`<LIB_NAME>` is the name of the library, and `<GROUP>` the VHDL version (87,
-93 or 08) used to analyze the design units.
-
-For details on ``GROUP`` values see section :ref:`VHDL_standards`.
-
-You don't have to know how to read a library file. You can display it
-using the *-d* of `ghdl`. The file contains the name of the
-design units, as well as the location and the dependencies.
-
-The format may change with the next version of GHDL.
-
-.. _Top_entity:
-
-Top entity
-==========
-
-There are some restrictions on the entity being at the apex of a design
-hierarchy:
-
-* The generic must have a default value, and the value of a generic is its
- default value.
-* The ports type must be constrained.
-
-Using vendor libraries
-======================
-
-Many vendors libraries have been analyzed with GHDL. There are
-usually no problems. Be sure to use the :option:`--work=` option.
-However, some problems have been encountered.
-
-GHDL follows the VHDL LRM (the manual which defines VHDL) more
-strictly than other VHDL tools. You could try to relax the
-restrictions by using the :option:`--std=93c`, :option:`-fexplicit`,
-:option:`-frelaxed-rules` and :option:`--warn-no-vital-generic`.
diff --git a/doc/references/ImplementationOfVITAL.rst b/doc/references/ImplementationOfVITAL.rst
deleted file mode 100644
index 77e7096c0..000000000
--- a/doc/references/ImplementationOfVITAL.rst
+++ /dev/null
@@ -1,94 +0,0 @@
-.. _REF:ImplVITAL:
-
-****************************
-Implementation of VITAL
-****************************
-
-.. index:: VITAL
-
-.. index:: IEEE 1076.4
-
-.. index:: 1076.4
-
-This chapter describes how VITAL is implemented in GHDL. Support of VITAL is
-really in a preliminary stage. Do not expect too much of it as of right now.
-
-.. _vital_packages:
-
-VITAL packages
-==============
-
-The VITAL standard or IEEE 1076.4 was first published in 1995, and revised in
-2000.
-
-The version of the VITAL packages depends on the VHDL standard. VITAL
-1995 packages are used with the VHDL 1987 standard, while VITAL 2000
-packages are used with other standards. This choice is based on the
-requirements of VITAL: VITAL 1995 requires the models follow the VHDL
-1987 standard, while VITAL 2000 requires the models follow VHDL 1993.
-
-The VITAL 2000 packages were slightly modified so that they conform to
-the VHDL 1993 standard (a few functions are made pure and a few
-impure).
-
-.. _vhdl_restrictions_for_vital:
-
-VHDL restrictions for VITAL
-===========================
-
-The VITAL standard (partially) implemented is the IEEE 1076.4 standard
-published in 1995.
-
-This standard defines restriction of the VHDL language usage on VITAL
-model. A :dfn:`VITAL model` is a design unit (entity or architecture)
-decorated by the `VITAL_Level0` or `VITAL_Level1` attribute.
-These attributes are defined in the `ieee.VITAL_Timing` package.
-
-Currently, only VITAL level 0 checks are implemented. VITAL level 1 models
-can be analyzed, but GHDL doesn't check they comply with the VITAL standard.
-
-Moreover, GHDL doesn't check (yet) that timing generics are not read inside
-a VITAL level 0 model prior the VITAL annotation.
-
-The analysis of a non-conformant VITAL model fails. You can disable the
-checks of VITAL restrictions with the *--no-vital-checks*. Even when
-restrictions are not checked, SDF annotation can be performed.
-
-.. _backannotation:
-
-Backannotation
-==============
-
-.. index:: SDF
-
-:dfn:`Backannotation` is the process of setting VITAL generics with timing
-information provided by an external files.
-
-The external files must be SDF (Standard Delay Format) files. GHDL
-supports a tiny subset of SDF version 2.1. Other version numbers can be
-used, provided no features added by later versions are used.
-
-Hierarchical instance names are not supported. However you can use a list of
-instances. If there is no instance, the top entity will be annotated and
-the celltype must be the name of the top entity. If there is at least one
-instance, the last instance name must be a component instantiation label, and
-the celltype must be the name of the component declaration instantiated.
-
-Instances being annotated are not required to be VITAL compliant. However
-generics being annotated must follow rules of VITAL (e.g., type must be a
-suitable vital delay type).
-
-Currently, only timing constraints applying on a timing generic of type
-`VitalDelayType01` has been implemented. This SDF annotator is
-just a proof of concept. Features will be added with the following GHDL
-release.
-
-Negative constraint calculation
-===============================
-
-Negative constraint delay adjustments are necessary to handle negative
-constraints such as a negative setup time. This step is defined in the VITAL
-standard and should occur after backannotation.
-
-GHDL does not do negative constraint calculation. It fails to handle models
-with negative constraint. I hope to be able to add this phase soon.