top of page
Rechercher

Simulations Multiples sur LTSpice

  • Photo du rédacteur: pulseconception
    pulseconception
  • 20 oct. 2023
  • 4 min de lecture

Si vous êtes un ingénieur ou un maker travaillant avec l'électronique, vous savez à quel point les simulations de circuits sont cruciales. Il se trouve que LTSpice, un simulateur de circuits bien connu, est largement adopté dans le monde de l'électronique pour sa simplicité et sa gratuité. Toutefois, l'une des limitations de LTSpice est qu'il ne peut exécuter qu'un seul type de simulation à la fois. Dans cet article, nous explorerons comment contourner cette limitation.



Contexte

En tant qu'ingénieur spécialisé en microélectronique, j'ai eu l'occasion de travailler avec Eldo de Mentor Graphics, un autre simulateur SPICE. Ce que j'appréciais particulièrement dans le flux de travail d'Eldo était la capacité de générer une netlist de base à partir de l'éditeur de schéma externe utilisé, puis d'éditer directement cette netlist SPICE pour enchaîner nos simulations et valider nos circuits.

Ainsi, nous pouvions réaliser des simulations à différentes températures, pour diverses variantes de processus de fabrication, ainsi que des simulations transitoires pour valider les temps de démarrage par exemple. Tout le flux de validation du circuit était intégré dans un seul fichier, ce qui signifiait que nous n'avions qu'à exécuter ce fichier pour obtenir toutes les validations nécessaires.

Aujourd'hui, je souhaiterais reproduire ce flux de travail en utilisant des outils gratuits tels que LTSpice. La limitation majeure à surmonter est que LTSpice ne peut gérer qu'un seul type de simulation à la fois. C'est un désavantage conséquent, en particulier lorsqu'il s'agit de travailler sur des circuits complexes nécessitant différents types de simulations pour une validation complète.

Je vais vous présenter une méthode en utilisant LTSpice et un script Python qui exploite le module pyLTspice. Cette démonstration s'appuiera sur un exemple de script que j'ai rédigé pour valider un circuit simple d'amplification. Vous pourrez télécharger ce script à la fin de cet article. Le circuit sur lequel est basé le script d'exemple est le suivant:


Simulations multiples

Je ne m'attarderai pas sur l'installation de l'IDE Python ni sur les modules utilisés. Tout est parfaitement expliqué sur les sites dont les liens sont disponibles dans les références à la fin de cet article. La première partie du script sert à initialiser les simulations. Assurez vous d'abord d'avoir réalisé votre schéma sous LTSpice et sauvegardé le fichier .asc. Je vous conseille également d'effectuer une première simulation sous LTSpice pour vous assurer de l'absence d'erreur dans votre schéma et de la présence des modèles des composants utilisés.

Voici la partie du script qui permet de lancer deux simulations. J'ai commenté le code de manière a ce que vous compreniez son fonctionnement.


from PyLTSpice import SimRunner #simulation control module
from PyLTSpice import SpiceEditor #netlist modification module

# select spice model
Asc_root_filename = 'Ampli_simu' #your asc filename without extension

SIMU = SimRunner(output_folder='./temp') # configure rundirectory
SIMU.create_netlist(Asc_root_filename +'.asc') # set the input file (file edited and saved through LTspice)
netlist = SpiceEditor(Asc_root_filename + '.net') #generate netlist from asc file with the same base name

# AC Closed loop
# simulation settings
netlist.add_instructions(
       "; Simulation settings",
       ".ac dec 30 10 1Meg"
)


# First simulation Run
SIMU.run(netlist)

# TRAN
# simulation settings
netlist.reset_netlist() # reset netlist for new simulation instructions
netlist.add_instructions(
       "; Simulation settings",
       ".tran 0 100u 0 1n"
)

#Second simulation Run
SIMU.run(netlist)

Le principe est très simple, il s’agit de partir de la netlist de base et d’y ajouter des instructions en langage Spice pour chaque simulation. Cette méthode permet donc également de modifier le schéma si nécessaire.

Il est possible qu’une simulation échoue. Dans ce cas vous verrez un message du type “simulation fail” dans le terminal python. Dans ce cas, le fichier de log présent dans le dossier de travail (ici ./temp) pourra vous aider a comprendre d'où vient le problème.


Visualisation des résultats

Lorsque les simulations se terminent sans erreurs, des fichiers Raw et Log sont générés, contenant tous les résultats. Pour manipuler ces fichiers, pyLTspice propose un module nommé RawRead qu'il faudra importer en tête de script.

from PyLTSpice import RawRead #to read simulation results
from matplotlib import pyplot as plt #display simulation results

Les résultats de simulation se présentent sous forme de tableau. Ces données pourront être visualisées de plusieurs manières. J’ai choisi d'utiliser le module python matplotlib mais vous verrez dans la documentation de rawread qu’il est également possible de faire des export vers des tableurs (excel ou autre).


Le script fourni (téléchargeable en fin d'article) paraît relativement complexe car il permet un affichage des résultats qui s’adapte au nombre de signaux en entrée et configure automatiquement les titres et labels des courbes. Mais il est possible d’afficher plus simplement un résultat. Une manière simple pourrait être par exemple celle ci:


#____Plot simulation results ____

for raw, log in SIMU: # read each raw file generated by simulations runs
   print("Raw file: %s, Log file: %s" % (raw, log))
  
   raw_data = RawRead(raw) # get raw data
   Trace_to_plot = raw_data.get_trace('V(PREAMP_OUT)') #get signal simulation result
   x_axis = raw_data.get_axis() #get time or frequency axis
   plt.plot(x_axis, Trace_to_plot.get_wave()) #plot signal with respect to the axis

   plt.grid(True, 'both')  # both mean minor and major grid
   plt.xscale('log') #configure scal in log (default is lin)
   plt.title('V(PREAMP_OUT)')
   plt.xlabel('Frequency (Hz)')
   plt.ylabel('Voltage (V)')
  
   plt.show()

qui donnera le résultat suivant:


Il faudra donc répéter cette section du script pour chaque signal que vous souhaitez visualiser. C'est pourquoi j'ai choisi d'automatiser cette étape et d'afficher tous les signaux d'une simulation sur le même graphique. Je vous invite à découvrir cette méthode directement dans le script dont le lien est en fin d'article. Il vous faudra personnaliser une partie du script afin de l'adapter a votre schéma. Notamment le nom du fichier LTspice ainsi que le nom des signaux que vous désirez tracer. En réalité, je pense qu'il est préférable d'adapter la configuration d'affichage à chaque circuit en fonction des points à valider. Le script ci dessous pourra vous servir de base de personnalisation.

Voici le type de résultat que vous pouvez obtenir grâce a cet exemple de code:



Références:

Auteur: Yann BACHER

 
 
 

Comments


© 2023 par le fil conducteur. Créé avec Wix.com

bottom of page