Le basi del Monte Carlo in SPICE: Teoria e Dimostrazione

Zachariah Peterson
|  Creato: aprile 14, 2022  |  Aggiornato: settembre 2, 2024
Monte Carlo in SPICE

Ogni volta che posizioni un componente nel tuo PCB, è quasi come se stessi scommettendo. Tutti i componenti hanno tolleranze, e alcune di queste sono molto precise (ad esempio, i resistori), ma altri componenti possono avere tolleranze molto ampie sui loro valori nominali (ad esempio, induttori avvolti o ferriti). Nel caso in cui le tolleranze su questi componenti diventino troppo grandi, come puoi prevedere come queste tolleranze influenzeranno i tuoi circuiti?

Mentre potresti calcolare le variazioni attorno ai valori elettrici nominali (tensione, corrente o potenza) a mano, eseguire questi calcoli manualmente è molto dispendioso in termini di tempo, specialmente in circuiti di grandi dimensioni. Tuttavia, i simulatori SPICE hanno preso in prestito un tipo di simulazione molto utile dalla teoria della probabilità per aiutarti a rispondere a queste domande. Questo tipo di simulazione è noto come Monte Carlo, e ora puoi eseguire questa simulazione con il pacchetto SPICE in Altium Designer.

In questo articolo, fornirò una panoramica della teoria coinvolta nella comprensione e nella costruzione delle simulazioni di Monte Carlo, poi mostrerò alcuni risultati di esempio per un circuito regolatore di potenza e come i risultati sono influenzati dalle tolleranze. Le simulazioni di Monte Carlo generano una grande quantità di dati che puoi utilizzare per prendere statistiche sul funzionamento del tuo circuito, e questo ti dà una buona idea se il tuo prodotto è molto probabile che funzioni secondo le tue specifiche a causa delle tolleranze sui valori dei componenti.

Monte Carlo nelle Simulazioni SPICE

Le simulazioni di Monte Carlo operano su un processo semplice: generare casualmente un insieme di numeri, e poi utilizzare quei numeri casuali in un modello matematico per calcolare qualcosa di utile. Quando una simulazione di Monte Carlo è utilizzata in SPICE, la simulazione genera i valori dei componenti nel tuo circuito casualmente utilizzando le tolleranze che definisci. Poi utilizza questi valori dei componenti generati casualmente per eseguire una simulazione SPICE standard. Questo processo è ripetuto molteplici volte (a volte centinaia di volte) per darti un insieme di dati che descrive come il comportamento del tuo circuito cambia a causa delle tolleranze dei componenti.

I pacchetti SPICE implementano le simulazioni di Monte Carlo attraverso un processo semplice. Questo coinvolge la generazione di numeri casuali e il calcolo di tensione e corrente nell'algoritmo standard SPICE, seguito dalla visualizzazione dei risultati in una tabella o grafico:

  1. Seleziona quali componenti vuoi che subiscano variazioni casuali e definisci la tolleranza sul componente.
  2. Scegli una distribuzione per le tolleranze dei componenti (la Gaussiana è la più utilizzata) e il numero di esecuzioni della simulazione.
  3. Il simulatore SPICE genera valori casuali dei componenti utilizzando il nominale definito nello schema e la tolleranza/distribuzione definita nel Passo 2.
  4. Il simulatore SPICE calcola la tensione/corrente/potenza target in ogni punto del circuito utilizzando i valori casuali dei componenti nel Passo 3.
  5. I Passi 3 e 4 vengono ripetuti fino al raggiungimento del numero desiderato di esecuzioni della simulazione.
  6. I risultati del Passo 5 vengono compilati in un grafico o in una tabella per ulteriori ispezioni o analisi.

Esempio: Simulazione di Monte Carlo di un Regolatore di Tensione

Nell'esempio seguente, ho utilizzato il circuito del convertitore buck mostrato di seguito. Questo circuito utilizza un induttore relativamente grande nella sezione principale (L1), seguito da un filtro L sull'uscita per ridurre ulteriormente il rumore di commutazione. Il condensatore di uscita ha un resistore snubber per aiutare a ridurre l'intensità della risposta transitoria e levigare la tensione di uscita.

Monte Carlo SPICE buck converter
Circuito convertitore di buck che userò in questo esempio di simulazione.

Questo circuito è progettato per ridurre la tensione di ingresso da 25 V a circa 6,75 V. Nella mia simulazione, permetterò che i valori dell'induttore varino fino al 30%, e effettuerò 15 cicli. Questa grande variazione può essere riscontrata in alcuni induttori avvolti e ferriti, e utilizzare una variazione così ampia può aiutarti a vedere quali potrebbero essere i valori estremi di ripple e di overshoot.

