# Simulation

## Je veux simuler mon circuit analogique. Quelles sont mes options?

Parmi les applications de la Suite gEDA, il y a deux simulateurs de circuits analogiques: ngspice et gnucap. Plus (un peu) en détail:

- Ngspice est un portage/nettoyage du SPICE 3f5 classique sur la plate-forme GNU/Linux. Il est pleinement fonctionnel, inclut des extensions XSpice (tels que des constructions SPICE 2 POLY) et une structure CIDER.
- Gnucap est un nouveau simulateur de circuit écrit depuis zéro. Il offre la possibilité d'effectuer des simulations basées sur les événements – de même qu'en temps –. C'est le travail de Al Davis, Professor of Electrical Engineering à l'Université Kettering. Si vous voulez le télécharger, assurez-vous de prendre la dernière version, disponible avec les liens des «·developement releases·» sur le site gnucap.

Les deux sont des programmes CLI (command line interface·; «·interface à ligne de commande·»), signifiant que vous intérragissez avec le simulateur en saisissant les commandes sur la ligne de commande. Cela signifie aussi que vous avez besoin d'apprendre le jeu de commandes spécifique au simulateur.

Si vous préférez une interface graphique, la nouvelle application GSpiceUI de gEDA fournit une jolie interface utilisateur graphique pour piloter les programmes de simulation. Néanmoins, GSpiceUI n'est pas un simulateur sortie-schema-vers-simulation complet comme LTSpice ou PSpice. Il fournit, à la place, un menu d'interface graphique qui vous vous aide à porter des commandes dont vous avez besoin pour effectuer vos simulations ngspice/gnucap.

## Qu'en est-il de tclspice? Qu'est ce que c'est? Dois-je l'utiliser?

Tclspice est un fork du développement de ngspice. Il a débuté en 2002. En principe, tclspice exportera le jeu de commande SPICE vers un API TCL, vous permettant d'embarquer des analyses SPICE en un programme TCL. Cette vision est certainement très attirante car TCL est un langage à scripts très puissant – bien plus puissant que les constructions de scripts disponibles dans SPICE lui-même. En utilisant TCL, il est possible d'imaginer l'écriture d'optimisateurs de circuits complexes, ajoutant des éléments de comportement à la simulation et finalement en gagnant le contrôle de la sortie graphique de SPICE.

Au fur et à mesure, le but a été partiellement atteint – avec tclspice, vous pouvez donc faire quelque chose comme ceci:

    #! tclsh
    package require spice
    spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm

    spice::source netlistname.cir
    spice::tran 0.1ns 40ns
    spice::run
    spice::plot Vout
    puts "All done now!"

Malheureusement, tclspice manque de fonctionnalités importantes, comme vous fournir un code de retour qui vous indique à quel stade réel est votre simulation ou si elle est en erreur. Aussi, les fonctionnalités graphiques semblent de jamais fonctionner (au moins pour moi … et les développeurs admettent que la partie graphique a des problèmes). Convertir des variables TCL vers et depuis des vecteurs SPICE semble ne jamais fonctionner – encore une fois, au moins pour moi. Finalement, ngspice (au moins) beaucoup de fuites de mémoire, rendant les simulations longues difficiles. C'est la raison pour laquelle, tclspice n'a pas encore réalisé les promesses qui ont été originellement été faites: une manière pratique, par scripts pour piloter les simulations SPICE.

Les développements sur tclspice ont effectivement cessé en 2004. Peu être qu'un jour, quelqu'un le redémarrera. Pendant ce temps, la branche de développement ngspice a récupéré quelques fonctionnalités tclspice si vous les voulez (elles nécessitent des options de configuration séparées) et le code est plus récent.

## N'existe-t-il une belle interface graphique (capture de schéma) de telle manière que je n'ai juste qu'à placer des composants et presser un bouton «·simulation·»?

Non. Le miux que vous puissiez faire est d'utiliser GSpiceUI.

