Vous êtes sur la page 1sur 87

VHDL-AMS

Un outil de l’électronique moderne

1 - Besoins, Historique, Généralités (4h)


2 - Introduction à VHDL-AMS (4h+2h prés.)
3 - VHDL-AMS en profondeur (2h+4hTD)
4 - VHDL-AMS : contexte et utilisation (2h)
5 - VHDL et la synthèse logique (2h)
LAAS 06/2003 Yannick HERVE - ENSPS 1

Ressources associées au cours

n Ce document power point ©


n Les énoncés de TP
n Document « Where are we going? »
n La grammaire HTML interactive ©
n Des exemples
n Le tutorial DAC 99 (PDF)
n Un fichier Bookmark
LAAS 06/2003 Yannick HERVE - ENSPS 2

1
1 - Besoins, Historique, Généralités

Cycle de CAO et Méthodes modernes de conception


Modélisation et simulation : besoins nouveaux
Besoin d'un standard : VHDL-AMS
Les concurrents en présence
Simulateur numérique vs continu ?

LAAS 06/2003 Yannick HERVE - ENSPS 3

Le cycle de CAO pour CI


n FRONT-END : description fonctionnelle,
validation algorithmes, synthèse, macro-
cellules, optimisations haut niveau,
simulations fonctionnelles, preuve formelle
n BACK-END : translation netlist vers techno,
placement-routage, DRC, extraction des
délais, back-annotation, simulations
temporelles, LVS, (packaging, thermique)

LAAS 06/2003 Yannick HERVE - ENSPS 4

2
Spécifications de client
Modèles
externes
Cahier des charges

Description de haut niveau


simulation
(matériel/logiciel)

Vers l’étude soft


Partition hard (ana/num) / soft

Contraintes Logique : schémas, Analogique


(techn, com.) HDL + simulations : schéma

Ressources Synthèse/opt.
Biblio. cell. To /from
Netlist de portes back-end

LAAS 06/2003 Yannick HERVE - ENSPS 5

To /from front-end

Description structurelle
vérification
dans la DB de la techno

Placement / routage / pack. DRC

Rétro-annotation
Extraction

Géométrie LVS
Biblio. cell.
Layout
Géom. Elec.Therm.

Pré-industrialisation Fabrication

LAAS 06/2003 Yannick HERVE - ENSPS 6

3
Méthodes modernes de CAO
n Top-down
n Conception mixte (num. / analog.)
n Co-design (matériel/logiciel)
n Cahier des charges formel et simulable
n Outil unique et concurrent engineering
n Indépendance fondeur et normes
n Preuve formelle
LAAS 06/2003 Yannick HERVE - ENSPS 7

Méthodes modernes de CAO :

Conception Top-down
n Formalisation du cahier des charges
n Spécifications simulables
n Représentation hiérarchique
(du quoi vers le comment)
n Travail dans une DB / Grande équipe

n Implique « hiérarchique » et multi-abstraction

LAAS 06/2003 Yannick HERVE - ENSPS 8

4
Méthodes modernes de CAO :

Conception mixte
n Tendance : analogique + numérique
n WorkFlow adapté

n Numérique = juste par design


n Analogique ????

LAAS 06/2003 Yannick HERVE - ENSPS 9

Méthodes modernes de CAO :

Synthèse logique
n Ne s’applique qu’au numérique
(pour l ’instant)

n Passer automatiquement d ’une


représentation de haut-niveau à une
représentation de plus bas niveau.
Fonction. vers RTL (recherche ou spécialisé)
RTL vers Gate (synthèse logique ~85)
Gates vers layout (compilation de silicium, ~65 )
LAAS 06/2003 Yannick HERVE - ENSPS 10

5
Méthodes modernes de CAO :

Co-design (matériel/logiciel)
n Développement et optimisation
conjoints du logiciel et du matériel

n Workflow adapté ???

LAAS 06/2003 Yannick HERVE - ENSPS 11

Méthodes modernes de CAO :

Cahier des charges formel


n Expression des besoins sous forme
formelle et simulable

n Workflow adapté ?

LAAS 06/2003 Yannick HERVE - ENSPS 12

6
Méthodes modernes de CAO :

Concurrent engineering
n Mettre en parallèle des tâches pour
optimiser le time-to-market
Exemples : faire le routage alors que les ASICs sont en
développement
Faire la publicité pendant les tests
Concevoir le boîtier alors que le contenu n’existe pas

n Workflow adapté ??
n Coût des erreurs et des retours

LAAS 06/2003 Yannick HERVE - ENSPS 13

Méthodes modernes de CAO :

Indépendance fondeur et normes


n Passé : les fondeurs fournissaient leurs
méthodes et langages de description
Conséquences : dépendance
n Actuel : Workflow et langages
permettent de repousser au plus tard
possible le choix du fondeur
Le front end est indépendant du fondeur et repose sur une
norme (Remarque : difficultés en deep sub micron)

LAAS 06/2003 Yannick HERVE - ENSPS 14

7
Méthodes modernes de CAO :

Preuve formelle
n Permet de vérifier « l ’égalité » de deux
descriptions sans simulation (incomplète par
nature)

n Deux familles de méthodes


Preuve de théorème (théorème et démonstration)
Bijection de graphes

n Le langage doit pouvoir permettre ces calculs

LAAS 06/2003 Yannick HERVE - ENSPS 15

Nouveaux besoins

n Modélisation environnementale
n MOEMS
n Variabilité des process
n Maîtrise des modèles
n Intellectual property (IP)
n ...

LAAS 06/2003 Yannick HERVE - ENSPS 16

8
Nouveaux besoins :

Modélisation environnementale
n Spécification, Cahier de charges
n Pré-études (fonctionnel, structurel)
n Plusieurs disciplines
n Plusieurs niveau d ’abstraction
n Interfaçage avec les techniques de
production (analogique, numérique)

LAAS 06/2003 Yannick HERVE - ENSPS 17

EXEMPLE :
BESOINS

Image LEPSI

LAAS 06/2003 Yannick HERVE - ENSPS 18

9
EXEMPLE :
mise en situation du CI

Image LEPSI

LAAS 06/2003 Yannick HERVE - ENSPS 19

Nouveaux besoins :

MOEMS
(micro-opto-electronical-mechanical systems)

n Mécanique, Optique, Electronique dans


le silicium (compatible process Si)
n Nouvelles techniques de conception
n Méthodes de modélisation
n Collaboration techniques de simulation

LAAS 06/2003 Yannick HERVE - ENSPS 20

10
Vidéo et images extraites de
http://www.mdl.sandia.gov/micromachine

LAAS 06/2003 Yannick HERVE - ENSPS 21

LAAS 06/2003 Yannick HERVE - ENSPS 22

11
Electronique (num./anal.), capteurs …
sur le même substrat

LAAS 06/2003 Yannick HERVE - ENSPS 23

Nouveaux besoins :

Bilan
n CdC : haut niveau d ’abstraction
n Multi-disciplines/Multi abstraction
n Modèle externe (not SPICE)
n Langage « naturel »
n Equations différentielles
n Sémantique « électrique »

LAAS 06/2003 Yannick HERVE - ENSPS 24

12
Abstraction vs Simulation
Abstraction Expression Simulateur temps/signaux

Physique Equa.Diff. Silvaco Cont./cont.

Electrique Eq.diff/mod. compo. Spice / Eldo Cont./cont.

Switch Equations d ’état ? Cont./quantifiés.

Gate Eq. booléenne Orcad Discret/logic (2-9)

VHDL-AMS
VHDL
Structurel Netlist Dépend des blocs idem

Signal flow Process concurrents HDL Discret/symb.

Algo Prog.impératif C/pascal/ADA... idem

Système Processeurs Pas d ’outil Symb./symb.


communiquants industriel
LAAS 06/2003 Yannick HERVE - ENSPS 25

Besoin d ’un standard

n Histoire et nécessité
n Qu'est ce qu'un HDL
n Genèse de VHDL-AMS
n Ce que peux faire VHDL-AMS
n Avantage et inconvénients
n Les concurrents en présence

LAAS 06/2003 Yannick HERVE - ENSPS 26

13
Besoin d ’un standard :

Histoire et nécessité
Chaque métier avait son mode de description
(circuit, association de circuits, cartes, racks, systèmes,…)
VHDL : VHSIC Hardware Description Language
(Very High Speed Integrated Circuit)
Sert à décrire des systèmes matériels à un haut niveau d ’abstraction

DoD : appel d ’offres = 80 langages de description


Problèmes : analyse, indépendance, maintenance, doc. …
Appel d ’offres : « Proposer un HDL » : VHDL accepté
(Intermetrics, IBM, Texas)[ref à ADA]
Domaine public en 85 / Norme IEEE 1076-1987 (10/12/87)
Note : démarche identique pour le soft a donné ADA (France)
LAAS 06/2003 Yannick HERVE - ENSPS 27

Besoin d ’un standard :

Qu'
est ce qu'
un HDL
Description de matériel
Ne vise pas forcément une exécution :
Spécification
Synthèse logique (description vers masque)
Preuve formelle
Documentation
Extraction (LVS)

Plusieurs niveaux de description mixables

LAAS 06/2003 Yannick HERVE - ENSPS 28

14
Besoin d ’un standard :Qu'est ce qu'un HDL

Différences Langage / HDL


Langage HDL
Sous-programme (dyn) Composant (stat)
appel, calcul, oubli existe en soi
Variables (dynamique) Signaux(statiques+hist)
a := b a <= b
a := c (b oublié) a <= c (equip.)
Simulation du temps Gestion du temps
VHDL : composants et sous-programmes
signaux et variables
COMPLET / POLYVALENT
(inévitable / incontournable)
LAAS 06/2003 Yannick HERVE - ENSPS 29

Besoin d ’un standard :

Genèse de VHDL-AMS
VHDL VHDL IEEE 1076-1987
Numérique pur Renormalisation + retard

VHDL IEEE 1076-1993 Détails de consistance,


Autres efforts : non intégrés quelques mots clefs,
quelques concepts
SubPar
Sub Par1076.1
1076.1
Sub Par 1076.1
Renormalisation + retard
Extension à
l ’analogique

VHDL-AMS IEEE 1076-1999 Nouvelle philosophie


Compatible VHDL ’93
Voir www.vhdl.org
LAAS 06/2003 Yannick HERVE - ENSPS 30

15
Besoin d ’un standard :

Ce que peut faire VHDL-AMS


Modèles multi-disciplines hiérarchiques continus et à
événements discrets en bibliothèques « UTILISATEUR »
Abstraction comportementale, structurelle, signal-flow
Equations différentielles ordinaires (par rapport au temps)
Modélisation en Laplace, en Z, spectrale, bruit
Sémantique de connexion : Kirchoff généralisé
Egalité des efforts / Somme des flux = 0
v-i, °C-W, m-N, rad/s-1-N.m, n.A-Wb, Pa-l/s ...

Facilités d ’analyse de type SPICE (dépend de l ’outil)


(DC, transient, AC, noise, Monte-Carlo,…)
LAAS 06/2003 Yannick HERVE - ENSPS 31

Besoin d ’un standard :

Ce qu’il ne peut pas faire


Equations différentielles d./dx avec x différent de t

Modèles « géométriques » et mailleur associé.

Définition de sémantique de connexion

Ces limitations font l’objet de travaux au sein des


groupes de normalisation et seront examinés à la
prochaine re-normalisation en 2004.

LAAS 06/2003 Yannick HERVE - ENSPS 32

16
Besoin d ’un standard :

Avantages
Avantages commerciaux :
Naissance de l ’IP,
Standard industriel (+DoD),
Investissements plus sûrs,
Modèles indépendants d ’un fournisseur de CAO,
Avantages techniques :
Moderne, Puissant, Général, Bonne lisibilité,
Haute modularité, Typage fort, Généricité,
Temps solidement défini, mixage abstractions,
Fonction de résolution, Ressources nombreuses
Communauté large, Activités de normalisation
(norme qui bouge est une norme qui vit).
LAAS 06/2003 Yannick HERVE - ENSPS 33

Besoin d ’un standard :

Inconvénients
Inconvénients :
Puissant, général = complexe
(mais pas compliqué)
Limitations intrinsèques
(un peu bâclé sur certains points)
Simulation pas efficace en temps pour l’instant
Pas de simulateur natif (et outils existants coûteux)

