Title: 2 - Introduction
12 - Introduction à VHDL-AMS(1 à 23 1h45)
- 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
2Structure générale d un modèle
Interfaçage/netlist (port)signal
numériqueterminal analogique,
kirchoffquantity analogique, signal flow
Entity Déf. connexions
Architecture Déclaration Body
Inst.concurrentes Inst.simultanées
Instanciations
Vue interne du modèlediscret-eventcontinuous
timestructurel/hiérarchie
Entity
Architecture
3Structure générale d un modèle Exemple
ENTITY exemple IS port (signal sig_extin real
terminal vp,vm electrical) END
exempleLIBRARY ressource_lib USE
ressources_lib.ressources_package.ALLARCHITECTUR
E archi1 OF exemple IS TYPE list_ex IS
(el1,el2,el2) CONSTANT cst1 list_ex, kREAL
SIGNAL sig1 BIT, sig2 INTEGER, sig3 REAL
QUANTITY vbias ACROSS ibias THROUGH vp TO vm
QUANTITY free_quant REAL BEGIN
u1ENTITY model_externe(archi_du_modele)
GENERIC MAP(100.0e3,5.0) PORT MAP(vp,vm,sig1)
free_quant 3.0sinus( k now ) ibias
free_quantdot p1PROCESS variable x real
5.5 BEGIN wait on sig3 until sig2 gt 3 for
25 ms x 2x sig_ext lt sig3 after 1
ms END PROCESS END archi1
Exemple illustratif non compilable
4Structure générale d un modèle Prise en charge
par le simulateur
Entity
Sim anal.
Sim num.
Architecture
Tsim
Equa.DiffNL (SS)
Equa.Log (CS)
SS1SS2 SS3 ...
CS1CS2 CS3 ...
EA
EA
SS1
EA
EA
Produit des ASPvaleurs i(t),v(t)
Produit des événements
CS1CS2
SS1SS2 SS3 ...
CS1CS2
CS concurrent statementSS simultaneous
statementEA Entity Architecture
5Structuration en bibliothèques
- Pas de longue description
- Unités petites et hiérarchisées
- Partie compilable Unité de conception
- Système complexe équipe Besoin de méthodologie
rigoureuse - Une compilation qui aboutit Mise à jour d une
bibliothèque de travail (WORK) - Bibliothèque de ressources (de projet, d un
fournisseur, de test, ) LIBRARY
ressource_lib USE ressource_lib.pack_lib.ALL
6Structuration en bibliothèque Les unités de
conception
- Modèle ENTITY (UC) ARCHITECTURE
(UC) plusieurs ARCHITECTURE possibles par ENTITY - Code souvent utilisé et partagé
paquetage PACKAGE (UC) PACKAGE BODY (UC) vue
ext. exportation vue interne privé - Association effective d une instance et un
modèle compilé CONFIGURATION (UC) - Les bibliothèques contiennent des UC
- Méthode Un fichier Une Unité de Conception
7Identificateurs
- Noms des objets identificateurs
- Suite de lettres et de chiffres
- Commence par une lettre, no case sensitive
- Possible de poser des traits bas Rdf_232
- Traits bas doubles, au début, à la fin interdit
- Commentaire -- (jusquà la fin de la ligne)
8Littéraux (1) (Valeurs dures du langage)
- Caractères 95 des 128 ASCII (imprimables) a
, b , Q , - Chaînes de caractères C est
--( guillemets) possible sur
deux lignes - Notations décimales 1345, 1_345, 1e6,
1E6 1345.3, 1_345.1, 1.0e2 (attention x.0)
9Littéraux (2)
- Notations basées (entiers et réels
exprimables) 201101 est un entier qui vaut
13 703630, 16FF3A 201101.0 est un réel
qui vaut 13.0 16FF.4Ae12 - Notation par chaînes B000110 (0, 0,
0, 1, 1, 0) 006 (0, 0, 0, 1,
1, 0) X255 (1, 1, 1, 1, 1,
1, 1, 1)
10Typage
- Tous les objets sont typés (strong typing)
- Permet linitialisation fiable et augmente le
pouvoir de vérification du compilateur - 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
- Types et sous-types utilisateurs possibles
11Typage 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
12Typage 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 dentier contraintTYPE
real_vec IS ARRAY(natural range ltgt) of real
Tableau non contraintTYPE 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 darray 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
13Typage 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 lobjet
pointé Réservé aux variables
14Typage Types prédéfinis (notes)
- Types prédéfinis
- integer TYPE integer IS RANGE integerlow to
integerhigh - real TYPE real IS RANGE reallow to
realhigh - 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
RANGEltgt) 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
ltgt) of character - time TYPE time IS RANGE integerlow TO
integerhigh 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
15Typage Sous-types
subtype_declaration SUBTYPE subtype_name IS
type_names constraints
- 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 - Permet de définir des fonctions de
résolution (voir cours suivant) SUBTYPE
resolved_bit IS resolution_function bit
- Sous-types prédéfinis
- natural SUBTYPE natural IS integer RANGE 0 to
integerhigh - positive SUBTYPE positive IS integer RANGE 1 to
integerhigh - Dynamique SUBTYPE mot IS bit_vector (1 to max)
(MAX variable)
16Typage Initialisation des objets
- En VHDL-AMS tous les objets sont
initialisés implicitement ou explicitement - 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 - 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
17Les 6 classes dobjets
- 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 ( lt ) TERMINAL permet les
connexions analogiques branch/free QUANTITY
participe aux simult.stat. ( ) est
toujours d un type issu des real FILE
18Classes d objets Constantes
- Permet de stocker des valeurs constantesCONSTANT
pi real 3.141592 CONSTANT clock_period
time 20 ns CONSTANT BV0 bit_vector(15
DOWNTO 0) (1, 0 ,othersgt 0 ) CONSTANT
tt truth_table (other gt (others gt 0 ))
CONSTANT mem_bus memory_bus (adrr gtX
00AA,datagtXFF, read
gt 0, write gt 1 , enable gt 1 ) - 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 - 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)
19Classes d objets Variables
- 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 est utilisable que dans un contexte
séquentiel PROCESS uniquement - Il existe des variables partagées (shared) !!!
Programmes non déterministes !!! A
manipuler avec circonspection
20Classes d objets Signal
signal_declaration SIGNAL signal_name
fonc_resolution type contraintesREGISTERBUS
init_value
- Transporte les valeurs du simulateur
event-driven S lt 3 after 15 ns - Modélise les fils entre les portes
(symbolique) Inport lt Outport - Nom de fonction dans la déclaration signal
résolu plusieurs sources possible / résolution
du conflit (voir cours suivant) - REGISTER ou BUS signal gardé (guarded)ne
pourra être affecté que si le signal GUARD est
TRUE (vu plus loin) - Possède un passé, une valeur, un futur proposéle
driver du signal
21Classes d objets Terminal
terminal_declaration terminal identifier_list
subnature_indication
- Permet de nommer des nœuds (ne porte pas de
valeur !!!) - 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 - Vecteur de nature NATURE elec_vec IS
ARRAY(natural RANGE ltgt) of electrical - Record de nature
22Classes d objets Quantity
- Signaux continus du simulateur analogique
- Free Quantity (n est pas attachée à un
TERMINAL)QUANTITY Q real expression Valeur
initiale implicite 0.0 (dépend de loutil) - Branch Quantity QUANTITY 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 - Implicit QuantityQUANTITY Q real
expressionQdot, Qinteg existent toujours et
sont créées si besoinQUANTITY QV real_vector
(3 downto 0) QVdot, QVinteg sont valides
23Classes d objets Terminal/Quantity exemples
- terminal t1,t2 electrical terminal t3, t4
electrical_vector (1 to 5) - quantity v12 across i1, i2 through t1 to t2
définit une tension et deux courants - quantity v31 across i3 through t3 to t2
- quantity v24 across i4 through t2 to t4
- quantity v34 across i5 through t3 to t4
- Définir un système étoile,un système
triangle(terminaux scalaires) - Définir un système N-phases étoile, N-triangle
- (N inconnu)
24Sémantique de connexion
- Spécification d entité PORTS classe, type
et mode des connexions (et valeurs par défaut)
GENERIC constantes passées à
l élaborationENTITY exemple IS generic
(par1,par2,par3realpar4time 3 ns) port
(signal sig inoutinoutlinkagebuffer
real quantity q inout real
terminal vp,vm electrical)BEGIN
instructions passives pas daffectations de
signalEND exemple - 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
25Sémantique de connexion Event driven
- ENTITY exemple IS port (signal sig
inoutinoutlinkagebuffer real)END
exemple - 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 - Un port de mode OUT n est pas lisible dans
l architecture - LINKAGE, BUFFER modes inutilisés en pratique
- Un port de mode INOUT est forcément résolu
- Le mot clef OPEN permet de laisser ouvert
26Sé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)ENDLIBRARY
disciplines USE disciplines.Electromagnetic_syst
em.ALLARCHITECTURE test OF testdetector IS - SIGNAL pin,poutrealBEGIN
- u1ENTITY source(pulse_proba) PORT MAP
(extin,extout) u2ENTITY source(pulse_proba)
PORT MAP (pin,pout) - END -- extin,extout,pin,pout sont des ports
réels (actual)
27Sémantique de connexion Signal Flow
- ENTITY exemple IS port (QUANTITY Q1 in real,
Q2 out real) END exemple - Support de l interconnexion à temps continu
- Permet de modéliser sous forme de
schéma-blocsUne entrée n influence pas une
sortie(impédance d entrée infinie, impédance de
sortie nulle) - Les quantité connectées doivent être de même type
- Les ports de classe Quantity connectés doivent
être compatibles - Pas encore supporté par les outils
28Sé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
realQUANTITY extout OUT real)ENDLIBRARY
disciplines USE disciplines.Electromagnetic_syst
em.ALLARCHITECTURE test OF black_boxes IS - QUANTITY plocreal -- Free QuantityBEGIN
- u1ENTITY block1(beh) PORT MAP (extin,ploc)
u2ENTITY block1(beh) PORT MAP (ploc,extout) - END
29Sémantique de connexion Conservatif Kirchoff
généralisé
- ENTITY exemple IS port (TERMINAL T1,T2
electrical) --PAS DE MODE/VALEUREND exemple - Interconnexions à temps continu conservatif
- Permet de tenir compte influences Entrées/Sorties
- 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
30Sémantique de connexion Conservatif Netlist
analogique
- ENTITY R IS port (TERMINAL T1,T2 electrical)
END RENTITY C ISport (TERMINAL T1,T2
electrical) END C - ENTITY RC IS port (TERMINAL T1,T2 electrical)
END RCARCHITECTURE ONE OF RC IS TERMINAL
LocalTelectricalBEGIN RENTITY R(beh) PORT MAP
(T1 gt T1,T2 gt LocalT) CENTITY C(beh) PORT
MAP (T1 gt LocalT,T2 gt T2)END - Association par nommage Formal gt Actual
31Opérateurs
- 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 , /, lt, lt, gt, gt
(s appliquent à tout sauf fichiers, résultat de
type BOOLEAN) - addition , -, ( concaténation sur type
STRING) - signe , -
- multiplication , /, mod, rem
- divers , abs, not
- Opérateurs surchargeables, pas de changement de
priorités
Priority
32Instructions du langage (les plus importantes)
- 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 - 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 gt et
wait)
33Instructions séquentielles, concurrentes,
simultanées Instructions séquentielles
- Permet de fabriquer des PROCESS (instruction
concurrente utilisateur) - Flow control test et boucles
- Gestion du temps Wait
- Affectation variables
- Affectation signal et mécanismes temporels
associés - Auto test Assert / report
34Instructions séquentielles, concurrentes,
simultanées Inst. Séqu. affectations (1)
- Affectation variables V f (VSQ) (la
valeur de l objet) tab1 tab2 tableaux
tab(3 to 5) (1,2,4)Affectation signal
proposition de transactionlabel target lt
transport reject time inertial waveform
avec target name aggregateet waveform
wf_element ,wf_element unaffected lab1 S
lt 0 -- affectation à délai deltaS lt 0
after 3 ns -- transport par défautlab(S1,S2)lt
(0,1) after 3 ns, (1, 0) after 10
nsS1 lt inertial s2 after 4 ns
-- anti-physiqueS1 lt reject 10 ns inertial S2
after 4 ns -- mieux
35Instructions séquentielles, concurrentes,
simultanées Inst. Séqu. affectations (2)
- Notion de forme d onde (waveform) s lt a after
ta, b after tb, , x after tx la liste (ta,
tb, tc, , tx) doit être ordonnée - Mécanisme temporel transport, inertiel,
réjection - Sources possibles constantes, variables,
signaux, quantités S lt objet - Notion de transaction et dévénementsi S vaut x
et y / x S lt y after 3 ns événement S lt
x after 3 ns transaction sans event - Notion de pilote (driver)S lt x after 5 ns ne
modifie pas la valeur de SS sera éventuellement
modifiée quand l horloge avancera à to 5 ns - Notion de source uniqueUn signal ne peut être
affecté que par une seule source (sauf
résolution voir cours suivant)
36Instructions séquentielles, concurrentes,
simultanées Instructions séquentielles WAIT
- Instruction la plus importante de la partie
numériquewait on signal_list until
bool_cond for time Pour au plus timesi 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 LSPFormes simplifiées
wait wait on a wait on a,b wait for 10
ns -- time out wait until a1 -- front
37Instructions séquentielles, concurrentes,
simultanées Inst. Séqu. flow control - test
/ sélection
- Test labelif cond_bool then
séquence instructions séquentielles
elsif cond2 then séquence
instructions séquentielles else
séquence instructions séquentielles end if
- Sélection labelcase expression is
when value_1 gt séq. Inst. Séqu.
1 when value_2 gt séq. Inst. Séqu.
2 when others gt séq. Inst. Séqu. end
case
38Instructions séquentielles, concurrentes,
simultanées Inst. Séqu. flow control -
boucles
- labelschéma d itération loop
séquence instructions séquentielles end
loop label - Infinie loop N N1 end
loopConditionnelle Itérative while
conditions loop for i in 1 to 100 loop séqu.
Instr. Séqu. séqu. Instr. Séqu.
exit exitnextlabel end loop
end loop Boucle i déclaré de facto / i
in Arange possiblenext label when cond_bool
/ exit label when cond_bool
39Instructions séquentielles, concurrentes,
simultanées Instructions séquentielles
auto-test
- Envoi d un message à la consolelabreport
expr severity notewarningerrorfailure - Surveillance d une conditionlab assert
cond_bool report expression severity
notewarningerrorfailure Si cond_bool est
fausse alors expression est envoyée à la console
associé à un niveau d erreur.assert
tefflttsetup report Set up violé severity error
40Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes
- Support de la modélisation/simulation à temps
discretCes instructions sont évaluées, si
besoin, à chaque LSP - Process
- Affectation concurrente de signal
- Instanciation de composant
- Assertion concurrente
- Break (voir synchronisation des noyaux)
- Prochain cours
- Block
- Concurrent procedure
- Generate
41Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes Process
- Instruction concurrente Utilisateur label
postponedprocess -- postponed vu plus
tard zone de déclaration / pas de
signaux begin sequ.
Instr. Sequ. endpostponedprocess
label - Un PROCESS vit toujours (il est
global) éventuellement suspendu sur un wait - Un PROCESS est itératif (boucle sans arrêt) sauf
si wait - 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
42Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes
Process (exemple)
- process variable sp_res integer_vector(0 to
c_nb-1) (othersgt0) variable index_tab
integerbegin wait on vtest'dot'above(0.0),watch
dog if watchdog'event then for i in
sp_resrange loop spectre lt
real(sp_res(i)) wait for 1 us end loop
spectre lt 0.0 end ifend process - processbegin wait for analysis_time
watchdog lt not watchdogend process
43Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes
Affectation
- Raccourci d écriture toujours remplaçable par
process affectation séquentielle tests - Forme simple labelnom_ou_aggregat lt
options waveform options guarded
transport reject time inertial - Forme conditionnelle labelnom_ou_aggregatlt
optionswaveform1 when cond1 else
waveform2 when cond2 else
. . .
waveformN when condN - Forme sélective label With expression
select nom_ou_aggregat lt options waveform1
when list1, . .
. waveformN when listN
44Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes
Instanciation
- Prendre une copie (une instance) d un modèle la
personnaliser, la configurer, la brancher - label entity nom_du_compo(archi_compo)
generic map (formal gt actual)
port map(formal gt actual)Recherche de
l entité dans les library référencéessi
archi_compo n apparaît pas la dernière
analysée (!!??outil) - Attention label obligatoire (plusieurs
instances dun modèle) - Configuration association composant / modèle de
la base vue au cours suivant
45Instructions séquentielles, concurrentes,
simultanées Instr. Conc. Instanciation
(exemple)
- entity RS is port (S,R bit Q,Qb out
bit)end entityarchitecture structural of RS
is signal n1_out, n2_out bit begin
nand1 entity nandg port map(in1gtS,
in2gtn2_out, outpgtn1_out)
nand2 entity nandg generic map (5 ns)
port map(R,n1_out, n2_out) Q lt n1_out
Qb lt n2_outend structural
46Instructions séquentielles, concurrentes,
simultanées Instructions concurrentes
Assertion
- Permet de surveiller en permanence une condition
- lab postponedassert cond_bool
report expression severity
notewarningerrorfailure - Process équivalent lab postponed Process
(signaux_de la conditions) begin assert
cond_bool report expression
severity notewarningerrorfailure
end process lab
47Instructions séquentielles, concurrentes,
simultanées Instructions simultanées
- Support de la modélisation/simulation à temps
continu Ces instructions sont évaluées à chaque
ASP - Simple simultaneous statement
- Forme conditionelle if cond use
- Forme sélective case cond when
- Forme procédurale Procedural
48Instructions séquentielles, concurrentes,
simultanées Instructions simultanées Forme
simple
- 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-g0.0 aux tolérances prêt (équation
caractéristique) Ces équations sont explicites
ou implicites Exemple Q2 Y dot sqr(Y)
- Q integ CU Q
Q Iinteg - ENTITY R IS generic (R_value real 1_000.0)
port (TERMINAL vp,vmelectrical)ENDARCHITECTUR
E equ OF R IS QUANTITY V ACROSS I THROUGH vp TO
vm BEGIN V R_value IEND
49Instructions séquentielles, concurrentes,
simultanées Instructions simultanées Choix
- Choix du jeu d équations en fonction de
conditions - La forme conditionelle label IF cond_1 USE
-- ASP evaluation condx
equations analogiques -- !! BREAK
ELSIF cond_2 USE equations analogiques
ELSE equations
analogiquesEND USE label - La forme sélective label CASE expr USE
WHEN value1 gt equations analogiques
WHEN value2 gt equations analogiques
END CASE label
50Instructions séquentielles, concurrentes,
simultanées Instructions simultanées
Procedural
- Fabriquer un Simultaneous Statement à partir
de séquentiellabel PROCEDURAL
IS declaration_part -- NORME réévalués
/exécutionBEGIN -- (pas de
mémoire ?) sequential_statement --
sauf wait, break, and ltEND PROCEDURAL label - Sommateur analogique pondéré Avec
betareal_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 betarange loop -- Quantités
externes bvs bvs beta(i) vp(i) --
sont vues comme des END LOOP
-- variables Qout bvs END
PROCEDURALEND
51Notion dattribut (et exemples indispensables)
- Fonctions à syntaxe spécifique(A?B attribut
appliqué à A rend un objet B) - Array ? range Arange
- Array ? value Alength
- Signal ? signal Sdelayed(T), Sstable,
Squiet - Signal ? fonction Sevent, Slast_event,
Slast_value - Quantité ? quantité Qdot, Qinteg,
- Quantité ? signal Qabove(E)
- Nature ? terminal Nreference
- Nature ? type Nacross, Nthrough
- Terminal ? quantité Tcontribution, Treference
52Synchronisation 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 gt expression on
Swhen cond Force ASP et recalcule les
conditions initiales Existe aussi en
séquentiel Une valeur sur une QUANTITY doit
pouvoir fabriquer un événement
Qabove(Value) crée un événement booléen
quand Q croise value
53Synchronisation des noyaux exemples
architecture ideal of comparator is quantity vin
across vp to refbegin dout lt
vinabove(seuil) -- dout est TRUE si vin gt
seuil -- dout est FALSE si vin lt
seuilend architecture ideal architecture
ideal of ball is quantity vvelocityquantity
sdisplacementconstant Greal 9.31constant
fric real 0.1begin break v gt 0.0, s gt
10.0 -- conditions intiales break v gt -v when
not sabove(0.0) s dot v if v gt 0.0 use
Vdot -G - v2 fric else
Vdot -G v2 fric end use end
architecture ideal
54Critè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é
dinterface en mode OUT.
Critère pouvant être assuré localementLes
constructions de choix doivent être équilibrées
55Critè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
56Mots clefs (en gras, ceux qui ont été abordés)
abs access across after alias all and
architecture array assert attributebegin block
body break buffer bus case component
configuration constantdisconnect downto else
elsif end entity exitfile for function generate
generic group guardedif 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
57Exemples simples
- Porte NAND
- Bascule D
- Résistance, Condensateur, Inductance
- RLC parallèle, RLC série
- Source sinus parfaite
- Diode avec comportement thermique
- Non linéarité modèle par morceaux
- Modèle mixte (piloté par FSM)
58Porte NAND
ENTITY nandg IS GENERIC (tplh,tphl time 10
ns) PORT (SIGNAL inp1,inp2 IN std_ulogic,
outp OUT std_ulogic)ENDLIBRARY IEEEuse
ieee.math_real.all ARCHITECTURE beh1 OF nandg
IS BEGIN outp lt 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 lt loc after tplh else
outp lt loc after tphl end if
end process END
59Bascule D
ENTITY bascd IS GENERIC (tpd time 10 ns)
PORT (SIGNAL D,CLK IN std_ulogic SIGNAL Q
OUT std_ulogic)ENDLIBRARY IEEEuse
ieee.math_real.all ARCHITECTURE beh1 OF bascd
IS BEGIN Q lt D after tpd when (CLKevent and
CLK1) else unaffected END
ARCHITECTURE beh2 OF bascd IS BEGIN process
begin wait until CLK1 Q lt D
after tpd end process END
60Résistance
ENTITY R IS generic (R_value real
1_000.0) port (TERMINAL a,belectrical)END A
RCHITECTURE equ OF R IS QUANTITY V ACROSS I
THROUGH a TO b BEGIN V R_value IEND
61Condensateur
ENTITY C IS generic (C_value real 1.0e-6)
port (TERMINAL vp,vmelectrical)END ARCHITECTU
RE equ OF C IS QUANTITY V ACROSS I THROUGH vp TO
vm BEGIN I C_value V dotEND
62Inductance
ENTITY L IS generic (L_value real 1.0e-3)
port (TERMINAL vp,vmelectrical)END ARCHITECTU
RE equ OF L IS QUANTITY V ACROSS I THROUGH vp TO
vm BEGIN V L_value I dotEND
63RLC parallèle
ENTITY RLCp IS generic (R,L,C real) port
(TERMINAL vp,vmelectrical)END ARCHITECTURE
struct OF RLCp IS BEGIN lab_R entity R generic
map (R) port map (b gt vm, a gt vp) lab_C
entity C generic map (C) port map (vp, vm)
lab_L entity L generic map (L) port map (vpgtvp
,vmgtvm) END ARCHITECTURE equ OF RLCp IS
quantity V across I1,I2,I3 through vp to
vm BEGIN V RI1 V LI2dot V
I3integ/C END
64RLC série
ENTITY RLCs IS generic (R,L,C real) port
(TERMINAL vp,vmelectrical)END ARCHITECTURE
struct OF RLCs IS Terminal RC,CL
electricalBEGIN 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 ARCHITEC
TURE equ OF RLCs IS quantity V across I through
vp to vm BEGIN V RI LIdot Iinteg/C
END
65Source sinus idéale
library Disciplines use Disciplines. electrical_
system. all ENTITY gene_sinus IS generic
(Ampl,freq,phase real) port (TERMINAL
vp,vmelectrical)END library ieeeuse
ieee.math_real.allARCHITECTURE 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
66Diode paramétrée
ENTITY diode IS generic(Issreal1.0e-14n,afre
al1.0 tt,cjo,vj,rs,kfreal0.0) port
(TERMINAL anode,cathodeelectrical)ENDARCHITE
CTURE 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( vj2 - vj vd ) id iss exp(( vd -
rsid )/( n vt )) - 1.0) END ARCHITECTURE
level0
67Diode modèle électro-thermique
ENTITY diodth IS generic(Issreal1.0e-14n,afr
eal1.0 tt,cjo,vj,rs,kfreal0.0) port
(TERMINAL anode,cathodeelectrical
TERMINAL junctionthermal)ENDARCHITECTURE
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(
vj2 - vj vd ) id iss exp(( vd - rsid
)/( n vt )) - 1.0) vt temp boltzmann /
elec_charge power vd id END
ARCHITECTURE level0
68Diode 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 gt 1.0) port map (p gt a, m gt
ground) r1 entity Resistor generic map (r gt
1.0e3) port map (p gt a, m gt
b) d1 entity DiodeTh port map (anode gt b,
cathode gt ground, junction gt j) heatres
entity ResistorTh generic map (r gt 0.1)
port map (p gt j, m gt
h) heatsink entity CapacitorTh generic map (c
gt 0.008) port map
(p gt h, m gt thermal_ ref) rad entity
ResistorTh generic map (r gt 10.0)
port map (p gt h, m gt thermal_ ref) end
architecture DiodeWithHeatSink
69Modèle par morceaux Mauvaise méthodelimiteur
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 quantity vout across iout through op to
om begin if vin gt vlim use vout
vlim elsif vin lt -vlim use vout
-vlim else vout vin end use end
architecture Bad
C EST MAUVAIS
70Modèle par morceaux Bonne méthodelimiteur de
tension
library Disciplines use Disciplines. electrical_
system. all architecture Good of VoltageLimiter
is quantity vin across ip to im quantity
vout across iout through op to om begin if
vinAbove( vlim) use vout vlim elsif not
vinAbove(- vlim) use vout
-vlim else vout vin end use -- break
on vinAbove( vlim), vinAbove(- vlim) end
architecture Good
C EST MEILLEUR
71Modè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 lt vlo then
return zero elsif vin gt vhi then return
one else return unknown end if end
function level begin . . .
72Modèle mixte piloté par FSM Comparateur à
hystérésis (2)
. . . process variable state states
level( vin, vlo, vhi) begin case state is
when one gt dout lt 1 wait
on vinAbove( vhi) state
unstable when zero gt dout lt 0
wait on vinAbove( vlo)
state unstable when unknown gt dout
lt X wait on vinAbove(
vhi), vinAbove( vlo) state
level( vin, vlo, vhi) when unstable gt
wait on vinAbove( vhi), vinAbove( vlo) for
timeout state level( vin, vlo, vhi)
end case end process end architecture
Hysteresis