diff options
Diffstat (limited to 'doc/GHDL_implementation_of_VITAL.rst')
-rw-r--r-- | doc/GHDL_implementation_of_VITAL.rst | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/doc/GHDL_implementation_of_VITAL.rst b/doc/GHDL_implementation_of_VITAL.rst new file mode 100644 index 0000000..6755100 --- /dev/null +++ b/doc/GHDL_implementation_of_VITAL.rst @@ -0,0 +1,92 @@ +**************************** +GHDL 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 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 one +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 number can be +used, provided no features added by the next version 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 adjustment are necessary to handle negative +constraint 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. |