LAAS 06/2003 Yannick HERVE - ENSPS 34

17
Besoin d ’un standard :

Les concurrents en présence

Mentor Graphics (ANACAD+LEDA+MODELTECH) :


ADV- MS + ELDO + Modelsim
DOLPHIN Integration : SMASH-AMS 4.2.9
hAMSter de SIMEC (15kF)
CADENCE (?)
ANALOGY : The HDL
Universités : SEAMS (University of Cincinnati)

LAAS 06/2003 Yannick HERVE - ENSPS 35

Structure d’un simulateur numérique


Basé sur l’exécution conditionnelle et itérative
d ’équations logiques dépendantes dans un temps dicrétisé

Modèle : Equations de composants logiques


Netlist
Procédure : (emploi d’une liste d ’événement (EL) et de signaux datés)
Mise à jour de l ’EL classée par date
Extraction des signaux avec t mini
Avancée de l’horloge de simulation
Réveil et simulation des process dépendants
Production de nouveaux événements
Production d ’un LSP

LAAS 06/2003 Yannick HERVE - ENSPS 36

18
Structure d’un simulateur analogique
Basé sur la résolution des équations de kirchoff à chaque t
Modèle : Equations de branches (loi des composants)
(éventuellement non-linéaires, non stationnaires, …)
Equations de structure (loi de Kirchoff)
Procédure : (calcul matriciel d ’ordre élevé !!)
Mise en équation (jeu d’équations Diff NL)
Discrêtisation (jeu d’équations aux différences NL)
x(t+d) = fNL(x(t),x ’(t),p(t)) [méth. d ’intégration]
À chaque t Linéarisation (jeu d’équations aux différences L)
Résolution [gauss seidel]
Vérification de la convergence
Convergence : Production d ’un ASP

LAAS 06/2003 Yannick HERVE - ENSPS 37

Analyses possibles (pour SPICE) (1)


Analyses DC

.OP : point de repos/polarisation (convergence ?)


{v,i} du circuit C = ouvert / L = c-circuit
(toujours effectué avant une autre analyse)
.SENS : Sensibilité du point de repos
(variation d ’un paramêtre)
.DC : Plusieurs OP dans la même simulation (sweep)
.TF : Fonction de transfert; sortie/entrée en petit signal
(calcul dvout/diin, dvout/dvin, diload/dvin, diout/diin)

LAAS 06/2003 Yannick HERVE - ENSPS 38

19
Analyses possibles (pour SPICE) (2)
Analyses AC

.TRAN : Analyse grand signaux temporelle


(difficulté de convergence / algorithme d ’intégration numérique
pas d’intégration variable (max/min) / temps de calcul spécifié)
.AC : Analyse fréquentielle linéaire (petit signal/point de repos)

.NOISE : Analyse fréquentielle avec sources de bruit


.DISTO : harmonique ou de phase, intermodulation
cross modulation, cross-over (.TRAN+.AC(local))
.FOUR : Analyse de fourier (distortion fort signal = .TRAN+.FOUR)

LAAS 06/2003 Yannick HERVE - ENSPS 39

20
2 - Introduction à VHDL-AMS

Structure générale d'un modèle


Structuration en bibliothèques
Indentificateurs, Objets et typage. Opérateurs
Instructions séquentielles, concurrentes, simultanées
Notion d ’attributs et Synchronisation des noyaux
Critère de solvabilité et Exemples
LAAS 03/2003 Yannick HERVE - ENSPS 1

Structure générale d ’un modèle


Interfaçage/netlist (port)
Entity signal : numérique
Déf. connexions terminal : analogique, kirchoff
quantity : analogique, signal flow
Architecture
Déclaration Vue interne du modèle
Body
Inst.concurrentes discret-event
Inst.simultanées continuous time
Instanciations structurel/hiérarchie

Entity
Architecture
LAAS 03/2003 Yannick HERVE - ENSPS 2

1
Structure générale d ’un modèle : Exemple
ENTITY exemple IS
port (signal sig_ext:in real; terminal vp,vm : electrical);
END exemple;

Exemple illustratif non compilable


LIBRARY ressource_lib;
USE ressources_lib.ressources_package.ALL;
ARCHITECTURE archi1 OF exemple IS
TYPE list_ex IS (el1,el2,el2);
CONSTANT cst1 : list_ex, k:REAL;
SIGNAL sig1 : BIT, sig2 :INTEGER, sig3 : REAL;
QUANTITY vbias ACROSS ibias THROUGH vp TO vm;
QUANTITY free_quant : REAL;
BEGIN
u1:ENTITY model_externe(archi_du_modele)
GENERIC MAP(100.0e3,5.0) PORT MAP(vp,vm,sig1);
free_quant == 3.0*sinus( k * now );
ibias == free_quant’dot;
p1:PROCESS
variable x : real := 5.5;
BEGIN
wait on sig3 until sig2 > 3 for 25 ms;
x := 2*x ;
sig_ext <= sig3 after 1 ms;
END PROCESS;
END archi1;
LAAS 03/2003 Yannick HERVE - ENSPS 3

Structure générale d ’un modèle :

Prise en charge par le simulateur


Entity
Sim anal. Sim num.
Architecture
Tsim

E+A E+A CS1 SS1 {}Equa.Diff {}Equa.Log


CS2 SS2
SS1
CS3 SS3
NL (SS) (CS)
... ... Produit des ASP Produit des
E+A E+A {valeurs i(t),v(t)} événements

CS1 SS1
CS1
CS2 SS2 CS : concurrent statement
CS2
SS3 SS : simultaneous statement
... E+A : Entity + Architecture
LAAS 03/2003 Yannick HERVE - ENSPS 4

2
Structuration en bibliothèques
n Pas de longue description
n Unités petites et hiérarchisées
n Partie compilable = Unité de conception
n Système complexe = équipe
Besoin de méthodologie rigoureuse
n Une compilation qui aboutit
Mise à jour d ’une bibliothèque de travail (WORK)
n Bibliothèque de ressources (de projet, d ’un
fournisseur, de test, …)
LIBRARY ressource_lib;
USE ressource_lib.pack_lib.ALL;

LAAS 03/2003 Yannick HERVE - ENSPS 5

Structuration en bibliothèque :

Les unités de conception


n Modèle : ENTITY (UC) + ARCHITECTURE (UC)
plusieurs ARCHITECTURE possibles par ENTITY
n Code souvent utilisé et partagé : paquetage
PACKAGE (UC) + PACKAGE BODY (UC)
vue ext. : exportation vue interne : privé
n Association effective d ’une instance et un modèle
compilé : CONFIGURATION (UC)

n Les bibliothèques contiennent des UC


n Méthode : Un fichier = Une Unité de Conception

LAAS 03/2003 Yannick HERVE - ENSPS 6

3
Identificateurs
n Noms des objets : identificateurs
n Suite de lettres et de chiffres
n Commence par une lettre, no case sensitive
n Possible de poser des traits bas : Rdf_232

n Traits bas doubles, au début, à la fin : interdit

n Commentaire : -- (jusqu’à la fin de la ligne)

LAAS 03/2003 Yannick HERVE - ENSPS 7

Littéraux (1) (Valeurs « dures » du langage)


n Caractères : 95 des 128 ASCII (imprimables)
‘ a ’, ‘ b ’, ’Q ’, …

n Chaînes de caractères
«C ’est »& --(« » = guillemets)
«possible sur deux lignes»

n Notations décimales
1345, 1_345, 1e6, 1E6
1345.3, 1_345.1, 1.0e2 (attention x.0)

LAAS 03/2003 Yannick HERVE - ENSPS 8

4
Littéraux (2)
n Notations basées (entiers et réels exprimables)
2#01101# est un entier qui vaut 13
7#03630#, 16#FF3A#
2#01101.0# est un réel qui vaut 13.0
16#FF.4A#e12

n Notation par chaînes


B«000110» = (‘0’, ‘0’, ‘0’, ‘1’, ‘1’, ‘0’)
0«06» = (‘0’, ‘0’, ‘0’, ‘1’, ‘1’, ‘0’)
X«255» = (‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’, ‘1’)

LAAS 03/2003 Yannick HERVE - ENSPS 9

Typage
n Tous les objets sont typés (strong typing)
n Permet l’initialisation fiable et augmente le pouvoir de
vérification du compilateur
n Familles (définit les valeurs et opérations possibles):
– scalaires (un seul élément porté à la fois, ordonnés)
• integer, real, physical
• énumérés
– composites (plusieurs éléments portés à la fois)
• array, record
– access
– fichiers
n Types et sous-types utilisateurs possibles

LAAS 03/2003 Yannick HERVE - ENSPS 10

5
Typage :

Déclaration scalaires
type_declaration ::= TYPE type_name IS type_definition;
Enuméré : TYPE enum_type IS (bleu, blanc, rouge) ; -- relation d ’ordre
Entiers : TYPE index IS RANGE -3 TO 27 ;
TYPE rev_index IS RANGE 27 DOWNTO -3 ;
Flottants : TYPE ex_real IS RANGE -3.0 TO 27.0 ;
Physique : TYPE distance IS RANGE 0 TO 1e16
UNITS A;
nm = 10 A ; -- espace obligatoire
mil = 254_000 A ;
inch = 1_000 mil ;
ft = 12 inch ;
yd = 3 ft ,
cm = 10e7 nm ;
END UNITS ; -- facteurs conversion = integer !!!
35 yd + 547 cm + 17 inch calculée en Angströms
(35 yd + 547 cm)/mil sera calculé en mils.
(103 nm) / nm est un entier
A * nm transforme un entier en nm

LAAS 03/2003 Yannick HERVE - ENSPS 11

Typage :

Déclaration composites
Vecteur : rassembler plusieurs valeurs de même type
index entier ou énuméré, ne peut contenir des fichiers
TYPE int_vec IS ARRAY(3 to 45) of integer ; Tableau d’entier contraint
TYPE real_vec IS ARRAY(natural range <>) of real ; Tableau non contraint

TYPE enum_vec IS ARRAY(enum_type) of integer ;


si A est de type enum_vec on a A(bleu),A(blanc) et A(rouge)

Record : rassembler plusieurs valeurs de types différents (champs)


accès par notation pointée, ne peut contenir des fichiers
TYPE record_ex IS RECORD -- Record d’array ou de record possible
champ_1 : bit ;
champ_2 : real ;
autre_champ : enum_type ;
END RECORD;
Si A est de type record_ex : A.champ_1,A.champ_2 et A.autre_champ existent

LAAS 03/2003 Yannick HERVE - ENSPS 12

6
Typage :

Déclaration fichiers et pointeurs (notes)


Fichiers : TYPE file_type IS file OF string ;
Voir fonctions associées dans le paquetage STANDARD
read / write /file_open / endfile / file_close

Pointeurs : TYPE index IS natural RANGE 0 TO 15 ;


TYPE index_ptr IS ACCESS index ;

NEW index_ptr ; -- nouveau pointeur


Si IPtr est de type index_ptr
IPtr.all à la valeur de l’objet pointé

Réservé aux variables

LAAS 03/2003 Yannick HERVE - ENSPS 13

Typage :

Types prédéfinis (notes)


n Types prédéfinis
– integer TYPE integer IS RANGE integer’low to integer’high;
– real TYPE real IS RANGE real’low to real’high ;
– bit TYPE bit IS (‘0’, ’1’) ;
– std_logic TYPE std_logic IS (‘U’,’0 ’,’1’,’Z’,’X’,’H’,’L’,’W’,’-’) ; (IEEE 1164)
– bit_vector TYPE bit_vector IS ARRAY (natural RANGE<>) of bit ;
– boolean TYPE boolean IS (false, true)
– severity_level TYPE severity_level IS (NOTE,WARNING,ERROR,FAILURE) ;
– character TYPE character IS (NUL, SOH,…, ’a’, ’b’, …, ‘~’,DEL) ;
– string TYPE string IS ARRAY (positive range <>) of character ;
– time TYPE time IS RANGE integer’low TO integer’high UNITS fs;
ps = 1000 fs ; ns = 1000 ps ; us = 1000 ns ;
ms = 1000 us ; sec = 1000 ms ; mn = 60 sec ; hr = 60 mn;
END UNITS ;
LAAS 03/2003 Yannick HERVE - ENSPS 14

7
Typage :

Sous-types
subtype_declaration ::=
SUBTYPE subtype_name IS type_names [constraints];

