# Simulateur (électronique)

Un simulateur électronique est un logiciel modélisant le fonctionnement de circuits électroniques afin de pouvoir prévoir et analyser leur comportement. Il existe différents niveaux de simulation, selon le degré de finesse et l'échelle de la simulation.

## Simulation de composants électroniques

Le domaine industriel utilisant des outils de simulation est celui de la conception de circuits électroniques. Un simulateur permet, par exemple, de vérifier la fonctionnalité logique d'un circuit avant de passer aux étapes suivantes de la conception.

### Simulateur numérique

La simulation du comportement d'un circuit numérique nécessite une description du circuit à base d'un langage de description matériel (HDL), par exemple le Verilog ou le VHDL. Cette description peut avoir différents degrés de finesse ou niveaux de description:
* description comportementale : on décrit le circuit à l'aide de fonctions de haut niveau (équation mathématique, etc.) ;
* description structurelle : on décrit le circuit par interconnexion de modules plus petits (décodeur, multiplexeur, mémoire, opérateur logique ou arithmétique, etc.) ;
* Register Transfer Level : le système est décrit comme un ensemble d'opérations combinatoires et de registres (élément séquentiel de base)
* portes : l'ensemble du système est décomposé en portes logiques élémentaires (description structurelle au niveau porte).
Le fonctionnement d'un simulateur numérique peut être assimilé à un mécanisme de planification. Lorsqu'un signal est modifié (on parle d'événement), on réévalue toutes les équations logiques qui en dépendent. Chacune d'entre elles est susceptible de piloter d'autres signaux et de provoquer à son tour d'autres évènements. Le moteur de simulation enregistre et planifie les pilotes à venir et les traite par ordre d'occurrence. Lorsqu'un signal possède simultanément plusieurs pilotes, le simulateur effectue une résolution de manière à arbitrer le conflit en comparant la force des différents pilotes. Il s'agit d'une gestion simplifiée de la notion d'impédance, suffisante pour les applications numériques. Si le signal est modifié, l'évènement correspondant est alors traité itérativement jusqu'à ce que toutes les conséquences soient traitées.
Comme un circuit réel est utilisé au sein d'un système, il est nécessaire de modéliser celui-ci de manière comportementale afin de pouvoir tester le composant au cours d'une simulation. Dans le jargon de la conception, on nomme ce modèle testbench ou banc d'essai. Celui-ci comportera typiquement un pilotage de la réinitialisation, de l'horloge et des interfaces du circuit.

### Simulateur analogique

Un simulateur analogique utilise une modélisation du circuit électronique sous la forme d'un système d'équations différentielles. Ces équations sont obtenues en regroupant :
* les lois de Kirchhoff : expression de la conservation du courant et de la tension dans la topologie en graphe du circuit ;
* la loi d'Ohm ou autres équations caractéristiques statiques et dynamiques des composants utilisées.
* les signaux de stimulation, correspondant aux sources (alimentations et signaux d'entrée).
Pour connaître le comportement transitoire du circuit, le système d'équation est résolu sous forme différentielle (typiquement par la méthode d'Euler ou de Runge-Kutta. Pour déterminer le point de polarisation du circuit, la simulation est faite en statique. Il s'agit alors de résoudre un système d'équation non différentielles mais souvent non linéaires. Enfin, pour déterminer le comportement en petits signaux (linéarisé) du système autour du point de polarisation, on utilise une résolution fréquentielle permettant d'avoir une simple résolution de système linéaire à variable complexe pour chaque fréquence, grâce aux propriétés de la transformée de Fourier.
* Entrées du simulateur :
** SPICE
** Verilog-A
** VHDL-AMS

### Simulateur mixte

Un simulateur mixte regroupe la simulation numérique et analogique au sein d'un même moteur de simulation. Cela pose certains problèmes spécifique de gestion du temps, la résolution des équations différentielles relatives aux variables analogiques devant être synchronisée par rapport aux événements numériques discrets. Il ne s'agit pas d'une co-simulation.
* Entrées du simulateur :
** SPICE
** VHDL
** VHDL-AMS
** Verilog
** Verilog-A
** Verilog-AMS
** SMASH