## Comment puis-je créer mes schémas pour faciliter les simulations analogiques?

Le chemin habituel pour la conception est «·gschem·» → «·gnetlist -g spice-sdb·» → [«·ngspice·» | «·gnucap·»]. Vous avez besoin d'attacher des attributs aux composants dans votre schéma pour fournir les attributs nécessaires à SPICE/Gnucap. Vous pouvez aussi attacher des attributs en utilisant gattrib.

Le Circuit Simulation using gEDA and SPICE - HOWTO décrit tout ceci en détail.

Quelques ressources SPICE vous aideront pour comprendre comment utiliser spice-sdb.

## Quelles sont les commandes gnetlist pour SPICE sont à utiliser ici? Il y en a beaucoup. . . .

Utilisez spice-sdb. Il est le plus riche en fonctionnalités. Les autres ne sont présent que pour des raisons historiques. Notez que spice-sdb est une extension d'une des autres commandes SPICE, vous ne perdez rien en utilisant spice-sdb.

## Comment faire si on veut utiliser gnucap, puis-je utiliser spice-sdb pour créer mes netlists gnucap?

Oui. Vous pouvez aussi dessiner votre schéma en utilisant les directives gnucap disponibles dans le répertoire de symbole «·spice·».

## Pourquoi ne puis-je réutiliser mon schéma de simulation pour le placement sur carte?

Les nouveau veulent habituellement créer un schéma unique pour la simulation/validation et le placement sur carte. Cette vision semble tout d'abord attirante car votre carte aura d'abord été testée et validée avant de la créer en FR-4. Néanmoins, le diable est dans les détails·; utiliser un seul schéma pour la simulation et le placement ne fonctionne habituellement pas pour els raisons suivantes:

- Les composants nécessaires pour la simulation et le placement sont normalement très différents. par exemple, la simulation nécessite souvent un schéma comportant un lot d'éléments liés à SPICE comme mes sources de tension, les sources dépendantes, les directives SPICE et ainsi de suite. D'un autre côté, le placement nécessite des composant impossible à modéliser comme des connecteurs, des composants logiques et même des éléments comme des régulateurs de tension qui peuvent ne pas avoir de modèles SPICE de disponibles mais qui vont poluer votre netlist SPICE, rendant le netlister et le simulateur malheureux.
- Quelques composants électroniques réels n'ont pas de modèles SPICE. Il existe beaucoup de composants qui n'en possèdent pas comme les potentiomètres, les transformateurs, les thermistances, les filtres EMI, les portes logiques, les quartz, les tubes à vide et ainsi de suite. C'est la raison pour laquelle si votre schéma utilise un de ces composants, vous devez avoir un élément utilisant un circuit équivalent pour faire la simulation. Cela rend très difficile la réutilisation du schéma de simulation pour le placement.
- Habituellement, vous avez seulement besoin de simuler un sous-ensemble de votre schéma. Par exemple, vous pouvez vouloir simuler le comportement d'un filtre ou d'un circuit oscillant mais sans vous préoccuper de (ou vous ne pouvez pas simuler) votre alimentation, la partie logique ou tout autre partie de votre schéma. Si vous insister pour créer un modèle SPICE pour ces sous-sections de circuit, vous pourriez avoir beaucoup de problèmes – et faire beaucoup de travail inutile – de manière à trouver ou créer des modèles SPICE pour des zones de votre circuit qui ne sont pas importantes.

C'est la raison pour laquelle, je (SDB) recommande normalement de ne pas trop tenter d'utiliser le même schéma pour la simulation et pour le placement. Si vous pouvez le faire, c'est bien! Mais, habituellement, vous ne le pouvez pas.

Personellement, je ne crée des modèles SPICE que pour les sections analogiques critiques de mon circuit. Un projet plus grand devrait donc avoir plusieurs schémas de simulation validant les sous-circuits analogiques. En plus des schémas de simulation, j'ai un schéma principal qui est utilisé pour le placement.