n Permet de définir des sous ensembles de valeurs


en gardant la compatibilité avec le type de base
SUBTYPE signal_value IS real RANGE -15.0 to 15.0 ;
n Permet de définir des fonctions de résolution
(voir cours suivant)
SUBTYPE resolved_bit IS resolution_function bit ;

n Sous-types prédéfinis
– natural SUBTYPE natural IS integer RANGE 0 to integer’high;
– positive SUBTYPE positive IS integer RANGE 1 to integer’high;

n Dynamique
SUBTYPE mot IS bit_vector (1 to max) ;(MAX variable)
LAAS 03/2003 Yannick HERVE - ENSPS 15

Typage :

Initialisation des objets


n En VHDL-AMS tous les objets sont initialisés
implicitement ou explicitement
n Un objet prend la valeur la plus à gauche de son type
signal A : bit ; -- A vaut ‘0’
signal A : bit := ‘1’; -- A vaut ‘1’
variable B : boolean ; -- B vaut false
quantity Q : real ; -- Q vaut 0.0
n Un type peut être incomplètement défini
TYPE cell ; -- type incomplètement défini
TYPE link IS ACCESS cell ;
TYPE cell is record -- définitions récursive de type
value : index ;
succ : link ;
END RECORD ;
LAAS 03/2003 Yannick HERVE - ENSPS 16

8
Les 6 classes d’objets
n Les classes d ’objets (transport de l ’information)
CONSTANT (valeur fixe connue à l ’élaboration)
VARIABLE (séquentiel / dynamique)
modifiée par affectation ( := )
SIGNAL (concurrent / statique)
modifié par affectation ( <= )
TERMINAL
permet les connexions analogiques
branch/free QUANTITY
participe aux simult.stat. ( == )
est toujours d ’un type issu des real
FILE

LAAS 03/2003 Yannick HERVE - ENSPS 17

Classes d ’objets :

Constantes
n Permet de stocker des valeurs constantes
CONSTANT pi : real := 3.141592 ;
CONSTANT clock_period : time := 20 ns ;
CONSTANT BV0 : bit_vector(15 DOWNTO 0) := (‘1’, ’0 ’,others=> ’0 ’) ;
CONSTANT tt : truth_table := (other => (others => ‘ 0 ’)) ;
CONSTANT mem_bus : memory_bus := (adrr =>X «00AA»,data=>X«FF»,
read => ‘0’, write => ’1 ’, enable => ’1 ’ ) ;

n Peut être initialisée au moment de l ’utilisation


CONSTANT cst_val : integer := 40 * N ;
N ne peut être connu qu ’à l ’élaboration (paramètre générique)
Si la déclaration de constante est dans une fonction N peut être un paramêtre de celle-ci

n Constante à valeur différée


CONSTANT cst_val : integer ; est valide (on ne connaît pas la valeur)
déclaration dans la spécification paquetage
affectation dans le corps de paquetage (masquage d ’information)
LAAS 03/2003 Yannick HERVE - ENSPS 18

9
Classes d ’objets :

Variables
n Stockage et manipulation de valeurs
VARIABLE phase : real := 124.0 ;
VARIABLE clock_period : time := 20 ns ;
VARIABLE var1: integer := function_d_init(…) ;

Affectation et modification : A := B *C + 3.0;

n N ’est utilisable que dans un contexte séquentiel


PROCESS uniquement
n Il existe des variables partagées (shared)
!!! Programmes non déterministes !!!
A manipuler avec circonspection

LAAS 03/2003 Yannick HERVE - ENSPS 19

Classes d ’objets :

Signal
signal_declaration ::=
SIGNAL signal_name : [fonc_resolution] type [contraintes]
[REGISTER|BUS] [:= init_value];

n Transporte les valeurs du simulateur event-driven


S <= 3 after 15 ns;

n Modélise les fils entre les portes (symbolique)


Inport <= Outport ;

n Nom de fonction dans la déclaration: signal résolu


plusieurs sources possible / résolution du conflit (voir cours suivant)

n REGISTER ou BUS : signal gardé (guarded)


ne pourra être affecté que si le signal GUARD est TRUE (vu plus loin)

n Possède un passé, une valeur, un futur proposé


le driver du signal

LAAS 03/2003 Yannick HERVE - ENSPS 20

10
Classes d ’objets :

Terminal
terminal_declaration ::= terminal identifier_list :
subnature_indication ;

n Permet de nommer des nœuds (ne porte pas de valeur !!!)


n Une nature est définie par deux types réels
NATURE name IS acr ACROSS thr THROUGH ref REFERENCE ;
Across = effort / through = flux
v-i, °C-W, m-N, rad.s-1-N.m, n.A-Wb, Pa-l/s, ...

SUBTYPE v IS real ; SUBTYPE i IS real ;


NATURE electrical IS v ACROSS i THROUGH gnd REFERENCE ;
TERMINAL vp,vm : electrical ;

n Vecteur de nature
NATURE elec_vec IS ARRAY(natural RANGE <>) of electrical ;

n Record de nature

LAAS 03/2003 Yannick HERVE - ENSPS 21

Classes d ’objets :

Quantity
n « Signaux continus » du simulateur analogique
n Free Quantity (n ’est pas attachée à un TERMINAL)
QUANTITY Q : real := expression;
Valeur initiale implicite 0.0 (dépend de l’outil)

n Branch Quantity
QUANTITY [across_aspect] [through_aspect] terminal_aspect ;
QUANTITY V12 across I1 through t1 to t2 ;
QUANTITY V1,V2 across t1; -- alias
QUANTITY I1,I2 through t1; -- branches parallèles

n Implicit Quantity
QUANTITY Q : real := expression;
Q’dot, Q’integ existent toujours et sont créées si besoin
QUANTITY QV : real_vector (3 downto 0) ;
QV’dot, QV’integ sont valides

LAAS 03/2003 Yannick HERVE - ENSPS 22

11
Classes d ’objets :

Terminal/Quantity : exemples
n terminal t1,t2 : electrical ;
terminal t3, t4 : electrical_vector (1 to 5);

n quantity v12 across i1, i2 through t1 to t2 ;


définit une tension et deux courants

n quantity v31 across i3 through t3 to t2 ;

n quantity v24 across i4 through t2 to t4 ;

n quantity v34 across i5 through t3 to t4 ;

n Définir un système étoile,un système triangle


(terminaux scalaires)
n Définir un système N-phases étoile, N-triangle
(N inconnu)

LAAS 03/2003 Yannick HERVE - ENSPS 23

Sémantique de connexion
n Spécification d ’entité :
PORTS : classe, type et mode des connexions (et valeurs par défaut)
GENERIC : constantes passées à l ’élaboration
ENTITY exemple IS
generic (par1,par2,par3:real;par4:time:= 3 ns)
port (signal sig :{in|out|inout|linkage|buffer} real;
quantity q: {in|out} real ;
terminal vp,vm : electrical);
BEGIN
{instructions passives = pas d’affectations de signal}
END exemple;

n Les comportements possibles (par port)


event driven : port de classe signal
signal flow : port quantity ou terminal à une seule quantité
conservatif : port terminal et deux quantités définies

LAAS 03/2003 Yannick HERVE - ENSPS 24

12
Sémantique de connexion :

Event driven
n ENTITY exemple IS
port (signal sig :{in|out|inout|linkage|buffer} real);
END exemple;

n Un port de classe signal ne peut être branché que sur un signal


ou sur un port de même type, les modes doivent être
compatibles

n Un port de mode OUT n ’est pas lisible dans l ’architecture


n LINKAGE, BUFFER : modes inutilisés en pratique
n Un port de mode INOUT est forcément résolu
n Le mot clef OPEN permet de laisser ouvert

LAAS 03/2003 Yannick HERVE - ENSPS 25

Sémantique de connexion :

Event driven : formal/actual port


Avec :
ENTITY source IS
PORT (SIGNAL a : in real; b : out real);
END; -- a et b sont les ports formels

On a:
ENTITY testdetector IS
PORT (SIGNAL extin : IN real; extout : OUT real);
END;

LIBRARY disciplines;
USE disciplines.Electromagnetic_system.ALL;
ARCHITECTURE test OF testdetector IS
SIGNAL pin,pout:real;
BEGIN
u1:ENTITY source(pulse_proba) PORT MAP (extin,extout);
u2:ENTITY source(pulse_proba) PORT MAP (pin,pout);
END; -- extin,extout,pin,pout sont des ports réels (actual)
LAAS 03/2003 Yannick HERVE - ENSPS 26

13
Sémantique de connexion :

Signal Flow
n ENTITY exemple IS
port (QUANTITY Q1 : in real,
Q2 : out real);
END exemple;

n Support de l ’interconnexion à temps continu


n Permet de modéliser sous forme de schéma-blocs
Une entrée n ’influence pas une sortie
(impédance d ’entrée infinie, impédance de sortie nulle)
n Les quantité connectées doivent être de même type
n Les ports de classe Quantity connectés doivent être
compatibles
n Pas encore supporté par les outils

LAAS 03/2003 Yannick HERVE - ENSPS 27

Sémantique de connexion :

Signal Flow : exemple


Avec :
ENTITY block1 IS
PORT (QUANTITY a : in real; b : out real);
END;

On a:
ENTITY black_boxes IS
PORT (QUANTITY extin : IN real;QUANTITY extout : OUT real);
END;

LIBRARY disciplines;
USE disciplines.Electromagnetic_system.ALL;
ARCHITECTURE test OF black_boxes IS
QUANTITY ploc:real; -- Free Quantity
BEGIN
u1:ENTITY block1(beh) PORT MAP (extin,ploc);
u2:ENTITY block1(beh) PORT MAP (ploc,extout);
END;
LAAS 03/2003 Yannick HERVE - ENSPS 28

14
Sémantique de connexion :

Conservatif : Kirchoff généralisé


n ENTITY exemple IS
port (TERMINAL T1,T2 : electrical); --PAS DE MODE/VALEUR
END exemple;

n Interconnexions à temps continu conservatif


n Permet de tenir compte influences Entrées/Sorties
n TERMINAL connectés doivent être de même nature

KIRCHOFF LAW : Si T1 est branché sur T2 et si les aspects


ACROSS et THROUGH sont définis alors
ACROSS( T1 ) = ACROSS( T2 )
et THROUGH( T1 ) + THROUGH( T2 ) = 0

Quelle que soit la nature : multidiscipline

LAAS 03/2003 Yannick HERVE - ENSPS 29

Sémantique de connexion :

Conservatif : Netlist analogique


n ENTITY R IS
port (TERMINAL T1,T2 : electrical);
END R;
ENTITY C IS
port (TERMINAL T1,T2 : electrical);
END C;

n ENTITY RC IS
port (TERMINAL T1,T2 : electrical);
END RC;
ARCHITECTURE ONE OF RC IS
TERMINAL LocalT:electrical
BEGIN
R:ENTITY R(beh) PORT MAP (T1 => T1,T2 => LocalT);
C:ENTITY C(beh) PORT MAP (T1 => LocalT,T2 => T2);
END ;
n Association par nommage : Formal => Actual

LAAS 03/2003 Yannick HERVE - ENSPS 30

15
Opérateurs
n 6 classes d ’opérateurs et niveaux de priorité
(l ’évaluation d ’une expression commence par la priorité la plus haute)

– logic : and, or, nand, nor, xor, xnor, sll, sla, sra, srl, rol, ror
(s ’appliquent à boolean et bit, surcharge sur IEEE_1164-MVL9)
– relationnels : =, /=, <, <=, >, >=
(s ’appliquent à tout sauf fichiers, résultat de type BOOLEAN)
Priority

– addition : +, -, & (& : concaténation sur type STRING)


– signe : +, -
– multiplication : *, /, mod, rem
– divers : **, abs, not
n Opérateurs surchargeables, pas de changement de
priorités

LAAS 03/2003 Yannick HERVE - ENSPS 31

Instructions du langage (les plus importantes)


n Une architecture contient
simultaneous statements (doivent être évalués à chaque ASP)
f == g / procedural / if use / case use / null
concurrent statements (évalués si besoin à chaque LSP)
process / affectation de signal
instanciation
break, assertion

n Un process contient
séquential statements (évalués en séquence dans le process)
affectation signal, affectation variable
wait
if, case, loop ...

Disponibles aussi en Procedural (sauf => et wait)

