Upload
lazaar-ya-gamed
View
71
Download
2
Embed Size (px)
Citation preview
1
LAAS 06/2003 Yannick HERVE - ENSPS 1
VHDL-AMSUn 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 2
Ressources associées au cours
n Ce document power point ©n Les énoncés de TPn Document « Where are we going? »n La grammaire HTML interactive ©n Des exemplesn Le tutorial DAC 99 (PDF)n Un fichier Bookmark
2
LAAS 06/2003 Yannick HERVE - ENSPS 3
1 - Besoins, Historique, Généralités
Cycle de CAO et Méthodes modernes de conceptionModélisation et simulation : besoins nouveauxBesoin d'un standard : VHDL-AMSLes concurrents en présence Simulateur numérique vs continu ?
LAAS 06/2003 Yannick HERVE - ENSPS 4
Le cycle de CAO pour CIn 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)
3
LAAS 06/2003 Yannick HERVE - ENSPS 5
Spécifications de client
Cahier des charges
Description de haut niveau(matériel/logiciel)
Modèlesexternes
Partition hard (ana/num) / soft Vers l’étude soft
Analogique : schéma
Logique : schémas, HDL + simulations
Contraintes(techn, com.)
RessourcesBiblio. cell.
simulation
To /fromback-end
Synthèse/opt.
Netlist de portes
LAAS 06/2003 Yannick HERVE - ENSPS 6
Description structurelledans la DB de la techno
Placement / routage / pack.
Extraction
Biblio. cell.Géom. Elec.Therm.
vérification
To /from front-end
Pré-industrialisation Fabrication
DRC
LVS
Rétro-annotation
Géométrie
Layout
4
LAAS 06/2003 Yannick HERVE - ENSPS 7
Méthodes modernes de CAO
n Top-downn Conception mixte (num. / analog.)n Co-design (matériel/logiciel)n Cahier des charges formel et simulablen Outil unique et concurrent engineeringn Indépendance fondeur et normesn Preuve formelle
LAAS 06/2003 Yannick HERVE - ENSPS 8
Méthodes modernes de CAO :
Conception Top-down
n Formalisation du cahier des chargesn Spécifications simulablesn Représentation hiérarchique
(du quoi vers le comment)n Travail dans une DB / Grande équipe
n Implique « hiérarchique » et multi-abstraction
5
LAAS 06/2003 Yannick HERVE - ENSPS 9
Méthodes modernes de CAO :
Conception mixte
n Tendance : analogique + numériquen WorkFlow adapté
n Numérique = juste par designn Analogique ????
LAAS 06/2003 Yannick HERVE - ENSPS 10
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 )
6
LAAS 06/2003 Yannick HERVE - ENSPS 11
Méthodes modernes de CAO :
Co-design (matériel/logiciel)
n Développement et optimisationconjoints du logiciel et du matériel
n Workflow adapté ???
LAAS 06/2003 Yannick HERVE - ENSPS 12
Méthodes modernes de CAO :
Cahier des charges formel
n Expression des besoins sous forme formelle et simulable
n Workflow adapté ?
7
LAAS 06/2003 Yannick HERVE - ENSPS 13
Méthodes modernes de CAO :
Concurrent engineering
n Mettre en parallèle des tâches pour optimiser le time-to-marketExemples : faire le routage alors que les ASICs sont en développementFaire la publicité pendant les testsConcevoir 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 14
Méthodes modernes de CAO :
Indépendance fondeur et normes
n Passé : les fondeurs fournissaient leurs méthodes et langages de descriptionConséquences : dépendance
n Actuel : Workflow et langages permettent de repousser au plus tard possible le choix du fondeurLe front end est indépendant du fondeur et repose sur une norme (Remarque : difficultés en deep sub micron)
8
LAAS 06/2003 Yannick HERVE - ENSPS 15
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éthodesPreuve 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 16
Nouveaux besoins
n Modélisation environnementalen MOEMSn Variabilité des processn Maîtrise des modèlesn Intellectual property (IP)n ...
9
LAAS 06/2003 Yannick HERVE - ENSPS 17
Nouveaux besoins :
Modélisation environnementale
n Spécification, Cahier de chargesn Pré-études (fonctionnel, structurel)n Plusieurs disciplinesn Plusieurs niveau d ’abstractionn Interfaçage avec les techniques de
production (analogique, numérique)
LAAS 06/2003 Yannick HERVE - ENSPS 18
Image LEPSI
EXEMPLE : BESOINS
10
LAAS 06/2003 Yannick HERVE - ENSPS 19
Image LEPSI
EXEMPLE :mise en situation du CI
LAAS 06/2003 Yannick HERVE - ENSPS 20
Nouveaux besoins :
MOEMS(micro-opto-electronical-mechanical systems)
n Mécanique, Optique, Electronique dans le silicium (compatible process Si)
n Nouvelles techniques de conceptionn Méthodes de modélisationn Collaboration techniques de simulation
11
LAAS 06/2003 Yannick HERVE - ENSPS 21
Vidéo et images extraites de http://www.mdl.sandia.gov/micromachine
LAAS 06/2003 Yannick HERVE - ENSPS 22
12
LAAS 06/2003 Yannick HERVE - ENSPS 23
Electronique (num./anal.), capteurs …sur le même substrat
LAAS 06/2003 Yannick HERVE - ENSPS 24
Nouveaux besoins :
Bilan
n CdC : haut niveau d ’abstractionn Multi-disciplines/Multi abstractionn Modèle externe (not SPICE)n Langage « naturel »n Equations différentiellesn Sémantique « électrique »
13
LAAS 06/2003 Yannick HERVE - ENSPS 25
Physique Equa.Diff. Silvaco
Electrique Spice / EldoEq.diff/mod. compo.
Switch Equations d ’état ?
Gate OrcadEq. booléenne
Structurel Netlist Dépend des blocs
Signal flow HDLProcess concurrents
Algo Prog.impératif C/pascal/ADA...
Système Pas d ’outil industriel
Processeurscommuniquants
Abstraction Expression Simulateur
Cont./cont.
Cont./cont.
Cont./quantifiés.
Discret/logic (2-9)
idem
Discret/symb.
idem
Symb./symb.
temps/signaux
VH
DL
VH
DL
-AM
S
Abstraction vs Simulation
LAAS 06/2003 Yannick HERVE - ENSPS 26
Besoin d ’un standard
n Histoire et nécessitén Qu'est ce qu'un HDLn Genèse de VHDL-AMSn Ce que peux faire VHDL-AMSn Avantage et inconvénientsn Les concurrents en présence
14
LAAS 06/2003 Yannick HERVE - ENSPS 27
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 descriptionProblè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 28
Besoin d ’un standard :
Qu'est ce qu'un HDLDescription de matériel
Ne vise pas forcément une exécution :SpécificationSynthèse logique (description vers masque) Preuve formelleDocumentationExtraction (LVS)
Plusieurs niveaux de description mixables
15
LAAS 06/2003 Yannick HERVE - ENSPS 29
Besoin d ’un standard :Qu'est ce qu'un HDL
Différences Langage / HDLLangage HDL
Sous-programme (dyn) Composant (stat)appel, calcul, oubli existe en soi
Variables (dynamique) Signaux(statiques+hist)a := b a <= ba := c (b oublié) a <= c (equip.)
Simulation du temps Gestion du temps
VHDL : composants et sous-programmessignaux et variables
COMPLET / POLYVALENT(inévitable / incontournable)
LAAS 06/2003 Yannick HERVE - ENSPS 30
Sub Par 1076.1Sub Par 1076.1
Besoin d ’un standard :
Genèse de VHDL-AMSVHDL VHDL IEEE 1076-1987
VHDL IEEE 1076-1993
Renormalisation + retard
Détails de consistance,quelques mots clefs, quelques concepts
Numérique pur
Sub Par 1076.1
Voir www.vhdl.org
VHDL-AMS IEEE 1076-1999
Extension à l ’analogique
Renormalisation + retard
Nouvelle philosophie
Compatible VHDL ’93
Autres efforts : non intégrés
16
LAAS 06/2003 Yannick HERVE - ENSPS 31
Besoin d ’un standard :
Ce que peut faire VHDL-AMSModè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, bruitSémantique de connexion : Kirchoff généralisé
Egalité des efforts / Somme des flux = 0v-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 32
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 desgroupes de normalisation et seront examinés à laprochaine re-normalisation en 2004.
17
LAAS 06/2003 Yannick HERVE - ENSPS 33
Besoin d ’un standard :
AvantagesAvantages 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 34
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)
18
LAAS 06/2003 Yannick HERVE - ENSPS 35
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 36
Structure d’un simulateur numériqueBasé sur l’exécution conditionnelle et itérative
d ’équations logiques dépendantes dans un temps dicrétisé
Modèle : Equations de composants logiquesNetlist
Procédure : (emploi d’une liste d ’événement (EL) et de signaux datés)
Mise à jour de l ’EL classée par dateExtraction des signaux avec t miniAvancée de l’horloge de simulationRéveil et simulation des process dépendantsProduction de nouveaux événements
Production d ’un LSP
19
LAAS 06/2003 Yannick HERVE - ENSPS 37
Structure d’un simulateur analogiqueBasé 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]
Linéarisation (jeu d’équations aux différences L)
Résolution [gauss seidel]
Vérification de la convergenceConvergence : Production d ’un ASP
À chaque t
LAAS 06/2003 Yannick HERVE - ENSPS 38
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)
20
LAAS 06/2003 Yannick HERVE - ENSPS 39
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, intermodulationcross modulation, cross-over (.TRAN+.AC(local))
.FOUR : Analyse de fourier (distortion fort signal = .TRAN+.FOUR)
1
LAAS 03/2003 Yannick HERVE - ENSPS 1
2 - Introduction à VHDL-AMS
Structure générale d'un modèleStructuration en bibliothèquesIndentificateurs, Objets et typage. OpérateursInstructions séquentielles, concurrentes, simultanéesNotion d ’attributs et Synchronisation des noyauxCritère de solvabilité et Exemples
LAAS 03/2003 Yannick HERVE - ENSPS 2
Structure générale d ’un modèleEntity
Déf. connexions
ArchitectureDéclarationBody
Inst.concurrentes Inst.simultanéesInstanciations
Vue interne du modèle
discret-eventcontinuous timestructurel/hiérarchie
Entity
Architecture
Interfaçage/netlist (port)signal : numériqueterminal : analogique, kirchoffquantity : analogique, signal flow
2
LAAS 03/2003 Yannick HERVE - ENSPS 3
Structure générale d ’un modèle : ExempleENTITY exemple ISport (signal sig_ext:in real; terminal vp,vm : electrical);END exemple;
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;
BEGINu1: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:PROCESSvariable 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;
Exe
mpl
e ill
ustr
atif
non
com
pila
ble
LAAS 03/2003 Yannick HERVE - ENSPS 4
Structure générale d ’un modèle :
Prise en charge par le simulateurEntity
Architecture
E+A E+A
E+A E+A
CS1CS2CS3...
CS1CS2
SS1SS2SS3...
SS1SS2SS3...
CS1CS2
SS1
Sim anal. Sim num.
{}Equa.DiffNL (SS)
{}Equa.Log (CS)
Tsim
Produit des ASP{valeurs i(t),v(t)}
Produit des événements
CS : concurrent statementSS : simultaneous statementE+A : Entity + Architecture
3
LAAS 03/2003 Yannick HERVE - ENSPS 5
Structuration en bibliothèquesn Pas de longue descriptionn Unités petites et hiérarchiséesn Partie compilable = Unité de conceptionn Système complexe = équipe
Besoin de méthodologie rigoureuse
n Une compilation qui aboutitMise à 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 6
Structuration en bibliothèque :
Les unités de conceptionn Modèle : ENTITY (UC) + ARCHITECTURE (UC)
plusieurs ARCHITECTURE possibles par ENTITY
n Code souvent utilisé et partagé : paquetagePACKAGE (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 UCn Méthode : Un fichier = Une Unité de Conception
4
LAAS 03/2003 Yannick HERVE - ENSPS 7
Identificateursn Noms des objets : identificateursn Suite de lettres et de chiffresn Commence par une lettre, no case sensitiven 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 8
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écimales1345, 1_345, 1e6, 1E61345.3, 1_345.1, 1.0e2 (attention x.0)
5
LAAS 03/2003 Yannick HERVE - ENSPS 9
Littéraux (2)n Notations basées (entiers et réels exprimables)
2#01101# est un entier qui vaut 137#03630#, 16#FF3A#2#01101.0# est un réel qui vaut 13.016#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 10
Typagen Tous les objets sont typés (strong typing)n Permet l’initialisation fiable et augmente le pouvoir de
vérification du compilateurn 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
6
LAAS 03/2003 Yannick HERVE - ENSPS 11
Typage :
Déclaration scalairestype_declaration ::= TYPE type_name IS type_definition;
Enuméré : TYPE enum_type IS (bleu, blanc, rouge) ; -- relation d ’ordreEntiers : 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 obligatoiremil = 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 entierA * nm transforme un entier en nm
LAAS 03/2003 Yannick HERVE - ENSPS 12
Typage :
Déclaration compositesVecteur : 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 contraintTYPE 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
7
LAAS 03/2003 Yannick HERVE - ENSPS 13
Typage :
Déclaration fichiers et pointeurs (notes)
Fichiers : TYPE file_type IS file OF string ;
Voir fonctions associées dans le paquetage STANDARDread / 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 pointeurSi IPtr est de type index_ptr
IPtr.all à la valeur de l’objet pointé
Réservé aux variables
LAAS 03/2003 Yannick HERVE - ENSPS 14
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) ;
– characterTYPE 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 ;
8
LAAS 03/2003 Yannick HERVE - ENSPS 15
Typage :
Sous-typessubtype_declaration ::=
SUBTYPE subtype_name IS type_names [constraints];
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 DynamiqueSUBTYPE mot IS bit_vector (1 to max) ;(MAX variable)
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 ;
LAAS 03/2003 Yannick HERVE - ENSPS 16
Typage :
Initialisation des objetsn En VHDL-AMS tous les objets sont initialisés
implicitement ou explicitement
n Un objet prend la valeur la plus à gauche de son typesignal A : bit ; -- A vaut ‘0’signal A : bit := ‘1’; -- A vaut ‘1’variable B : boolean ; -- B vaut falsequantity Q : real ; -- Q vaut 0.0
n Un type peut être incomplètement définiTYPE cell ; -- type incomplètement définiTYPE link IS ACCESS cell ;TYPE cell is record -- définitions récursive de type
value : index ;succ : link ;
END RECORD ;
9
LAAS 03/2003 Yannick HERVE - ENSPS 17
Les 6 classes d’objetsn 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 analogiquesbranch/free QUANTITY
participe aux simult.stat. ( == )est toujours d ’un type issu des real
FILE
LAAS 03/2003 Yannick HERVE - ENSPS 18
Classes d ’objets :
Constantesn 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 ’utilisationCONSTANT 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éeCONSTANT cst_val : integer ; est valide (on ne connaît pas la valeur)déclaration dans la spécification paquetageaffectation dans le corps de paquetage (masquage d ’information)
10
LAAS 03/2003 Yannick HERVE - ENSPS 19
Classes d ’objets :
Variablesn 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équentielPROCESS uniquement
n Il existe des variables partagées (shared)!!! Programmes non déterministes !!!
A manipuler avec circonspection
LAAS 03/2003 Yannick HERVE - ENSPS 20
Classes d ’objets :
Signal
n Transporte les valeurs du simulateur event-drivenS <= 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ésoluplusieurs 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
signal_declaration ::= SIGNAL signal_name : [fonc_resolution] type [contraintes][REGISTER|BUS] [:= init_value];
11
LAAS 03/2003 Yannick HERVE - ENSPS 21
Classes d ’objets :
Terminal
n Permet de nommer des nœuds (ne porte pas de valeur !!!)
n Une nature est définie par deux types réelsNATURE name IS acr ACROSS thr THROUGH ref REFERENCE ;Across = effort / through = fluxv-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
terminal_declaration ::= terminal identifier_list : subnature_indication ;
LAAS 03/2003 Yannick HERVE - ENSPS 22
Classes d ’objets :
Quantityn « Signaux continus » du simulateur analogiquen 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 QuantityQUANTITY [across_aspect] [through_aspect] terminal_aspect ;QUANTITY V12 across I1 through t1 to t2 ;QUANTITY V1,V2 across t1; -- aliasQUANTITY I1,I2 through t1; -- branches parallèles
n Implicit QuantityQUANTITY Q : real := expression;Q’dot, Q’integ existent toujours et sont créées si besoinQUANTITY QV : real_vector (3 downto 0) ;QV’dot, QV’integ sont valides
12
LAAS 03/2003 Yannick HERVE - ENSPS 23
Classes d ’objets :
Terminal/Quantity : exemplesn 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 24
Sémantique de connexionn Spécification d ’entité :
PORTS : classe, type et mode des connexions (et valeurs par défaut)GENERIC : constantes passées à l ’élaboration
ENTITY exemple ISgeneric (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 signalsignal flow : port quantity ou terminal à une seule quantitéconservatif : port terminal et deux quantités définies
13
LAAS 03/2003 Yannick HERVE - ENSPS 25
Sémantique de connexion :
Event drivenn 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 ’architecturen LINKAGE, BUFFER : modes inutilisés en pratiquen 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 26
Sémantique de connexion :
Event driven : formal/actual portAvec :ENTITY source ISPORT (SIGNAL a : in real; b : out real);END; -- a et b sont les ports formels
On a:ENTITY testdetector ISPORT (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)
14
LAAS 03/2003 Yannick HERVE - ENSPS 27
Sémantique de connexion :
Signal Flown ENTITY exemple IS
port (QUANTITY Q1 : in real,Q2 : out real);
END exemple;
n Support de l ’interconnexion à temps continun 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 typen Les ports de classe Quantity connectés doivent être
compatiblesn Pas encore supporté par les outils
LAAS 03/2003 Yannick HERVE - ENSPS 28
Sémantique de connexion :
Signal Flow : exempleAvec :ENTITY block1 ISPORT (QUANTITY a : in real; b : out real);END;
On a:ENTITY black_boxes ISPORT (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 QuantityBEGIN
u1:ENTITY block1(beh) PORT MAP (extin,ploc);u2:ENTITY block1(beh) PORT MAP (ploc,extout);
END;
15
LAAS 03/2003 Yannick HERVE - ENSPS 29
Sémantique de connexion :
Conservatif : Kirchoff généralisén ENTITY exemple IS
port (TERMINAL T1,T2 : electrical); --PAS DE MODE/VALEUREND exemple;
n Interconnexions à temps continu conservatifn Permet de tenir compte influences Entrées/Sortiesn 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 30
Sémantique de connexion :
Conservatif : Netlist analogiquen ENTITY R IS
port (TERMINAL T1,T2 : electrical); END R;ENTITY C ISport (TERMINAL T1,T2 : electrical); END C;
n ENTITY RC ISport (TERMINAL T1,T2 : electrical); END RC;ARCHITECTURE ONE OF RC IS
TERMINAL LocalT:electricalBEGIN
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
16
LAAS 03/2003 Yannick HERVE - ENSPS 31
Opérateursn 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)
– addition : +, -, & (& : concaténation sur type STRING)
– signe : +, -– multiplication : *, /, mod, rem– divers : **, abs, not
n Opérateurs surchargeables, pas de changement de priorités
Prio
rity
LAAS 03/2003 Yannick HERVE - ENSPS 32
Instructions du langage (les plus importantes)
n Une architecture contientsimultaneous statements (doivent être évalués à chaque ASP)
f == g / procedural / if use / case use / nullconcurrent statements (évalués si besoin à chaque LSP)
process / affectation de signalinstanciationbreak, assertion
n Un process contient séquential statements (évalués en séquence dans le process)
affectation signal, affectation variablewaitif, case, loop ...
Disponibles aussi en Procedural (sauf => et wait)
17
LAAS 03/2003 Yannick HERVE - ENSPS 33
Instructions séquentielles, concurrentes, simultanées :
Instructions séquentiellesn Permet de fabriquer des PROCESS (instruction concurrente utilisateur)
n Flow control : test et bouclesn Gestion du temps : Waitn Affectation variablesn Affectation signal et mécanismes temporels associésn Auto test : Assert / report
LAAS 03/2003 Yannick HERVE - ENSPS 34
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 deltaS <= ’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-physiqueS1 <= reject 10 ns inertial S2 after 4 ns; -- mieux
Instructions séquentielles, concurrentes, simultanées :
Inst. Séqu. : affectations (1)
18
LAAS 03/2003 Yannick HERVE - ENSPS 35
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éjectionn Sources possibles : constantes, variables, signaux, quantités
S <= objet
n Notion de transaction et d’événementsi 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 SS sera éventuellement modifiée quand l ’horloge avancera à to+ 5 ns
n Notion de source uniqueUn signal ne peut être affecté que par une seule source (sauf résolution : voir cours suivant)
LAAS 03/2003 Yannick HERVE - ENSPS 36
Instructions séquentielles, concurrentes, simultanées :
Instructions séquentielles : WAITn Instruction la plus importante de la partie numérique
wait [on signal_list] [until bool_cond] [for time] ;
Pour au plus timesi un événement survient sur un signal de la liste signal_listla condition booléenne bool_cond est évaluée :
si elle est fausse on se remet en attentesi elle est vraie on passe à la ligne suivante.
Tous les PROCESS sont sur un WAIT : blocageOn recherche le prochain event dans la liste d ’événementOn avance l ’horloge de simulation, nouveau LSP
Formes simplifiées : wait; wait on a; wait on a,b;wait for 10 ns; -- time outwait until a=‘1’; -- front;
19
LAAS 03/2003 Yannick HERVE - ENSPS 37
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 iswhen 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 38
Instructions séquentielles, concurrentes, simultanées :
Inst. Séqu. : flow control - bouclesn [label:][schéma d ’itération] loop
{séquence instructions séquentielles}end loop [label] ;
n Infinie : loopN :=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
20
LAAS 03/2003 Yannick HERVE - ENSPS 39
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 40
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentesn Support de la modélisation/simulation à temps discret
Ces instructions sont évaluées, si besoin, à chaque LSP
n Processn Affectation concurrente de signaln Instanciation de composantn Assertion concurrenten Break (voir synchronisation des noyaux)
n Prochain cours– Block– Concurrent procedure– Generate
21
LAAS 03/2003 Yannick HERVE - ENSPS 41
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentes : Processn 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 42
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentes : Process (exemple)processvariable sp_res : integer_vector(0 to c_nb-1) := (others=>0); variable index_tab : integer;beginwait on vtest'dot'above(0.0),watchdog;if watchdog'event thenfor i in sp_res’range loop
spectre <= real(sp_res(i));wait for 1 us;
end loop;spectre <= 0.0;end if;end process;
processbegin
wait for analysis_time;watchdog <= not watchdog;
end process;
22
LAAS 03/2003 Yannick HERVE - ENSPS 43
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentes : Affectationn 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 44
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentes : Instanciationn 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éessi 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 basevue au cours suivant
23
LAAS 03/2003 Yannick HERVE - ENSPS 45
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 issignal n1_out, n2_out : bit ;
beginnand1: 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 46
Instructions séquentielles, concurrentes, simultanées :
Instructions concurrentes : Assertionn 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)beginassert cond_bool
[report expression] [severity note|warning|error|failure] ;
end process [lab] ;
24
LAAS 03/2003 Yannick HERVE - ENSPS 47
Instructions séquentielles, concurrentes, simultanées :
Instructions simultanées
n Support de la modélisation/simulation à temps continuCes instructions sont évaluées à chaque ASP
n Simple simultaneous statement : == n Forme conditionelle : if cond usen Forme sélective : case cond whenn Forme procédurale : Procedural
LAAS 03/2003 Yannick HERVE - ENSPS 48
Instructions séquentielles, concurrentes, simultanées :
Instructions simultanées : Forme simplen Simple simultaneous statements (doivent être évalués à chaque ASP)
f == g f et g deux fonctions NL contenant des quantitésle simulateur s ’assure qu ’à chaque ASP f-g=0.0aux 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 ISgeneric (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;
25
LAAS 03/2003 Yannick HERVE - ENSPS 49
Instructions séquentielles, concurrentes, simultanées :
Instructions simultanées : Choixn Choix du jeu d ’équations en fonction de conditionsn La forme conditionelle :
label :IF cond_1 USE -- ASP = evaluation condx {equations analogiques} -- !! BREAKELSIF 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 50
Instructions séquentielles, concurrentes, simultanées :
Instructions simultanées : Proceduraln 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…
BEGINPROCEDURAL ISvariable bvs : real := 0.0;
BEGINbvs := 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; -- variablesQout := bvs;
END PROCEDURAL;END;
26
LAAS 03/2003 Yannick HERVE - ENSPS 51
Notion d’attribut (et exemples indispensables)
n Fonctions à syntaxe spécifique(A→B : attribut appliqué à A rend un objet B)
n Array → range : A’rangen Array → value : A’lengthn Signal → signal : S’delayed(T), S’stable, S’quietn Signal → fonction : S’event, S’last_event, S’last_valuen Quantité → quantité : Q’dot, Q’integ, n Quantité → signal : Q’above(E)n Nature → terminal : N’reference
n Nature → type : N’across, N’throughn Terminal → quantité : T’contribution, T’reference
LAAS 03/2003 Yannick HERVE - ENSPS 52
Synchronisation des noyauxUn événement sur un SIGNAL doit pouvoir provoquer une évaluation analogique :
Break on S; -- version simple
Force un ASP sur les événement de SBreak [[for Q1] use Q2 => expression] [on S][when cond];Force ASP et recalcule les conditions initialesExiste aussi en séquentiel
Une valeur sur une QUANTITY doit pouvoir fabriquer un événement :
Q’above(Value) crée un événement booléenquand Q « croise » value
27
LAAS 03/2003 Yannick HERVE - ENSPS 53
Synchronisation des noyaux : exemplesarchitecture ideal of comparator is
quantity vin across vp to ref;begindout <= vin’above(seuil); -- dout est TRUE si vin > seuil
-- dout est FALSE si vin < seuilend architecture ideal ;
architecture ideal of ball isquantity v:velocity;quantity s:displacement;constant G:real:= 9.31;constant fric :real := 0.1;begin
break v => 0.0, s => 10.0; -- conditions intialesbreak 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 54
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 nombrede quantités THROUGH
augmenté du nombre de quantités FREEet du nombre de quantité d’interface en mode OUT.
Critère pouvant être assuré localementLes constructions de choix doivent être équilibrées
28
LAAS 03/2003 Yannick HERVE - ENSPS 55
Critère de solvabilité : exempleentity Vdc isgeneric (dc: REAL);port (terminal p, m: electrical);
end entity Vdc;
architecture Bad of Vdc is NE COMPILE PASquantity v across p to m;
beginv == dc;
end architecture Bad;
architecture Good of Vdc isquantity v across i through p to m;
beginv == dc;
end architecture Good;
LAAS 03/2003 Yannick HERVE - ENSPS 56
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 constantdisconnect downto else elsif end entity exitfile for function generate generic group guarded
if impure in inertial inout is library limit linkage loopmap mod nand nature new next noise nor not nullof on open or others out package port postponed procedural procedure processpure quantity range record reference register reject rem report return rol rorselect severity signal shared sla sll spectrum sra srl subnature subtypeterminal then through to tolerance transport type unaffected units until usevariable wait when while with xnor xor
29
LAAS 03/2003 Yannick HERVE - ENSPS 57
Exemples simples
n Porte NANDn Bascule Dn Résistance, Condensateur, Inductancen RLC parallèle, RLC sérien Source sinus parfaiten Diode avec comportement thermiquen Non linéarité : modèle par morceauxn Modèle mixte (piloté par FSM)
LAAS 03/2003 Yannick HERVE - ENSPS 58
Porte NANDENTITY nandg ISGENERIC (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 ISBEGIN
outp <= inp1 nand inp2 after ( tplh + tphl)/2;END;
ARCHITECTURE beh2 OF nandg ISBEGIN
processvariable loc : std_ulogic;beginwait on inp1, inp2;loc := inp1 nand inp2;if loc = ‘1’ thenoutp <= loc after tplh;
else outp <= loc after tphl;
end if;end process;
END;
30
LAAS 03/2003 Yannick HERVE - ENSPS 59
Bascule D
ENTITY bascd ISGENERIC (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 ISBEGIN
Q <= D after tpd when (CLK’event and CLK=‘1’) elseunaffected;
END;
ARCHITECTURE beh2 OF bascd ISBEGIN
processbeginwait until CLK=‘1’;Q <= D after tpd;
end process ;END;
LAAS 03/2003 Yannick HERVE - ENSPS 60
Résistance
ENTITY R ISgeneric (R_value : real := 1_000.0);port (TERMINAL a,b:electrical);END;
ARCHITECTURE equ OF R ISQUANTITY V ACROSS I THROUGH a TO b;
BEGINV == R_value * I;
END;
31
LAAS 03/2003 Yannick HERVE - ENSPS 61
Condensateur
ENTITY C ISgeneric (C_value : real := 1.0e-6);port (TERMINAL vp,vm:electrical);END;
ARCHITECTURE equ OF C ISQUANTITY V ACROSS I THROUGH vp TO vm;
BEGINI == C_value * V ’dot;
END;
LAAS 03/2003 Yannick HERVE - ENSPS 62
Inductance
ENTITY L ISgeneric (L_value : real := 1.0e-3);port (TERMINAL vp,vm:electrical);END;
ARCHITECTURE equ OF L ISQUANTITY V ACROSS I THROUGH vp TO vm;
BEGINV == L_value * I ’dot;
END;
32
LAAS 03/2003 Yannick HERVE - ENSPS 63
RLC parallèle
ENTITY RLCp ISgeneric (R,L,C : real);port (TERMINAL vp,vm:electrical);END;
ARCHITECTURE struct OF RLCp ISBEGINlab_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 ISquantity V across I1,I2,I3 through vp to vm;
BEGINV == R*I1 ;V == L*I2’dot V == I3’integ/C ;
END;
LAAS 03/2003 Yannick HERVE - ENSPS 64
RLC série
ENTITY RLCs ISgeneric (R,L,C : real);port (TERMINAL vp,vm:electrical);END;
ARCHITECTURE struct OF RLCs ISTerminal RC,CL : electrical;BEGINlab_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 ISquantity V across I through vp to vm;
BEGINV == R*I + L*I’dot + I’integ/C ;
END;
33
LAAS 03/2003 Yannick HERVE - ENSPS 65
Source sinus idéale
library Disciplines;use Disciplines. electrical_ system. all;ENTITY gene_sinus ISgeneric (Ampl,freq,phase : real);port (TERMINAL vp,vm:electrical);END;
library ieee;use ieee.math_real.all;ARCHITECTURE beh OF gene_sinus ISquantity V across I through vp to vm;
BEGINV == Ampl * sin( 2.0 * math_pi * freq * now + phase) ;
END;
LAAS 03/2003 Yannick HERVE - ENSPS 66
Diode paramétrée
ENTITY diode ISgeneric(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 ISquantity Vd across id,ic through anode to cathode;quantity qc : charge;constant vt : real := 0.0258;
BEGINic == 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;
1).(eII )/(n.vt)rs.I(vsd
dd −= −
).vv-²v.2.C-(tt.Idtd
I djjjodc =
34
LAAS 03/2003 Yannick HERVE - ENSPS 67
Diode : modèle électro-thermique
ENTITY diodth ISgeneric(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 ISquantity Vd across id,ic through anode to cathode;quantity temp across power through thermal_ref to junction;quantity qc : charge;quantity vt : voltage;BEGINic == 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 68
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 isterminal a, b: electrical; terminal j, h: thermal;beginv0: 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;
35
LAAS 03/2003 Yannick HERVE - ENSPS 69
Modèle par morceaux : Mauvaise méthodelimiteur de tension
library Disciplines;use Disciplines. electrical_ system. all;entity VoltageLimiter is
generic (vlim: REAL); -- open loop gainport (terminal ip, im, op, om: electrical);
end entity VoltageLimiter;
architecture Bad of VoltageLimiter isquantity vin across ip to im;quantity vout across iout through op to om;
beginif vin > vlim use
vout == vlim;elsif vin < -vlim use
vout == -vlim;else
vout == vin;end use;
end architecture Bad;
C’E
ST M
AU
VA
IS
LAAS 03/2003 Yannick HERVE - ENSPS 70
C’E
ST M
EIL
LEU
R
library Disciplines;use Disciplines. electrical_ system. all;
architecture Good of VoltageLimiter isquantity vin across ip to im;quantity vout across iout through op to om;
beginif 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;
Modèle par morceaux : Bonne méthodelimiteur de tension
36
LAAS 03/2003 Yannick HERVE - ENSPS 71
library IEEE, Disciplines; use IEEE. std_ logic_ 1164.all;use Disciplines. electrical_ system. all;entity ComparatorHyst is
generic (vlo, vhi: REAL; -- thresholdstimeout: DELAY_ LENGTH);
port (terminal ain, ref: electrical;signal dout: out std_ logic);
end entity ComparatorHyst;
architecture Hysteresis of ComparatorHyst istype states is (unknown, zero, one, unstable);quantity vin across ain to ref;function level( vin, vlo, vhi: REAL) return states isbegin
if vin < vlo then return zero;elsif vin > vhi then return one;else return unknown; end if;
end function level;begin. . .
Modèle mixte piloté par FSM : Comparateur à hystérésis (1)
LAAS 03/2003 Yannick HERVE - ENSPS 72
. . .processvariable state: states := level( vin, vlo, vhi);begincase state iswhen 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;
Modèle mixte piloté par FSM : Comparateur à hystérésis (2)
1
LAAS 06/2003 Yannick HERVE - ENSPS 1
3 - VHDL-AMS en profondeur
Le reste des instructions, Quelques précisionsLes dernières constructions, Le reste des attributsPaquetages standards et non standardsCompilation, Elaboration, Simulation, ExploitationLe cycle de simulation / l’initialisation / DOMAINLa grammaire BNF en HTML
LAAS 06/2003 Yannick HERVE - ENSPS 2
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
2
LAAS 06/2003 Yannick HERVE - ENSPS 3
Instructions :
ALIAS et ATTRIBUTEn 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 4
Instructions :
GROUPn Permet de grouper des objets
– Group template declaration
group pin2pin is (signal,signal); -- deux signauxgroup resource is (label <>); -- ensemble de labelgroup 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);
3
LAAS 06/2003 Yannick HERVE - ENSPS 5
Instructions :
BLOCKPermet 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 6
Instructions :
GENERATEn 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] ;
4
LAAS 06/2003 Yannick HERVE - ENSPS 7
Instructions :
GENERATE (exemple)n Instanciation de N additionneurs (N inconnu à la compilation)
entity adderN isgeneric(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 iscomponent adder
port (a,b,cin : in bit; sum, cout : out bit);end component;signal carry : std_logic_vector(0 to N);
begincarry(0) <= cin;gen: for I in 1 to N generateadd: adder port map(a(I),b(I),carry(I-1),sum(I),carry(I));
end generate;end structural;
LAAS 06/2003 Yannick HERVE - ENSPS 8
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ésultatNOW et FREQUENCY sont impures
n Sous programme : déclaration / corpsdé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), filefunction : 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é)
5
LAAS 06/2003 Yannick HERVE - ENSPS 9
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 typesopé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ètressi pas de signal en mode in ou inout : un seul appel
LAAS 06/2003 Yannick HERVE - ENSPS 10
Précisions :
Domaine d’analysen Signal implicite : DOMAIN (quiescent_domain, time_domain, frequency_domain,)
Ce signal est fourni par l ’environnement de simulationif DOMAIN = quiescent_domain use . . . else . . . end use;
n Les simulateurs SPICE-like proposent différents mode d ’analyse : DC, AC, TRAN, MonteCarlo, NoiseL ’analyse AC se fait avec les sources SPECTRUM après analyse DCL ’analyse NOISE se fait avec les sources NOISE
quantity i through p to m;quantity ac : real spectrum 1.0, 0.0; -- magnitude, phaselimit 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
6
LAAS 06/2003 Yannick HERVE - ENSPS 11
Précisions :
POSTPONEDn 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 12
Précision :
TOLERANCEn 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
7
LAAS 06/2003 Yannick HERVE - ENSPS 13
Précision :
Signaux résolusn 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 14
Précision :
Fonction de résolution : comportementn 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 : exemplefunction reso_f (s : bit4_v) return bit4 isvariable result : bit4 := ‘Z’;variable x : integer := 0; beginfor i in s’range loopif 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;
8
LAAS 06/2003 Yannick HERVE - ENSPS 15
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 ’affectationA <= guarded B after 3 ns;
4 cas : signal non gardé / affectation non gardéesignal non gardé / affectation gardée
if GUARD=true then A <= . . . End if;signal gardé / affectation non gardée
INTERDITsignal gardé / affectation gardée
if GUARD=true then a <= . . . Elsedeconnexion 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 16
Les dernières constructions :
Unités de conception
Les 5 unités de conception (compilables seules) :Primaires : entité, paquetage, configurationSecondaires : 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
9
LAAS 06/2003 Yannick HERVE - ENSPS 17
Les dernières constructions :
PaquetagePACKAGE 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 IStype 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 informationssont disponibles par : LIBRARY MYLIB;
USE MYLIB.bit_vector_ops.all;
LAAS 06/2003 Yannick HERVE - ENSPS 18
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 …)
10
LAAS 06/2003 Yannick HERVE - ENSPS 19
Les dernières constructions :
Configuration : exemple (1)
entity adder isport (a,b,cin : in bit ; sum,cout : out bit);
end adder;
architecture rtl of adder isbegin
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 20
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);
begincarry(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;
11
LAAS 06/2003 Yannick HERVE - ENSPS 21
Les dernières constructions :
Configuration : exemple (3)(3) configuration test_adder4 of adder4 is
for structuralfor 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 22
Les dernières constructions :
Configuration : back-annotation(3) configuration test_adder4 of adder4 is
for structuralfor 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
12
LAAS 06/2003 Yannick HERVE - ENSPS 23
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);
begincarry(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 24
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 »
Les dernières constructions :
Configuration : Intérêt opérationnel
13
LAAS 06/2003 Yannick HERVE - ENSPS 25
Type T →→→→ Type : T'baseType T →→→→ Value : T'left, T'right, T'high, T'low, T'ascendingType 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
Attributs restants à définir (liste 1)
LAAS 06/2003 Yannick HERVE - ENSPS 26
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
Attributs restants à définir (liste 2)
14
LAAS 06/2003 Yannick HERVE - ENSPS 27
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.
Attributs importants :
LAAS 06/2003 Yannick HERVE - ENSPS 28
Q'ltf(num,den) : Applique la fonction de transfert à QLe résultat est sous forme temporelle.
num et den sont deux vecteurs de réelsnum = (a0,a1,a2,…,an)den = (b0,b1,b2,…,bn) avec b0!=0
Avec Ho, wp et qp constantesnum = ( Ho*wp*wp )den = ( wp*wp, wp/qp, 1.0)
Q'ztf(num,den,T[,initialelay]): Même mécanisme, avec en plus période d’échantillonnage et décalage initial.
Transformée de Laplace / en Z
�
�
=
== n
0kk
k
m
0kk
k
p.b
p.a)p(H
2p
p
p2
2p0
p.Q
p
.H)p(H
ω+ω
+
ω=
15
LAAS 06/2003 Yannick HERVE - ENSPS 29
Paquetages utilitairesn Paquetages de la norme
STD, TEXTIO : types et fonctions de base,opérations sur les fichiersLIBRARY IEEE :STD_LOGIC_1164 : MVL9 (std_ulogic, std_logic), fonctions associéesMATH_REAL, MATH_COMPLEX : constantes, types et fonctions
LIBRARY DISCIPLINES :ELECTROMAGNETIC_SYSTEM, KINEMATIC_SYSTEM,ROTATIONAL_SYSTEM, FLUIDIC_SYSTEM: naturesPHYSICAL_CONSTANTS : boltzmann, electron, . . .
n Paquetages non normalisésPaquetages 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 ressourcesIntellectual Property (IP) : on n ’a pas accès au source
LAAS 06/2003 Yannick HERVE - ENSPS 30
Compilation, Elaboration, Simulation, Exploitation
n Compilation : analyse syntaxique et sémantiqueUC primaires avant UC secondairesStockage en bibliothèque
n ElaborationRassemble 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 valeurrapporte les REPORT et pilote le simulateur avec le SEVERITYvérifie les boucles infinies des process, contrôle la convergence
n Exploitationtracé des chronogrammes, tracé des x(t),auto-test des modèles
16
LAAS 06/2003 Yannick HERVE - ENSPS 31
Cycle de simulation : initialisationn Tc= 0.0 / Frequency = 0.0n Valeurs initiales des signaux et quantitésn Exécute tous les PROCESSn (1) Exécute le solveur analogique : trouve point DCn Mise à jour des signauxn 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 32
Cycle de simulation : time_domainn (2) Extraire premiers événements de la liste
Avancer Tn à cette daten (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 ENDn Mise à jour des signauxn 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)
17
LAAS 06/2003 Yannick HERVE - ENSPS 33
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 34
n entity Capacitor isgeneric (C: REAL; Vo: REAL := REAL’low);port (terminal p, m: electrical);
end entity Capacitor;
n architecture One of Capacitor isquantity v across i through p to m;begini == C * v’dot;break v => Vo when Vo /= REAL’low;
end architecture One;
n architecture Two of Capacitor isquantity v across i through p to m;quantity q : charge;
beginq == c * v;i == q’dot;break for q use v => Vo when Vo /= REAL’low;
end architecture Two;
Initialisation après discontinuité
v == vo remplacev’dot == 0
v == vo remplaceq’dot == 0
Par défautQ’dot==0.0, Q=Q(t-)après discontinuité
18
LAAS 06/2003 Yannick HERVE - ENSPS 35
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
1
LAAS 06/2003 Yannick HERVE - ENSPS 1
4 - VHDL-AMS avancé
Bonnes méthodes et habitudes, Les pièges à éviterTestbench avancés, Intellectual property (IP)ADVance MS et Configuration de l ’environnementSimulation analogique et fichier de commandeLimites des outils actuels et futur possible (?!)
LAAS 06/2003 Yannick HERVE - ENSPS 2
Bonnes méthodes et habitudes
n Modularisation n Présentation du coden Test locaux / globauxn Généricité (reusability)n Configuration
2
LAAS 06/2003 Yannick HERVE - ENSPS 3
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 4
Bonnes méthodes et habitudes :
La présentation du codeMise 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 isbegin c <= a after 3 ns when (b’event and b=‘1’) else unaffected;end;;
architecture z2 of x isbeginprocessbeginwait until b=‘1’;c <= a after 3 ns;end process;end;
3
LAAS 06/2003 Yannick HERVE - ENSPS 5
ENTITY bascd ISGENERIC (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 ISBEGIN
Q <= D after tpd when (CLK’event and CLK=‘1’) else unaffected;END ARCHITECTURE beh1;
ARCHITECTURE beh2 OF bascd ISBEGINbascp : PROCESS
BEGINWAIT UNTIL CLK=‘1’;Q <= D AFTER tpd;
END PROCESS bascp;END ARCHITECTURE beh2;
Bonnes méthodes et habitudes :
La présentation du codeMise en forme / Nom des objets / Structure (Mieux)
LAAS 06/2003 Yannick HERVE - ENSPS 6
Un module/modèle/composant ne doit être livré ou utilisé qu’une fois rigoureusement testé et validé
Bonnes méthodes et habitudes :
Tests rigoureux
• 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éeA TORT
4
LAAS 06/2003 Yannick HERVE - ENSPS 7
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 8
Penser à l’avenir plutôt qu’au présent
Le « réutilisabilité » doit être facilitéea <= 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)
Bonnes méthodes et habitudes :
Généricité / Configuration
5
LAAS 06/2003 Yannick HERVE - ENSPS 9
Pièges à évitern Le manque de wait : faminen 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 analogiquen Ne pas confronter au monde réeln Ne pas utiliser toutes les possibilités de l ’outil
LAAS 06/2003 Yannick HERVE - ENSPS 10
Système : Comment tester ?
Système matérielsous test
Contrôledu test
Rapport detest
Visu ouacquisition
Générateur de signaux
Analyse de données
CdC du test
Tests de systèmes matériels
VXI, GPIB, …LabWindows, VEE
CI : testeur sous pointes ou JTAG
Vecteurs de testgénérés par la CAO
6
LAAS 06/2003 Yannick HERVE - ENSPS 11
Modèles : Comment tester ?Note : Les modèles doivent utiliser toutes les subtilités et toute la
puissance de l’environnement de travail
Rapport (fichier/visu)
Modèle à valider(sous test)
Contrôledu test
Visu ouacquisition
Générateur de signaux
Analyse de données
Modèle instancianttous les objets :
TESTBENCH (bans de test)
Notion de Testbench (modèle auto-analysant)
Utiliser la puissance du langage
LAAS 06/2003 Yannick HERVE - ENSPS 12
Modèles : Comment tester ? :
Les ressourcesn 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)
7
LAAS 06/2003 Yannick HERVE - ENSPS 13
Modèles : Comment tester ? :
Exemple de source sinus modulélibrary …; use …;
entity S_sine isgeneric (InitDelay,StartFreq,SweepRate,Ampl:real);port (quantity S_out:out voltage);
end entity S_sine;
architecture bhv of S_sine isquantity freq,phi:real;
beginif NOW > InitDelay useFreq == StartFreq + SweepRate*(Now-InitDelay);
elseFreq == StartFreq;
end use;phi’dot == Freq; S_out == Ampl * SIN(2.0 * Math_pi * phi );end architecture bhv;
LAAS 06/2003 Yannick HERVE - ENSPS 14
Modèles : Comment tester ? :
Mesure de temps (1)DUTtesteur
Rise time, ...library …; use …;
entity Step_meas isgeneric (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);beginassert 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 issignal 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...
8
LAAS 06/2003 Yannick HERVE - ENSPS 15
Modèles : Comment tester ? :
Mesure de temps (2)DUTtesteur
Rise time, ...…stim_val <= Thigh after real2time(Tstart);
T_out == Stim_val ’RAMP(Trt,Trt);
measure_rt : process -- recherche la passage à 10% et à 90%beginwait 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 16
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 plusrapide 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
9
LAAS 06/2003 Yannick HERVE - ENSPS 17
L’outil de CAO : ADVance-MS(prix catalogue : 480.000 frs avec commlib)
n Sociéte MENTOR-GRAPHICSfiliales : 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 .CKTLe testbench VHDL-AMS n ’a pas de PORTUn .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 18
L’environnement
n Interface utilisateurn Structure de bibliothèquen Fenêtres utilisateurs
fenêtre générale / consoleload design structure (red=spice / green=VHDL-AMS / blue=VHDL)
netsourceprocessvariables
10
LAAS 06/2003 Yannick HERVE - ENSPS 19
Les outils disponiblesn vasim : interface graphique et simulationn vacom : compilateurn valib,vasetlib : création bibliothèquesn vadir, vadel, vamap : gestion bibliothèquesn xelga : Grapheur
n Exemple :valib ./mylib -- création ou vasetlib si la dir mylib existe dejà
vamap mylib ./mylib -- logic mappingvamap -- display mappingsvamap -del mylibvacom -work mylib design.vams
LAAS 06/2003 Yannick HERVE - ENSPS 20
Configuration
n Voir TP
11
LAAS 06/2003 Yannick HERVE - ENSPS 21
Simulation et .CMD
n Analyses possiblesn Paramêtres utilisateurs
LAAS 06/2003 Yannick HERVE - ENSPS 22
Limitations de l’outil (V1.1-1.1)
n Types : record, multidimensional arrays,quantity and terminal arraystype résolus utilisateur
n Proceduraln Quantity ports n Initialization and break : break list (pas de
conditions initiales en DC ou après une discontinuité)n Concurrent procedure calln NOISE sources : peuvent être instanciées en .CKTn SPECTRUM sources : magnitude/phase statiquesn Fichiers
Ce qui n’est pas supporté (1)
12
LAAS 06/2003 Yannick HERVE - ENSPS 23
Limitations de l’outil (V1.1-1.1)
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 obligatoireassert A = ‘ 1 ’ report « A est faux » ; ne marche pasassert A = ‘ 1 ’ report « A est faux » severity note ; marche
n TOLERANCES ignoréesn T ’contributionn CONFIGURATION : seule la forme la plus simplen Disconnection, registers, buses, guarded signals
Ce qui n’est pas supporté (2)
LAAS 06/2003 Yannick HERVE - ENSPS 24
Limitations de l’outil (V1.1-1.1)
n Shared variables and file objectsn Alias and User defined attributs namesn Unaffectedn Generaten null simultaneous statementn Groupn Open : les ports doivent être connectésn S ’driving, S ’driving_valuen Postponed processesn Linkage, buffer, Access types
Ce qui n’est pas supporté (3)
13
LAAS 06/2003 Yannick HERVE - ENSPS 25
Limitations de l’outil (V1.1-1.1)
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épartn 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
Limites d ’environnement
LAAS 06/2003 Yannick HERVE - ENSPS 26
Futur probable : quelques pistes
n « Boost » de la recherche en synthèse analogiquen IP et modèles constructeurs (analo.) plus présentsn Accessibilité aux outils de haut niveaun Support de l’échange
n Développement de simulateur natifs efficacesn Support du calcul parallèle
n NAISSANCE D ’UN NOUVEAU METIER !!!! (vous !!)