Os Fundamentos do Monte Carlo em SPICE: Teoria e Demonstração

Zachariah Peterson
|  Criada: Abril 14, 2022  |  Atualizada: Setembro 2, 2024
Monte Carlo no SPICE

Sempre que você coloca um componente em sua PCB, é quase como se estivesse apostando. Todos os componentes têm tolerâncias, e algumas destas são muito precisas (resistores, por exemplo), mas outros componentes podem ter tolerâncias muito amplas em seus valores nominais (por exemplo, indutores enrolados ou ferrites). No caso de as tolerâncias desses componentes se tornarem muito grandes, como você pode prever como essas tolerâncias afetarão seus circuitos?

Embora você pudesse calcular variações em torno de valores elétricos nominais (tensão, corrente ou potência) manualmente, realizar esses cálculos à mão é muito demorado, especialmente em circuitos grandes. No entanto, os simuladores SPICE adotaram um tipo muito útil de simulação da teoria da probabilidade para ajudá-lo a responder a essas perguntas. Esse tipo de simulação é conhecido como Monte Carlo, e agora você pode realizar essa simulação com o pacote SPICE no Altium Designer.

Neste artigo, fornecerei uma visão geral da teoria envolvida na compreensão e construção de simulações de Monte Carlo, em seguida, mostrarei alguns resultados de exemplo para um circuito regulador de potência e como os resultados são afetados pelas tolerâncias. As simulações de Monte Carlo geram uma grande quantidade de dados que você pode usar para obter estatísticas sobre a operação do seu circuito, e isso lhe dá uma boa ideia de se o seu produto tem uma alta probabilidade de funcionar de acordo com suas especificações devido às tolerâncias nos valores dos componentes.

Monte Carlo em Simulações SPICE

As simulações de Monte Carlo operam em um processo simples: gerar aleatoriamente um conjunto de números e, em seguida, usar esses números aleatórios em um modelo matemático para calcular algo útil. Quando uma simulação de Monte Carlo é usada em SPICE, a simulação gera os valores dos componentes do seu circuito aleatoriamente usando tolerâncias que você define. Em seguida, usa esses valores de componentes gerados aleatoriamente para executar uma simulação SPICE padrão. Esse processo é repetido várias vezes (às vezes centenas de vezes) para fornecer um conjunto de dados descrevendo como o comportamento do seu circuito muda devido às tolerâncias dos componentes.

Os pacotes SPICE implementam simulações de Monte Carlo por meio de um processo simples. Isso envolve a geração de números aleatórios e o cálculo de tensão e corrente no algoritmo padrão SPICE, seguido pela exibição dos resultados em uma tabela ou gráfico:

  1. Selecione quais componentes você deseja que experimentem variações aleatórias e defina a tolerância no componente.
  2. Selecione uma distribuição para as tolerâncias dos componentes (Gaussiana é a mais comumente usada) e o número de execuções de simulação.
  3. O simulador SPICE gera valores de componentes aleatórios usando o nominal definido no esquemático e a tolerância/distribuição definida no Passo 2.
  4. O simulador SPICE calcula a tensão/corrente/potência alvo em cada ponto do circuito usando os valores de componentes aleatórios no Passo 3.
  5. Os Passos 3 e 4 são repetidos até que o número desejado de execuções de simulação seja alcançado.
  6. Os resultados do Passo 5 são compilados em um gráfico ou tabela para inspeção ou análise adicional.

Exemplo: Simulação de Monte Carlo de um Regulador de Tensão

No exemplo a seguir, eu usei o circuito do conversor buck mostrado abaixo. Este circuito usa um indutor relativamente grande na seção principal (L1), seguido por um filtro L na saída para reduzir ainda mais o ruído de comutação. O capacitor de saída tem um resistor snubber para ajudar a reduzir a intensidade da resposta transitória e suavizar a tensão de saída.

Monte Carlo SPICE buck converter
Circuito Buck converter que vou usar neste exemplo de simulação.

Este circuito tem como objetivo reduzir a tensão de entrada de 25 V para cerca de 6,75 V. Na minha simulação, vou permitir que os valores do indutor variem em até 30% e realizarei 15 execuções. Essa grande variação pode ser encontrada em alguns indutores de fio enrolado e ferrites, e usar uma variação tão grande pode ajudar você a ver quais seriam os valores extremos de ripple e overshoot.