LAAS 03/2003 Yannick HERVE - ENSPS 32

16
Instructions séquentielles, concurrentes, simultanées :

Instructions séquentielles
n Permet de fabriquer des PROCESS (instruction concurrente utilisateur)

n Flow control : test et boucles


n Gestion du temps : Wait
n Affectation variables
n Affectation signal et mécanismes temporels associés
n Auto test : Assert / report

LAAS 03/2003 Yannick HERVE - ENSPS 33

Instructions séquentielles, concurrentes, simultanées :

Inst. Séqu. : affectations (1)


n Affectation variables
V := f (V|S|Q) (la valeur de l ’objet)
tab1 := tab2; tableaux tab(3 to 5) := (1,2,4);
Affectation signal : proposition de transaction
[label :] target <= [transport | [reject time ] inertial]
waveform ; avec target ::= name | aggregate
et waveform ::= wf_element {,wf_element} | unaffected

lab1: S <= ’0’; -- affectation à délai delta


S <= ’0’ after 3 ns; -- transport par défaut

lab:(S1,S2)<= (’0’,’1’) after 3 ns, (’1’, ’0’) after 10 ns;

S1 <= inertial s2 after 4 ns; -- anti-physique


S1 <= reject 10 ns inertial S2 after 4 ns; -- mieux

LAAS 03/2003 Yannick HERVE - ENSPS 34

17
Instructions séquentielles, concurrentes, simultanées :

Inst. Séqu. : affectations (2)


n Notion de forme d ’onde (waveform)
s <= a after ta, b after tb, …, x after tx ;
la liste (ta, tb, tc, …, tx) doit être ordonnée
n Mécanisme temporel : transport, inertiel, réjection
n Sources possibles : constantes, variables, signaux, quantités
S <= objet
n Notion de transaction et d’événement
si S vaut x et y /= x : S <= y after 3 ns; événement
S <= x after 3 ns; transaction sans event
n Notion de pilote (driver)
S <= x after 5 ns; ne modifie pas la valeur de S
S sera éventuellement modifiée quand l ’horloge avancera à to+ 5 ns
n Notion de source unique
Un signal ne peut être affecté que par une seule source
(sauf résolution : voir cours suivant)
LAAS 03/2003 Yannick HERVE - ENSPS 35

Instructions séquentielles, concurrentes, simultanées :

Instructions séquentielles : WAIT


n Instruction la plus importante de la partie numérique
wait [on signal_list] [until bool_cond] [for time] ;
Pour au plus time
si un événement survient sur un signal de la liste signal_list
la condition booléenne bool_cond est évaluée :
si elle est fausse on se remet en attente
si elle est vraie on passe à la ligne suivante.
Tous les PROCESS sont sur un WAIT : blocage
On recherche le prochain event dans la liste d ’événement
On avance l ’horloge de simulation, nouveau LSP
Formes simplifiées : wait; wait on a; wait on a,b;
wait for 10 ns; -- time out
wait until a=‘1’; -- front;

LAAS 03/2003 Yannick HERVE - ENSPS 36

18
Instructions séquentielles, concurrentes, simultanées :

Inst. Séqu. : flow control - test / sélection


n Test
[label:]if cond_bool then
{séquence instructions séquentielles}
elsif cond2 then
{séquence instructions séquentielles}
else
{séquence instructions séquentielles}
end if ;

n Sélection
[label:]case expression is
when value_1 => {séq. Inst. Séqu. 1}
when value_2 => {séq. Inst. Séqu. 2}
when others => {séq. Inst. Séqu.}
end case ;

LAAS 03/2003 Yannick HERVE - ENSPS 37

Instructions séquentielles, concurrentes, simultanées :

Inst. Séqu. : flow control - boucles


n [label:][schéma d ’itération] loop
{séquence instructions séquentielles}
end loop [label] ;

n Infinie : loop
N :=N+1;
end loop;

Conditionnelle : Itérative :
while conditions loop for i in 1 to 100 loop
{séqu. Instr. Séqu.} {séqu. Instr. Séqu.}
[exit;] [exit;][next[label]]
end loop ; end loop ;

Boucle : i déclaré de facto / «i in A’range» possible


next [label] when cond_bool / exit [label] when cond_bool

LAAS 03/2003 Yannick HERVE - ENSPS 38

19
Instructions séquentielles, concurrentes, simultanées :

Instructions séquentielles : auto-test


n Envoi d ’un message à la console

[lab:]report expr [severity note|warning|error|failure] ;

n Surveillance d ’une condition

[lab:] assert cond_bool


[report expression]
[severity note|warning|error|failure] ;

Si cond_bool est fausse alors expression est envoyée à la


console associé à un niveau d ’erreur.

assert teff<tsetup report «Set up violé» severity error ;

LAAS 03/2003 Yannick HERVE - ENSPS 39

Instructions séquentielles, concurrentes, simultanées :

Instructions concurrentes
n Support de la modélisation/simulation à temps discret
Ces instructions sont évaluées, si besoin, à chaque LSP

n Process
n Affectation concurrente de signal
n Instanciation de composant
n Assertion concurrente
n Break (voir synchronisation des noyaux)

n Prochain cours
– Block
– Concurrent procedure
– Generate

LAAS 03/2003 Yannick HERVE - ENSPS 40

20
Instructions séquentielles, concurrentes, simultanées :

Instructions concurrentes : Process


n Instruction concurrente « Utilisateur »
[label :][postponed]process -- postponed: vu plus tard
{zone de déclaration / pas de signaux}
begin
{sequ. Instr. Sequ.}
end[postponed]process [label] ;

n Un PROCESS vit toujours (il est global)


éventuellement suspendu sur un wait
n Un PROCESS est itératif (boucle sans arrêt)
sauf si wait
n Variante : ancienne méthode (issue de VHDL 7.2)
[label :] Process(signal_liste) -- liste de sensisbilité
{zone de déclaration}
begin
{sequ. Instr. Sequ. sans wait}
end process [label] ;
LAAS 03/2003 Yannick HERVE - ENSPS 41

Instructions séquentielles, concurrentes, simultanées :

Instructions concurrentes : Process (exemple)


process
variable sp_res : integer_vector(0 to c_nb-1) := (others=>0);
variable index_tab : integer;
begin
wait on vtest'dot'above(0.0),watchdog;
if watchdog'event then
for i in sp_res’range loop
spectre <= real(sp_res(i));
wait for 1 us;
end loop;
spectre <= 0.0;
end if;
end process;

process
begin
wait for analysis_time;
watchdog <= not watchdog;
end process;
LAAS 03/2003 Yannick HERVE - ENSPS 42

21
Instructions séquentielles, concurrentes, simultanées :

n
Instructions concurrentes : Affectation
Raccourci d’ écriture
toujours remplaçable par : process + affectation séquentielle + tests

n Forme simple :
[label:]nom_ou_aggregat <= [options] waveform ;

options ::= [guarded] [transport | [reject time ] inertial]

n Forme conditionnelle :
[label:]nom_ou_aggregat<=[options]waveform1 when cond1 else
waveform2 when cond2 else
. . .
waveformN when condN ;

n Forme sélective :
[label:] With expression select
nom_ou_aggregat <= [options] waveform1 when list1,
. . .
waveformN when listN ;
LAAS 03/2003 Yannick HERVE - ENSPS 43

Instructions séquentielles, concurrentes, simultanées :

Instructions concurrentes : Instanciation


n Prendre une copie (une instance) d ’un modèle
la personnaliser, la configurer, la brancher

n label : entity nom_du_compo(archi_compo)


[generic map (formal => actual)]
[port map(formal => actual)];

Recherche de l ’entité dans les « library » référencées


si archi_compo n ’apparaît pas : la dernière analysée
(!!??outil)

n Attention : label obligatoire (plusieurs instances d’un modèle)

n Configuration : association composant / modèle de la base


vue au cours suivant

LAAS 03/2003 Yannick HERVE - ENSPS 44

22
Instructions séquentielles, concurrentes, simultanées :

Instr. Conc. : Instanciation (exemple)


n entity RS is
port (S,R : bit ; Q,Qb : out bit);
end entity;

architecture structural of RS is
signal n1_out, n2_out : bit ;
begin
nand1: entity nandg port map(in1=>S,
in2=>n2_out, outp=>n1_out);
nand2: entity nandg generic map (5 ns)
port map(R,n1_out, n2_out);
Q <= n1_out;
Qb <= n2_out;
end structural;

LAAS 03/2003 Yannick HERVE - ENSPS 45

Instructions séquentielles, concurrentes, simultanées :

Instructions concurrentes : Assertion


n Permet de surveiller en permanence une condition

n [lab:] [postponed]assert cond_bool


[report expression]
[severity note|warning|error|failure] ;

n Process équivalent :

[lab:] [postponed] Process (signaux_de la conditions)


begin
assert cond_bool
[report expression]
[severity note|warning|error|failure] ;
end process [lab] ;

LAAS 03/2003 Yannick HERVE - ENSPS 46

23
Instructions séquentielles, concurrentes, simultanées :

Instructions simultanées
n Support de la modélisation/simulation à temps continu
Ces instructions sont évaluées à chaque ASP

n Simple simultaneous statement : ==


n Forme conditionelle : if cond use
n Forme sélective : case cond when
n Forme procédurale : Procedural

LAAS 03/2003 Yannick HERVE - ENSPS 47

Instructions séquentielles, concurrentes, simultanées :

Instructions simultanées : Forme simple


n Simple simultaneous statements (doivent être évalués à chaque ASP)

f == g f et g deux fonctions NL contenant des quantités


le simulateur s ’assure qu ’à chaque ASP f-g=0.0
aux tolérances prêt (équation caractéristique)
Ces équations sont explicites ou implicites

Exemple : Q**2 + Y ’dot == sqr(Y) - Q ’integ ;


C*U == Q ;
Q == I’integ;
n ENTITY R IS
generic (R_value : real := 1_000.0)
port (TERMINAL vp,vm:electrical);
END;
ARCHITECTURE equ OF R IS
QUANTITY V ACROSS I THROUGH vp TO vm;
BEGIN
V == R_value * I;
END;
LAAS 03/2003 Yannick HERVE - ENSPS 48

24
Instructions séquentielles, concurrentes, simultanées :

Instructions simultanées : Choix


n Choix du jeu d ’équations en fonction de conditions
n La forme conditionelle :
label :IF cond_1 USE -- ASP = evaluation condx
{equations analogiques} -- !! BREAK
ELSIF cond_2 USE
{equations analogiques}

ELSE
{equations analogiques}
END USE label;
n La forme sélective :
label : CASE expr USE
WHEN value1 => {equations analogiques}
WHEN value2 => {equations analogiques}
END CASE label

LAAS 03/2003 Yannick HERVE - ENSPS 49

Instructions séquentielles, concurrentes, simultanées :

n
Instructions simultanées : Procedural
Fabriquer un « Simultaneous Statement » à partir de séquentiel
[label :] PROCEDURAL [IS]
{declaration_part} -- NORME : réévalués /exécution
BEGIN -- (pas de mémoire ?)
{sequential_statement} -- sauf wait, break, and <=
END PROCEDURAL [label]

n Sommateur analogique pondéré


Avec beta:real_vector et vp(i) ACROSS T(i) to GND (taille identique inconnue)
ARCHITECTURE

BEGIN
PROCEDURAL IS
variable bvs : real := 0.0;
BEGIN
bvs := 0.0; -- si memorisation
FOR i IN beta’range loop -- Quantités externes
bvs := bvs + beta(i) * vp(i); -- sont vues comme des
END LOOP; -- variables
Qout := bvs;
END PROCEDURAL;
END;
LAAS 03/2003 Yannick HERVE - ENSPS 50

25
Notion d’attribut (et exemples indispensables)
n Fonctions à syntaxe spécifique
(A→B : attribut appliqué à A rend un objet B)

n Array → range : A’range


n Array → value : A’length
n Signal → signal : S’delayed(T), S’stable, S’quiet
n Signal → fonction : S’event, S’last_event, S’last_value
n Quantité → quantité : Q’dot, Q’integ,
n Quantité → signal : Q’above(E)
n Nature → terminal : N’reference
n Nature → type : N’across, N’through
n Terminal → quantité : T’contribution, T’reference

LAAS 03/2003 Yannick HERVE - ENSPS 51

