Académique Documents
Professionnel Documents
Culture Documents
VHDL
Pr: A.AMMOUR
INTRODUCTION GENERALE ET OBJECTIFS
La conception d'un système numérique fait souvent appel à l'utilisation de
microprocesseurs/microcontrôleurs faciles d'utilisation et peu onéreux, mais
souvent insuffisants dans les applications dont les temps de traitements doivent
être optimisés ou dont les données à traiter en même temps sont trop nombreuses.
ORGANISATION DU LANGAGE
TYPES- EXPRESSIONS
DESCRIPTION STRUCTURELLE
DESCRIPTION COMPORTEMENTALE
SIMULATION/SYNTHESE
Pr: A.AMMOUR 4
1-INTRODUCTION : Qu’est ce que le VHDL?
L’abréviation VHDL signifie VHSIC Hardware Description Langage (VHSIC : Very
High Speed Integrated Circuit). Ce langage a été écrit dans les années 70 pour
fournir un langage de haut niveau adapté à la description fonctionnelle des
systèmes complexes.
Pr: A.AMMOUR 6
1-INTRODUCTION : Simulation/Synthèse
Pr: A.AMMOUR 7
1-INTRODUCTION : Exemple introductif
Description en
VHDL d’un
décodeur
Pr: A.AMMOUR 8
2- ORGANISATION DU LANGUAGE
2-1 Principes d'utilisation du langage
Pr: A.AMMOUR 9
2- ORGANISATION DU LANGUAGE
2-3 Convention lexical
Les conventions lexicales de vhdl sont les mêmes que celles utilisées en C.
Casse: VHDL est insensible à la casse. Un mot en majuscule est identique à un mot en
minuscule. Il est cependant conseillé d'avoir des règles d'écriture cohérentes. Par
exemple, les mots réservés du langage peuvent être en majuscule et les autres mots
en minuscule. Azerty ≡ aZERTY
Commentaires: Les commentaires doivent être inclus dans le code, pour augmenter
la lisibilité et la documentation. Ils commencent par 2 tirets (--),
10
Pr: A.AMMOUR
2- ORGANISATION DU LANGUAGE
2-3 Convention lexical
Les conventions lexicales de vhdl sont les mêmes que celles utilisées en C.
11
Pr: A.AMMOUR
2- ORGANISATION DU LANGUAGE
2-3 Bibliothèques
La création de la bibliothèque ne fait pas partie du langage VHDL. Chaque outil VHDL a ses
propres règles de création. Par exemple, avec le simulateur ModelSim, il faut créer la
bibliothèque avec la commande : vlib BIB;
L'accès à la bibliothèque fait partie du langage VHDL. Pour accéder à la bibliothèque BIB il
est nécessaire de la déclarer : library BIB;
La bibliothèque par défaut est WORK. WORK est aussi le nom symbolique de la bibliothèque
dans laquelle sont stockés les résultats.
La bibliothèque STD est une bibliothèque standard fournie avec le langage , elle contient des
définitions des types et des fonctions de base (integer, BIT ,...) dans le
paquetage STANDARD et des fonctions sur les caractères dans le paquetage TEXTIO.
Pr: A.AMMOUR 10
2- ORGANISATION DU LANGUAGE
2-3 Bibliothèques
Par défaut, les bibliothèques STD et WORK n’ont pas besoin d’être déclarées pour
être utilisables. Tout se passe comme si un programme VHDL commençait toujours
par : library STD; library WORK;
Il est très pratique d'utiliser les paquetages des bibliothèques ce qui permet
d'utiliser des objets (constantes, fonctions, composants,...) qui peuvent être définis
dans une bibliothèque différente de celle en cours. C'est le cas des bibliothèques
standards comme l'IEEE qui définit des types et objets normalisés compris par les
outils de synthèse.
Pr: A.AMMOUR 13
2- ORGANISATION DU LANGUAGE
2-1 Structure du langage
L'analyse d'un modèle VHDL peut s'effectuer sur des parties du code ou "unités de
compilation". Il existe 5 types d'unités de compilation :
•L'entité
•L'architecture
•Le paquetage
•Le corps du paquetage
•La configuration
Une unité de compilation doit être écrite dans le même fichier et un même fichier
peut contenir plusieurs unités de compilation.
Pr: A.AMMOUR 14
2- ORGANISATION DU LANGUAGE
2-4 Entité/Architecture
In 1 Out 1
In 2 Bloc A
In 3 Out 2
In 1
Bloc B Bloc C Out 1
In 2
L'entité est la description de l'interface du circuit . Elle correspond au symbole dans les
représentations schématiques :
L'entité précise :
•le nom du circuit.
•Les ports d'entrée-sortie :
• Leur nom.
• Leur direction (in, out, inout,buffer). symbole de l'additionneur 1 bit
• Leur type (bit, bit_vector, integer, std_logic,...).
•Les paramètres éventuels pour les modèles générique.
L'écriture de l'entité pour l'additioneur 1 bit fa peut être la façon
suivante:
Pr: A.AMMOUR 16
2- ORGANISATION DU LANGUAGE
2-5 Architecture
L'architecture est la description interne du circuit. Elle est toujours associée à une entité.
Pr: A.AMMOUR 17
2- ORGANISATION DU LANGUAGE
2-5 Architecture
Pr: A.AMMOUR 18
2- ORGANISATION DU LANGUAGE
2-5 Architecture
VHDL est un langage très déclaratif qui permet au compilateur d'effectuer des
vérifications poussées et fiabiliser ainsi l'écriture d'un modèle.
Dans une architecture il est nécessaire de déclarer les objets utilisés et leur type avant
la zone décrivant l'architecture (le corps de l'architecture situé entre begin ... end ).
Parmi les objets très utilisés, figurent les composants (correspondent effectivement aux
composants dont on a besoin dans l'architecture pour une description structurelle) et
les signaux (équipotentielles reliant les instances de composants et les instructions
"concurrentes" et).
Les ports déclarés dans l'entité sont des signaux utilisables dans l'architecture, il ne
faut pas les redéclarer.
Pr: A.AMMOUR 19
2- ORGANISATION DU LANGUAGE
2-5 Architecture
L'exemple ci-dessous illustre l'architecture d'un additionneur 1 bit avec les signaux
A, B , Cin (qui sont des ports donc des signaux implicites) , le signal Si et le
composant MAJ .
Pr: A.AMMOUR 20
2- ORGANISATION DU LANGUAGE
2-5 Architecture
Entité de l'additioneur 1 bit FA
Les ports sont des signaux implicites dont le sens doit être respecté. Le compilateur
VHDL aurait mis une erreur si dans le corps de l'architecture s'était trouvé l'instruction:
Cout <= S and B car S est une sortie qui ne peut pas servir d'entrée.
Pr: A.AMMOUR 21
2- ORGANISATION DU LANGUAGE
2-6 Structure d’une description VHDL
Pr: A.AMMOUR 22
2- ORGANISATION DU LANGUAGE
2-7 Paquetage
Pr: A.AMMOUR 23
2- ORGANISATION DU LANGUAGE
2-7 Paquetage
Le paquetage PAQ est déclaré avec le mot clé package. Des
Exemple de déclaration de paquetage: nouveaux types type et sous-types subtype sont déclarés.
Dans cet exemple on déclare le type MOT qui est un vecteur de
8 bit, un type RAM qui est un tableau de MOT et un sous
type MRAM qui est une RAM de 1024 MOTS.
Pr: A.AMMOUR 24
2- ORGANISATION DU LANGUAGE
2-7 Paquetage
Pr: A.AMMOUR 25
3- TYPES - EXPRESSIONS
3-1 SIGNAUX
Signal = Toute grandeur qui peut exister après le processus de synthèse et qui peu être
visualisée sur un oscilloscope si on en interdit la simplification. Signal = grandeur physique.
Les entrées, sorties et les entrées sorties de l’entité sont des signaux externes.
Déclaration des signaux internes à l’architecture entre les mots clé architecture et begin
avec la syntaxe.
Typage fort:
Contrôle stricte
Imposant des fonctions de conversion et de surcharge d’opérateurs pour passer d’un
type à un autre
Pr: A.AMMOUR 26
3- TYPES - EXPRESSIONS
3-2 TYPES VHDL est un langage typé où il est obligatoire de spécifier le type des objets utilisés
bit :
• 2 valeurs ‘0’ ou ‘1’.
• Peu utilisé car insuffisant pour la synthèse et la simulation quand on cible des CPLD, FPGA,…
Boolean
• 2 valeurs possibles : True ou False.
• Type de référence pour les structures conditionnelles.
STD_LOGIC
• 3 valeurs ayant un sens physique
- ‘0’, ‘1’ et ‘Z’ pour la haute impédance
6 valeurs utiles pour la simulation voire la description
‘U’ pour non initialisé
‘X’ pour un résultat inconnu
‘L’ pour un niveau bas probable
‘H’ pour un niveau haut probable
‘W’ niveau non qualifiable par ‘L’ ou ‘H’
‘-’ Sans importance
Pr: A.AMMOUR 27
3- TYPES - EXPRESSIONS
3-2 TYPES
Types logiques et vectoriels
b de type STD_LOGIC_VECTOR( 1 to 4)
b(1) est le poids fort et b(4) le poids faible. b= 1 0 0 1
SIGNED ET UNSIGNED
Ce sont des vecteurs de STD_LOGIC utilisables comme des STD_LOGIC VECTOR et pour lesquels les
opérations arithmétiques sont définies pour des représentations signées et non signées dans le
paquetage NUMERIC_STD, Pr: A.AMMOUR 28
3- TYPES - EXPRESSIONS
3-2 TYPES
Types mathématiques
INTEGER
• type entier de référence (32 bits par défaut et limités à 32 bits sur certains simulateurs).
• Fonctions de conversion sont disponibles pour passer des INTEGER au SIGNED ou UNSIGNED
et réciproquement
• Mot clé range
Permet de spécifier l’intervalle des valeurs d’un INTEGER au moment de sa déclaration
Exemple : b: integer range 0 to 20; -- b est un entier limité à l’intervalle [0;20]
POSITIVE(sous_type d’INTEGER)
• Entier positif
REAL
• Type réel en virgule flottante
Sous réserves qu’ils soient définies pour les types de signaux utilisés, expression peut être
écrite avec les opérateurs suivants et à partir du résultat de fonctions décrites en VHDL.
Pr: A.AMMOUR 31
3- TYPES - EXPRESSIONS
3-4 OPERATEURS EN VHDL
Exemples d’affectation:
Pr: A.AMMOUR 32
4- DESCRIPTION STRUCTURELLE
4-1 OBJECTIFS
La description structurelle d'un circuit complexe en vhdl présente de nombreux avantages :
• Une synthèse logique efficace : la synthèse est un processus lent (en terme de temps de
calcul). Plus un bloc est gros et complexe, plus sa synthèse prendra du temps. Il vaut donc
mieux travailler sur des blocs plus petits, plus simples à synthétiser, et rassembler le tout à la
fin.
L'objectif de cette partie est de voir précisément comment coder une représentation
structurelle d'un circuit, autrement dit :
Pr: A.AMMOUR 33
4- DESCRIPTION STRUCTURELLE
4-2 ELEMENTS DE BASE
VHDL permet l'assemblage de "composants" ce qui constitue une description structurelle.
Pour différencier ces mêmes composants, il est nécessaire de leur donner un nom d’ "instance".
L'appel d'un composant se dit aussi « instanciation ».
La configuration est une unité de compilation optionnelle, très utile pour les gros circuits. Par
exemple pour accélérer la simulation , un même composant peut être associé à un couple
entité/architecture détaillé et synthétisable ou un autre couple plus abstrait et plus rapide à
simuler.
Pour ne pas utiliser de configuration, une règle fréquente est d'utiliser le même nom pour le
composant et l'entité associée, c'est le cas pour ModelSim et les outils de synthèse FPGA.
Pr: A.AMMOUR 35
4- ARCHITECTURE STRUCTURELLE
4-5 DÉCLARATION ET INSTANCIATION DES COMPOSANTS
Déclaration
• Le mot clé component sert à déclarer le prototype d'interconnexion. La syntaxe est presque
identique à celle de l'entité :
• Pour créer rapidement un composant, une
opération copier/coller de l'entité en
enlevant le litéral "IS" suffit.
Instanciation
Pr: A.AMMOUR 36
4- ARCHITECTURE STRUCTURELLE
4-5 DÉCLARATION ET INSTANCIATION DES COMPOSANTS
Exemple:
Pr: A.AMMOUR 37
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
Déclaration
• Un composant peut être générique en définissant les paramètres qui seront vus comme des
constantes à chaque instance de composant.
• Il est ainsi possible de n'avoir qu'un seul composant pour différentes instances ayant des
paramètres différents.
• Dans la déclaration du composant, la clause generic sert à passer les paramètres au
composant. Dans l'exemple suivant, l'entier positif N indique le nombre de bits de
l'additionneur.
Pr: A.AMMOUR 38
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
De même l'entité associée au composant doit comporter la clause generic pour déclarer le(s)
paramètre(s)
Pr: A.AMMOUR 39
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
Instanciation :
L'instanciation d'un composant géneric se fait dans le corps de l'architecture de cette façon :
Pr: A.AMMOUR 40
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
Les paramètres ne sont parfois pas suffisants pour écrire un code générique : on peut aussi
vouloir instancier un nombre variable de composants (en fonction d'un paramètre, par exemple).
Ceci est fait au moyen des mots-clef for generate..et if generate.
•L'architecture Carry Lookhead (CLA) est utilisée s'il doit manipuler des nombres de largeur
inférieure à 8 bits,
•L'architecture en arbre de Wallace est utilisée sinon.
Pr: A.AMMOUR 41
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
Pr: A.AMMOUR 42
4- ARCHITECTURE STRUCTURELLE
4-6 GENERECITE
Exemple 2 : l'exemple classique de l'additionneur n bits... On utilise ici une boucle FOR
GENERATE pour instancier automatiquement les différentes primitives ainsi que les noeuds les
connectant entre elles. Notez qu'il n'est pas nécessaire de déclarer la variable de boucle mais que
l'instruction FOR GENERATE nécessite une étiquette.
Pr: A.AMMOUR 43
4- ARCHITECTURE STRUCTURELLE
4-4 Banc de test (Test banch)
Exemple : le circuit top, servant à simuler le circuit "module a" doit être autonome : son
entité n'a pas d'entrée ni de sortie.
Pr: A.AMMOUR 44
5- DESCRIPTION COMPORTEMENTALE
5-1 OBJECTIFS
• Celle au niveau des équations booléennes, appelée aussi parfois flot de données. Ce
type de représentation modélise les circuits combinatoires, non pas en instanciant des
portes, mais sous forme d'équations booléennes.
• Pour les circuits séquentiels, il faudra faire appel à un niveau plus abstrait.
Pr: A.AMMOUR 45
5- DESCRIPTION COMPORTEMENTALE
5-1 INSTRUCTIONS CONCURRENTES ET SEQUENTIELLES
Comme tout langage de description de matériel, le VHDL décrit des structures par
assemblage d'instructions concurrentes dont l'ordre d'écriture n'a aucune
importance, contrairement aux instructions séquentielles qui sont exécutées les
unes après les autres, comme c'est le cas du C.
Les objets manipulés par les instructions concurrentes sont les signaux (signal).
Affectation inconditionnelle :
Affectation sélective:
Pr: A.AMMOUR 47
5- DESCRIPTION COMPORTEMENTALE
5-2 EXERCICE: UNITÉ ARITHMÉTIQUE SIMPLE
Pr: A.AMMOUR 48
5- DESCRIPTION COMPORTEMENTALE
5-2 NOTION DU PROCESS:
Toutes les instructions concurrentes sont des processus, mais la déclaration explicite de processus
par le mot clé process permet de construire sa propre instruction par le biais d'instruction
séquentielles internes au processus.
Pr: A.AMMOUR 49
5- DESCRIPTION COMPORTEMENTALE
5-2 NOTION DU PROCESS:
Le fonctionnement du processus est régi par les règles suivantes:
1.Un processus est une boucle infinie , lorsqu'il arrive à la fin du code, il reprend
automatiquement au début.
2.Un processus doit être sensible à des points d'arrêt de façon à le synchroniser. La
synchronisation est donc indiquée par un point d'arrêt qui est évènement particulier. Il existe 2
types de points d'arrêts :
Le processus est associé à une "liste de sensibilité" qui contient une liste de signaux qui
réveillent le processus lors d'un changement d'un des signaux. Sa syntaxe
est process(liste de signaux)
Le processus a des instructions d'arrêt wait dans sa description interne. Le wait est sensible
soit à un signal soit à un temps physique
3. Les variables sont internes au processus et sont affectées immédiatement, contrairement aux
signaux qui eux ne sont pas affectés directement mais par le biais de leur échéancier qui est mis à
jour en fin de processus avec la nouvelle valeur et le temps d'affectation correspond à un delta-
cycle après le signal ayant réveillé le processus.
Pr: A.AMMOUR 50
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 51
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 52
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 53
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 54
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
La fonction « rising_edge »
Cette fonction, définie dans ≪ std_logic_1164 ≫, est très utile pour
détecter les fronts montants d’une horloge.
Elle vérifie bien que le signal part de ‘0’ avant de passer a ‘1’.
Il existe une fonction similaire qui teste les fronts descendants :
≪ falling_edge ≫
Pr: A.AMMOUR 55
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 56
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 57
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Exercice :
Pr: A.AMMOUR 58
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 59
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
Signaux :
Les signaux sont équivalents à des variables globales assurant les communications
entre processus.
Les signaux ne sont pas mis à jour tout de suite mais à la fin du processus avec un
delta-cycle de retard par rapport au signal ayant déclenché le processus.
Les signaux sont affectés avec l'instruction <= qui se dit aussi "reçoit" plutôt que
"égal" car le signal va recevoir cette valeur en fin de processus avec un delta-cycle de
retard.
Pr: A.AMMOUR 60
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
Variables :
Les variables sont locales à chaque processus et sont mises à jour immédiatement.
Elles sont très utiles pour effectuer un codage séquentiel classique comme avec le
langage C.
Les variables sont déclarées juste avant le corps du processus et sont affectées avec
l'instruction d'affectation immédiate := de façon à bien ne pas confondre avec
l'instruction <= "reçoit" pour les signaux.
Pr: A.AMMOUR 61
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
Exemple: :
Pr: A.AMMOUR 62
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
Exemple: :
Pr: A.AMMOUR 63
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
En supposant que la période d’exécution est de 10 ns, que les valeurs initiales des signaux sont a=1,
b=2, c=3, d=0, et qu’un événement d=4 arrive, le timing de l’exécution serait:
Pr: A.AMMOUR 64
5- DESCRIPTION COMPORTEMENTALE
5-3 SIGNAUX VS VARIABLES:
Pr: A.AMMOUR 65
5- DESCRIPTION COMPORTEMENTALE
5-4 STRUCTURE DE CONTRÔLE :
Dans les processus, il est possible d'utiliser des structures de contrôle similaires à celles du C :
Instruction IF : elle repose sur le test d'une condition qui génère un booléen. Si celui ci est
"TRUE" l'instruction qui suit est exécutée.
Syntaxe du IF:
Pour coder un processus combinatoire, l'utilisation du ELSE est obligatoire de façon à traiter toutes
les combinaisons (sinon il y a mémorisation donc c'est da la logique séquentielle).
Pr: A.AMMOUR 66
5- DESCRIPTION COMPORTEMENTALE
5-4 STRUCTURE DE CONTRÔLE :
Instruction CASE: Elle repose sur le test d'un signal ou d'une variable. En fonction de la valeur,
une instruction spécifique est exécutée.
Syntaxe du CASE :
Pour coder un processus combinatoire, l'utilisation du when others est obligatoire de façon à
traiter toutes les combinaisons (sinon il y a mémorisation donc c'est da la logiqiue séquentielle).
Pr: A.AMMOUR 67
5- DESCRIPTION COMPORTEMENTALE
5-4 STRUCTURE DE CONTRÔLE :
Instruction de boucle:
Il faut noter :
Pr: A.AMMOUR 68
5- DESCRIPTION COMPORTEMENTALE
5-4 STRUCTURE DE CONTRÔLE :
Exemple : la boucle for … loop de cet exemple permet de compter le nombre de bits à 1 d'un
signal.
Pr: A.AMMOUR 69
5- DESCRIPTION COMPORTEMENTALE
5-4 STRUCTURE DE CONTRÔLE :
Pr: A.AMMOUR 70
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS CONCURRENTES DES SIGNAUX
Ces affectations sont des instructions concurrentes au même titre que les processus et les
instanciations de composants. Le codage comportemental d'une architecture repose sur
l'utilisation de ces 3 types d'instructions concurrentes qui peuvent apparaître dans n'importe quel
ordre.
Pr: A.AMMOUR 71
5- DESCRIPTION COMPORTEMENTALE
5-2 PROCESSUS ET SYNCHRONISATION:
Pr: A.AMMOUR 72
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS CONCURRENTES DES SIGNAUX
Pr: A.AMMOUR 73
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS CONCURRENTES DES SIGNAUX
Pr: A.AMMOUR 74
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS ET DELAIS
• Affectation avec délai inertiel : x <= 3 after 2 ns; ou plus explicitement x <= inertial 3
after 2 ns;
• Le type inertiel permet de "filtrer" les variations de X trop courtes par rapport au délai de la
transaction. Par exemple si x est à 1 pendant 1ns, l'affectation x <= 3 after 2 ns; ne changera
pas la forme d'onde de x qui restera à 0.
• Contrairement au mode inertiel , le type transport n'opère pas de "réjection des parasites". Il
respecte les temps de propagation mais est certainement moins réaliste que le mode inertiel.
Pr: A.AMMOUR 75
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS ET DELAIS
Exemple : A <= ’0’, ’1’ after 5 ns, ’0’ after 10 ns, ’1’ after 20 ns, ’0’
after 22 ns; S <= A after 3 ns; --delai inertial
Pr: A.AMMOUR 76
5- DESCRIPTION COMPORTEMENTALE
5-5 AFFECTATIONS ET DELAIS
Exemple :
A <= ’0’, ’1’ after 5 ns, ’0’ after 10 ns, ’1’ after 20 ns, ’0’ after 22 ns;
S <= transport A after 3 ns;
Pr: A.AMMOUR 77
5- DESCRIPTION COMPORTEMENTALE
5-6 ASSERTIONS
Les assertions permettent de vérifier une propriété et générer un message d'erreur si cette
propriété n'est pas vérifiée.
La syntaxe est la suivante :
assert CONDITION
[report MESSAGE]
[severity NIVEAU];
où
CONDITION = condition générant un booleén. Cette condition doit être vraie pour que rien ne se
passe
MESSAGE = chaîne de caractères renseignant le fait que la condition n'a pas été remplie
NIVEAU = niveau d'erreur. Il en existe 4 prédéfinis : NOTE,WARNING, ERROR, FAILURE
Les assertions peuvent font partie du domaine séquentiel (dans un processus) ou du domaine
concurrent.
Exemple:
Pr: A.AMMOUR 78
5- DESCRIPTION COMPORTEMENTALE
5-6 SOUS PROGRAMMES
Les sous-programmes font partie du domaine séquentiel et ont la même utilité que pour les autres
langages de programmation : regrouper les instructions qu'on utilise souvent.
Les procédures font peuvent être appelées aussi bien dans le domaine séquentiel que concurrent
La différence entre fonctions et procédures sont les suivantes:
.
Pr: A.AMMOUR 79
5- DESCRIPTION COMPORTEMENTALE
5-6 SOUS PROGRAMMES
Pr: A.AMMOUR 80
5- DESCRIPTION COMPORTEMENTALE
5-6 SOUS PROGRAMMES
Par rapport à la fonction, La procédure permet d'avoir plusieurs sorties, mais à condition de déclarer les
entrées et les sorties comme dans une entité ou composant.
Pr: A.AMMOUR 81
5- DESCRIPTION COMPORTEMENTALE
5-6 SOUS PROGRAMMES
Exemples :
Pr: A.AMMOUR 82