Simulation SPICE avec HyperLynx ANALOG
Simulation SPICE avec HyperLynx ANALOG
HyperLynx ANALOG
Simulateur analogique et mixte SPICE
Didier BEDOS
[Link] - PROPOS 5
1.1. Simulateurs de type SPICE 5
1.2. Flot de simulation sous HyperLynx Analog 6
1. AVANT - PROPOS
Les travaux qui suivent sont basés sur le logiciel de simulation des circuits électriques HyperLynx ANALOG
respectant la norme SPICE. Dans ce domaine le langage SPICE, développé au début des années 70, est un standard.
SPICE est l’acronyme de Simulation Program with Integrated Circuit Emphasis. Il peut résoudre des systèmes
d’équations différentielles linéaires ou non afin de prédéterminer les réponses temporelles des systèmes
électriques, il est aussi capable de calculer ces mêmes tensions, courants ou puissances représentatives de l’état
d’un circuit électrique dans le domaine fréquentiel. Il peut aussi effectuer des transformées de Fourier ou des
développements en série de Fourier ainsi que de calculer et mémoriser les points de repos d’une structure
électronique ainsi que de procéder à des analyses d’industrialisation ( analyses de stress, analyses statistiques de
Monte-Carlo etc. ).
Ce programme est essentiellement destiné à l’étude des structures principalement analogiques. Cependant ces
dernières peuvent posséder des éléments d’électronique numérique, d’électromécanique d’hydraulique ou encore
d’optiques.
Afin de permettre ces études, il a été développé, pour les simulateurs SPICE, les modèles de plusieurs milliers de
composants passifs ou actifs, permettant à ce programme de simulation de prédire le comportement de structures
électriques dans de multiples domaines d’application :
Systèmes de communications
Circuits de puissance
Radiofréquences et Micro-ondes
Circuits mixtes ( analogiques, numériques, échantillonnés )
Systèmes mixtes ( électromécaniques, physiques, optronique etc. )
Les comportements de ces éléments peuvent être décrits par des modèles contenant les paramètres des équations
résolues par le noyau SPICE, par des équations de LAPLACE ou encore par des tables d’équivalence. Enfin les
dernières versions de ce programme supportent les équations du langage AHDL ( Analog Hardware Description
Language ) et des sous-programmes en langage C.
Ses premiers utilisateurs devaient décrire la structure sous forme d’un fichier texte et analyser les résultats sous la
forme d’une longue suite de valeurs. Le développement d’outils d’ingénierie assistée par ordinateur ( IAO )
fait bénéficier ces mêmes utilisateurs d’outils graphiques pour la description de la structure (saisie de schéma) et
pour la visualisation des résultats (grapheur).
L’outil de simulation SPICE est généralement placé avec d’autres outils de simulation et de synthèse de circuits
numériques (PLD-FPGA-ASIC) ainsi qu’avec des outils de placement - routage ( PCB ) de cartes dans un fonds
de panier logiciel (framework). Ces ensembles intégrés fournissent aussi des outils d’analyse d’intégrité de
signal, de comportement CEM, de preuve formelle, de descriptions graphiques ( diagramme d’état, Flow-chart )
de systèmes numériques etc.
Les travaux qui suivent sont réalisés dans le fonds de panier logiciel eProduct Designer - Pads 2007.4.
Au cours de ceux-ci seuls les outils suivants seront utilisés :
Librairies Symboles
Spiceprimitive
electrical
DxDesigner
digital
ICDB
database
Librairies SPICE
Spicelink
amp.h
opto.h
HyperLynx
ANALOG
Editeur de texte
EZWave ASCII
Objectif : L’objectif de cette partie est de permettre l’approprier du principe de saisie d’un schéma en vue d’une
simulation analogique sous HyperLynnx Analog ( Placement des éléments, paramétrage des sources,
définition des analyses souhaitées ).
A l’aide du menu File New Project on accède à la fenêtre New Project ci-dessous :
Dans cette fenêtre choisir le Template : Simu_analog_mixte , celui-ci a été préparé, au Lycée Diderot, pour
donner automatiquement l’accès à un certain nombre de librairies ainsi qu’à certains paramétrages de l’outil.
Vérifier ou, au besoin, utiliser le bouton permettant de parcourir l’arborescence du disque C afin de choisir le
répertoire ( champ Location ) sous lequel le projet sera rangé et que celui-ci soit : C:\Pads Projects\
Donner, dans le champ Name un nom au projet par exemple Training_HLA_XYZ où XYZ représentent vos
initiales
Afin de vérifier les librairies de symboles ajoutées lors de la création du projet comme vue ci-avant, et,
éventuellement, pouvoir ajouter des librairies, utiliser le menu Setup Settings, dans la rubrique Project,
sélectionner Symbol Librairies.
Pour ajouter une seule librairie, utiliser l’icône … et rechercher le répertoire où se trouve la librairie.
Pour ajouter un groupe de librairies il suffit de trouver un projet préalablement « stocké » localement ou
ailleurs pour que, soit dans son fichier *.ini ; *.proj ou encore *.dproj pour que l’ensemble de ses chemins
d’accès aux librairies de symboles soient copiés dans le nouveau projet en utilisant le bouton Import
Toujours dans cette fenêtre Settings peuvent être réglés des paramètres comme les couleurs des objets du schéma,
les grilles etc. copiés dans le nouveau projet.
A l’aide du menu File – New- Schematic, créer un nouveau schéma qui apparaitra dans la fenêtre Navigator,
sous la rubrique Blocks et avec le nom Schematic1
Dans cette même fenêtre Navigator de DxDesigner, sous l’onglet Projet, dans la rubrique Blocks, changer le
nom Schematic1 en un nom plus représentatif de la structure étudiée.
Cela donne, par exemple :
Nota : un schéma destiné à la simulation peut, indifféremment, être défini comme un bloc ( niveau hiérarchique Blocks ) ou un
design ( niveau hiérarchique Boards ) alors qu’un schéma destiné à être une carte et devant donc aboutir à un routage
PCB se doit d’être du niveau Boards. Ceci se justifie par le fait que les schémas de type Blocks sont généralement des
sous-ensembles de structures appartenant à la carte complète et que l’on souhaite valider par simulation
individuellement.
Saisie du schéma :
La recherche de composant se fait à partir de la fenêtre DxDataBook. La figure ci-après montre, au bas de
celle-ci, les deux onglets Symbols et Search :
L’onglet Symbols permet d’accéder aux composants contenus dans les librairies auxquelles on s’est donné
accès lors de la création du projet. Le symbole d’un condensateur ( image ci-dessus ) apparait dans une
fenêtre de prévisualisation et est prêt à être « déposé sur le schéma.
L’onglet Search permet d’accéder aux composants contenus dans une base de données Dxsim_Lib qui
contient les composants dit « entreprise » c’est-à-dire qu’ils ont été référencés à partir de plusieurs critères :
fabricant, caractéristiques, documentation ( datasheet ), distributeur, prix, image 3D, empreinte PCB etc.
L’intérêt de cette base de données est qu’elle permet la recherche de composants à partir de requêtes de type
langage SQL, par exemple « Rechercher tous les transistors avec un β supérieur à 450 et dont le VCEOsus est
supérieur à 300 Volts ». Au Lycée Diderot, cette base de données s’appuie sur un exemple mais n’a pu,
encore, être développé pour les besoins spécifiques « corporate » !
Il existe une autre façon, toute spécifique à la saisie de schémas de structures analogiques, de rechercher des
composants en vue de placer leurs symboles sur la planche de dessin ( sheet ) : dans la fenêtre Navigator, sous
l’onglet Simulation, dans la rubrique Model Libraries et sous-rubrique Spice Libraries, il suffit de choisir la
famille de composants ( ci-dessous les éléments optroniques ) et, à l’aide d’une action de type « drag & drop »,
déposer le composant sur le schéma … l’outil DxDesigner lui associe automatiquement un symbole que l’on pourra
changer, éventuellement, si besoin est.
Après avoir placé tous les composants sur la feuille de schéma et les avoir interconnectés à l’aide de la fonction Net
( icône Net ) cela donne une description qui s’apparente à cela :
L’image ci-dessus fait apparaitre les principales fenêtres utiles à la saisie de schémas sous DxDesigner :
la ( ou les ) fenêtre(s) principale(s) de schéma. Plusieurs schémas peuvent être édités en même temps. Ils
sont accessibles par le biais d’onglets. L’édition de fichiers textes ( modèles SPICE ou VHDL de
composants, fichiers résultats, netlists etc. ) se fait de la même manière.
La fenêtre Navigator de navigation qui fait apparaitre un onglet classique Project ( parcours dans la
hiérarchie des fichiers relatifs aux différents schémas de type Board ou Block du projet ) mais aussi, dans
le cas de l’édition de schémas destinés à la simulation, un onglet Simulation permettant d’accéder aux
fichiers de simulation ( netlists, modèles, résultats etc. )
La fenêtre Properties des propriétés. Celle-ci permet de visualiser, si un composant est sélectionné, ses
différents attributs ( Refdes, Modèle, valeur, package etc. ) et les valeurs affectées, par défaut ou par
l’utilisateur, à ces attributs.
La fenêtre Output d’affichage des messages ( erreurs, compte-rendu etc. ). Sur l’image précédente, cette
fenêtre et celle de DxDataBook sont superposées mais qui peut, si l’utilisateur le souhaite, apparaître de
manière permanente.
Nota 1 :Toutes ces fenêtres peuvent être déplacées, rendues flottantes ou « dockées » voire être définies comme
des onglets de l’affichage central.
Nota : La sauvegarde des schémas édités est réalisée de façon automatique par l’outil DxDesigner. La périodicité
de cette sauvegarde peut être réglée par l’utilisateur le cas échéant.
L’icône Sources dans la barre des outils spécifiques au simulateur analogique HLA, donne accès à la fenêtre
suivante :
L’édition de la source e1 par exemple, est obtenue à partir du bouton Modify… qui donne accès à la fenêtre
suivante :
Et pour la partie spécifique aux signaux temporels ( ici un sinus ), le bouton Define… permet d’éditer ses
caractéristiques comme le montre la fenêtre ci-dessous :
Nota : on ne peut définir qu’une seule source, pour une équipotentielle ( ou une branche ) donnée. Par contre on
peut définir, comme présenté ci-dessus, au travers d’une sources deux stimuli, l’un temporel ( sinus non
causal, pulse, sffm etc. ), l’autre fréquentiel ( harmonique )
Afin de spécifier les analyses souhaitées, il est nécessaire, dans la fenêtre Navigator de DxDesigner, sous
l’onglet Simulation de sélectionner, sous Files, le répertoire Experiment Files et, avec le menu contextuel,
choisir New Experiment …
Ensuite, dans la fenêtre Simulation Control qui apparaît, donner un nom au futur fichier de commande, par
exemple RC_Lpfilter_ac_tr
Toujours dans la fenêtre Simulation Control, sélectionner Time-Domain Analysis et éditer, après avoir
sélectionné Enable, les paramètres d’analyse, donnés ici à titre d’exemple, comme suit :
Start Time : 0
End Time : 500us
Printing Time Interval : 50ns
Calibration : 50ns
Toujours dans la fenêtre Simulation Control, sélectionner Frequency Analysis et éditer, après avoir sélectionné
Enable, les paramètres d’analyse, donnés ici à titre d’exemple, comme suit : comme suit :
Frequency Start : 100
Frequency Sopt : 1MEG
Number of Points : 100
Variation Type: Decade
Note 1 : Afin de pouvoir réaliser une analyse temporelle ( Domain-Time Analysis ) il faut qu’au moins une source
de ce type ( sinus non causal, pulse, sffm etc. ) ait été définie. De même, pour une analyse fréquentielle
(Frequency-Domain Analysis), il faut qu’au moins une source fréquentielle (harmonique) ait été définie.
Note 2 : Usuellement on « lance » la simulation à partir de cette fenêtre en cliquant sur le bouton Simulate,
cependant, pour des raisons pédagogiques, on présente, ci-après, l’autre façon de procéder à ce lancement,
à savoir en utilisant l’icône Simulate Design
Objectif : L’objectif de cette partie est de permettre l’appropriation du lancement de la simulation et de l’utilisation
du grapheur Ezwave afin de visualiser les résultats.
Afin de lancer la simulation, cliquer sur l’icône Simulate Design . La fenêtre Simulation Control déjà
utilisée pour éditer les paramètres d’analyse apparaît à nouveau, cliquer sur le bouton Simulate.
Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que, dans la
fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien présent.
La fenêtre EZwave lancée se présente sous la forme suivante ( sans l’affichage des formes d’onde ). Il est à noter
que, dans la sous-fenêtre Waveform List, apparaît une base de données ouverte qui se nomme nom_du_design (ici
RC_LPfilter ), suivie du chemin d’accès au fichier contenant la base de données des résultats de simulation
RC_LPfilter.wdb ). Remarquer aussi qu’elle contient deux sous-ensembles de formes d’ondes nommés AC et
TRAN ( au besoin en utilisant le menu Expand Selected associé ou en cliquent sur le signe + )
On verra, au cours de multiples exercices, les différentes fonctionnalités de ce grapheur. Si, pour l’instant on utilise
la fonction de drag & drop pour le signal V(out) du sous-ensemble TRAN et la commande Plot du menu
contextuel pour le signal V(out) du sous-ensemble AC, cela donne une fenêtre comme celle-ci :
EXERCICE n°1
Création de projet
Saisie de schéma
Simulation
Objectif : Maîtriser le flot complet de simulation, de la création de projet à la visualisation des résultats.
- Dans la fenêtre DxDesigner qui apparaît, utiliser le menu File – New – Project et suivre, comme
explicité au paragraphe 2-1, la procédure :
a) Choisir le Template : Simu_analog_mixte
b) Vérifier que le répertoire d’accueil ( Location ) est bien C:\Pads Projects\
c) Nommer ( champ Name ) le projet Training_HLA_XYZ ( où XYZ peuvent être, par exemple,
les initiales de l’utilisateur )
Nota 2 : Les composants utilisés pour la création de ce schéma sont : c_v ; r_v et r_h
- Dans cette sous-fenêtre Sources, déclarer la source e1 en suivant la procédure décrite au paragraphe
2-3 et lui affectant les caractéristiques suivantes grâce au à la sous-fenêtre interactive Modify Source
auxquelles on accède par le bouton de même nom Modify Source :
Name : e1
Type (V/I) : V
Node + : IN
Node - : 0
Resistance :
DC Value : 0.5
Time Type : Sine Offset : 0 Amplitude : 1 Frequency : 10K Delay : 20us Damping factor : 0.8
Frequency Magnitude : 1 Phase 90
- Dans la fenêtre Simulation Control qui apparaît, donner un nom au futur fichier de commande, par
exemple RC_Lpfilter_ac_tr.cmd
- Toujours dans la fenêtre Simulation Control, sélectionner Time-Domain Analysis et éditer, après avoir
sélectionné Enable, les paramètres d’analyse comme suit :
Start Time : 0
End Time : 500us
Printing Time Interval : 50ns
Calibration Max : 50ns
- Toujours dans la fenêtre Simulation Control, sélectionner Frequency Analysis et éditer, après avoir
sélectionné Enable, les paramètres d’analyse comme suit :
Frequency Start : 100
Frequency Sopt : 1MEG
Number of Points : 100
Variation Type: Decade
- Afin de lancer la simulation, cliquer sur l’icône Simulate Design. La fenêtre Simulation Control déjà
utilisée pour éditer les paramètres d’analyse apparaît à nouveau, cliquer sur le bouton Simulate.
Nota : cela veut dire que, dans la pratique, on « lance » la simulation immédiatement après avoir
édité les paramètres d’analyse mais que l’on a, ici, et pour des raisons pédagogiques, décomposé le
« lancement ».
- Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que,
dans la fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien
présent. Par ailleurs l’outil de visualisation EZWave a été automatiquement lancé.
- Dans la fenêtre EZwave noter que dans la sous-fenêtre Waveform List apparaît une base de données
ouverte qui se nomme RC_LPfilter ( suivi du chemin d’accès au fichier contenant la base de données des
résultats de simulation RC_LPfilter.wdb ). Remarquer aussi qu’elle contient deux sous-ensembles de
formes d’ondes nommés AC et TRAN.
- Utiliser la méthode de « drag & drop » pour amener la forme d’onde V(out) dans la zone d’affichage.
Apparaît alors la forme d’onde dans une sous-fenêtre intitulée Wave :1
- Opérer de même avec V(in) et amener un curseur avec le menu Cursor Add
- Faire apparaître un deuxième curseur et placer les deux curseurs sur deux crêtes voisines de V(out).
Cliquer sur l’icône Add delta afin d’afficher, près de l’axe des x la valeur de la période du signal.
- Déplacer le curseur le long de l’axe des temps et remarquer que l’amplitude crête de l’onde sinusoïdale
décroît pour V(in) comme pour V(out) : c’est la conséquence du facteur d’amortissement ( Damping
factor ) défini pour la source e1
- Utiliser la méthode de « drag & drop » pour amener la forme d’onde V(out) dans la zone d’affichage.
Note : Apparaît alors un message d’erreur stipulant que l’on ne peut afficher sur un même graphique des
formes d’ondes qui ne dépendent pas de la même variable ( le temps pour celles déjà affichées et la
pulsation pour la nouvelle )
- Sélectionner à nouveau la forme d’ondes V(out) et utiliser le menu contextuel pour l’afficher, à l’aide
du sous-menu Plot, sous la forme d’un diagramme de BODE.
- Utiliser les icônes gérant l’affichage des fenêtres de visualisation ( Cascade Windows ; Tile
Horizontally ; Tile Vertically ; Tile Horizontally and Vertically in a Grid ) afin de présenter
différemment les résultats d’affichage des différentes courbes.
- Identifier les lignes définissant C1, R2 et R1 en comparant leur contenu au schéma électrique. Reporter
ces lignes ci-dessous et noter ces remarques :
- Dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation sélectionner, sous Files, le
répertoire Spice Files et, éditer le fichier RC_LPfilter_sources.spi
- Identifier les paramètres de réglage des analyses en les comparant à celles éditées à l’étape 4-3, les
reporter ci-dessous et noter ces remarques :
- Dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation sélectionner, sous Files, le
répertoire Experiment Files et, éditer le fichier RC_LPfilter.cmd
- Identifier les paramètres de réglage des analyses en les comparant à celles éditées à l’étape 4-4, les
reporter ci-dessous et noter ces remarques :
Fin de l’exercice n° 1
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE usuelles au travers de leur description en
langage SPICE ( syntaxe ) à de la façon de les déclarer dans HyperLynx Analog.
L’édition des paramètres d’analyse se fait dans la fenêtre Simulation Control à laquelle on peut accéder en
« lançant » la simulation ou en utilisant le menu contextuel Edit Dialog appliqué au fichier de commande
nom_du_test.cmd accessible, dans l’onglet Simulation du Navigator, sous le répertoire Experiment File
si le ce fichier a été édité une première fois. Dans cette fenêtre Simulation, il suffit alors d’éditer Time-
Domain Analysis comme indiqué ci-après :
TSTART
TMAX
TSTOP
UIC
TSTEP
Source SIN :
Source PWL :
Source SFFM :
Source EXP :
Source PULSE :
Cette analyse calcule les régimes harmoniques ( modélisation dans le plan complexe ) d’un circuit stimulé par une
(des ) source(s) sinusoïdale(s) de pulsation variable et de faible amplitude (AC).
[DEC|OCT|LIN] : spécifie le type de répartition des fréquences de mesures : par décade, par octave ou de façon
linéaire
NPTS : nombre de points de mesure
FSTART : fréquence inférieure du domaine fréquentiel étudié
FSTOP : fréquence supérieure du domaine fréquentiel étudié
L’édition des paramètres d’analyse se fait dans la fenêtre Simulation Control à laquelle on peut accéder en
« lançant » la simulation ou en utilisant le menu contextuel Edit Dialog appliqué au fichier de commande
nom_du_test.cmd accessible, dans l’onglet Simulation du Navigator, sous le répertoire Experiment File
si le ce fichier a été édité une première fois. Dans cette fenêtre Simulation, il suffit alors d’éditer
Frequency-Domain Analysis comme indiqué ci-après :
FSTART
FSTOP
NPTS
DEC|OCT|LIN
Dans la fenêtre contextuelle permettant d’éditer les attributs de la source il suffit donc de renseigner
l’attribut AC (par exemple 1V pour une source de tension) et l’attribut définissant sa phase en degré
(par exemple 90) comme le montre la figure ci-dessous :
Zone de
déclaration des
paramètres de la
souce AC
Remarque : le niveau de tension ( ou de courant ) peut être choisi à 1 Volt ( ou 1 Ampère ) pour des raisons
de facilité d’évaluation des résultats de mesure. En effet la structure simulée est un modèle linéaire petits
signaux ( plan complexe associé ) de la structure réelle et ne fait donc pas intervenir les limitations ou
autres saturations.
L’édition des paramètres d’analyse se fait dans la fenêtre Simulation Control à laquelle on peut accéder en
« lançant » la simulation ou en utilisant le menu contextuel Edit Dialog appliqué au fichier de commande
nom_du_test.cmd accessible, dans l’onglet Simulation du Navigator, sous le répertoire Experiment File
si le ce fichier a été édité une première fois. Dans cette fenêtre Simulation, il suffit alors d’éditer Time-
Domain Analysis comme indiqué ci-après :
Dans le cas usuel d’une source choisie comme variable de balayage, il suffit de labéliser celle-ci, de la
choisir dans la fenêtre ( figure ci-dessus ) des paramètres de l’analyse. La figure ci-dessous montre la façon
de labéliser une source :
EXERCICE n° 2
et sources associées
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE usuelles décrites au chapitre précédent
Cet exercice permet aussi d’approfondir la maîtrise du grapheur EZWave.
- Lancer DxDesigner ( si cela n’a pas déjà été fait ) à l’aide de l’icône placée sur le bureau sinon
« sauter » à la troisième étape de ce descriptif.
- Toujours dans le cas où DxDesigner avait été arrété, dans la fenêtre DxDesigner, utiliser le menu File
sélectionner, dans la liste des projets récents, Training_HLA_XYZ.prj ou le sélectionner dans l’onglet
Start page de la fenêtre principale de l’application.
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1 , apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Dans la fenêtre DxDatabook, dans l’onglet Symbols, « taper » LF353 dans le champ de recherche de
symbole pour trouver l’amplificateur linéaire intégré ( il devrait apparaitre dans la librairie
ApMacromodel ) et placer ce composant sur la feuille de schéma.
- Compléter l’édition du schéma suivant avec les composants passifs R1 et R2 et labéliser les différentes
équipotentielles :
- Dans la fenêtre Simulation Control déjà utilisée pour éditer les paramètres d’analyse cliquer sur le
bouton Simulate.
- Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que,
dans la fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien
présent. Par ailleurs l’outil de visualisation EZwave a été automatiquement lancé.
- Dans la fenêtre Ezwave utiliser les menus Plot as - Magnitude et Plot as - Phase ( menu contextuel )
sur le signal Vout issu de la simulation harmonique ( sous-ensemble AC de la base de données de
résultats ).
- Noter ci-après la différence de tracé de la première courbe avec celle qui avait été obtenue au premier
exercice pour une analyse similaire :
- Supprimer la courbe mag(V(out)) et Ezwave utiliser maintenant le menus Plot as - dB afin de retrouver
le tracé d’un diagramme de BODE classique.
- Sélectionner l’axe horizontal des fréquences et avec le menu contextuel, choisir d’afficher les lignes
verticales avec Grid Lines
- Faire apparaître un curseur et choisir, à l’aide de son menu contextuel, d’afficher les coordonnées
(Data Values – Show All). Toujours à partir du menu contextuel du curseur utiliser Move to… pour
placer automatiquement le curseur à la fréquence 30K
- Utiliser le menu Plot as – complex plane ( menu contextuel ) toujours sur le signal Vout issu de la
simulation harmonique ( sous-ensemble AC de la base de données de résultats ) afin d’afficher la
représentation de NYQUIST de la grandeur. Afficher un curseur et déplacer celui-ci le long de la courbe.
Interpréter les valeurs affichées par celui-ci :
- Utiliser le menu Plot as – polar chart ( menu contextuel ) toujours sur le signal Vout issu de la
simulation harmonique ( sous-ensemble AC de la base de données de résultats ) afin d’afficher la
représentation de la grandeur en coordonnées polaires c’est à dire dans lequel les modules sont
représentés par des cercles concentriques et les arguments le sont par des radiales. Afficher un curseur et
déplacer celui-ci le long de la courbe. Interpréter les valeurs affichés par celui-ci :
- Dans la fenêtre Simulation Control cliquer sur le bouton Simulate afin de lancer une nouvelle
simulation.
- Dans la fenêtre Ezwave apparaît une base de données de résultats nommée Ampli_Inv_1. Afficher la
nouvelle forme d’onde temporelle V(out) issue de cette simulation. A l’aide d’une fonction zoom, mettre
en évidence la différence entre les deux résultats notamment visible dans les parties « hautes » des
sinusoïdes. Noter cette remarque en justifiant cette amélioration.
- Dans la fenêtre d’affichage Wave sélectionner le signal V(out) issu de la dernière simulation. Lancer
l’assistant de calcul en cliquant sur l’icône Waveform Calculator ( ou Ctrl + K avec le clavier )
- Dans la fenêtre Waveform Calculator sélectionner la fonction fft parmi les fonctions mathématiques
(onglet Funcs et ensemble Signal Processing) en cliquant deux fois rapidement. Dans cette même fenêtre
utiliser l’icône Add Selected Waveform afin de placer comme variable de la fonction fft le signal
préalablement sélectionné dans la fenêtre d’affichage c’est à dire V(out). Au besoin supprimer les points
de suspension dans l’expression ainsi définie et cliquer sur le bouton Eval de la calculatice. Une fenêtre
d’affichage ( Wave ) s’ouvre et permet de visualiser le spectre du signal en module et en phase.
- Dans cette fenêtre d’affichage sélectionner la courbe représentative du module ( db(wf2) ) et afficher un
curseur. Placer ce curseur sur la raie du spectre possédant la plus forte valeur. Noter la valeur de la
fréquence correspondante à cette raie et justifier ce résultat.
- Utiliser l’icône Tile Horizontally and Vertically in a Grid gérant l’affichage des fenêtres de
visualisation afin de présenter les d’affichage des différents résulats.
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du schéma Ampli_Inv
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en Ampli_Diff et utiliser la commande Create Design ( menu contextuel lié à ce
nouveau design ) afin de le convertir en Design et le retrouver au même niveau que le précédent schéma
RC_LPfilter.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est Ampli_Diff et ce à l’aide du
menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner Ampli_Diff
afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) le modèle M_2N2222 de la librairie bjt.h et le placer sur
le schéma à l’aide d’un « drag & drop ».
Valider par en cliquant sur le bouton Add, la syntaxe de la commande d’analyse apparaît alors dans la
partie DC Sweep Command. Puis cliquer sur le bouton OK.
- Dans la fenêtre Simulation Control déjà utilisée pour éditer les paramètres d’analyse cliquer sur le
bouton Simulate.
- Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que,
dans la fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien
présent. Par ailleurs l’outil de visualisation EZwave a été automatiquement lancé.
Remarque importante : On notera que, pour tous ces tracés, l’axe des x est la tension d’entrée VIN car
c’est une analyse DC ( à contrario des analyses harmoniques où l’axe des x est logf ou les analyses
temporelles pour lesquelles l’axe des x est le temps t )
- Sélectionner l’un des courants affichés et, à l’aide de la boite à outils de mesures ( icône Open
Measurements Tool ou raccourci clavier Ctrl + M ), afficher la valeur moyenne ( Average ) de cette
grandeur. Sélectionner l’autre courant affiché et, dans la fenêtre Measurement Tool, à l’aide de
l’icône Add Selected Waveform, refaire la même mesure pour l’autre courant. Remarquer que les deux
courants possèdent la même valeur pour Vin = 0V et valant la moitié du courant de polarisation de la
paire différentielle.
- Sélectionner le sous-ensemble TRAN de la base de données de résultats et utiliser le menus Plot ( menu
contextuel ) sur le signal Vsort1 issu de la simulation temporelle. On notera d’une part que l’axe des x
est bien le temps t et que, d’autre part, le signal de sortie n’est pas parfaitement sinusoïdal en raison des
saturation des tensions Vce des transistors Q1 et Q2.
- Utiliser l’icône Tile Horizontally and Vertically in a Grid gérant l’affichage des fenêtres de
visualisation afin de présenter les d’affichage des différents résulats.
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du schéma Ampli_Diff
Fin de l’exercice n° 2
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE paramétrées au travers d’exemples et de
la méthodologie utilisée afin de les définir dans HyperLynx Analog.
Un paramètre spécifique d’un modèle de composant ( par exemple le beta forward ( BF ) d’un transistor
bipolaire )
Il est à noter que les analyses continues ( DC ) présentées au paragraphe précédent peuvent être vues comme des
analyses paramétrées. D’ailleurs on pourra vérifier que lorsque l’on choisit deux sources de tension comme
paramètres variables de l’analyse, la directive SPICE s’écrit avec la même syntaxe qu’une analyse continue à savoir
, par exemple :
.dc vvce 0 12 0.1 vin 10 100 10 lin
La description des analyses paramétrées se fait dans la fenêtre Simulation Control en accédant aux fonctionnalités
accessibles sous le répertoire Multi Sweep lui-même sous le répertoire Multi Run. Dans le cas particulier des
analyses paramétrées avec comme paramètre une ( ou deux ) source(s) de tension il faut les déclarer à l’aide des
fonctionnalités accessibles sous le répertoire DC Analysis lui-même sous le répertoire Simulations.
Les choix proposés à l’utilisateur pour décrire le paramètre ( température ) de cette analyse sont :
Exemple : on se propose d’étudier l’influence de la température des composants sur le gain d’un amplificateur de
tension organisé autour d’un transistor bipolaire « monté » en émetteur-commun.
L’image suivante montre le résultat, dans Ezwave, de l’analyse AC paramétrée en température. On remarquera,
dans la partie basse de Waveform List la liste des courbes V(out) issues de la simulation Multi Run.
On verra dans l’exercice n°3 comment retrouver les valeurs des paramètres liés à chaque courbe.
L’analyse de base est donc du type réponse harmonique et sa directive SPICE est la suivante :
.ac dec 100 100K 1G
Le type de paramètre parmi Passive, Voltage Source, Device, Model : le choix est Device
Le nom du composant passif dont la valeur nominale ( ou la température ) sera le paramètre à faire varier
( utilisation du bouton Browse pour sélectionner le composant du schéma )
Les valeurs de départ, de fin, le pas d’incrémentation ou la liste des valeur suivant le choix précédent
Exemple : on se propose d’étudier l’influence sur la fréquence centrale et la bande passante des valeurs nominales
des deux condensateurs constitutifs de la structure de RAUCH du filtre passe-bande.
L’image suivante reproduit les descriptions des deux paramètres supports de l’analyse :
L’analyse de base est donc du type réponse harmonique et sa directive SPICE est la suivante :
Les directives SPICE issues de cette description de l’analyse paramétrée sont les suivantes :
Le type de paramètre parmi Passive, Voltage Source, Device, Model : le choix est Model
Le nom du composant dont un des éléments du modèle sera le paramètre à faire varier ( utilisation du
bouton Browse pour sélectionner le composant du schéma )
Le paramètre : les paramètres constitutifs sont affichés sous forme d’une liste de choix
Les valeurs de départ, de fin, le pas d’incrémentation ou la liste des valeur suivant le choix précédent
Exemple : on se propose d’étudier l’influence sur le gain statique d’un amplificateur de tension, organisé autour
d’un transistor bipolaire « monté » en émetteur-commun, du paramètre beta forward ( BF ) du modèle
du transistor.
L’image suivante reproduit la description du paramètre BF ( beta forward ) du transistor, support de l’analyse :
L’analyse de base est donc du type réponse harmonique et sa directive SPICE est la suivante :
On a vu que ce type d’analyse devait être décrite, dans la fenêtre Simulation Control, à l’aide des fonctions
accessibles sous le répertoire DC Analysis, lui-même sous le répertoire Simulations.
Les choix proposés à l’utilisateur pour décrire chacun des deux paramètres ( s’il y en a deux ) de cette analyse
sont :
Le type de paramètre parmi Temperature, Source, Device, Model : le choix est Source
La source de tension qui sera le paramètre à faire varier ( utilisation du bouton Browse pour sélectionner la
source choisie )
Exemple : on se propose, par ce biais de tracer le réseau de caractéristique Ic = f(Vce) d’un transistor bipolaire.
L’image suivante reproduit les descriptions des deux paramètres supports de l’analyse :
EXERCICE n° 3
( Parametric Sweep )
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE paramétrées décrites au chapitre
précédent Cet exercice permet aussi d’approfondir encore la maîtrise du grapheur EZWave.
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en Ampli_EC et utiliser la commande Create Design ( menu contextuel lié à ce
nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les précédents
schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est Ampli_EC et ce à l’aide du
menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner Ampli_EC
afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) le modèle m_BFQ19S de la librairie bjt.h et le placer sur
le schéma à l’aide d’un « drag & drop ».
- Editer l’analyse paramétrée ( Multi Run / Multiple Sweep / Temperature Sweep ) suivante :
Dans la fenêtre Simulation Control, après avoir sélectionné, sous Multi Run sous Multi Sweep le
type d’analyse Temperature Sweep, la renseigner comme suit :
Celsius
Step Type : Linear
Start Value : 10
Stop Value : 60
Increment : 10
- valider le tout en cliquant sur le bouton Add, la syntaxe de la commande d’analyse apparaît alors dans la
partie Temperature Sweep Command. Noter cette commande ci-dessous :
- Valider par OK
- Dans la fenêtre Simulation Control déjà utilisée pour éditer les paramètres d’analyse cliquer sur le
bouton Simulate.
- Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que,
dans la fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien
présent. Par ailleurs l’outil de visualisation EZwave a été automatiquement lancé.
- Dans la fenêtre Ezwave sélectionner le sous-ensemble AC de la base de données de résultats et, dans la
partie basse de la partie Waveform List de la fenêtre cliquer sur le signe + correspondant V(out). Un
certain nombre de formes d’ondes indicées comme suit V(out)_n apparaissent. Compter leur nombre et
le justifier par rapport à la description de l’analyse paramétrée éditée ci-dessus et sachant que le
simulateur a rajouté un « Run » pour T = 0°C :
- Sélectionner le signal V(out) et utiliser le menu Plot ( menu contextuel ). Commenter l’effet sur
l’affichage :
- On remarque que le gain statique du montage est fortement influencé par la température. Réaliser un
zoom de cette partie et afficher un curseur. Sélectionner ce curseur et utiliser le menu contextuel
qui lui est associé pour qu’il affiche toutes les valeurs des différentes courbes ( menu Data Values –
Show All ).
- Effacer toutes les courbes affichées. Sélectionner la courbe V(out)_1 et utiliser le menu Plot As – db
(menu contextuel). Utiliser l’outil de mesure ( icône Open Measurements Tool ou raccourci clavier
Ctrl + M ), afin de trouver la fréquence de coupure à –3 dB. Dans la fenêtre Measurements Tool
choisir General et Crossing. Sélectionner la forme d’onde source db(V(out)_1) au besoin à l’aide d’un
« drag & drop ». Dans la partie Y level entrer 17 ( c’est 20 db – 3 db ) et cliquer sur le bouton Apply.
Apparaît une indication de Crossing qui représente la fréquence correspondante à un gain de 17 db. La
noter et recommencer avec la forme d’onde V(out)_7. Noter et comparer les valeurs :
- Editer l’analyse paramétrée ( Multi Run / Multiple Sweep / Parametric Sweep ) suivante :
Dans la fenêtre Simulation Control, après avoir sélectionné, sous Multi Run sous Multi Sweep le
type d’analyse Parametric Sweep, la renseigner comme suit :
First Parameter
Type : Model
Name : M_BFQ19S ( sélectionné à l’aide du bouton Browse )
Parameter : BF ( sélectionné à l’aide de la flèche … ce paramètre est assez bas dans la liste ! )
Criteria
Step Type : List
Sweep List : 50 100 150 200 250
- Valider le tout en cliquant sur le bouton Add, la syntaxe de la commande d’analyse apparaît alors dans
la partie Parametric Sweep Command. Noter cette commande ci-dessous :
- Valider par OK
- Après avoir renommée cette expérimentation, utiliser son menu contextuel pour lancer la simulation
(menu Simulate)
- Dans la fenêtre Ezwave sélectionner le sous-ensemble AC de la base de données de résultats et, dans la
partie basse de la partie Waveform List de la fenêtre cliquer sur le signe + correspondant V(out). Un
certain nombre de formes d’ondes indicées comme suit V(out)_n apparaissent.
- Sélectionner le signal V(out) et utiliser le menu Plot ( menu contextuel ). Comparer l’influence du
paramètre beta forward ( BF ) du transistor à celle de la température sur le comportement harmonique de
l’amplificateur :
- Utiliser l’icône Tile Horizontally and Vertically in a Grid gérant l’affichage des fenêtres de
visualisation afin de présenter les d’affichage des différents résulats.
- Dans la fenêtre DxDesigner, dans la partie Navigator, sous l’onglet Simulation, sélectionner le
testbench RAUCH. Sous le répertoire Result Files, sélectionner le fichier Ampli_EC_Beta_param.apo
et, à l’aide du menu contextuel, l’éditer ( menu Open ).
- Après les différentes lignes rappelant les analyses ( .ac .tran ( inactive ici ) ; les commandes de
paramétrage ( .vary ) ; les insertions ( .include ) et les options ( .option ) interpréter les lignes :
A new set of values for .VARY
m_bfq19s bf = 50
et rechercher, en suivant, la valeur affectée au paramètre bf du modèle m_bfq19s du transistor.
Les données qui suivent sont les valeurs du point de repos de la structure pour cette valeur du paramètre
et la courbe nommée V(out)_1 correspond aussi à cette valeur de bf.
On peut, toujours dans ce fichier trouver ces mêmes informations pour les différentes valeurs affectées
au paramètre support des simulations de type Multi Run
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du fichier résultat ainsi que celle du
schéma Ampli_EC.
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en RAUCH et utiliser la commande Create Design ( menu contextuel lié à ce
nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les précédents
schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est RAUCH et ce à l’aide du
menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner RAUCH
afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) le modèle s_LF353 de la librairie amp.h et le placer sur
le schéma à l’aide d’un « drag & drop ».
- Editer le schéma tel qu’il est fourni ci-dessous :
8.6. Edition des sources et des analyses paramétrées par les valeurs nominales
- E
diter la source e1 suivante :
Name : VIN
Type (V/I) : V
Node + : VIN
Node - : 0
Resistance :
DC Value : 0
Frequency Magnitude : 1
Frequency Phase : 0
Time Type : Sine ( Offset : 0 Amplitude : 10mV Frequency : 1700 Delay : 0 Damping factor : 0 )
- Editer l’analyse paramétrée ( Multi Run / Multiple Sweep / Temperature Sweep ) suivante :
Dans la fenêtre Simulation Control, après avoir sélectionné, sous Multi Run sous Multi Sweep le
type d’analyse Parametric Sweep, la renseigner comme suit :
First Parameter
Type : Device
Name : C1 ( sélectionné à l’aide du bouton Browse )
Parameter : VALUE ( sélectionné à l’aide de la flèche )
Criteria
Step Type : LIST
Sweep List : 5nF 10nF 15nF 20nF 25nF
Second Parameter
Type : Device
Name : C2 ( sélectionné à l’aide du bouton Browse )
Parameter : VALUE ( sélectionné à l’aide de la flèche )
Criteria
Step Type : LIST
Sweep List : 5nF 10nF 15nF 20nF 25nF
- valider le tout en cliquant sur le bouton Add, la syntaxe des deux commandes d’analyse apparaît alors
dans la partie Parametric Sweep Command. Noter ces commandes ci-dessous :
- Valider par OK
- Sélectionner la courbe possédant son maximum le plus à droite. Utiliser l’outil de mesure ( icône
Open Measurement Tool ou raccourci clavier Ctrl + M ), afin de trouver le maximum local : dans la
fenêtre Measurement Tool choisir General et Local Max et sélectionner la forme d’onde source avec
l’icône Add Selected Waveform ( on remarque que c’est la courbe indicée 1 ). Cliquer sur le bouton
Apply. Apparaît une indication de Local Max qui représente la fréquence centrale et le gain du filtre
passe-bande pour un couple de valeurs [C1;C2]. Noter ces valeurs et recommencer avec la courbe
possédant son maximum le plus à gauche ( on remarque que c’est la courbe indicée 49 ). Noter les
nouvelles valeurs. Recommencer avec la courbe possédant son maximum le plus élevé de toutes les
courbes ( on remarque que c’est la courbe indicée 9 ). Noter ces valeurs et comparer tous ces résultats :
- En conservant cette dernière courbe sélectionnée, toujours dans la fenêtre Measurement Tool, choisir
General et Bandpass et cliquer sur le bouton Apply. Les informations –3dB Bandwith , F-Low et F-
high apparaissent. Les noter et reproduire ces mesures pour les deux autres courbes étudiées ci-dessus.
- Dans la fenêtre Ezwave sélectionner le sous-ensemble TRAN de la base de données de résultats et, dans
la partie basse de la partie Waveform List de la fenêtre cliquer sur le signe + correspondant V(out). Un
certain nombre de formes d’ondes indicées comme suit V(out)_n apparaissent. Compter leur nombre et
le justifier par rapport à la description de l’analyse paramétrée éditée ci-dessus :
- Sélectionner la courbe ayant la plus grande dynamique. Utiliser l’outil de mesure précédemment décrit
(icône Open Measurement Tool ou raccourci clavier Ctrl + M) afin de mesurer la valeur crête à crête
du signal ( Peak to Peak ). Reproduire cette mesure pour la courbe ayant la plus petite amplitude. Noter
ces valeurs et commenter ces résultats :
- Dans la fenêtre DxDesigner, dans la partie Navigator, sous l’onglet Simulation, sélectionner le
testbench RAUCH. Sous le répertoire Result Files, sélectionner le fichier RAUCH_ac_tr_multi.apo
et, à l’aide du menu contextuel, l’éditer ( menu Open )
- Après les différentes lignes rappelant les analyses ( .ac .tran ) ; les commandes de paramétrage ( .vary ) ;
les insertions ( .include ) et les options ( .option ) interpréter les lignes :
A new set of values for .VARY
c1 value = 5 e-009
c2 value = 5 e-009
et rechercher, en suivant, le nombre d’associations de valeurs affectées aux composants capacitifs C1 et
C2. En déduire le nombre de courbes V(out)_n en ce qui concerne l’analyse harmonique et l’analyse
temporelle. Justifier les indices de 1 à 50
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du fichier résultat ainsi que celle du
schéma RAUCH.
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en BJT_Curv et utiliser la commande Create Design ( menu contextuel lié à ce
nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les précédents
schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est BJT_Curv et ce à l’aide du
menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner BJT_Curv
afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) le modèle m_2919 de la librairie bjt.h et le placer sur le
schéma à l’aide d’un « drag & drop ».
- Editer le schéma tel qu’il est fourni ci-dessous :
8.9. Edition des sources et des analyses paramétrées par deux sources
Dans la fenêtre Simulation Control, valider DC Analysis ( cocher Enable ) et Parametric Sweep. Cliquer sur le bouton
Setup correspondant à cette dernière validation. Dans la fenêtre DC Sweep Parameters apparaissant, éditer le premier et
deuxième paramètre comme suit :
First Parameter
Type : Source
Name : VVCE ( sélectionné à l’aide du bouton Browse )
Parameter : DC VALUE ( sélectionné à l’aide de la flèche )
Criteria
Step Type : Linear
Sweep Start : 0
Sweep Stop : 12
Step size : 0.1
Second Parameter
Type : Source
Name : VVIN ( sélectionné à l’aide du bouton Browse )
Parameter : DC VALUE ( sélectionné à l’aide de la flèche )
Criteria
Step Type : Linear
Sweep Start : 10
Sweep Stop : 100
Step size : 10
- valider le tout en cliquant sur le bouton Add, la syntaxe des deux commandes d’analyse apparaît alors
dans la partie DC Sweep Command. Noter ces commandes ci-dessous :
- Valider par OK
- Dans la fenêtre Simulation Control, sélectionner sous le répertoire Results, DC Sweep Waveforms.
Dans la liste des « Nets » à afficher ( Nets to Probe ) supprimer toutes les grandeurs ( Remove All ).
Dans la partie Design Hierarchy sélectionner le courant de collecteur ( C ) du transistor Qxxx
- Vérifier, après un certain laps de temps, que la simulation s’est correctement déroulée en notant que,
dans la fenêtre Output ( onglet Simulation ), le message correspondant au temps écoulé est bien
présent. Par ailleurs l’outil de visualisation EZwave a été automatiquement lancé.
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du schéma BJT_Curv
Fin de l’exercice n° 3
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE avancées au travers de leur spécificité,
de leur syntaxe SPICE ( syntaxe ) et de leur déclaration dans HyperLynx Analog.
Cette directive permet d’obtenir des informations détaillées sur le point de repos d’un circuit (caractéristiques
des composants au point de repos, courants et tensions des sources au point de repos etc. ). Ces informations
seront stockées dans le fichier nom_du_ [Link] .
Note : Toute simulation SPICE débute par cette analyse, ne serait - ce que pour définir les valeurs des paramètres
des modèles des composants dont on sait qu’elles dépendent du point de repos. Cependant, si la directive
.OP n’est pas présente, seules les valeurs des tensions de repos sont stockées dans le fichier résultats,
alors que sa présence impose au simulateur de stocker les courants et les puissances dans ce même
fichier.
Syntaxe : .OP
Exemple : .op
L’autorisation de mémoriser les résultats issues de l’analyse du point de repos se fait dans la fenêtre
Simulation, sous le répertoire DC Analysis comme indiqué ci-dessous :
Le mode showall imposant à la directive .OP de mémoriser toutes les grandeurs liées à l’analyse du point
de repos autres que les courants de branche et les potentiels des nœuds du circuit comme les paramètres
du modèle « petit signal » des transistors par exemple, se fait dans la fenêtre Simulation, sous le
répertoire Operating Point Values comme indiqué ci-dessous :
* Sat Dec 06 [Link] 2008 * MGC Analog Simulator 2008 (Thu Jun 26 2008) * Copyright © Mentor Graphics Corporation 2008 All Rights Reserved.
* command file for design: amp_bc
**** OPERATING POINT ANALYSIS TEMPERATURE = 27.000 DEG C
**************************************************************************************************************************
DC OPERATING POINT
NODE VOLTAGES
v(bas)= 1.897e+000 v(col)= 7.741e+000
v(emet)= 1.267e+000 v(out)= 0.000e+000
v(vcc)= 9.000e+000 v(vin)= 0.000e+000
INDEPENDENT SOURCES
RESISTORS
NAME rc re rl rb1 rb2
MODEL
RES 1.000e+003 1.000e+003 1.000e+004 1.000e+004 2.700e+003
I 1.259e-003 1.267e-003 0.000e+000 7.103e-004 7.026e-004
V 1.259e+000 1.267e+000 0.000e+000 7.103e+000 1.897e+000
POWER 1.586e-003 1.605e-003 0.000e+000 5.045e-003 1.333e-003
NAME q1i5
MODEL m_2n2222a
IB 7.677e-006
IC 1.259e-003
VBE 6.295e-001
VBC -5.842e+000
VCE 6.472e+000
BETADC 1.640e+002
GM 4.797e-002
RPI 3.459e+003
RMU 5.479e+012
RO 1.411e+005
RB 7.417e+001
CPI 6.153e-011
CMU 4.448e-012
CBCX 0.000e+000
CCS 0.000e+000
BETAAC 1.659e+002
FT 1.157e+008
NODE VOLTAGES
INDEPENDENT SOURCES
…………………………………………………………………………………………………………………………………………………………………………
L’analyse de bruit est le calcul de la contribution de chacune des résistances et des semi-conducteurs
(diodes, transistors etc.) au bruit total apporté par un quadripôle ( amplificateur ou non ) au signal d’entrée. Le
bruit est une grandeur aléatoire ( ramdom ) et bien que sa valeur moyenne dans le temps puisse être nulle, sa
variance (valeur efficace) ne l’est pas. Le bruit total en sortie est donc quantifié grâce au calcul de la racine carré
des contributions de chacun des composants considérées de par leur carré. Ce calcul dépend de la bande passante
considérée et donc cette directive doit absolument être associée à une analyse fréquentielle ( .AC) . Le
résultat s’exprime donc en V/hertz1/2 . Cette grandeur calculée en sortie du quadripôle se nomme ONOISE (
Output noise ) mais est aussi calculée en équivalent de source de bruit en entrée , elle est alors désignée par
INOISE ( Input Noise ). Les courbes représentatives des grandeurs ONOISE et INOISE, dépendantes de la
fréquence, seront affichées à l’aide du grapheur Ezwave alors que les contributions de chacun des composants
« bruyants» pourront être lues dans le fichier résultat nom_du_design.apo
Syntaxe : .NOISE V( <node> [,<node>] ) < source name > [ interval value ]
V( <node> [,<node>] ) : équipotentielles de sortie du quadripôle. Usuellement la deuxième
équipotentielle est la masse et peut être notée 0 ou non déclarée
< source name > : équipotentielle d’entrée du quadripôle référencée à la masse. Usuellement c’est la
même que définissant l’analyse harmonique ( .AC ) nécessairement associée à
l’analyse de bruit.
[ interval value ] : pas d’affichage
La déclaration de cette analyse se fait dans la fenêtre Simulation, sous le répertoire Frequency Analysis
en validant Noise dans la partie Advanced Analysis après avoir défini l’analyse harmonique :
L’édition des paramètres de l’analyse de bruit se fait à l’aide de la fenêtre de dialogue suivante,
obtenue en cliquant sur le bouton Setup… de la fenêtre précédente :
Visualisation des contributions des composants « bruyants » dans le fichier *.apo ( exemple ) :
* command file for design: amp_bc
*************************************************************
FREQUENCY = 1.000e+003 HZ
rb1 1.826e-015
rb2 6.763e-015
rc 1.329e-017
re 2.850e-018
rl 4.746e-018
q1i5
RB 8.343e-016
RC 8.161e-025
RE 1.463e-018
IB 2.964e-015
FN 0.000e+000
IC 1.944e-016
TOTAL 3.994e-015
Cette analyse permet de calculer la sensibilité d’une ou plusieurs sorties vis à vis des éléments et paramètres du
montage et ce, pour une analyse AC ou DC.
En ce qui concerne l’analyse de sensibilité vis à vis des comportements harmoniques, elle se fait dans la
fenêtre Simulation, sous le répertoire Frequency Analysis en validant Sensitivity dans la partie Advanced
Analysis après avoir défini l’analyse harmonique :
L’édition des paramètres de l’analyse de sensibilité se fait à l’aide de la fenêtre de dialogue suivante,
obtenue en cliquant sur le bouton Setup… de la fenêtre précédente :
En ce qui concerne l’analyse de sensibilité vis à vis des grandeurs continues, elle se fait dans la fenêtre
Simulation, sous le répertoire DC Analysis en validant Sensitivity Analysis dans la partie DC Sweep
Settings :
L’édition des paramètres de l’analyse de sensibilité se fait à l’aide de la fenêtre de dialogue suivante,
obtenue en cliquant sur le bouton Setup… de la fenêtre précédente :
Cette analyse nécessite, dans le cas de l’étude vis à vis des comportements harmoniques une source AC
puisqu’elle est liée à la présence d’une analyse .AC
Par contre, pour l’analyse de sensibilité vis à vis des grandeurs continues, aucune source n’est nécessaire.
Visualisation, dans le fichier *.apo, des résultats dans le cas d’une étude de sensibilité vis à vis des
grandeurs continues ( exemple ) :
*************************************************************************************************************
**** DC SENSITIVITY ANALYSIS TEMPERATURE = 27.000 DEG C
**************************************************************************************************************
Visualisation, dans le fichier *.apo, des résultats dans le cas d’une étude de sensibilité vis à vis des
comportements harmoniques ( exemple partiel ) :
*************************************************************
AC SENSITIVITY OF OUTPUT V(OUT,0) AT FREQUENCY OF 100000Hz
Il existe d’autres analyses SPICE comme celles de distorsion ( .DISTO ), de Fourier ( .FOUR ) ou encore de
fonction de transfert aux faibles fréquences ( .TF ). Elles sont rapidement présentées ci-après et étudiées,
pour certaines, dans l’exercice suivant:
Fourier : Cette analyse permet de réaliser le calcul des coefficients du développement en série de FOURIER
d’une ou plusieurs variables (elle doit être associée à une analyse transitoire ) ainsi que leurs THD
(Total Harmonic Distorsion ). Les résultats sont stockés dans le fichier de sortie *.ap0
Distorsion : ces analyses permettent, entre-autres, de calculer les produits d’intermodulation entre deux
fréquences f1 et f2 sources ( 2.f1 ; 2.f1-f2 ; 3.f1 ; f1 + f2 ; f1-f2 )
DC transfer Function : Cette analyse permet de déterminer les caractéristiques de la fonction de transfert
d’un circuit ( gain, résistances d’entrée et de sortie ) aux très faibles fréquences. Les résultats
seront stockés dans le fichier *.apo
EXERCICE n° 4
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE avancées décrites au chapitre précédent
Cet exercice permet aussi d’approfondir encore la maîtrise du grapheur EZWave.
- Reporter les valeurs continues et les paramètres du transistor issus du calcul du point de repos ci-
dessous :
- Dans la fenêtre DxDesigner, afficher les valeurs du point de repos sur le schéma grâce à la rétro-
annotation. On utilisera pour cela l’icône Show BackAnnotation.
- Vérifier les valeurs des tensions rétro-annotées sur chacune des équipotentielles en les comparant à
celles lues dans le fichier résultat édité précédemment.
- Pour effacer les valeurs rétro-annotées cliquer une nouvelle fois sur l’icône Show BackAnnotation
- Comme indiqué au paragraphe 9-2, éditer l’analyse de bruit en considérant l’équipotentielle OUT
comme sortie, la source VIN comme source d’entrée et choisir la valeur 100 au paramètre Print
Interval. Nommer le fichier de commande comme suit : Amp_BC_Noise.cmd
- Visualiser dans EZwave les courbes Onoise, Inoise de l’analyse de bruit ( sous-ensemble NOISE de la
base de données de résultats ) ainsi que V(out) en module ( Plot as Magnitude ) issue de l’analyse
harmonique (sous-ensemble NOISE de la base de données de résultats ).
- Reporter ci-dessous les allures de ces différentes formes d’onde et commenter leur allure :
- Editer le fichier résultat Amp_BC_noise.apo et y retrouver les informations concernant les contributions
relatives des composants « bruyants ». Reporter ces valeurs ci-dessous en n’omettant pas de noter :
* la fréquence à laquelle a été fait le calcul
* les unités
* le gain du quadripôle à cette fréquence
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du fichier résultat.
Justification :
Justification :
- Dans Ezwave, afficher la réponse transitoire de V(out) et, comme cela a été fait à l’exercice 2 ( § 6-3 ),
utiliser la fonction fft afin de tracer le spectre du signal. Mesurer l’amplitude des raies à 100 KHz et 200
Khz ( attention le spectre est en dB ) et comparer ces résultats à ceux obtenus avec l’analyse de Fourier.
- Fermer l’application Ezwave et, dans DxDesigner, fermer l’édition du schéma Amp_BC et des différents
fichiers texte.
Fin de l’exercice n° 4
Objectif : L’objectif de cette partie est l’appropriation des analyses SPICE d’industrialisation au travers de leur
spécificité, de leur description en langage SPICE ( syntaxe ) et de la façon de les déclarer dans
HyperLynx Analog.
Les analyses de Monte Carlo sont des analyses statistiques d’un circuit. Les tolérances et/ou dispersion des
composants ou des éléments de modèle sont les paramètres de ces analyses.
La directive .MONTE autorise donc le simulateur HLASE à exécuter l’analyse de Monte Carlo en rapport avec
des analyses DC, AC ou TR. Elle collecte les données concernant les tensions et courants spécifiés. Les
paramètres variant durant ces analyses statistiques sont ceux suivis du mot clé STAT. Les options, comme le
nombre de « run », disponibles pour l’analyse de Monte Carlo sont définies avec la directive .OPTIONS ( confer la
documentation en ligne HyperLynx Analog Simulation Reference Manual ou encore le fichier dxsim_ref.pdf )
Notes : * les analyses de bases DC, AC et TR sont exclusives l’une de l’autre sur une même analyse de Monte
Carlo. Cependant il est possible de déclarer plusieurs analyses de Monte Carlo pour un même circuit.
* On peut ne pas définir les variables sur la ligne de la directive .MONTE mais utiliser la possibilité,
dans la fenêtre Simulation Control, menu Results, sous-menus correspondant à l’analyse de base,
définir les courants ou nets qui seront affichés … et analysés par la directive .MONTE. Cette liste
de courants et/ou de nets se retrouve alors dans le fichier [Link]
Paramètres : l’affectation d’une tolérance à la valeur d’un paramètre est réalisée grâce aux mots clés
STAT , DEV et/ou LOT
LOT : représente l’écart maximal de la valeur centrale du lot considéré par rapport à la valeur nominale.
La valeur est donc donnée par la relation : Valeur Valeur _ nom * (1 DEV %) * (1 LOT %)
Distribution : la distribution utilisée pour l’analyse statistique est définie par la directive .DISTR définie
comme suit :
sélectionner, ensuite, le menu Statistical Analysis et cocher l’analyse Monte Carlo ( cf ci-dessous ) :
éditer « Number of Runs » c’est à dire le nombre de « tirages » statistiques et donc le nombre
d’analyses DC, AC ou TR définies dans les analyses de base ainsi que l’attribut « Seed », compris
entre 1 et 999 et qui sert au générateur de nombre aléatoire support des choix statistiques
Donner un nom à la nouvelle distribution que l’on souhaite définir, choisir la distribution parmi
celles proposées par HLASE et définir les éventuels paramètres de celle-ci. Ajouter cette nouvelle
distribution à l’aide du bouton Add Distribution. Reproduire cette étape pour toute nouvelle
distribution qui sera être utile pour l’étude du circuit.
Choisir la distribution parmi celles qui ont été définies. Définir le paramètre du composant soumis
au paramétrage. Editer, s’il y a lieu, la tolérance en utilisant le sigle % de préférence.
Reproduire ces étapes pour tous les composants soumis aux variations ( à l’exception de celle de la
définition des distributions )
On verra, lors de l’exercice n° 5, comment visualiser et interpréter les résultats d’une analyse de
Monte Carlo.
Les analyses de WORST CASE ( Pire Cas ) ont été utilisées avec beaucoup de succès lors de l’étude de circuit à
base de transistor bipolaire ( BJT ) ou MOS. Le pire cas est simulé en prenant toutes les variables à 2-sigma ou 3-
sigma de leur valeur nominale. Il est certes peu probable que toutes ces variables indépendantes soient
simultanément à leur « pire valeur » donnant ainsi une image trop pessimiste du circuit mais qui peut être utile
d’un point de vue du test.
Ce type d’analyse est souvent réalisée en même temps qu’une analyse de Monte Carlo, mais elle peut être réalisée
seule ( option nomont ). Dans certains simulateurs de type SPICE, cette analyse utilise une directive spécifique
(par exemple .WCASE), dans l’environnement HLASE, il s’agit d’une option ( worst ) cataloguée dans les options
de type statistique du simulateur.
sélectionner, ensuite, le menu Statistical Analysis et cocher l’analyse Worst Case ( cf ci-dessous ) :
éditer, de la même manière que pour l’analyse de Monte Carlo, les distributions de chacun des
composants dont un ( ou plusieurs ) paramètres sont variables.
Note : si l’analyse de Worst Case est faite en parallèle avec celle de Monte Carlo, il est évident que
la description des distributions est commune aux deux analyses.
éditer « Number of Runs » c’est à dire le nombre de pire cas ( ? ) et donc le nombre d’analyses
DC, AC ou TR définies dans les analyses de base. Le simulateur HLASE réalise l’une des n
analyses demandées aux valeurs nominales. L’attribut « Seed » n’a pas besoin d’être édité.
On verra, lors de l’exercice n° 5, comment visualiser et interpréter les résultats d’une analyse de
Worst Case.
Objectif : L’objectif de cette partie est l’utilisation de la librairie de modèles Analog DIABLOLib en vue de
simuler un système complexe pluritechnologique ( digital, mécanique etc. ) avec un seul simulateur.
L’autre objectif est l’appropriation du langage DIABLO qui a pour objet de générer des modèles de
structures mixtes et/ou complexes en vue de les utiliser pour la simulation dans l’environnement
HyperLynx Analog.
DIABLO est un langage de description de haut niveau utilisé afin de générer des modèles de structures
mixtes : électroniques analogiques et digitales, mécaniques, électromécaniques, hydrauliques, optiques, thermiques
etc. Ces modèles sont utilisables dans l’environnement de simulation HyperLynx Analog. L’objectif est de
simplifier la simulation de systèmes pluritechnologiques en n’utilisant qu’un seul simulateur.
DIABLO est un langage de type C don’t les éléments “s’ajoutent” à une netlist de l’environnement de simulation
HyperLynx Analog (HLASE). La méthodologie utilisée est la création classique de modèle, en lanagage SPICE, à
savoir l’utilisation du mot clé .SUBCKT au travers de la définition d’un macro-modèle et d’un symbole
graphique. Cela permet de décrire le comportement de composants par le biais d’une série de déclarations qui sont
éxécutées afin de réaliser les calculs numériques correspondant aux fonctions assurées par ces éléments.
De nombreuses constantes et fonctions arithmétiques sont “supportées” par le langage de DIABLO comme, par
exemple, la constante de Boltzmann, pi, la charge de l’électron etc. , pour l’arithmétique, les fonctions sinus,
cosinus, exponentielle etc. Dans HLASE, il existe des éléments idéaux ( sources commandées par exemple ) ce qui
permet de définir des fonctions polynomiales. L’idée sous-tendue par DIABLO est d’étendre les capacités de
description polynomiales du langage C.
L’adjonction du langage DIABLO à l’environnement de simulation de structures analogiques HLASE fait de ce dernier
un “solveur” d’équations différentielles à usage général. HyperLynx Analog peut donc être utilisé pour développer des
modèles, réaliser de l’analyse de réseaux ou encore étudier des systèmes.
La librairie DIABLOLib regroupe un ensemble de composants modélisés au niveau système et permettant donc de
simuler et analyser des systèmes pluritechnologiques. Ces modèles étant de type comportementaux ( behavioral
models ) ils permettent donc de combiner de la logique avec des circuits analogiques, des systèmes mécaniques et
leurs circuits de commande etc. Ils peuvent aussi être utilisés avec des primitives SPICE. Une fois validé le design
du système, il est alors possible de réaliser une description analogique plus “fine” en utilisant des modèles de
composants totalement caractérisés issus des librairies de primitives.
On peut donc utiliser les modèles de la librairie DIABLOLib pour décrire des systèmes comprenant par exemple
des P.L.L, des contrôles de moteurs, des filtres, des modems, des téléphones cellulaires, des équipements
audiovisuels, des équipements radio ou encore des alimentations à découpage. Les applications pluritechnologiques
recouvrent des composants comme les détecteurs de niveau de fluide, des jauges de contraintes, des thermocouples,
des moteurs, des relais, des bobines ou encore des éléments optiques. Des modèles de la librairie DIABLOLib
facilitent le design de systèmes de contrôle qui sont des éléments prépondérants en robotique, avionique,
supervision, des réseaux d’alarme ou des asservissements industriels
A l’exception des rares modèles listés ci-après, les composants de la librairie DIABLOLib possèdent des impédances
d’entrée et de sortie, ceci permettant de les utiliser ( ou ajouter ) directement dans le design. En effet tout simulateur
de type SPICE utilisant les lois de Kirchoff ( KNL ), cela impose qu’il existe pour chaque noeud un “chemin” vers la
masse.
Les modèles ne possédant pas d’impédances d’entrée et/ou de sortie sont les suivants :
La librairie des modèles de comportement func.h des composants de DIABLOLib est accessible dans la fenêtre
Navigator de DxDesigner, sous l’onglet Simulation et dans le sous-répertoire Spice Libraries de Model Libraries.
Les paramètres des composants (par exemple la durée T du composant MONO réalisant la fonction monostable),
peuvent être édités dans le fichier *.par ( s__mono.par pour le cas cité en exemple ) se trouvant sous le répertoire
symbole du projet ou en utilisant l’outil Analog Model Library Manager ( AMLM ).
Les fonctions contenues dans cette librairie comportementale sont, à ce jour, les suivantes :
ABS : Valeur absolue de l’entrée
ADC1 : Convertisseur A/D unipolaire 8 bits
ADC2 : Convertisseur A/D bipolaire 8 bits
AND : ET logique à 2 entrées
AND3 : ET logique à 3 entrées
ATAN : Fonction Arctangente
BUFFER : Buffer de courant
CAP : Capacité avec des conditions initiales fixées par l’utilisateur
COMPAR : Comparateur de tension
CONST : Signal source de valeur constante
COS : Fonction Cosinus : y = cos(x) où y est la sortie et x l’entrée
CTOS : Actionneur commandé en courant
DAC1 : Convertisseur D/A unipolaire 12 bits
DAC2 : Convertisseur D/A bipolaire 12 bits
DFLIP : Bascule D
DIFF : Dérivateur idéal
DIODE : Diode idéale
DIV2 : Division entrée1/entrée2
DZON1 : Zone morte symétrique ( Dead Zone )
DZON2 : Zone morte non symétrique ( Dead Zone )
DZON3 : Zone morte symétrique commandable ( Dead Zone )
DZON4 : Zone morte nonsymétrique commandable ( Dead Zone )
EXP : Source d’impulsion exponentielle
FSIN : Sinus redressé bi-alternance
GAIN : Gain idéal
HSIN : Sinus redressé mono-alternance
HYST : Trigger de Schmitt ( hystérésis )
IDLDA : Amplificateur opérationnel idéal
IND : Inductance avec des conditions initiales fixées par l’utilisateur
INTEG : Intégrateur idéal
INVERSE : Fonction 1/x
INVERTER: Inverseur logique
JKFLIP : Bascule JK
LATCH : Verrou de type D
LIM1 : Limiteur symétrique
LIM2 : Limiteur non symétrique
LIM3 : Limiteur symétrique commandable
LIM4 : Limiteur non symétrique commandable
Comme cela a été dit dans l’introduction de ce paragraphe, DIABLO est un langage de description de haut niveau
de type C. Il permet donc à l’environnement de simulation HyperLynx Analog d’analyser des structures complexes,
ceci grâce à la possibilité offerte à l’utilisateur de développer des macro-modèles.
La documentation en ligne ( HyperLynx Analog Simulation I/F User’s Manual et Reference Manual ) sous forme
html ou pdf décrit :
La structure du langage DIABLO
L’appel des fonctions DIABLO ( Calling a DIABLO function )
L’édition et/ou l’écriture des fonctions ( Basic Framework )
Le corps d’une fonction ( Function Body ) et les règles syntaxiques
Les variables et les nombres ( mots-clés ; constantes pré-définies, fonctions pré-définies, codage, unités )
Les fonctions algébriques
Les opérateurs arithmétiques et les opérateurs logiques
Les déclarations conditionnelles
La déclarations de retour de fonction
Les sources contrôlées, les capacités et inductances multi-dimensionnelles
Les problèmes de convergence
table (nv1,
x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8,x9,y9,x10,y10, x11,y11,x12,y12,x13,y13,x14,
y14,x15,y15,x16,y16,x17,y17,x18,y18,x19,y19,x20,y20,x21,y21)
{
if (nv1< x2) return (y1 + ((nv1 - x1) * (y2 - y1)) / (x2 - x1));
if (nv1< x3) return (y2 + ((nv1 - x2) * (y3 - y2)) / (x3 - x2));
if (nv1 < x4) return (y3 + ((nv1 - x3) * (y4 - y3)) / (x4 - x3));
if (nv1 < x5) return (y4 + ((nv1 - x4) * (y5 - y4)) / (x5 - x4));
if (nv1 < x6) return (y5 + ((nv1 - x5) * (y6 - y5)) / (x6 - x5));
if (nv1 < x7) return (y6 + ((nv1 - x6) * (y7 - y6)) / (x7 - x6));
if (nv1 < x8) return (y7 + ((nv1 - x7) * (y8 - y7)) / (x8 - x7));
if (nv1 < x9) return (y8 + ((nv1 - x8) * (y9 - y8)) / (x9 - x8));
if (nv1 < x10) return (y9 + ((nv1 - x9) * (y10 - y9)) / (x10 - x9));
if (nv1 < x11) return (y10 + ((nv1 - x10) * (y11 - y10)) / (x11 - x10));
if (nv1 < x12) return (y11 + ((nv1 - x11) * (y12 - y11)) / (x12 - x11));
if (nv1 < x13) return (y12 + ((nv1 - x12) * (y13 - y12)) / (x13 - x12));
if (nv1 < x14) return (y13 + ((nv1 - x13) * (y14 - y13)) / (x14 - x13));
if (nv1 < x15) return (y14 + ((nv1 - x14) * (y15 - y14)) / (x15 - x14));
if (nv1 < x16) return (y15 + ((nv1 - x15) * (y16 - y15)) / (x16 - x15));
if (nv1 < x17) return (y16 + ((nv1 - x16) * (y17 - y16)) / (x17 - x16));
if (nv1 < x18) return (y17 + ((nv1 - x17) * (y18 - y17)) / (x18 - x17));
if (nv1 < x19) return (y18 + ((nv1 - x18) * (y19 - y18)) / (x19 - x18));
if (nv1 < x20) return (y19 + ((nv1 - x19) * (y20 - y19)) / (x20 - x19));
return (y20 + ((x - x20) * (y21 - y20)) / (x21 -x20));
}
#endif
.ENDFUNC
.FUNC
#ifndef root
#define root
// DIABLO - VERSION 1.0
root (nv1,c0)
{
out=sqrt(nv1);
return(out);
}
#endif
.ENDFUNC
.FUNC
#ifndef square
#define square
// DIABLO - VERSION 1.0
square (nv1)
{
out=nv1*nv1;
return(out);
}
#endif
.ENDFUNC
* ******** END OF MODEL INFO **********
* ******** SOURCE INFORMATION ********
vsource vs 0 PULSE ( 0 28 0.01 1E-006 1E-006 0.1 0.2 )
* ******** END OF SOURCE INFO *********
* ******** CONTROL INFORMATION *********
******** SETTINGS INFORMATION *******
.OPTION ACCT
* ******** END OF SETTINGS INFO *******
* ******** ANALYSIS INFORMATION *******
.TRAN 0.005 0.5 0
* ******** END OF ANALYSIS INFO *******
* ******** END OF CONTROL INFO ********
.END
EXERCICE n° 5
Descriptions comportementales
Langage DIABLO
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en Boucle_4_20mA et utiliser la commande Create Design ( menu contextuel lié
à ce nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les précédents
schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est Boucle_4_20mA et ce, à
l’aide du menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner
Boucle_4_20mA afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) le modèle s_TL072C de la librairie amp.h et le placer,
en deux exemplaires, sur le schéma à l’aide d’un « drag & drop ». Si besoin est, lui affecter le symbole
OPAMP_5PIN. Choisir de même les transistors s_2n2222 ( librairie bjt.h ) et m_j177 ( librairie jfet.h ).
Number of Runs : 4
Seed : …. Choisir un nombre compris entre 1 et 999
Cliquer sur le bouton Add Distribution afin de valider la définition de cette distibrution puis cliquer sur le bouton OK … on
revient alors à la première fenêtre ( Add Distribution ).
Choisir le paramètre VALUE. Pour un composant passif ( la résistance R1 ) c’est le seul paramètre auquel il est
possible d’attacher une distribution.
Editer la tolérance en lui affectant la valeur 5% écrit à l’aide du sigle % comme ici. Valider par le bouton OK, la
définition de la distribution affectée à la valeur de la résistance R1
Notes : * La distribution D1 ayant été définie pour tout le design, on ne l’édite, bien sûr, plus pour les autres composants.
* L’élément RL étant censée modéliser la ligne de la boucle 4-20mA, sa tolérance représente en fait la variabilité de
la résistance des différentes lignes.
- Dans la fenêtre Simulation Control, dans le menu Results, sélectionner le sous-menu DC Sweep
Waveforms. Utiliser le bouton Remove All pour supprimer tous les courants et nets à visualiser.
Sélectionner le courant circulant dans RL ( sous Current Waveforms ) et le potentiel du net LINE
(sous Voltage Waveforms) et les ajouter ( bouton Add ) à la liste de visualisation ( Nets to Probe ) où ils
apparaîtront sous les noms i(rl) et v(line).
- Renommer cette analyse Boucle_4_20mA_MONTE.cmd dans l’onglet Simulation de la partie
Navigator de DxDesigner.
- Après avoir renommée cette expérimentation, utiliser son menu contextuel pour lancer la simulation
(menu Simulate).
- Dans la fenêtre Ezwave sélectionner le sous-ensemble DC de la base de données de résultats et, dans la
partie basse de la partie Waveform List de la fenêtre cliquer sur le signe + correspondant i(rl,1). Un
certain nombre de formes d’ondes indicées comme suit i(rl,1)_n apparaissent. Commenter ce nombre de
courbes.
- Afficher toutes les courbes indicées i(rl,1)_n. Représenter leurs allures ci-dessous en utilisant d’une
couleur différente pour la courbe correspondant aux valeurs nominales (celle évoluant de ~ 4 mA à ~ 20
mA) :
i(rl) (A)
20 mA
4 mA
0 10 Vin (V)
- Placer un curseur et sa fonction Data Values Show All pour visualiser les valeurs des différentes
courbes à une tension d’entrée donnée. Reporter ces valeurs pour Vin = 8 V et évaluer l’écart maximum
en pourcentage.
Pour Vin = 8 V :
Ramdom Variation : 1
Commentaires :
- Editer, toujours pour le design Boucle_4_20mA, une nouvelle expérimentation que l’on nommera :
Boucle_4_20mA_WC.cmd
Number of Runs : 2
Seed : …. Il n’y a pas lieu de définir ce paramètre du fait que l’analyse ne “tire” pas au sort les valeurs des paramètres mais,
au contraire, recherche les valeurs qui éloigneront le plus la courbe des résultats de la courbe nominale et ce,
pour les courants ou “nets” listés dans le fichier [Link]
Notes : * les distributions et leurs affectations aux différents composants ne sont pas ici nécessaires puisque
cela a été fait pour ce design lors de l’analyse de Monte Carlo précédente.
* la liste des courants et/ou « nets » à afficher ( et évaluer pour les analyses d’industrialisation )
ayant été définie lors de la l’analyse de Monte Carlo n’est pas, non plus, nécessaire à moins que
l’on souhaite en changer les grandeurs évaluées par l’analyse de Worst Case : le fichier
[Link] est en effet commun à toutes les expérimentations du design
- Lancer la simulation depuis cette même fenêtre Simulation Control ( bouton Simulate ).
- Dans la fenêtre Ezwave sélectionner le sous-ensemble DC de la base de données de résultats et, dans la
partie basse de la partie Waveform List de la fenêtre cliquer sur le signe + correspondant i(rl,1). Un
certain nombre de formes d’ondes indicées comme suit i(rl,1)_n apparaissent. Commenter ce nombre de
courbes.
- Placer un curseur et sa fonction Data Values Show All pour visualiser les valeurs des différentes
courbes à une tension d’entrée donnée. Reporter ces valeurs pour Vin = 8 V et évaluer l’écart en
pourcentage.
Pour Vin = 8 V :
- Comparer la « déviation » de la courbe i(rl,1)_2 par rapport à la courbe i(rl,1)_1 à celles des différentes
courbes ( non nominales ) obtenues lors de l’analyse de Monte Carlo et noter ce résultat ci-dessous :
- Dans la fenêtre DxDesigner, éditer le fichier Boucle_4_20mA_WC.apo . Noter, les valeurs affectés aux
paramètres et correspondant à un « pire cas » ( Ramdom Variation : 1 ) :
Ramdom Variation : 1
- On se propose ici d’utiliser la librairie de modèles DIABLOLib afin d’analyser le comportement d’une
alimentation à découpage d’une imprimante thermique et dont l’une des sorties est une tension
régulée de 24V. Les performances dynamiques ( harmoniques et temporelles ) de cette alimentation sont
très largement imposées par le bouclage de contre-réaction et le correcteur Proportionnel-Intégral ( PI )
dont on ajustera les caractéristiques ( coefficients proportionnel et intégral ) grâce à cette modélisation
comportementale dans l’environnement HyperLynx Analog.
K 0 0.75
K 0 .e a.s K0. K0.
H ( s) 4
avec F0 1200 Hz soit encore : H ( s ) e a.s . 2
. 2
s a Td 2 s s s
1 1 1
2. .F 2. .F0 2. .F0
0
a 0 50,1.10 8
a. s a0 a0
H ( s) e b0 58,8.10
8
ou encore : . . avec
b0 b1 .s s 2
b0 b1 .s s 2 b 15,5.10 5
1
1
G 0,37
a0 s 2
ou encore : C (s) G. avec a 0 7536
b0 s b0 0
- A l’aide de l’explorateur de Windows, repérer, sous le répertoire SYM du projet TrainingHLA, le fichier
de paramètres s_TF20.par et l’éditer à l’aide du NotePAD afin que les paramètres prennent les valeurs
suivantes :
a 0 50,1.10 8 a 0 50.1e8
b0 58,8.10 b0 58.1e8
8
ce qui, en syntaxe SPICE donne :
b 15,5.10 5 b 15.55e5
1 1
- Lancer la simulation et visualiser, dans Ezwave, la réponse indicielle ( courbe Vout en fonction du
temps ) et les régimes harmoniques ( diagramme de BODE de Vout ) du système.
- Dans la fenêtre EZwave mesurer la valeur de Vout en régime continu ( pour Vin = 24V ) que l’on
notera [Vout] final et la comparer à la valeur théorique 0,75x24 = 18V . Utiliser l’outil de mesure ( icône
Open Measurement Tool ) pour déterminer le temps d’établissement ( Settle Time )
[Vout] final =
Settle Time =
- Toujours dans la fenêtre EZwave, visualiser les régimes harmoniques (diagramme de BODE de Vout)
du système. Utiliser l’outil de mesure ( icône Open Measurement Tool ) pour déterminer sa marge de
Gain ( Gain Margin ) et sa marge de phase ( Phase Margin ).
Gain Margin =
Phase Margin =
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en Fly_Corr_Laplace et utiliser la commande Create Design ( menu contextuel
lié à ce nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les
précédents schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est Fly_Corr_Laplace et ce, à
l’aide du menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner
Fly_Corr_Laplace afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) les modèle s_TF20 et s_TF11 de la librairie func.h et les
placer sur le schéma à l’aide d’un « drag & drop »..
- Editer le schéma tel qu’il est fourni ci-dessous :
- A l’aide de l’explorateur de Windows, repérer, sous le répertoire SYM du projet TrainingHLA, le fichier
de paramètres s_TF11.par et l’éditer à l’aide du NotePAD afin que les paramètres prennent les valeurs
suivantes :
1
G 0.37
2
a 0 7536
b0 0
- Editer les mêmes analyse harmonique et temporelle que celles du schéma précédent.
- Lancer la simulation et procéder aux mêmes mesures que précédemment dans EZwave :
Réponse temporelle :
[Vout] final =
Settle Time =
Régimes harmoniques :
Gain Margin =
Phase Margin =
- Dans la fenêtre DxDesigner, utiliser le menu File – New – Schematic afin de créer un nouveau schéma.
Un nouveau schéma, nommé Schematic1, apparaît dans la sous-fenêtre Navigator, sous l’onglet Project
et sous le répertoire Blocks.
- Renommer le schéma en Fly_BF_Laplace et utiliser la commande Create Design ( menu contextuel lié
à ce nouveau design ) afin de le convertir en Design et le retrouver au même niveau que les précédents
schémas.
- Définir sous l’onglet Simulation, le fait que le nouveau Testbench actif est Fly_BF_Laplace et ce, à
l’aide du menu Setup Setting ( Ctrl + Alt + G ). Dans la fenêtre Settings, sous Designs sélectionner
Fly_BF_Laplace afin qu’il devienne le Top level block
- Toujours dans la fenêtre Navigator de DxDesigner, sous l’onglet Simulation, sélectionner, dans
librairies de modèles Spice ( Spice Libraries ) les modèle s_TF20 , s_TF11 et s_SUBTR de la librairie
func.h et les placer sur le schéma à l’aide d’un « drag & drop ». Au besoin affecter à ce dernier modèle
le symbole gen_subtract de la librairie de symboles SystemModelingBlock
- Editer le schéma tel qu’il est fourni ci-dessous :
- Editer les mêmes analyse harmonique et temporelle que celles du schéma précédent.
Settle Time =
Régimes harmoniques :
Bande passante (-3dB) =
Gain statique =
Commentaires :
- Fermer la fenêtre Ezwave ainsi que l’édition du schéma Fly_BF_Laplace et « fermer » DxDesigner.
Fin de l’exercice n° 5