Synchronisation des noyaux


Un événement sur un SIGNAL doit pouvoir
provoquer une évaluation analogique :
Break on S; -- version simple
Force un ASP sur les événement de S
Break [[for Q1] use Q2 => expression] [on S][when cond];
Force ASP et recalcule les conditions initiales
Existe aussi en séquentiel

Une valeur sur une QUANTITY doit pouvoir


fabriquer un événement :
Q’above(Value) crée un événement booléen
quand Q « croise » value
LAAS 03/2003 Yannick HERVE - ENSPS 52

26
Synchronisation des noyaux : exemples
architecture ideal of comparator is
quantity vin across vp to ref;
begin
dout <= vin’above(seuil); -- dout est TRUE si vin > seuil
-- dout est FALSE si vin < seuil
end architecture ideal ;

architecture ideal of ball is


quantity v:velocity;
quantity s:displacement;
constant G:real:= 9.31;
constant fric :real := 0.1;
begin
break v => 0.0, s => 10.0; -- conditions intiales
break v => -v when not s’above(0.0);
s ’dot == v;
if v > 0.0 use V’dot == -G - v**2 * fric;
else V’dot == -G + v**2 * fric;
end use ;
end architecture ideal ;
LAAS 03/2003 Yannick HERVE - ENSPS 53

Critère de solvabilité (non de convergence)


Simulation analogique →
Résoudre système d’équations à chaque pas de temps

Il faut assurer que le modèle contient


autant d’équations que d ’inconnues
CRITERE DE SOLVABILITE :
Le nombre d ’équations (simultaneous statements)
doit être égal au nombre
de quantités THROUGH
augmenté du nombre de quantités FREE
et du nombre de quantité d’interface en mode OUT.

Critère pouvant être assuré localement


Les constructions de choix doivent être équilibrées
LAAS 03/2003 Yannick HERVE - ENSPS 54

27
Critère de solvabilité : exemple
entity Vdc is
generic (dc: REAL);
port (terminal p, m: electrical);
end entity Vdc;

architecture Bad of Vdc is NE COMPILE PAS


quantity v across p to m;
begin
v == dc;
end architecture Bad;

architecture Good of Vdc is


quantity v across i through p to m;
begin
v == dc;
end architecture Good;

LAAS 03/2003 Yannick HERVE - ENSPS 55

Mots clefs (en gras, ceux qui ont été abordés)

abs access across after alias all and architecture array assert attribute
begin block body break buffer bus case component configuration constant
disconnect downto else elsif end entity exit
file for function generate generic group guarded
if impure in inertial inout is library limit linkage loop
map mod nand nature new next noise nor not null
of on open or others out package port postponed procedural procedure process
pure quantity range record reference register reject rem report return rol ror
select severity signal shared sla sll spectrum sra srl subnature subtype
terminal then through to tolerance transport type unaffected units until use
variable wait when while with xnor xor

LAAS 03/2003 Yannick HERVE - ENSPS 56

28
Exemples simples
n Porte NAND
n Bascule D
n Résistance, Condensateur, Inductance
n RLC parallèle, RLC série
n Source sinus parfaite
n Diode avec comportement thermique
n Non linéarité : modèle par morceaux
n Modèle mixte (piloté par FSM)
LAAS 03/2003 Yannick HERVE - ENSPS 57

Porte NAND
ENTITY nandg IS
GENERIC (tplh,tphl : time := 10 ns);
PORT (SIGNAL inp1,inp2 : IN std_ulogic, outp : OUT std_ulogic);
END;
LIBRARY IEEE;
use ieee.math_real.all;
ARCHITECTURE beh1 OF nandg IS
BEGIN
outp <= inp1 nand inp2 after ( tplh + tphl)/2;
END;
ARCHITECTURE beh2 OF nandg IS
BEGIN
process
variable loc : std_ulogic;
begin
wait on inp1, inp2;
loc := inp1 nand inp2;
if loc = ‘1’ then
outp <= loc after tplh;
else
outp <= loc after tphl;
end if;
LAAS
end03/2003
process; Yannick HERVE - ENSPS 58
END;

29
Bascule D
ENTITY bascd IS
GENERIC (tpd: time := 10 ns);
PORT (SIGNAL D,CLK : IN std_ulogic; SIGNAL Q : OUT std_ulogic);
END;
LIBRARY IEEE;
use ieee.math_real.all;
ARCHITECTURE beh1 OF bascd IS
BEGIN
Q <= D after tpd when (CLK’event and CLK=‘1’) else
unaffected;
END;
ARCHITECTURE beh2 OF bascd IS
BEGIN
process
begin
wait until CLK=‘1’;
Q <= D after tpd;
end process ;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 59

Résistance

ENTITY R IS
generic (R_value : real := 1_000.0);
port (TERMINAL a,b:electrical);
END;

ARCHITECTURE equ OF R IS
QUANTITY V ACROSS I THROUGH a TO b;
BEGIN
V == R_value * I;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 60

30
Condensateur

ENTITY C IS
generic (C_value : real := 1.0e-6);
port (TERMINAL vp,vm:electrical);
END;

ARCHITECTURE equ OF C IS
QUANTITY V ACROSS I THROUGH vp TO vm;
BEGIN
I == C_value * V ’dot;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 61

Inductance

ENTITY L IS
generic (L_value : real := 1.0e-3);
port (TERMINAL vp,vm:electrical);
END;

ARCHITECTURE equ OF L IS
QUANTITY V ACROSS I THROUGH vp TO vm;
BEGIN
V == L_value * I ’dot;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 62

31
RLC parallèle

ENTITY RLCp IS
generic (R,L,C : real);
port (TERMINAL vp,vm:electrical);
END;
ARCHITECTURE struct OF RLCp IS
BEGIN
lab_R: entity R generic map (R) port map (b => vm, a => vp);
lab_C: entity C generic map (C) port map (vp, vm);
lab_L: entity L generic map (L) port map (vp=>vp ,vm=>vm);
END;
ARCHITECTURE equ OF RLCp IS
quantity V across I1,I2,I3 through vp to vm;
BEGIN
V == R*I1 ;
V == L*I2’dot
V == I3’integ/C ;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 63

RLC série

ENTITY RLCs IS
generic (R,L,C : real);
port (TERMINAL vp,vm:electrical);
END;
ARCHITECTURE struct OF RLCs IS
Terminal RC,CL : electrical;
BEGIN
lab_R: entity R generic map (R) port map (vp,RC);
lab_C: entity C generic map (C) port map (RC, CL);
lab_L: entity L generic map (L) port map (CL, vm);
END;
ARCHITECTURE equ OF RLCs IS
quantity V across I through vp to vm;
BEGIN
V == R*I + L*I’dot + I’integ/C ;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 64

32
Source sinus idéale

library Disciplines;
use Disciplines. electrical_ system. all;
ENTITY gene_sinus IS
generic (Ampl,freq,phase : real);
port (TERMINAL vp,vm:electrical);
END;

library ieee;
use ieee.math_real.all;
ARCHITECTURE beh OF gene_sinus IS
quantity V across I through vp to vm;
BEGIN
V == Ampl * sin( 2.0 * math_pi * freq * now + phase) ;
END;

LAAS 03/2003 Yannick HERVE - ENSPS 65

Diode paramétrée
I d = Is .(e (v d − rs.Id )/(n.vt) − 1)
d
I c = (tt.I d - 2.C jo . v j ² - v j .v d )
dt
ENTITY diode IS
generic(Iss:real:=1.0e-14;n,af:real:=1.0;
tt,cjo,vj,rs,kf:real:=0.0);
port (TERMINAL anode,cathode:electrical);
END;

ARCHITECTURE level0 OF diode IS


quantity Vd across id,ic through anode to cathode;
quantity qc : charge;
constant vt : real := 0.0258;
BEGIN
ic == qc ’dot;
qc == tt * id - 2.0 * cjo * sqrt( vj**2 - vj * vd );
id == iss * exp(( vd - rs*id )/( n * vt )) - 1.0);
END ARCHITECTURE level0;

LAAS 03/2003 Yannick HERVE - ENSPS 66

33
Diode : modèle électro-thermique

ENTITY diodth IS
generic(Iss:real:=1.0e-14;n,af:real:=1.0;
tt,cjo,vj,rs,kf:real:=0.0);
port (TERMINAL anode,cathode:electrical;
TERMINAL junction:thermal);
END;

ARCHITECTURE level0 OF diodth IS


quantity Vd across id,ic through anode to cathode;
quantity temp across power through thermal_ref to junction;
quantity qc : charge;
quantity vt : voltage;
BEGIN
ic == qc ’dot;
qc == tt * id - 2.0 * cjo * sqrt( vj**2 - vj * vd );
id == iss * exp(( vd - rs*id )/( n * vt )) - 1.0);
vt == temp * boltzmann / elec_charge ;
power == vd * id;
END ARCHITECTURE level0;

LAAS 03/2003 Yannick HERVE - ENSPS 67

Diode : modèle électro-thermique - Testbench


library Disciplines;
use Disciplines. electrical_ system. all;
use Disciplines. thermal_ system. all;
entity TestBench is end entity TestBench;

architecture DiodeWithHeatSink of TestBench is


terminal a, b: electrical; terminal j, h: thermal;
begin
v0: entity Vdc generic map (dc => 1.0)
port map (p => a, m => ground);
r1: entity Resistor generic map (r => 1.0e3)
port map (p => a, m => b);
d1: entity DiodeTh port map (anode => b,
cathode => ground, junction => j);
heatres: entity ResistorTh generic map (r => 0.1)
port map (p => j, m => h);
heatsink: entity CapacitorTh generic map (c => 0.008)
port map (p => h, m => thermal_ ref);
rad: entity ResistorTh generic map (r => 10.0)
port map (p => h, m => thermal_ ref);
end architecture DiodeWithHeatSink;

LAAS 03/2003 Yannick HERVE - ENSPS 68

34
Modèle par morceaux : Mauvaise méthode
limiteur de tension
library Disciplines;
use Disciplines. electrical_ system. all;
entity VoltageLimiter is
generic (vlim: REAL); -- open loop gain
port (terminal ip, im, op, om: electrical);
end entity VoltageLimiter;

architecture Bad of VoltageLimiter is


quantity vin across ip to im;

C ’EST MAUVAIS
quantity vout across iout through op to om;
begin
if vin > vlim use
vout == vlim;
elsif vin < -vlim use
vout == -vlim;
else
vout == vin;
end use;
end architecture Bad;

LAAS 03/2003 Yannick HERVE - ENSPS 69

Modèle par morceaux : Bonne méthode


limiteur de tension
library Disciplines;
use Disciplines. electrical_ system. all;

architecture Good of VoltageLimiter is


C ’EST MEILLEUR

quantity vin across ip to im;


quantity vout across iout through op to om;
begin
if vin’Above( vlim) use
vout == vlim;
elsif not vin’Above(- vlim) use
vout == -vlim;
else
vout == vin;
end use;

-- break on vin’Above( vlim), vin’Above(- vlim);

end architecture Good;

LAAS 03/2003 Yannick HERVE - ENSPS 70

35
Modèle mixte piloté par FSM : Comparateur à hystérésis (1)
library IEEE, Disciplines; use IEEE. std_ logic_ 1164.all;
use Disciplines. electrical_ system. all;
entity ComparatorHyst is
generic (vlo, vhi: REAL; -- thresholds
timeout: DELAY_ LENGTH);
port (terminal ain, ref: electrical;
signal dout: out std_ logic);
end entity ComparatorHyst;

architecture Hysteresis of ComparatorHyst is


type states is (unknown, zero, one, unstable);
quantity vin across ain to ref;
function level( vin, vlo, vhi: REAL) return states
is
begin
if vin < vlo then return zero;
elsif vin > vhi then return one;
else return unknown; end if;
end function level;
begin
. . .
LAAS 03/2003 Yannick HERVE - ENSPS 71

Modèle mixte piloté par FSM : Comparateur à hystérésis (2)


. . .
process
variable state: states := level( vin, vlo, vhi);
begin
case state is
when one => dout <= ’1’;
wait on vin’Above( vhi);
state := unstable;
when zero => dout <= ’0’;
wait on vin’Above( vlo);
state := unstable;
when unknown => dout <= ’X’;
wait on vin’Above( vhi), vin’Above( vlo);
state := level( vin, vlo, vhi);
when unstable =>
wait on vin’Above( vhi), vin’Above( vlo) for timeout;
state := level( vin, vlo, vhi);
end case;
end process;
end architecture Hysteresis;

