-> contrôle de la profondeur de mis à plat
..........................................
Utilisation simple du simulateur TSIM
Pour la réalisation de circuits intégrés, le concepteur est supporté par un ensemble de logiciels d'aide à la conception. La méthodologie suivie comporte des règles précises qui aboutissent à la validation du circuit en vue d'être fabriqué.
Avant de créer le circuit proprement dit, il faut, dans un premier temps, établir un cahier des charges. Ce cahier des charges regroupe l'ensemble des spécifications du circuit (prix, tenue en tension, tension d'alimentation, immunité au bruit, dépendance en température,...). Ces spécifications sont établies sur la base d'un compromis entre les exigences du client et les possibilités du concepteur.
Une fois le cahier des charges établi, le concepteur passe à la phase de saisie de schéma. Cette phase s' appuie sur l'utilisation des outils TNED et TSED. Le circuit peut être alors simulé , par cellules , ou en entier , à l'aide du simulateur SPICE (s'il s'agit de conception analogique) ou TSIM (dans le cas de la conception logique).
Ce chapitre traite , plus particulièrement, du simulateur logique TSIM.
Fonctionnement des simulateurs logiques
Au cours des années précédentes, le fonctionnement des simulateurs logiques a énormément évolué. On a pu alors distinguer trois grandes familles de simulateurs.
Simulateurs booléens
Ce sont les premiers simulateurs qui ont été utilisés. Leur fonctionnement s' appuie sur l' algèbre de BOOLE.
L'inconvénient majeure de ces simulateurs est qu'ils ne tiennent pas compte des temps de propagation des portes logiques. Ils ne s' intéressent en fait , qu'à la fonctionnalité du circuit . Ils ont donc, vite, été remplacés par la génération suivante de simulateurs utilisant la méthode matricielle.
note :
pour la simulation de très gros circuit logiques , parfaitement SYNCHRONE , on a tendance à revenir aux Simulateurs booléens. ( la synchronisation permet de masquer le plus souvent les dispersions de temps de propagation ....à utiliser avec précaution !!! ) .
Simulateurs utilisant la méthode matricielle
Ces simulateurs analysent les états logiques (``0'' ou ``1'') des différentes équipotentielles du circuit au cours du temps. Le simulateur modélise, donc, la structure logique sous la forme d'une matrice à deux dimensions( contient Les états logiques des équipotentielles).
Ces deux dimensions sont :
- Le temps
- le N0 de l équipotentielle
Considérons la structure logique suivante constituée de trois portes inverseuses montées en cascade:
N1, N2, N3 et N4 sont des équipotentielles du circuit logique
(Remarque: ces trois portes élémentaires montées en cascade constituent une porte inverseuse introduisant un retard égal à la somme des temps de propagation des trois portes).
Ici, la matrice est donc de la forme:
0us | 100us | 200us | 300us | 400us | 500us | temps | |
N1 | 0 | 0 | 1 | 1 | 0 | 0 | |
N2 | X | 1 | 1 | 0 | 0 | 1 | 1 |
N3 | X | X | 0 | 0 | 1 | 1 | 0 |
N4 | X | X | X | 1 | 1 | 0 | 0 |
Ces simulateurs ont été vite dépassés à cause de la capacité de mémoire limitée des ordinateurs , et du temps de calcul nécessaire .
En effet si le circuit logique est constitué de beaucoup d' équipotentielles( par exemple 1million d' équipotentielles* 10000 pas de temps ou plus ) , on dépasse la capacité de mémoire RAM ... etc .
Simulateurs utilisant la méthode événementielle ex : TSIM
Dans les simulateurs précédemment cités, les calculs sont périodiques. La période de calcul constitue ce que l'on appelle le pas de la simulation. L'inconvénient avec ces simulateurs est qu'ils procèdent à des calculs même si l'état logique du circuit n'a pas évolué.
La méthode événementielle repose sur le fait que le simulateur scrute en permanence les états logiques du circuit.
Le simulateur procède à des calculs , uniquement , s'il y a un événement susceptible de modifier l'état logique du circuit.
L'intérêt des simulateurs utilisant la méthode événementielle est évident: ils optimisent les temps de calculs, et la capacité de mémoire RAM nécessaire .
En effet, ils ne font que les calculs nécessaires. Ces simulateurs sont actuellement le plus utilisés dans le marché de la la microélectronique en raison de leur grande capacité de calculs. Ils peuvent simuler soit au niveau de la porte , soit au niveau de modèle comportementaux logiques ( VHDL , ....) .
Étapes de la simulation logique
La simulation logique passe par une succession d'étapes bien définies:
1. La saisie de schéma sous tned . Exemple: tned toto
(ne pas oublier de faire un CHEck SHEet avant de sortir).
2. La mise à plat destinée à préparer la phase de simulation
(tapez texp suivi du nom du schéma. Exemple: texp toto).
3. La génération d'un fichier qui va regrouper toutes les commandes nécessaires à la simulation
(pour créer ce fichier, tapez jed suivi du nom du fichier).
Exemple: jed sim_script_toto).
4. Le lancement de la simulation en tapant la commande tsim.
Le simulateur tsim a besoin de trois arguments: le nom du schéma saisi sous TNED, le mode d'utilisation (minimum, typique ou maximum) qui permet de fixer les temps de propagation et, enfin, le fichier regroupant les commandes nécessaires à la simulation.
Il faut, donc, taper tsim nom_schéma mode_utilisation fichier_de_commandes
(Exemple: tsim toto typ sim_script_toto).
Le fichier de commandes
Avant de lancer la simulation, il vaut mieux ( conseillé mais pas obligatoire ) générer un fichier qui regroupe l'ensemble des commandes nécessaires à la simulation: il suffit de taper jed suivi du nom que vous voulez donner à votre fichier
(Ex: jed sim_script_toto).
Une fenêtre apparaît à l'écran. C'est dans cette fenêtre que vont être saisies les commandes de base qui contrôleront le simulateur TSIM.
Ces commandes de base sont les suivantes:
- SWItches LISt {Change/Periode/State/Value}:
* Change: La commande SWItches LISt Changeajoute une nouvelle ligne dans la fenêtre de résultats chaque fois qu'un changement d'état est observé dans le circuit logique.
* Periode: La commande SWItches LISt Periodeajoute une nouvelle ligne dans la fenêtre de résultats à chaque période défini par la commande PERIOD LIST.
* State: La commande SWItches LISt Stateaffiche les états logiques accompagnés de leur force logique dans la fenêtre de résultats (ex :``1s'').
* Value: La commande SWItches LISt Valueaffiche les états logiques dans la fenêtre de résultats (ex :``1'').
- LIST {Change/value } {Hex/Binary/Decimal} signal_names :
* Change/value: ces options ont déjà été définies plus haut
* Hex/Binary/Decimal: ces deux options définissent la nature des signaux
(Ex:
LIST Bin I1 I2 OUT.
Cette commande définit les signaux I1, I2 et OUT comme étant des signaux binaires).
- VIEW SHEET:
Cette commande permet d'afficher dans la fenêtre contexte le schéma saisi sous TNED correspondant à la simulation réalisée.
- FORCe {Abs/Cur} name value time {Once/ REpeat} [stop_time]:
Cette commande définit les signaux la valeur des signaux logique d' entrée en fonction du temps .
* Abs : le temps est compté à partir de l'origine des temps 0.
* Cur : le temps est compté à partir de la position courante sur l'échelle des temps.
* name : cet argument correspond au nom du signal que l'on veut définir.
* value : cet argument correspond à l'état logique donné signal.
* time : cet argument définit l'instant où le signal est appliqué.
* once : indique qu'il faut forcer le signal à une valeur fixée une seule fois.
* Repeat : indique qu'il faut forcer le signal à une valeur fixée n fois (suivant la période d' horloge) .
* stop_time : argument optionnel qui traduit l'instant choisi pour arrêter cette répétition.
Ex:
FORCE a IN1 1s 5 R
(force l'entrée IN1 à 1S et répète cette opération toutes les 5 nanosecondes en commençant à l'instant t=0)
- TRAce signal_names:
* signal_names: nom des différents signaux à visualiser.
Ex: TRA net1 net2 net3
(trace les timings des signaux net1, net2, et net3.)
- SPIke CHECK {ON-OFF}
teste si il y a des spikes pour délivrer des warnings ou non.
Ex:
SPI CHE ON
- SPIke MODel {Nosuppress/Suppress/Igen/Pessimistic}
* Nosuppress: des warnings sont générés si la commande SPI CHE ON est active mais les spikes seront propagés.
* Suppress: des warnings sont générés si la commande SPI CHE ON est active mais les spikes ne seront pas propagés.
* Igen: des warnings sont générés si la commande SPI CHE ON est active et les spikes sont propagés de manière aléatoire.
* Pessimistic: des warnings sont générés si la commande SPI CHE ON est active et les spikes sont propagés de manière aléatoire mais la zone où apparaît le spike s'accroît.
Ex:
SPI MOD Nosuppress
- SPIke MIN min_spike_value
* min_spike_value: valeur que l'on fixe pour générer un spike dès qu'elle est inférieure aux temps de propagation.
Ex: SPIke MIN 0.01
(spike généré quand 0.01 ns < temps de montée)
-SCAle TRAce TIMe time_scale
* time_scale: nombre de points à tracer par unité usuelle de temps (ici nanoseconde)
Ex: SCA TRA TIM 4
- CLOck PERiod time_period
* time_period: c'est la periode choisie pour appliquer la commande FORCE. Elle est donnée en unité usuelle
Ex: CLO PER 100
(si la commande FORCE est répétée, elle le sera toutes les 100 unités usuelles.)
- RUN time [{Abs/Cur}]
* time: instant d'arrêt de la simulation (exprimé dans ce cas en nanosecondes)
* Abs : le temps est traité en absolu: à partir de t=0
* Cur : time représentera la durée, la simulation débutant à partir de l'instant où on se trouve.
Ex: RUN 100 C
(simulation du circuit jusqu'à 100 ns + instant présent)
Cette commande démarre la simulation. Le résultat peut être obtenu sous forme de diagramme temporel ou sous forme de fichier texte. Pour passer de l' un à l'autre, il faut inclure la commande , ( ou taper par la suite ) ,
POP RES.
Pour lancer la simulation, se placer sur une fenêtre UNIX et taper :
tsim nom_schéma {Min/Typ/Max} sim_script_nom_schéma.
Ce qui voudra dire qu'au préalable, qu'un schéma de nom nom_schéma a été créé et que le fichier script contenant les différentes commandes à utiliser a été créé. Min, Typ et Max définissent les valeurs avec lesquelles la simulation doit être faite.
Exemple
Soit une porte ET:
Pour la simuler, le fichier script suivant a été créé:
#
SWItche LISt Change
SWItche LISt State
#
VIEw SHEet
#
LIST Bin I1 I2 OUT
# TRACE I1 I2 OUT
#
FORCE a I1 0s 0
FORCE a I2 0s 0
#
clock period 10
#
FORCE a I1 1s 0 repeat
FORCE a I1 0s 5 repeat
#
#
FORCE a I2 1s 12.5
FORCE a I2 0s 42.5
FORCE a I2 1s 72.5
FORCE a I2 0s 102.5
#
POP Res
#
SPIke MODel Suppress
#
# SPIke MODel Nosuppress Suppress Igen Pessim
#
# SPIke Min 0.1
#
# SPIke Check ON OFF
# SCALE Trace Time 4
#
run 110
#
# End of DO
Le résultat de la simulation fera apparaître ceci:
-> utilisation simple
-> commandes de base
-> utilisation avancée
-> modèles : portes ... , bascules D, ...
-> Tpd , Timing( setup, Hold, MinPulse, Spikes, ...)
-> comportemental
-> visualisation des résultats .
-> Postprocessings ...
....................................
-> Manuel de Référence