# SPICE (logiciel)

SPICE (Simulation Program with Integrated Circuit Emphasis) est un logiciel libre de simulation généraliste de circuits électroniques analogiques. Il permet la simulation au niveau du composant (résistances, condensateurs, transistors) en utilisant différents types d'analyses :
* point de polarisation (courant continu) ;
* analyse fréquentielle pour petits signaux et bruit (courant alternatif linéaire) ;
* transitoire.
Les logiciels Easyspice, Gspiceui dans la suite gEDA, LTspice (en) ou PSpice (en) sont des interfaces graphiques généralistes pour l'utilisation de SPICE. Le logiciel Gwave se concentre sur la visualisation des courbes des signaux analogiques fournis par SPICE.
Il est également à noter l'évolution de Spice qu'est Ngspice (en), plus moderne, plus puissant et plus récent.

## Introduction

Contrairement aux conceptions au niveau de cartes électroniques intégrant des composants discrets, il n'est pas possible d'essayer un schéma de circuits intégrés sur breadboard en phase de conception avant leur fabrication. En outre, les coûts élevés des masques photolithographiques et d'autres conditions préalables à la fabrication font qu'il est essentiel de concevoir le circuit de manière qu'il soit aussi parfait que possible avant que le circuit intégré ne soit lancé en fonderie pour la première fois.
La simulation du circuit avec SPICE est la méthode standard de l'industrie pour vérifier le fonctionnement d'une conception au niveau du transistor avant de s'engager dans la fabrication d'un circuit intégré. Les simulateurs SPICE aident à prédire le comportement du circuit intégré dans différentes conditions de fonctionnement, telles que différents niveaux de tension et de courant, des variations de température et du bruit.
Les conceptions de circuits au niveau de la carte peuvent souvent être montées sur une carte d'essai pour être testées. Même avec une carte d'essai, certaines propriétés du circuit peuvent ne pas être précises par rapport à la carte de circuit imprimée finale, comme les résistances et capacités parasite, dont les effets peuvent souvent être estimés avec plus de précision à l'aide de la simulation. Par ailleurs, les concepteurs peuvent souhaiter disposer de plus d'informations sur le circuit que celles disponibles à partir d'une maquette unique. Par exemple, les performances du circuit sont affectées par les tolérances de fabrication des composants. Dans ce cas, il est courant d'utiliser SPICE pour effectuer des simulations Monte Carlo de l'effet des variations des composants sur les performances, une tâche qui n'est pas réalisable en effectuant des calculs à la main pour un circuit d'une complexité appréciable.
Les programmes de simulation de circuits, dont SPICE et ses dérivés sont les plus importants, prennent un texte netlist décrivant les éléments du circuit (transistors, résistances, condensateurs, etc.) et leurs connexions, et traduisent cette description en équations à résoudre. Les équations générales produites sont des systèmes d'équations algébriques différentielles (en) non linéaires qui sont résolues à l'aide de méthodes d'intégration implicite, de méthode de Newton et de techniques de matrice creuse.

## Historique

SPICE a été créé à l'université de Californie (Berkeley) au début des années 1970 par l'équipe de Ron Rohrer, dont en particulier Larry Nagel.
C'est devenu par la suite le standard des simulateurs analogiques. Trois versions se sont succédé dont la dernière, SPICE3, date de 1985.
Il est disponible sous licence BSD.
Différents avatars commerciaux existent depuis les années 1980. Parmi les plus célèbres, on peut citer IS_SPICE, PSpice, MICROCAP, HSpice, ELDO, etc.
Aujourd'hui le paysage de la simulation analogique tend à se modifier lentement avec le développement de langages de description matérielle évolués tels que le Verilog-A et le VHDL-AMS. Ceux-ci permettent une plus grande flexibilité de modélisation en facilitant la modélisation mixte analogique-numérique et en autorisant l'écriture d'un modèle sous la forme d'un système d'équations différentielles quelconques. On peut également signaler l'existence d'une extension AMS à SystemC qui a été spécifiée par l'Open SystemC Initiative (OSCI) et implémentée pour l'institut Fraunhofer pour les circuits intégrés.