LAAS 03/2003 Yannick HERVE - ENSPS 72

36
3 - VHDL-AMS en profondeur

Le reste des instructions, Quelques précisions


Les dernières constructions, Le reste des attributs
Paquetages standards et non standards
Compilation, Elaboration, Simulation, Exploitation
Le cycle de simulation / l’initialisation / DOMAIN
La grammaire BNF en HTML
LAAS 06/2003 Yannick HERVE - ENSPS 1

Mots clefs restant à éclaircir


Autres instructions :
alias attribute block disconnect function generate
group procedure component

Précisions sur les instructions:


postponed guarded buffer bus pure impure register
return tolerance limit noise spectrum

Autre unité de conception :


package (package)body configuration

LAAS 06/2003 Yannick HERVE - ENSPS 2

1
Instructions :

ALIAS et ATTRIBUTE
n Nouveau nom (constante, variable, signal) :
ALIAS nouveau_nom : type_ou_subtype IS nom_de_lobjet;
exemple : variable s_m:bit_vector(7 downto 0);
alias sign:bit is s_m(7);
alias module:bit_vector(0 to 6) is s_m(6 downto 0);

n Propriété constante d ’un objet : déclaration et spécification


(entity, architecture, configuration, procedure, function, package, type, subtype,
constant, signal, variable, quantity, terminal, nature, component, label, group, file, units)
attribute num_pin, valeur : integer -- déclaration
attribute num_pin of vcc:signal is 14; -- spécification
attribute num_pin of others:signal is 0;
attribute valeur of all:entity is 14;

vcc’num_pin vaut 14
x’num_pin vaut 0 si x!= vcc

LAAS 06/2003 Yannick HERVE - ENSPS 3

Instructions :

GROUP
n Permet de grouper des objets

– Group template declaration


group pin2pin is (signal,signal); -- deux signaux
group resource is (label <>); -- ensemble de label
group diff_c is (group <>); -- groupe de groupe

– Group declaration
group G1:resource(L1,L2);
group G2:resource(L1,L2,L3);
group C2Q:pin2pin(Projet.Global.CK, Q);
group SetG:diff_c(G1,G3);

LAAS 06/2003 Yannick HERVE - ENSPS 4

2
Instructions :

BLOCK
Permet de rassembler des instructions concurrentes sous la même
zone de définition et la même conditions de guarde (imbricables)
label: block [condition de guard] -- condition booléenne
[en_tête généricité et ports]
[déclarations locales/ sauf variables]
begin
{instructions concurrentes ou simulatnées}
end block [label];

block1: block clock ’event and clk=’1’ -- condition booléenne


begin
a <= guarded b after 3 ns ;
c <= guarded d;
end block block1;

LAAS 06/2003 Yannick HERVE - ENSPS 5

Instructions :

GENERATE
n Ecriture automatique itérative ou conditionnelle de code
Exemple : Je veux décrire structurellement un compteur N bits
générique sur N; je dois instancier N bascules, avec N inconnu.

n label : if cond_bool generate


{instr. Concurrentes/simultanées}
end generate [label] ;

n label : for identif in intervalle generate


{instr. Concurrentes/simultanées}
end generate [label] ;

LAAS 06/2003 Yannick HERVE - ENSPS 6

3
Instructions :

GENERATE (exemple)
n Instanciation de N additionneurs (N inconnu à la compilation)
entity adderN is
generic(N : integer := 16);
port (a,b : in bit_vector(N downto 1);
cin : in bit;
sum : out bit_vector(N downto 1);
cout: out bit);
end adderN;
architecture structural of adderN is
component adder
port (a,b,cin : in bit; sum, cout : out bit);
end component;
signal carry : std_logic_vector(0 to N);
begin
carry(0) <= cin;
gen: for I in 1 to N generate
add: adder port map(a(I),b(I),carry(I-1),sum(I),carry(I));
end generate;
end structural;
LAAS 06/2003 Yannick HERVE - ENSPS 7

Instructions :

FUNCTION et PROCEDURE (1)


n Sous programmes : regroupe des instructions séquentielles
fonction - rend un résultat (pas d ’effet de bord)
procédure - peut consulter/modifier environnement
n fonction pure : mêmes paramêtres = même résultat
NOW et FREQUENCY sont impures

n Sous programme : déclaration / corps


déclaration ::= procedure proc1 ( {liste paramêtres} ); |
[pure|impure] function func1 ( {liste paramêtres} ) return type;

paramêtre ::= classe {nom} : [mode] type [:= default_val]


Les paramètres ne sont pas obligatoirement passés
procedure : constant (in), variable (in,out,inout), signal(in,out,inout), file
function : constant (in), signal(in), file
! Le driver des signaux sont passés complétement
(attributs signaux ou quantity interdits à l ’intérieur des sub-prog)
! Les quantités sont traitées comme des constantes (même en simultané)
LAAS 06/2003 Yannick HERVE - ENSPS 8

4
Instructions :

FUNCTION et PROCEDURE (2)


n Sous programme : déclaration / corps
corps ::= procedure proc1 ( {liste paramêtres} ) is
{declarations locales}
begin
{seq. statement}
end ; |
[pure|impure] function func1 ( {liste paramêtres} ) return type is
{declarations locales}
begin
{seq. statement}
return result; -- si end est atteint ERREUR
end ; |

n Fonctions surchargeables : redéfinies sur des nouveaux types


opérateur «+» redéfinie peut s ’appeler a := c + d; ou a := «+»(c,d);

n Appel concurrent de procédure : liste de signaux= liste de sensibilité


pas de variable dans les paramètres
si pas de signal en mode in ou inout : un seul appel
LAAS 06/2003 Yannick HERVE - ENSPS 9

Précisions :

Domaine d’analyse
n Signal implicite : DOMAIN (quiescent_domain, time_domain, frequency_domain,)
Ce signal est fourni par l ’environnement de simulation
if DOMAIN = quiescent_domain use . . . else . . . end use;

n Les simulateurs SPICE-like proposent différents mode d ’analyse :


DC, AC, TRAN, MonteCarlo, Noise
L ’analyse AC se fait avec les sources SPECTRUM après analyse DC
L ’analyse NOISE se fait avec les sources NOISE
quantity i through p to m;
quantity ac : real spectrum 1.0, 0.0; -- magnitude, phase
limit i:electrical’through with 1.0/(20.0*freq);
quantity nois_src : real noise 4.0 * amb_temp * K/R;
. . .
i == V/R + ac + nois_src ;

FREQUENCY même rôle en AC que NOW en TRAN

LAAS 06/2003 Yannick HERVE - ENSPS 10

5
Précisions :

POSTPONED
n Retarder l’exécution d ’une instruction concurrente à la fin du
cycle (le dernier des delta) (process, assertion, affectation, procedure)
Ne concerne pas les instructions à delta-time (erreur)

[label :] postponed process


[label :] postponed S <= ‘0’ after 3 ns;
[label :] postponed assert . . .;

INTERDIT postponed S <= ‘0’; -- crée un delta time

LAAS 06/2003 Yannick HERVE - ENSPS 11

Précision :

TOLERANCE
n On peut spécifier une tolérance dans un sous type

subtype displacement is real tolerance « def_displ »;


subnature elec2 is electrical tolerance
« def_displ_ac » across « def_displ_th » through;

n Une quantité hérite de la tolérance du sous type

n Une instruction simultanée peut être « tolérancée »

m2 * x2’dot’dot == -f(x2-x1) tolerance « def_displ »

n Dans l ’environnement la tolérance est associée avec une valeur


pouvant piloter le critère de convergence du simulateur

LAAS 06/2003 Yannick HERVE - ENSPS 12

6
Précision :

Signaux résolus
n Un signal ne peut avoir qu’une seule source
Multi-sources (tri-state, OC) = Mécanisme spécifique
n Si, dans un contexte concurrent, on a :
A <= B ;
A <= C ;

il faut que le signal soit résolu par une fonction F :


à chaque tentative de transaction le simulateur effectuera
A <= F(B,C);

n Type résolu : type bit4 is (’0’, ’1’, ’X’, ’Z’);


type bit4_v is array(natural range<>)of bit4;
function reso_f ( s : bit4_v) return bit4;
type res_bit is reso_f bit4;

n Signal résolu : signal A : res_bit [register|bus] ;

Un signal de mode inout est forcement résolu


LAAS 06/2003 Yannick HERVE - ENSPS 13

Précision :

Fonction de résolution : comportement


n Appelée automatiquement à toutes les tentatives de transaction
Elle prend en entrée un vecteur de tous les signaux sources à
l ’exception de ceux qui sont déconnectés (transaction nulle).
n Fonction de résolution : exemple
function reso_f (s : bit4_v) return bit4 is
variable result : bit4 := ‘Z’;
variable x : integer := 0;
begin
for i in s’range loop
if s(i) /= ‘Z’ then
result := s(i);
x := x+1;
end if;
end loop;
case x is
when 0|1 => return result;
when others => return ‘X’;
end case;
end reso_f;

LAAS 06/2003 Yannick HERVE - ENSPS 14

7
Précision :

Déclaration des signaux (2)


n Signaux gardés : REGISTER ou BUS apparaît dans la déclaration.
Si toutes les sources sont déconnectées :
Register : garde la dernière valeur rendue par la FR
Bus : rend la valeur de la FR appelée avec une entrée vide
(prévue par le programmeur dans la FR)
n Affectations gardées : GUARDED apparaît dans l ’affectation
A <= guarded B after 3 ns;
4 cas : signal non gardé / affectation non gardée
signal non gardé / affectation gardée
if GUARD=true then A <= . . . End if;
signal gardé / affectation non gardée
INTERDIT
signal gardé / affectation gardée
if GUARD=true then a <= . . . Else
deconnexion End if

n Déconnexions : disconnect nom_de_signal:type after time;


disconnect a,b:integer after 5 ns;
disconnect others:integer after 15 ns;
disconnect all:real after 20 ns;
LAAS 06/2003 Yannick HERVE - ENSPS 15

Les dernières constructions :

Unités de conception
Les 5 unités de conception (compilables seules) :
Primaires : entité, paquetage, configuration
Secondaires : architecture, corps de paquetage

Le paquetage (package) : rassembler un ensemble de


déclarations en vue de l ’exportation (library/use).
Le corps du paquetage : rassembler les définitions des procédure /
fonctions déclarées, des constantes ou des types non exportables.

La configuration permet de réaliser l’association effective de


l ’instanciation d ’un composant et d ’un modèle de la base de
données au moment de l’élaboration sans avoir à recompiler le
modèle

LAAS 06/2003 Yannick HERVE - ENSPS 16

8
Les dernières constructions :

Paquetage
PACKAGE bit_vector_ops IS
FUNCTION "+"(left, right : bit_vector) RETURN bit_vector;
type state is (lec, ecr,wait,reset);
END;
PACKAGE BODY bit_vector_ops IS
type internal is (ceci, pas, exporte);
FUNCTION "+"(left, right : bit_vector) RETURN bit_vector IS
VARIABLE carry : bit := '0';
BEGIN
FOR i IN result'reverse_range LOOP
. . .
END LOOP;
RETURN result;
END "+";

END bit_vector_ops;

Si le paquetage est compilé dans MYLIB, les informations


sont disponibles par : LIBRARY MYLIB;
USE MYLIB.bit_vector_ops.all;
LAAS 06/2003 Yannick HERVE - ENSPS 17

Les dernières constructions :

Configuration : support de généricité


(1) Déclaration de composant : COMPONENT
(2) Instanciation le composant
Description structurelle = netlist de composants virtuels
(3) Configuration : instance de COMPONENT → entité(archi)

(1) et (2) Généralisation à compiler une seule fois


(3) Spécialisation : applicable sans recompiler

Les deux méthodes de configuration :


Embarquée dans l ’architecture :
for lab_inst:nom_instance use lib_nam.entity(archi);
Par unité de conception : la seule correcte

(+ instanciation directe label:entity …)


LAAS 06/2003 Yannick HERVE - ENSPS 18

9
Les dernières constructions :

Configuration : exemple (1)

entity adder is
port (a,b,cin : in bit ; sum,cout : out bit);
end adder;

architecture rtl of adder is