L'altro motivo per cui l'induttore è il componente variabile è che esso è un determinante principale del ripple in uscita quando il convertitore opera in modalità di conduzione continua. Potremmo addirittura andare oltre e osservare direttamente la corrente dell'induttore per vedere quanto si avvicina alla conduzione continua, se davvero avessimo bisogno di verificare il comportamento elettrico nel caso peggiore.

Risultati

Alcuni risultati iniziali che mostrano la risposta transitoria data variazioni del 30% nei valori dei componenti sono mostrati di seguito. Da questa finestra, vediamo che il convertitore già mostra un certo overshoot che varia da 8,37 V a 8,56 V, a seconda dei valori degli induttori. I valori per il contorno inferiore (in verde, L1 = 91,9 uH, L2 = 6,16 uH) e il contorno superiore (in viola, L1 = 122uH, L2 = 7,64 uH) sono segnati sul grafico qui sotto.

Monte Carlo SPICE simulation
Risultati di analisi transitoria per il nostro convertitore di buck generato con Monte Carlo in SPICE.

Ogni curva corrisponde a una coppia di valori di induttanza generati casualmente. Dai risultati, possiamo chiaramente vedere gli effetti delle variazioni nell'induttore:

  1. C'è una certa variazione nel tempo di salita, overshoot e risposta transitoria mentre il regolatore si attiva.
  2. Ogni possibile valore di induttanza produce cambiamenti molto piccoli nel ripple sulla forma d'onda della tensione di uscita.

Il fatto che il ripple di uscita rimanga così basso è incoraggiante; significa che possiamo fare affidamento su questo design per produrre un ripple consistente assumendo piccole variazioni in tutti gli altri parametri.

Perché il Cambiamento nel Ripple È Così Basso?

Senza guardare l'equazione del ripple di uscita come funzione dell'induttanza di uscita, è naturale supporre che una variazione dell'induttanza di +/- 30% produrrebbe variazioni altrettanto grandi nell'induttanza di uscita. Tuttavia, se guardiamo l'equazione del ripple della forma d'onda di tensione sulla corrente di uscita per un convertitore buck operante in modalità di conduzione continua, possiamo capire perché questo non è il caso:

Monte Carlo SPICE
Ripple di corrente di uscita per un convertitore di dollaro.

Poiché il valore dell'induttanza è al denominatore, l'effetto di queste variazioni è ridotto. È possibile vedere ciò prendendo una perturbazione attorno ai valori nominali dell'induttore e guardando come la sensibilità al ripple sia proporzionale a qualsiasi variazione nelle induttanze:

Monte Carlo SPICE
Variazione della corrente di ripple di uscita per la nostra tolleranza del 30% sugli induttori. Possiamo vedere che l'impatto di queste variazioni è più piccolo quando l'induttore è più grande.

L'impatto di queste variazioni è ridotto dal valore dell'induttore. In altre parole, una tolleranza del 30% per un grande induttore creerà una variazione molto minore nel ripple di uscita rispetto alla stessa tolleranza del 30% su un induttore più piccolo. Questo comportamento è tipico quando la relazione tra un certo valore elettrico (la corrente in questo caso) è correlata in modo non lineare al valore del componente in questione.

Inoltre, la frequenza di taglio a 3 dB nel filtro di uscita (L2 + C2) è già inferiore alla frequenza PWM che modula Q1. Il roll-off a 3 dB in questa sezione del filtro è nominalmente di 41,1 kHz, mentre la frequenza di ripple corrisponde alla frequenza PWM di 100 kHz. Il ripple sarà già significativamente filtrato, quindi le variazioni risultanti nella frequenza di roll-off non hanno un impatto così grande sul ripple di uscita.

Analisi Statistica

Se intendi eseguire un'analisi di Monte Carlo, potresti aver bisogno di fare un po' di analisi statistica per capire veramente i limiti del comportamento del tuo circuito a causa delle variazioni casuali nei valori dei componenti. Nel grafico qui sotto, ho preso i miei risultati dell'analisi transitoria sopra e ho estratto il massimo voltaggio che si verifica durante la fase di accensione a causa dell'overshoot. Ho calcolato la media e la deviazione standard per quantificare gli effetti delle variazioni nei valori dell'induttanza.