## Successeurs
### Successeurs open-source

Aucune version plus récente de Berkeley SPICE n'a été publiée après la version 3f5 en 1993. Depuis lors, les continuations open-source ou académiques de SPICE comprennent : XSPICE, développé au Georgia Tech, qui a ajouté des "modèles de code" mixtes analogiques/numériques pour la simulation comportementale ; CIDER (précédemment CODECS), développé par UC Berkeley et Oregon State University, qui a ajouté la simulation de dispositifs à semi-conducteur (en) ; Ngspice (en)$^,$, basé sur SPICE 3f5 ; WRspice, une réécriture en C++ du code original de spice3f5. D'autres simulateurs libres non développés par des universitaires sont QUCS, QUCS-S, Xyce, et Qucsator.

### Versions commerciales et produits dérivés

Berkeley SPICE a inspiré et servi de base à de nombreux autres programmes de simulation de circuits, dans les universités, dans l'industrie et dans les produits commerciaux. La première version commerciale de SPICE est ISPICE, une version interactive sur un service de multipropriété, National CSS (en). Les versions commerciales les plus connues de SPICE comprennent HSPICE (commercialisé à l'origine par Ashawna et Kim Hailey de Meta Software, mais appartenant maintenant à Synopsys) et PSPICE (en) (appartenant maintenant à Cadence Design Systems). L'industrie des circuits intégrés a rapidement adopté SPICE et, jusqu'à ce que les versions commerciales soient bien développées, de nombreuses sociétés de conception de circuits intégrés disposaient de versions propriétaires de SPICE.
Aujourd'hui, quelques fabricants de circuits intégrés, généralement les plus grandes entreprises, ont des groupes qui continuent à développer des programmes de simulation de circuits basés sur SPICE. Parmi ceux-ci figurent ADICE chez Analog Devices, LTspice (en) chez Analog Devices (disponible au public en tant que logiciel gratuit), MCSPICE, suivi de Mica chez Freescale Semiconductor, aujourd'hui NXP Semiconductors, et TINA-TI (en) chez Texas Instruments. LTspice et TINA-TI sont tous deux fournis avec les modèles de leur société respective$^,$. D'autres entreprises disposent de simulateurs de circuits internes qui ne sont pas directement basés sur SPICE, notamment PowerSpice chez IBM, TITAN chez Infineon Technologies, Lynx chez Intel Corporation, et Pstar chez NXP Semiconductors également.

## Fonctionnement

SPICE utilise des composants élémentaires modélisés par un ensemble d'équations. Par exemple, pour une résistance, on a tout simplement la loi d'Ohm $U=RI$.
Le fait de relier ces composants entre eux permet de créer un système d'équations à l'aide des lois de Kirchhoff. Celui-ci est linéarisé localement autour du point de polarisation courant si besoin et résolu. En non-linéaire, il faut alors itérer jusqu'à convergence (point fixe) avant de passer au pas de temps suivant. Il arrive toutefois que le système ne converge pas, lorsqu'il est mal conditionné ce qui est souvent provoqué par des nœuds en haute impédance.

## Caractéristiques et structure du programme

SPICE est devenu populaire parce qu'il contenait les analyses et les modèles nécessaires à la conception des circuits intégrés de l'époque, et qu'il était suffisamment robuste et rapide pour être pratique à utiliser. Les précurseurs de SPICE avaient souvent un seul objectif : le BIAS, par exemple, simulait les points de fonctionnement des circuits de transistors bipolaires ; le programme SLIC programme ne faisait que des analyses de petits signaux (en). SPICE combinait des solutions de points de fonctionnement, des analyses transitoires et diverses analyses de petits signaux avec les éléments de circuit et les modèles de dispositifs nécessaires pour simuler avec succès de nombreux circuits.

### Analyses