begin
sum <= (a xor b) xor cin;
cout <= (a and b) or (cin and a) or (cin and b);
end rtl;

Modèle compilé et disponible dans la bibliothèque WORK

LAAS 06/2003 Yannick HERVE - ENSPS 19

Les dernières constructions :

Configuration : exemple (2)


entity adder4 is
port (a,b : in bit_vector(4 downto 1);
cin : in std_logic;
sum : out bit_vector(4 downto 1);
cout : out bit);
end adder4;

architecture structural of adder4 is


(1) component compo1
port (x,y,z : in bit; v,t : out bit);
end component;
signal carry : bit_vector(0 to 4);
begin
carry(0) <= cin;
(2) add1:compo1 port map(a(1),b(1),carry(0),sum(0), carry(1));
(2) add2:compo1 port map(a(2),b(2),carry(1),sum(1), carry(2));
(2) add3:compo1 port map(a(3),b(3),carry(2),sum(2), carry(3));
(2) add4:compo1 port map(a(4),b(4),carry(3),sum(3), carry(4));
cout <= carry(4);
end structural;
LAAS 06/2003 Yannick HERVE - ENSPS 20

10
Les dernières constructions :

Configuration : exemple (3)


(3) configuration test_adder4 of adder4 is
for structural
for all: compo1
use entity work.adder(rtl)
port map (a=>x, b=>y, cin=>z, sum=>v, cout=>t);
end for;
end for;
end test_adder4;

Ce module est compilable seul. Si on change rtl par other_archi on


peut simuler une nouvelle architecture sans recompiler les modèles!!
Si la hiérarchie était plus profonde on pourrait imbriquer :
for archi0 for label: compo use entity lib.entity(archi1);
for archi1 for label: compo use entity lib.entity(archi2);
for archi2 for label: compo use entity lib.entity(archi3);
...
end for;
end for;
end for;
LAAS 06/2003 Yannick HERVE - ENSPS 21

Les dernières constructions :

Configuration : back-annotation
(3) configuration test_adder4 of adder4 is
for structural
for all: compo1
use entity work.adder(rtl)
generic map (td => 12 ns, tr => 22 ns);
port map (a=>x, b=>y, cin=>z, sum=>v, cout=>t);
end for;
end for;
end test_adder4;

Configuration retardée

Les délais obtenus par analyse du routage sont ré-injectés dans le


modèle sans avoir à le recompiler : conception d ’ASIC

LAAS 06/2003 Yannick HERVE - ENSPS 22

11
Les dernières constructions :

Configuration : Raccourci (mauvais)


On peut embarquer la configuration dans l ’architecture
On perd beaucoup de puissance de généralisation/spécialisation
architecture structural of adder4 is
(1) component compo1
port (x,y,z : in bit; v,t : out bit);
end component;
signal carry : bit_vector(0 to 4);
(3) for all: compo1 use entity work.adder(rtl)
port map (a=>x, b=>y, cin=>z, sum=>v, cout=>t);
begin
carry(0) <= cin;
(2) add1:compo1 port map(a(1),b(1),carry(0),sum(1), carry(1));
(2) add2:compo1 port map(a(2),b(2),carry(1),sum(I), carry(2));
. . .
end structural;

Pas très rigoureux sur le plan sémantique :


on configure avant d ’instancier (!!??)
LAAS 06/2003 Yannick HERVE - ENSPS 23

Les dernières constructions :

Configuration : Intérêt opérationnel


n Intérêt du multi-abstraction / configuration
n Travail en équipe : E1 / E2 / E3
Cahier des charges fonctionnel simulable, blocs fonctionnels :
B10 / B20 / B30

E1 doit concevoir B1 : B10 à B1n


Vérification possible par simulation de B1x / B20 / B30
(en cas d ’erreur 90% des problèmes sont aux interfaces)

Même remarque pour les équipes E2 et E3


n Si la description est bien faite (configuration) n’importe quelle
netlist de type B1x / B2y / B3z est simulable sans recompiler.
Étude de performances locales en optimisant les besoins en calculs

n Voir Aussi transparent « Back-annotation »


LAAS 06/2003 Yannick HERVE - ENSPS 24

12
Attributs restants à définir (liste 1)
Type T → Type : T'base
Type T → Value : T'left, T'right, T'high, T'low, T'ascending
Type T → Function : T'image(X), T'value(X), T'val(X), T'pos(X),
T'succ(X), T'pred(X), T'leftof(X), T'rightof(X)

Array A → Function :
A’left[(N)], A’right[(N)], A’high[(N)], A’low[(N)]
Array A → Range : A'range[(N)], A'reverse_range[(N)]
Array A → Value : A’length[(N)], A'ascending[(N)]

Signal S → Signal :
S’delayed[(T)], S’stable[(T)], S’quiet[(T)], S'transaction

Signal S → Quantity : S'ramp([TR[,TF]]),


S'slew([max_rising_slope, [max_falling_slope]])

Signal S → Fonction :
S’event, S'active, S’last_event, S'last_active, S’last_value,
S'driving, S'driving_values

LAAS 06/2003 Yannick HERVE - ENSPS 25

Attributs restants à définir (liste 2)


Entity E → String : E'simple_name, E'instance_name,
E'path_name

Nature N → Type : N’across, N’through


Nature N → Terminal : N’reference

Quantité Q → Value : Q’tolerance

Quantité Q → Quantité :
Q’dot, Q’integ, Q'delayed(T),
Q'zoh(T[,initial,delay]),
Q'ltf(num,den),
Q'ztf(num,den,T[,initialelay]),
Q'slew([max_rising_slope,[max_falling_slope]])

Quantité Q → Signal : Q’above(E)

Terminal T → Quantité : T’contribution, T’reference

Terminal T → Value : T'tolerance


LAAS 06/2003 Yannick HERVE - ENSPS 26

13
Attributs importants :
S'ramp([TR[,TF]]) : permet de fabriquer une quantité sous
forme de rampe à partir d ’un signal « tout ou rien »

S'slew([max_rising_slope, [max_falling_slope]]),
Q'slew([max_rising_slope,[max_falling_slope]]) : permet de
fabriquer une quantité présentant un slew rate (dérivée
bornée) aussi bien à la montée qu’à la descente.

Q'zoh(T[,initial,delay]): échantilloneur bloqueur.


Q'ltf(num,den) : application d ’une fonction de transfert sous
forme de transformée de laplace.
Q'ztf(num,den,T[,initialelay]): application d ’une fonction de
transfert sous forme de transformée en Z.

LAAS 06/2003 Yannick HERVE - ENSPS 27

Transformée de Laplace / en Z
m
a k .p k
H (p) = k =0
n
k =0
b k .p k

Q'ltf(num,den) : Applique la fonction de transfert à Q


Le résultat est sous forme temporelle.

num et den sont deux vecteurs de réels


num = (a0,a1,a2,…,an)
den = (b0,b1,b2,…,bn) avec b0!=0
2
H 0 .ωp Avec Ho, wp et qp constantes
H ( p) = num = ( Ho*wp*wp )
ω 2
p 2 + p .p + ωp den = ( wp*wp, wp/qp, 1.0)
Qp

Q'ztf(num,den,T[,initialelay]): Même mécanisme, avec en plus


période d’échantillonnage et décalage initial.

LAAS 06/2003 Yannick HERVE - ENSPS 28

14
Paquetages utilitaires
n Paquetages de la norme
STD, TEXTIO : types et fonctions de base,opérations sur les fichiers
LIBRARY IEEE :
STD_LOGIC_1164 : MVL9 (std_ulogic, std_logic), fonctions associées
MATH_REAL, MATH_COMPLEX : constantes, types et fonctions
LIBRARY DISCIPLINES :
ELECTROMAGNETIC_SYSTEM, KINEMATIC_SYSTEM,
ROTATIONAL_SYSTEM, FLUIDIC_SYSTEM: natures
PHYSICAL_CONSTANTS : boltzmann, electron, . . .
n Paquetages non normalisés
Paquetages fournisseurs notamment pour la synthèse : En cas de
portage, il faut porter les paquetages. (ex : CONVERSION par MG)
Si des fonctions utilisées sont définies comme FOREIGN les
constructions ne sont pas portables
n Les Outils livrés avec des libraries de ressources
Intellectual Property (IP) : on n ’a pas accès au source
LAAS 06/2003 Yannick HERVE - ENSPS 29

Compilation, Elaboration,
Simulation, Exploitation
n Compilation : analyse syntaxique et sémantique
UC primaires avant UC secondaires
Stockage en bibliothèque
n Elaboration
Rassemble les modèles utilisés (propriétaire ou IP),
vérifie les associations, fixe les génériques, crée les data-structures
process inteconnectés + jeu d’équations simultanées
n Simulation (deux noyaux de simulation)
vérifie les contraintes dynamiques de valeur
rapporte les REPORT et pilote le simulateur avec le SEVERITY
vérifie les boucles infinies des process, contrôle la convergence
n Exploitation
tracé des chronogrammes, tracé des x(t),
auto-test des modèles

LAAS 06/2003 Yannick HERVE - ENSPS 30

15
Cycle de simulation : initialisation
n Tc= 0.0 / Frequency = 0.0
n Valeurs initiales des signaux et quantités
n Exécute tous les PROCESS
n (1) Exécute le solveur analogique : trouve point DC
n Mise à jour des signaux
n Exécute les PROCESS sensibles a ces signaux
n Reste-il des événements dans la queue ?
Si OUI; retour en (1)
n Quiescent state : Mise à jour du signal DOMAIN
n Time_domain ou Frequency_domain simulation

LAAS 06/2003 Yannick HERVE - ENSPS 31

Cycle de simulation : time_domain


n (2) Extraire premiers événements de la liste
Avancer Tn à cette date
n (3) Simuler analogique jusqu’ à Tn ’
Tn ’ peut être < Tn à cause des Q ’above(E)
plusieurs ASP qui ne coïncident pas forcément avec Tn
n Tc =Tn : si Tc=time ’high alors END
n Mise à jour des signaux
n Exécute les PROCESS sensibles a ces signaux
n Reste-il des événements dans la queue
ou il y a t il un BREAK ?
Si OUI : Tn=Tc, retour en (3) [delta-cycle]
Si NON : retour en (2)
LAAS 06/2003 Yannick HERVE - ENSPS 32

16
Cycle de simulation : frequ_domain

n Ne concerne que la partie continue

n Résolution d’un jeu d ’équations algébriques linéaires

LAAS 06/2003 Yannick HERVE - ENSPS 33

Initialisation après discontinuité


n entity Capacitor is
generic (C: REAL; Vo: REAL := REAL’low);
port (terminal p, m: electrical);
end entity Capacitor; Par défaut
Q’dot==0.0, Q=Q(t-)
n architecture One of Capacitor is après discontinuité
quantity v across i through p to m;
begin
i == C * v’dot;
break v => Vo when Vo /= REAL’low;
end architecture One; v == vo remplace
v’dot == 0
n architecture Two of Capacitor is
quantity v across i through p to m;
quantity q : charge;
begin v == vo remplace
q == c * v; q’dot == 0
i == q’dot;
break for q use v => Vo when Vo /= REAL’low;
end architecture Two;

LAAS 06/2003 Yannick HERVE - ENSPS 34

17
La grammaire BNF en HTML©

n La seule référence : LRM IEEE 1076.1999

n Le fichier ams_bnf.html est une aide à la rédaction


syntaxique

LAAS 06/2003 Yannick HERVE - ENSPS 35

18
4 - VHDL-AMS avancé

Bonnes méthodes et habitudes, Les pièges à éviter


Testbench avancés, Intellectual property (IP)
ADVance MS et Configuration de l ’environnement
Simulation analogique et fichier de commande
Limites des outils actuels et futur possible (?!)

LAAS 06/2003 Yannick HERVE - ENSPS 1

Bonnes méthodes et habitudes

n Modularisation
n Présentation du code
n Test locaux / globaux
n Généricité (reusability)
n Configuration

LAAS 06/2003 Yannick HERVE - ENSPS 2

1
Bonnes méthodes et habitudes :

Modularisation
Chaque UC doit être dans un fichier avec ses
clauses library et use
La recompilation d’une UC ne doit pas impliquer la
manipulation de fichiers qui ne la concerne pas
(risques d ’erreurs, temps gaspillé, …)
Une nouvelle configuration pourra se faire sans
recompiler
Les outils vérifient le cohérence des temps de
simulation : Un objet ne peut faire référence qu ’à un
objet compilé avant lui
LAAS 06/2003 Yannick HERVE - ENSPS 3