A outra razão pela qual o indutor é o componente variado é que ele é um determinante principal do ripple de saída quando o conversor está operando no modo de condução contínua. Poderíamos até ir um passo além e olhar para a corrente do indutor em si para ver quão próxima a corrente do indutor chega da condução contínua, se realmente precisássemos verificar o pior comportamento elétrico.

Resultados

Alguns resultados iniciais mostrando a resposta transitória dada variações de 30% nos valores dos componentes são mostrados abaixo. Dessa janela, vemos que o conversor já exibe algum sobressalto variando de 8,37 V a 8,56 V, dependendo dos valores dos indutores. Os valores para o contorno inferior (em verde, L1 = 91,9 uH, L2 = 6,16 uH) e contorno superior (em roxo, L1 = 122uH, L2 = 7,64 uH) estão marcados no gráfico abaixo.

Monte Carlo SPICE simulation
Resultados de análise transitória para o nosso convertidor de dólares gerado usando Monte Carlo em SPICE.

Cada curva corresponde a um par de valores de indutores gerados aleatoriamente. A partir dos resultados, podemos ver claramente os efeitos das variações no indutor:

  1. Há alguma variação no tempo de subida, sobressalto e resposta transitória à medida que o regulador é ativado.
  2. Cada valor de indutância possível produz mudanças muito pequenas no ripple na forma de onda da tensão de saída.

O fato de o ripple de saída permanecer tão baixo é encorajador; isso significa que podemos confiar neste design para produzir um ripple consistente assumindo pequenas variações em todos os outros parâmetros.

Por Que a Mudança no Ripple É Tão Baixa?

Sem olhar para a equação do ripple de saída como uma função da indutância de saída, é natural assumir que uma mudança na indutância de +/- 30% produziria variações igualmente grandes na indutância de saída. No entanto, se olharmos para a equação do ripple da forma de onda de tensão na corrente de saída para um conversor buck operando no modo de condução contínua, podemos ver por que isso não é o caso:

Monte Carlo SPICE
A ondulação de corrente de saída para um convertidor de dólares.

Como o valor da indutância está no denominador, o efeito dessas variações é reduzido. Você pode ver isso ao fazer uma perturbação sobre os valores nominais do indutor e olhar como a sensibilidade do ripple é proporcional a qualquer variação nas indutâncias:

Monte Carlo SPICE
Variação na corrente de ondulação de saída para a nossa tolerância de 30% nos indutores. Podemos ver que o impacto destas variações é menor quando o indutor é maior.

O impacto dessas variações é reduzido pelo valor do indutor. Em outras palavras, uma tolerância de 30% para um indutor grande criará uma mudança muito menor no ripple de saída do que a mesma tolerância de 30% em um indutor menor. Esse comportamento é típico quando a relação entre algum valor elétrico (corrente neste caso) está relacionada de forma não linear ao valor do componente em questão.

Além disso, a frequência de corte de 3 dB no filtro de saída (L2 + C2) já está abaixo da frequência PWM que modula Q1. A atenuação de 3 dB nesta seção do filtro é nominalmente de 41,1 kHz, enquanto a frequência de ripple corresponde à frequência PWM de 100 kHz. O ripple já será significativamente filtrado, então as variações resultantes na frequência de corte não têm tanto impacto no ripple de saída.

Análise Estatística

Se você vai realizar uma análise de Monte Carlo, pode ser necessário fazer alguma análise estatística para realmente entender os limites do comportamento do seu circuito devido a variações aleatórias nos valores dos componentes. No gráfico abaixo, peguei meus resultados de análise transiente acima e extraí os valores máximos de tensão que ocorrem durante a fase de ligação devido ao overshoot. Calculei a média e o desvio padrão para quantificar os efeitos das variações nos valores de indutância.

Para exportar seus resultados transientes em CSV ou outro formato de dados, use o comando Arquivo → Exportar → Gráfico no menu principal do Altium Designer. Você pode então importar seus dados para o Excel, MATLAB, Mathematica ou outro programa de análise de dados.

Monte Carlo SPICE statistics
Desviação média e padrão na tensão superior determinada a partir de respostas transitórias.

