}}}
[[PageOutline]]
= 1.1 Introduction =
Dans ce premier TP, nous allons utiliser le simulateur électrique '''ELDO''' et l'interface de
visualisation '''XELGA''' pour extraire les caractéristiques statiques et dynamiques de l'inverseur
CMOS. Nous allons aussi étudier les différents paramètres qui influencent les temps de propagation
de cet inverseur. Pour ce TP vous rédigerez un compte rendu détaillé des résultats
obtenus et de leurs significations.[[BR]] [[BR]]
'''XELGA''' ne fonctionnant que dans un environnement graphique en 256 couleurs il faut
créer un nouveau bureau virtuel avec la commande ''vncloop''. Pour utiliser les outils '''ELDO''' et
'''XELGA''' vous devez être sur une machine de type Solaris (ex : rachmaninov). Un script d'initialisation
des variables d'environnement fonctionnant avec l'interpréteur de commande ''tcsh''
vous permet d'avoir accès aux outils.
En résumé en début de séance effectuez dans l'ordre :
1. dans un terminal lancez la commande ''vncloop'' qui ouvre un bureau virtuel avec un
terminal,
{{{
> vncloop
}}}
2. dans ce nouveau terminal se loguer sur une machine Solaris en utilisant la commande :
{{{
> ssh ,
}}}
3. au cas où l'interpréteur de commande de l'étudiant n'est pas le ''C-SHELL'', taper
{{{
> tcsh
}}}
pour changer de shell,
4. faites un source du script de configuration de l'environnement ''eldo.csh''.
{{{
> source ~trncomun/TP/2007/TP4/Fichiers/eldo.csh
}}}
= 1.2 Caractéristiques du transistor MOS =
[[Image(mos_tr.png, nolink)]]
Recopiez le fichier ''/users/enseig/trncomun/TP/2007/TP4/Fichiers/trMos/polar_nmos.spi''.
Ce fichier décrit un transistor N. Vous vous inspirerez de ce fichier pour décrire un transistor P.[[BR]]
Dans un premier temps simuler et visualiser les courbes du courant en fonction de la tension des transistors N et P :
* ''IDS'' en fonction de ''VGS'', pour ''VDS'' = ''VDD'' (''VGS'' varie de ''VSS'' à ''VDD'').[[BR]]
Déterminer les tensions de seuil ''Vtn'', ''Vtp'' des deux types de transistors graphiquement et avec l'instruction '''.print VT(Mxx)'''.
* ''IDS'' en fonction de ''VDS'', pour différentes valeurs de ''VGS'' (''VDS'' varie de ''VSS'' à ''VDD'').[[BR]]
Identifier les différents régimes du transistor : régime bloqué, linéaire et saturé du transistor.
[[Image(tableau_mode.png, nolink)]]
On prendra comme dimensions pour les transistors :
* ''Ln'' = 0.35 µm, ''Wn'' = 1.4 µm
* ''Lp'' = 0.35 µm, ''Wp'' = 2.9 µm
* ''VDD''=3.3V
'''NB:'''
* La première ligne d'un fichier eldo correspond au titre du circuit.
* Insérer au fichier '''ELDO''' le chemin d'accès aux modèles des transistors par la primitive :
{{{
.include techno/labo/035/models/mosn_mosp.wc
}}}
(pour modèle ''"Worst Case"'').
* utliser la commande '''.DC''' pour effectuer une analyse statique.
* utliser la commande '''.PLOT''' pour indiquer les noeuds à visualiser.
* pour la simulation :
{{{
> eldo fichier.spi
}}}
* pour la visualisation :
{{{
> xelga fichier.wdb
}}}
= 1.3 Les caractéristiques de l'inverseur CMOS =
Les régions de fonctionnement de l'inverseur CMOS:
[[Image(regions.png, nolink)]]
||RÉGION || transistor P || transistor N ||
||A || LINÉAIRE || OFF||
||B || LINÉAIRE || SATURÉ||
||C || SATURÉ || SATURÉ||
||D || SATURÉ || LINÉAIRE||
||E || OFF || LINÉAIRE||
La figure illustre les différentes régions de fonctionnement de l'inverseur CMOS.[[BR]]
Sachant que les courants qui traversent les transistors N et P en mode saturé sont définis par les équations suivantes :
[[Image(ids.png, nolink)]]
la tension de seuil Vseuil de l'inverseur peut être décrite par l'équation suivante :
[[Image(seuil.png, nolink)]]
[[Image(kn.png, nolink)]]
[[Image(kp.png, nolink)]]
où ''µn'', ''µp'' sont les mobilités des électrons et des trous respectivement et ''Cox'' est la capacité d'oxyde.
= 1.4 Simulation statique d'un inverseur CMOS =
Décrivez un inverseur dans un fichier au format '''SPICE''' ''.spi''.[[BR]]
On prendra comme dimension des transistors ceux de la partie 1.2. avec une tension ''VDD''=3.3V.
* Simuler et visualiser la fonction de transfert ''VOUT=f(VIN)'' d'un inverseur.
* Déterminer le seuil électrique de l'inverseur voir figure de la section 1.3.
* Pour des tailles raisonnables de ''Wn'' et ''Wp'', trouver le rapport ''Wp/Wn'' pour que le seuil soit égal à ''VDD''/2.
* les commandes '''.PARAM''' et '''.STEP''' pour faire varier ''Wp''.
* la commande '''.EXTRACT''' avec l'argument '''"yval"''' pour obtenir la tension de seuil pour chaque ''Wp''.
* On visualise le résultat de l'extraction avec '''XELGA''' ''fichier.ext.wdb''
Exemple d'utilisation de '''PARAM''' et '''STEP''' sur la valeur d'une capacite :
{{{
* Capacite C1 entre les noeuds a et b de valeur capa
C1 a b capa
*Declaration de capa comme variable
.PARAM capa=1pf
*Capa varie de 1pf a 10pf par pas de 0.1pf
.STEP PARAM capa 1pf 10pf 0.1pf}
}}}
Exemple d'utilisation '''EXTRACT''' :
{{{
*Si a=f(b), alors ceci donne la valeur de a pour b=0.5
.EXTRACT yval(v(a),0.5)
}}}
= 1.5 Simulation dynamique de l'inverseur CMOS =
Temps de montée, temps de descente, ''TPHL'' et ''TPLH'' d'un inverseur CMOS:
[[Image(tftr.png, nolink)]]
Les temps de montée et de descente, illustrés dans la figure, sont définis par les relations approximatives :
[[Image(tempsacces.png, nolink)]]
Où ''CL'' est la capacité de charge de l'inverseur.
''TPHL'' et ''TPLH'' peuvent être approximés de la façon suivante :
[[Image(tempsacces2.png, nolink)]]
Dans cette partie nous allons extraire les caractéristiques temporelles de l'inverseur CMOS.
Pour cela on effectue une analyse transitoire sur l'inverseur, équilibré statiquement, à vide (sans capacité de charge) et on observe les temps de propagation.
* Utiliser la commande '''.TRAN''' pour l'analyse transitoire
* Utiliser la source de tension '''PULSE''' pour générer le signal d'entrée. (voir ''"Eldo User's Manual"'').
* Mesurer ''TPLH ''et ''TPHL'' sous '''XELGA''', cela en utilisant le ''"Wave Processor"'' dans le menu ''"Page"'' avec la fonction '''"xval"'''.
== 1.5.1 Influence de la capacité de sortie ==
Nous avons vu dans la section 1.5 que les temps de montée et de descente dépendaient de la capacité en sortie de l'inverseur. [[BR]]
Pour fixer cette dernière à une valeur réaliste, une bonne estimation consiste à le charger avec 4 autres inverseurs comme le montre la figure et à déterminer la capacité équivalente.
Capacité de sortie :
[[Image(CapaSortie.png, nolink)]]
* Utiliser la commande '''.SUBCKT''' pour déclarer un modèle d'inverseur.
* Instancier 5 inverseurs comme présenté dans la figure.
* Effectuer une analyse transistoire du circuit.
* Mesurer les temps de propagation du premier inverseur et conserver ces valeurs.
Dans un nouveau fichier ''.spi'', retirer les 4 inverseurs de charge, et remplacer les par une capacité. [[BR]]
Nous allons determiner la capacité equivalente correspondant aux 4 inverseurs de sortie.
* Mesurer ''TPLH'' et ''TPHL'' en faisant varier la valeur de la capacité de sortie de 1fF à 100fF.
* Utiliser la commande .'''EXTRACT''' avec l'argument '''TPD'''.
* Tracer l'évolution de ''TPLH'' et de ''TPHL'' en fonction de la capacité de sortie. Comment évoluent-ils ?
* En comparant les temps de propagation, déterminer la valeur de la capacité équivalente pour les quatre inverseurs de charge.
Conserver la capacité de sortie équivalente aux 4 inverseurs pour les questions suivantes.
== 1.5.2 Equilibrage de l'inverseur ==
Pour la suite du TP, on prendra la configuration de base suivante :
* ''Ln'' = 0.35 µm
* ''Wn'' = 1.4 µm, ''Lp'' = 0.35 µm,
* ''C'' = capacité equivalente à l'entrée de quatre inverseurs
* ''Vdd'' = 3.3 volts
* un front de 0.5 ns
A faire:
* Vérifier sur les chronogrammes que la sortie de l'inverseur a bien commuté.
* Afin d'équilibrer cet inverseur, faire varier le rapport ''Wp''/''Wn''.
* Mesurer à chaque fois ''TPLH'' et ''TPHL''.
* Pour quel rapport ''Wp''/''Wn'' l'inverseur est-il équilibré ?
* Comparer ce rapport avec celui de la question précédente.
* Lequel doit-on garder ?
== 1.5.3 Influence de la durée du front ==
* En conservant la largeur de transistor P trouvée, mesurer ''TPLH'' et ''TPHL'' en faisant varier la valeur de la durée du front de 0.1 ns à 5 ns.
* Tracer l'évolution de ''TPLH'' et de ''TPHL'' en fonction de la durée du front.
* Donner vos conclusions.
== 1.5.4 Influence de la température ==
* Mesurer ''TPLH'' et ''TPHL'' en faisant varier la valeur de la température de 0 à 140°C.
* Tracer l'évolution de ''TPLH'' et de ''TPHL'' en fonction de la température.
* Donner vos conclusions.
== 1.5.5 Influence de la tension d'alimentation ==
* Mesurer ''TPLH'' et ''TPHL'' en faisant varier la valeur de la tension d'alimentation de 2 volts à 4 volts.
* Tracer l'évolution de ''TPLH'' et de ''TPHL'' en fonction de la tension d'alimentation.
* Donner vos conclusions.
== 1.5.6 Influence des Paramètres technologiques ==
* Mesurer ''TPLH ''et ''TPHL'' en changeant le fichier de paramètres dans la directive d'inclusion, de façon à étudier l'influence de la dispersion des paramètres du procédé de fabrication : ''worst case'', ''typic'',''best case''.
{{{
.include ~techno/labo/035/models/mosn_mosp.ty
}}}
puis
{{{
.include ~techno/labo/035/models/mosn_mosp.bc
}}}