Bonnes méthodes et habitudes :

La présentation du code
Mise en forme / Nom des objets / Structure (Mauvais)
LIBRARY IEEE;
use ieee.math_real.all;
entity x is port (a,b :std_ulogic; c : OUT std_ulogic); end;
architecture z OF x is
begin
c <= a after 3 ns when (b’event and b=‘1’) else unaffected;
end;;

architecture z2 of x is
begin
process
begin
wait until b=‘1’;
c <= a after 3 ns;
end process;
end;

LAAS 06/2003 Yannick HERVE - ENSPS 4

2
Bonnes méthodes et habitudes :

La présentation du code
Mise en forme / Nom des objets / Structure (Mieux)
ENTITY bascd IS
GENERIC (tpd: time := 10 ns);
PORT (SIGNAL D,CLK : IN std_ulogic; SIGNAL Q : OUT std_ulogic);
END ENTITY basd;

LIBRARY IEEE;
use ieee.math_real.all;
ARCHITECTURE beh1 OF bascd IS
BEGIN
Q <= D after tpd when (CLK’event and CLK=‘1’) else unaffected;
END ARCHITECTURE beh1;

ARCHITECTURE beh2 OF bascd IS


BEGIN
bascp : PROCESS
BEGIN
WAIT UNTIL CLK=‘1’;
Q <= D AFTER tpd;
END PROCESS bascp;
END ARCHITECTURE beh2;

LAAS 06/2003 Yannick HERVE - ENSPS 5

Bonnes méthodes et habitudes :

Tests rigoureux
Un module/modèle/composant ne doit être livré ou
utilisé qu’une fois rigoureusement testé et validé

• Travail long et exigeant


• Procédure éventuellement standard
• Archiver rapports de validation
• Documenter hypothèses et limites de validité
Rappel : Une erreur coûte d ’autant moins cher qu’elle est détectée tôt
(anecdotes : renault1, renault2, peugeot, perrier, coca, P120, …)

Plus le modèle semble/est simple, plus cette procédure est ignorée


A TORT
LAAS 06/2003 Yannick HERVE - ENSPS 6

3
Bonnes méthodes et habitudes :

Tests rigoureux : couverture de code


s’applique au numérique

n Outils d ’analyse permettant de savoir si au cours


d’une simulation toutes les lignes de codes ont été
« activées » ()
n Critères de couverture :

LAAS 06/2003 Yannick HERVE - ENSPS 7

Bonnes méthodes et habitudes :

Généricité / Configuration
Penser à l’avenir plutôt qu’au présent

Le « réutilisabilité » doit être facilitée


a <= b after 3 ns ; pas réutilisable

generic(tpd:time:=3 ns);
a <= b after tpd ; réutilisable

La configuration permet d’élaborer des grosses


structures sans recompiler les constituants
(instanciation directe / configuration embarquée : trop restrictif)

LAAS 06/2003 Yannick HERVE - ENSPS 8

4
Pièges à éviter
n Le manque de wait : famine
n Le test if Q = 0.0 (compréhension des ASP)
n Comportement mixte sans break

n Le développement sans analyse (faux gain de temps)


n Le bricolage/replâtrage (faux gain de temps)
n Le manque de généralité (faux gain de temps)
n Négliger la « mécanique » du simulateur analogique
n Ne pas confronter au monde réel
n Ne pas utiliser toutes les possibilités de l ’outil

LAAS 06/2003 Yannick HERVE - ENSPS 9

Système : Comment tester ?


Tests de systèmes matériels

Contrôle VXI, GPIB, …


CdC du test
du test LabWindows, VEE
Vecteurs de test
générés par la CAO

Générateur Système matériel Visu ou


de signaux sous test acquisition
CI : testeur sous
pointes ou JTAG
Rapport de
Analyse de données test

LAAS 06/2003 Yannick HERVE - ENSPS 10

5
Modèles : Comment tester ?
Note : Les modèles doivent utiliser toutes les subtilités et toute la
puissance de l’environnement de travail

Modèle instanciant
tous les objets :
Contrôle
TESTBENCH (bans de test) du test

Générateur Modèle à valider Visu ou


de signaux (sous test) acquisition

Utiliser la puissance Analyse de données


du langage

Notion de Testbench (modèle auto-analysant) Rapport (fichier/visu)

LAAS 06/2003 Yannick HERVE - ENSPS 11

Modèles : Comment tester ? :

Les ressources
n Les objets de gestion du test seront purement
comportementaux et génériques

n Générateurs : Sinus parfait, Sinus modulé, ..


Générateur de séquence numérique,
n Analyseurs : GoNogo, Testeur de temps,…
n Modèles utiles : VCO, ...

n Construire sa propre bibliothèque pour optimiser le


travail (paquetage de test)

LAAS 06/2003 Yannick HERVE - ENSPS 12

6
Modèles : Comment tester ? :

Exemple de source sinus modulé


library …; use …;
entity S_sine is
generic (InitDelay,StartFreq,SweepRate,Ampl:real);
port (quantity S_out:out voltage);
end entity S_sine;
architecture bhv of S_sine is
quantity freq,phi:real;
begin
if NOW > InitDelay use
Freq == StartFreq + SweepRate*(Now-InitDelay);
else
Freq == StartFreq;
end use;
phi’dot == Freq;
S_out == Ampl * SIN(2.0 * Math_pi * phi );
end architecture bhv;

LAAS 06/2003 Yannick HERVE - ENSPS 13

Modèles : Comment tester ? :


testeur DUT
Mesure de temps (1)
library …; use …;
Rise time, ...

entity Step_meas is
generic (Tbeg, Tlow, Thigh, Trt, Tend, DUTgain:real);
port (quantity T_in:in voltage, quantity T_out:out voltage;
signal rt_v :out real := -1.0);
begin
assert Tbeg > 0.0 report «Le temps de départ doit être > 0»;
… -- la même chose pour les autres paramètres
end entity Step_meas;

architecture bhv of Step_meas is


signal stim_val : real := Tlow;
signal rt_10 : real := -1.0; -- temp pour 10%
constant Tstep:real:= Thigh - Tlow;
constant Th0_1:real:= DUTgain*(Tlow+ 0.1 * Tstep);
constant Th0_9:real:= DUTgain*(Tlow+ 0.9 * Tstep);
begin
...

LAAS 06/2003 Yannick HERVE - ENSPS 14

7
Modèles : Comment tester ? :
testeur DUT
Mesure de temps (2)

Rise time, ...

stim_val <= Thigh after real2time(Tstart);

T_out == Stim_val ’RAMP(Trt,Trt);

measure_rt : process -- recherche la passage à 10% et à 90%


begin
wait until DOMAIN = time_domain;
wait until T_in’above(Th0_1) and NOW <= Tend;
rt_10 <= NOW;
wait until T_in’above(Th0_9) and NOW <= Tend;
rt_val <= NOW - rt_10;
end process measure_rt;

end architecture bhv;

LAAS 06/2003 Yannick HERVE - ENSPS 15

Intellectual Property (IP)


n Norme : nouveau métier (vendeur de modèles)
n Contexte de l’entreprise
Si quelque chose existe : on l’achète si c’est plus
rapide ou meilleur marché qu’un développement

n Sur le marché libre ou commercial : bibliothèques,


cœur de processeur, de micro-contrôleurs, mémoires

n Outil Mentor (Comm_lib) : A2D, Amp/Comp, Control,


D2A, Delta-Sigma, Digital, S-Z domain, Maths,
Mod/Dem, PLL, DigitalSources

LAAS 06/2003 Yannick HERVE - ENSPS 16

8
L’outil de CAO : ADVance-MS
(prix catalogue : 480.000 frs avec commlib)

n Sociéte MENTOR-GRAPHICS
filiales : ANACAD (ELDO [électronique douce Vs épicé ???])
MODEL-TECHNOLOGY (V-SYSTEM)
fournisseurs : LEDA (Parser VHDL-AMS)
Cygnus (compilateur C / GNU)
n Modification d ’un simulateur SPICE-like
On décrit les circuit en .CKT
Le testbench VHDL-AMS n ’a pas de PORT
Un .CKT peut instancier un VHDL-AMS (ELDO classique)
Un VHDL-AMS peut instancier un .CKT
On pilote le simulateur par un .CMD (obligatoire)

LAAS 06/2003 Yannick HERVE - ENSPS 17

L’environnement
n Interface utilisateur
n Structure de bibliothèque
n Fenêtres utilisateurs
fenêtre générale / console
load design
structure (red=spice / green=VHDL-AMS / blue=VHDL)
net
source
process
variables

LAAS 06/2003 Yannick HERVE - ENSPS 18

9
Les outils disponibles
n vasim : interface graphique et simulation
n vacom : compilateur
n valib,vasetlib : création bibliothèques
n vadir, vadel, vamap : gestion bibliothèques
n xelga : Grapheur
n Exemple :
valib ./mylib -- création ou vasetlib si la dir mylib existe dejà
vamap mylib ./mylib -- logic mapping
vamap -- display mappings
vamap -del mylib
vacom -work mylib design.vams

LAAS 06/2003 Yannick HERVE - ENSPS 19

Configuration
n Voir TP

LAAS 06/2003 Yannick HERVE - ENSPS 20

10
Simulation et .CMD
n Analyses possibles
n Paramêtres utilisateurs

LAAS 06/2003 Yannick HERVE - ENSPS 21

Limitations de l’outil (V1.1-1.1)


Ce qui n’est pas supporté (1)
n Types : record, multidimensional arrays,
quantity and terminal arrays
type résolus utilisateur
n Procedural
n Quantity ports
n Initialization and break : break list (pas de
conditions initiales en DC ou après une discontinuité)
n Concurrent procedure call
n NOISE sources : peuvent être instanciées en .CKT
n SPECTRUM sources : magnitude/phase statiques
n Fichiers
LAAS 06/2003 Yannick HERVE - ENSPS 22

11
Limitations de l’outil (V1.1-1.1)
Ce qui n’est pas supporté (2)
n Les conditional simultaneous statements doivent
être équilibrés (if cond use … else … end use;)
n Les cibles sous forme d ’aggregats
(A,B,C) <= (‘ 0 ’, ’1 ’, ’0 ’) avec A,B,C : bit ; pas autorisé
A <= (‘ 0 ’, ’1 ’, ’0 ’) avec A : bit_vector(1 to 3) ; autorisé
n Dans un ASSERT le severity est obligatoire
assert A = ‘ 1 ’ report « A est faux » ; ne marche pas
assert A = ‘ 1 ’ report « A est faux » severity note ; marche
n TOLERANCES ignorées
n T ’contribution
n CONFIGURATION : seule la forme la plus simple
n Disconnection, registers, buses, guarded signals
LAAS 06/2003 Yannick HERVE - ENSPS 23

Limitations de l’outil (V1.1-1.1)


Ce qui n’est pas supporté (3)
n Shared variables and file objects
n Alias and User defined attributs names
n Unaffected
n Generate
n null simultaneous statement
n Group
n Open : les ports doivent être connectés
n S ’driving, S ’driving_value
n Postponed processes
n Linkage, buffer, Access types

LAAS 06/2003 Yannick HERVE - ENSPS 24

12
Limitations de l’outil (V1.1-1.1)
Limites d ’environnement

n Un modèle purement numérique n ’est pas bien pris


en charge (gestion d ’horloge)
n La durée de simulation doit être connue au départ
n Le rafraîchissement de l ’écran est pénalisant
(option du grapheur)
n Le spécialisation d ’un outil existant génère des
limitations et lourdeurs intrinsèques
– Les limitations d’ELDO sont naturellement présentes

LAAS 06/2003 Yannick HERVE - ENSPS 25

Futur probable : quelques pistes


n « Boost » de la recherche en synthèse analogique
n IP et modèles constructeurs (analo.) plus présents
n Accessibilité aux outils de haut niveau
n Support de l’échange

n Développement de simulateur natifs efficaces


n Support du calcul parallèle

n NAISSANCE D ’UN NOUVEAU METIER !!!! (vous !!)

LAAS 06/2003 Yannick HERVE - ENSPS 26

13

Vous aimerez peut-être aussi