Per esportare i tuoi risultati transitori in formato CSV o altro formato di dati, usa il comando File → Esporta → Grafico dal menu principale in Altium Designer. Puoi poi importare i tuoi dati in Excel, MATLAB, Mathematica o altro programma di analisi dei dati.

Monte Carlo SPICE statistics
Scarto medio e standard della tensione di sovrapposizione determinato dalle risposte transitorie.

Se costruiamo un intervallo di confidenza utilizzando i nostri dati raccolti e i valori statistici sopra menzionati, il 95% di questi circuiti mostrerà un overshoot che varia da 8,375 V a 8,605 V. Se volessimo eseguire ulteriori analisi, come l'analisi del caso peggiore, potremmo utilizzare uno di questi valori estremi per comprendere il comportamento del circuito.

Valutazione dell'affidabilità con set di dati più grandi

Per valutare statisticamente l'affidabilità, potresti eseguire un numero molto più grande di simulazioni, quindi avresti molti punti dati da esaminare. Con più dati, potresti costruire un istogramma dalle tue misurazioni estratte e utilizzarlo per ottenere una distribuzione di probabilità che definisce il comportamento del circuito; potresti quindi utilizzare questi valori per determinare la probabilità che il circuito operi in un regime totalmente inaccettabile (oltre i valori estremi nel nostro intervallo di confidenza).

Solo per divertimento, ho aumentato il numero di simulazioni eseguite in questa analisi a 100 cicli. I risultati transitori con 100 iterazioni sono mostrati di seguito. Da queste curve, possiamo nuovamente estrarre la tensione di overshoot massima durante la fase di accensione.

Monte Carlo SPICE statistics
Risposta transitoria durante i primi 100 noi della fase di attivazione. Da questa serie di 100 curve, potremmo estrarre la tensione di sovrapposizione per ogni curva e determinare una distribuzione di probabilità che descriva la tensione massima.

Se esporti i risultati in Excel, ora avrai abbastanza dati per creare un istogramma come quello mostrato di seguito. La curva arancione sovrapposta mostra la funzione cumulativa determinata dai dati raggruppati; indica quale percentuale dei dati si trova al di sotto o al livello dell'intervallo corrente e può essere utilizzata come misura dell'intervallo operativo previsto per questo circuito.

Monte Carlo SPICE statistics
Statistiche di tensione di overshoot determinate da 100 simulazioni.

Il punto da ricordare qui è che abbiamo un modo rapido e semplice per verificare come varierà la prestazione del circuito date le tolleranze dei componenti. Se i risultati non rientrano nelle nostre specifiche o margini di sicurezza, allora il circuito dovrà essere modificato prima di creare il layout del PCB e assemblare un prototipo.

Se sei interessato a eseguire simulazioni di Monte Carlo per i tuoi circuiti all'interno di Altium Designer®, non hai bisogno di un pacchetto di simulazione esterno o di software di analisi specializzato. Tutto ciò che ti serve per valutare i tuoi circuiti e eseguire simulazioni di affidabilità può essere trovato all'interno dell'editor schematico in Altium Designer. Una volta completato il tuo PCB e sei pronto per condividere i tuoi progetti con collaboratori o il tuo produttore, puoi condividere i tuoi progetti completati attraverso la piattaforma Altium 365™. Tutto ciò che ti serve per progettare e produrre elettronica avanzata si trova in un unico pacchetto software.

Abbiamo appena iniziato a scoprire cosa è possibile fare con Altium Designer su Altium 365. Inizia oggi la tua prova gratuita di Altium Designer + Altium 365.

Sull'Autore

Sull'Autore

Zachariah Peterson ha una vasta esperienza tecnica nel mondo accademico e industriale. Prima di lavorare nel settore dei PCB, ha insegnato alla Portland State University. Ha condotto la sua Fisica M.S. ricerche sui sensori di gas chemisorptivi e il suo dottorato di ricerca in fisica applicata, ricerca sulla teoria e stabilità del laser casuale. Il suo background nella ricerca scientifica abbraccia temi quali laser a nanoparticelle, dispositivi semiconduttori elettronici e optoelettronici, sistemi ambientali e analisi finanziaria. Il suo lavoro è stato pubblicato in diverse riviste specializzate e atti di conferenze e ha scritto centinaia di blog tecnici sulla progettazione di PCB per numerose aziende. Zachariah lavora con altre società del settore PCB fornendo servizi di progettazione e ricerca. È membro della IEEE Photonics Society e dell'American Physical Society.

Risorse correlate

Documentazione Tecnica Correlata

Tornare alla Pagina Iniziale
Thank you, you are now subscribed to updates.