SPICE2 comprend les analyses suivantes :
* Analyse CA (analyse linéaire petits signaux (en) dans le domaine des fréquences)
* Analyse DC (calcul non linéaire du point de repos) ;
* Analyse de la courbe de transfert CC (une séquence de points de fonctionnement non linéaires calculés en balayant une tension ou un courant d'entrée, ou un paramètre de circuit) ;
* Analyse de bruit (une analyse de petits signaux réalisée à l'aide d'une technique de matrice adjointe qui additionne des courants de bruit non corrélés à un point de sortie choisi) ;
* Analyse de la fonction de transfert (calcul du gain et de l'impédance d'une entrée/sortie à petit signal) ;
* Analyse transitoire (solution à grand signal dans le domaine temporel d'équations algébriques différentielles non linéaires).
Étant donné que SPICE est généralement utilisé pour modéliser des circuits non linéaires, les analyses de petits signaux sont nécessairement précédées d'un calcul du point de repos auquel le circuit est linéarisé. SPICE2 contient également du code pour d'autres analyses de petits signaux : analyse de sensibilité, analyse pôle-zéro (en) et analyse de distorsion à petit signal. L'analyse à différentes températures est réalisée en mettant automatiquement à jour les paramètres du modèle de semi-conducteur en fonction de la température, ce qui permet de simuler le circuit à des températures extrêmes.
D'autres simulateurs de circuits ont depuis ajouté de nombreuses analyses au-delà de celles de SPICE2 pour répondre à l'évolution des besoins de l'industrie. Des balayages paramétriques ont été ajoutés pour analyser les performances du circuit en cas de modification des tolérances de fabrication ou des conditions de fonctionnement. Des calculs de gain de boucle et de stabilité ont été ajoutés pour les circuits analogiques. Des analyses d'équilibre harmonique (en) (en anglais : Harmonic balance) ou de régime permanent dans le domaine temporel ont été ajoutées pour la conception de circuits RF et à condensateurs commutés. Toutefois, aucun simulateur de circuit du domaine public contenant les analyses et les fonctions modernes nécessaires pour succéder à SPICE en termes de popularité n'a encore vu le jour.
Il est très important d'utiliser des analyses appropriées avec des paramètres soigneusement choisis. Par exemple, l'application d'une analyse linéaire à des circuits non linéaires doit être justifiée séparément. De même, l'application de l'analyse transitoire avec des paramètres de simulation par défaut peut conduire à des conclusions qualitativement erronées sur la dynamique du circuit.

### Modèles de dispositifs

SPICE2 comprend de nombreux modèles compacts (en) de dispositifs semi-conducteurs : trois niveaux de modèle MOSFET, un modèle combiné Ebers-Moll et Gummel-Poon, un modèle JFET et un modèle pour une diode de jonction. En outre, il comportait de nombreux autres éléments : résistances, condensateurs, inductances (y compris couplage), tension et source de courant indépendantes, ligne de transmission idéale, composants actifs et sources contrôlées en tension et en courant.
SPICE3 a ajouté des modèles MOSFET plus sophistiqués, rendus nécessaires par les progrès de la technologie des semi-conducteurs. En particulier, la famille de modèles BSIM (en) a été ajoutée, qui a également été développée à l'UC Berkeley.
Les simulateurs commerciaux et industriels SPICE ont ajouté de nombreux autres modèles de dispositifs au fur et à mesure que la technologie progressait et que les modèles antérieurs devenaient inadéquats. Pour tenter de normaliser ces modèles afin qu'un ensemble de paramètres de modèle puisse être utilisé dans différents simulateurs, un groupe de travail industriel a été formé, le Compact Model Council (en), pour choisir, maintenir et promouvoir l'utilisation de modèles normalisés. Les modèles standard actuels comprennent BSIM3, BSIM4, BSIMSOI, PSP, HICUM et MEXTRAM.

### Entrée et sortie : Listes netlist, capture et traçage de schémas

SPICE2 prend en entrée une netlist textuelle et produit en sortie des listings imprimés à la machine à écrire, ce qui correspond à l'environnement informatique de 1975. Ces listes sont soit des colonnes de nombres correspondant à des sorties calculées (typiquement des tensions ou des courants), soit des caractères "plots". SPICE3 conserve la liste des réseaux pour la description des circuits, mais permet de contrôler les analyses à partir d'une interface en ligne de commande similaire à l'interpréteur en C shell. SPICE3 a également ajouté un système de traçage de base X Window System, à mesure que les UNIX et les stations de travail d'ingénierie devenaient courants.
Les fournisseurs et divers projets de logiciels libres ont ajouté des frontals de capture de schémas (en) à SPICE, ce qui permet de dessiner un schéma du circuit et de générer automatiquement la liste netlist et de la transférer à divers backends SPICE. Des interfaces graphiques ont également été ajoutées pour sélectionner les simulations à effectuer et manipuler les vecteurs de sortie de tension et de courant. En outre, des utilitaires graphiques très performants ont été ajoutés pour visualiser les formes d'onde et les graphiques des dépendances paramétriques. Plusieurs versions gratuites de ces programmes étendus sont disponibles.

## Netlists SPICE

Les netlists SPICE sont les fichiers d'entrée du simulateur. Ils comportent la liste des composants avec (dans l'ordre) :
* leur type et référence (R3 est une résistance) ;
* les nœuds auxquels ils sont reliés (deux pour une résistance, trois pour un transistor bipolaire...) ;
* la valeur dans les cas simples ;
* éventuellement le modèle (jeu de paramètres utilisés) ;
* éventuellement une liste de paramètres permettant d'altérer le modèle utilisé.

### Exemple de netlist SPICE

On a ici un générateur sinusoïdal de 1 V à 1 kHz à l'entrée d'un circuit RC passe-bas.

## Utilisation de SPICE au-delà de la simulation électronique

Comme SPICE résout généralement des équations algébriques différentielles non linéaires, il peut être appliqué à la simulation au-delà du domaine électrique.
Les plus importantes sont les simulations thermiques, car les systèmes thermiques peuvent être décrits par des éléments de circuit forfaitaires correspondant aux éléments électroniques SPICE (capacité thermique → capacité, conductance/résistance thermique → conductance/résistance, température → tension, flux de chaleur ou chaleur générée → courant). Les systèmes thermiques et électroniques étant étroitement liés par la dissipation de puissance et les systèmes de refroidissement, la simulation électrothermique est aujourd'hui prise en charge par les fabricants de dispositifs semi-conducteurs qui proposent des modèles (de transistors) avec des nœuds électriques et thermiques. On peut donc obtenir la dissipation de puissance électrique, qui entraîne un auto-échauffement provoquant des variations de paramètres, et l'efficacité du système de refroidissement en une seule simulation.
SPICE peut très bien simuler la partie électronique d'une commande de moteur. Cependant, il décrira tout aussi bien le modèle électro-mécanique du moteur. Encore une fois, ceci est réalisé en faisant correspondre les éléments mécaniques aux éléments électriques (couple → tension, vitesse angulaire → courant, coefficient de frottement visqueux → résistance, moment d'inertie → inductance). Ainsi, le modèle final n'est constitué que d'éléments de circuits forfaitaires compatibles avec SPICE, mais on obtient des données mécaniques en même temps que des données électriques au cours de la simulation.
La modélisation électromagnétique est accessible à un simulateur SPICE via la méthode PEEC (circuit équivalent à éléments partiels). Les équations de Maxwell ont été cartographiées, le RLC, l'effet Skin, les matériaux diélectriques ou magnétiques et les champs incidents ou rayonnés ont été modélisés.
Cependant, en 2019, SPICE ne peut pas être utilisé pour "simuler la photonique et l'électronique ensemble dans un simulateur de circuit photonique" et il n'est donc pas encore considéré comme un simulateur de test pour les circuits intégrés photoniques.
Les circuits microfluidiques ont été modélisés avec SPICE en créant un FET pneumatique.
SPICE a été appliqué pour modéliser l'interface entre les systèmes biologiques et électroniques, par exemple comme outil de conception pour la biologie synthétique et pour le prototypage virtuel de biocapteurs et de laboratoires sur puce.
SPICE a été appliqué en recherche opérationnelle pour évaluer des chaînes d'approvisionnement perturbées.