Se construirmos um intervalo de confiança usando nossos dados coletados e os valores estatísticos acima, 95% desses circuitos exibirão um overshoot variando de 8,375 V a 8,605 V. Se quiséssemos realizar uma análise mais aprofundada, como uma análise de pior caso, poderíamos usar qualquer um desses valores extremos para entender o comportamento do circuito.

Avaliação da Confiabilidade com Conjuntos de Dados Maiores

Para avaliar a confiabilidade estatisticamente, você poderia executar um número muito maior de simulações, então você teria muitos pontos de dados para examinar. Com mais dados, você poderia construir um histograma a partir de suas medições extraídas e usar isso para obter uma distribuição de probabilidade que define o comportamento do circuito; você poderia então usar esses valores para determinar a probabilidade de que o circuito opere em um regime totalmente inaceitável (além dos valores extremos em nosso intervalo de confiança).

Apenas por diversão, aumentei o número de simulações realizadas nesta análise para 100 corridas. Os resultados transientes com 100 iterações são mostrados abaixo. A partir dessas curvas, podemos extrair novamente a tensão máxima de overshoot durante a fase de ligação.

Monte Carlo SPICE statistics
Resposta transitória durante os primeiros 100 nós da fase de ligamento. A partir deste conjunto de 100 curvas, podemos extrair a tensão superficial para cada curva e determinar uma distribuição de probabilidade descrevendo a tensão máxima.

Se você exportar os resultados para o Excel, agora terá dados suficientes para criar um histograma como o mostrado abaixo. A curva laranja sobreposta mostra a função cumulativa determinada a partir dos dados agrupados; ela mostra qual porcentagem dos dados está no ou abaixo do intervalo atual e pode ser usada como uma medida da faixa de operação esperada deste circuito.

Monte Carlo SPICE statistics
Estadísticas de voltagem de overshoot determinadas a partir de 100 simulações.

A conclusão aqui é que temos uma maneira rápida e fácil de verificar como o desempenho do circuito variará dado as tolerâncias dos componentes. Se os resultados não estiverem dentro das nossas especificações ou margens de segurança, então o circuito precisará ser modificado antes de criar o layout da PCB e montar um protótipo.

Se você está interessado em executar simulações de Monte Carlo para seus circuitos dentro do Altium Designer®, você não precisa de um pacote de simulação externo ou software de análise especializado. Tudo o que você precisa para avaliar seus circuitos e realizar simulações de confiabilidade pode ser encontrado dentro do editor esquemático no Altium Designer. Uma vez que você tenha completado sua PCB e estiver pronto para compartilhar seus designs com colaboradores ou seu fabricante, você pode compartilhar seus designs concluídos através da plataforma Altium 365™. Tudo o que você precisa para projetar e produzir eletrônicos avançados pode ser encontrado em um único pacote de software.

Apenas começamos a explorar o que é possível fazer com o Altium Designer no Altium 365. Comece sua avaliação gratuita do Altium Designer + Altium 365 hoje.

Sobre o autor

Sobre o autor

Zachariah Peterson tem vasta experiência técnica na área acadêmica e na indústria. Atualmente, presta serviços de pesquisa, projeto e marketing para empresas do setor eletrônico. Antes de trabalhar na indústria de PCB, lecionou na Portland State University e conduziu pesquisas sobre teoria, materiais e estabilidade de laser aleatório. A experiência de Peterson em pesquisa científica abrange assuntos relacionados aos lasers de nanopartículas, dispositivos semicondutores eletrônicos e optoeletrônicos, sensores ambientais e padrões estocásticos. Seu trabalho foi publicado em mais de uma dezena de jornais avaliados por colegas e atas de conferência, além disso, escreveu mais de dois mil artigos técnicos sobre projeto de PCB para diversas empresas. É membro da IEEE Photonics Society, da IEEE Electronics Packaging Society, da American Physical Society e da Printed Circuit Engineering Association (PCEA). Anteriormente, atuou como membro com direito a voto no Comitê Consultivo Técnico de Computação Quântica do INCITS, onde trabalhou em padrões técnicos para eletrônica quântica e, no momento, atua no grupo de trabalho P3186 do IEEE, que tem como foco a interface de portas que representam sinais fotônicos com simuladores de circuitos da classe SPICE.

Recursos relacionados

Documentação técnica relacionada

Retornar a página inicial
Thank you, you are now subscribed to updates.