Escrevendo Seu Primeiro Modelo Compacto em Verilog-A e Integrando com KiCad e NGSpice

Suposições Iniciais

Para seguir este tutorial, é assumido que você é um engenheiro de dispositivos ou pesquisador que precisa de um modelo compacto (não TCAD) e entende a física do dispositivo. Além disso, você deve ter um conjunto de equações que descrevem as características terminais do dispositivo e nunca ter escrito um modelo compacto antes.

O que é TCAD?

TCAD (Technology Computer-Aided Design) é um conjunto de ferramentas de software usadas para simular e analisar a física dos dispositivos semicondutores. Essas ferramentas auxiliam engenheiros no projeto e otimização de dispositivos semicondutores, como transistores e diodos, antes da fabricação. TCAD permite a modelagem detalhada dos processos de fabricação e do comportamento elétrico dos dispositivos, incluindo simulações de deposição de camadas, dopagem e outras etapas do processo de fabricação. Enquanto TCAD se concentra na física detalhada e nos processos de fabricação, os modelos compactos simplificam esses dispositivos para uso em simulações de circuitos, descrevendo seu comportamento elétrico com um conjunto de equações práticas para simuladores de circuitos.

O que é Verilog-A?

Verilog-A é uma linguagem de descrição de hardware utilizada para modelar e simular o comportamento de dispositivos analógicos. Diferente de linguagens como Matlab ou C, que são focadas em computação numérica e programação geral, Verilog-A é projetado para modelagem de alto nível de circuitos eletrônicos. Ele permite que engenheiros descrevam o comportamento de componentes eletrônicos com precisão, focando mais no comportamento físico do que nas equações matemáticas detalhadas. Grande parte da interface do simulador é gerenciada pelo compilador, o que facilita a integração com simuladores de circuitos como NGSpice, HSpice e Spectre.

Questão Principal

A principal questão abordada é como escrever um modelo que seja suficiente para simulação de circuitos em estágio inicial e que possa servir como ponto de partida para um modelo compacto de nível industrial utilizável por designers.

Respostas Necessárias

Você precisa entender:

  1. O que um modelo compacto deve fazer.
  2. Como um simulador de circuitos utiliza um modelo compacto.
  3. Como traduzir equações do dispositivo para Verilog-A.
  4. Alguns erros comuns.
  5. Como testar seu modelo.
  6. O que consiste em um pacote de implantação do modelo.

Simuladores de Circuito e Modelos Compactos

Os simuladores de circuito utilizam a Análise Nodal Modificada, onde as incógnitas são as tensões nos nós e certas correntes de ramificação. As soluções são obtidas pelo método de Newton, necessitando que as derivadas sejam suaves. Seu modelo deve ser formulado para fornecer corrente (I) e carga (Q) como funções de tensão (V), ser suave e lidar graciosamente com tensões inesperadas.

Verilog-A vs. Matlab ou C

Verilog-A é uma linguagem de descrição de hardware, focada em modelagem comportamental de alto nível, menos na matemática e mais no comportamento físico. Grande parte da interface do simulador é gerenciada pelo compilador, tornando o Verilog-A adequado para extração de parâmetros e simulação de circuitos.

Exemplos Simples

O tutorial apresenta exemplos básicos de módulos Verilog-A, como um resistor simples (simpleres), com a seguinte estrutura:

`include "disciplines.vams"
module simpleres(a, b);
 inout a, b;
 electrical a, b;
 parameter real r = 1000 from (0:inf);
 analog begin
  I(a,b) <+ V(a,b) / r;
 end
endmodule

Também são fornecidos exemplos de como incluir e usar esses módulos em HSpice e Spectre.

O que são HSpice, Spectre e NGSpice?

HSpice:
HSpice é um dos simuladores de circuitos mais amplamente utilizados na indústria eletrônica. Desenvolvido pela Synopsys, ele é conhecido por sua precisão na simulação de circuitos analógicos e digitais, sendo frequentemente usado para validação de designs de semicondutores. HSpice suporta a inclusão de modelos escritos em SPICE, Verilog-A e outras linguagens de descrição de hardware.

Spectre:
Spectre, desenvolvido pela Cadence Design Systems, é outro simulador de circuitos de alta precisão. Ele é especialmente conhecido por sua eficiência em simulações de larga escala e sua capacidade de lidar com análises de simulações complexas, como simulações transientes e de estado estacionário periódico (PSS). Assim como HSpice, Spectre também suporta a inclusão de modelos Verilog-A.

NGSpice:
NGSpice é um simulador de circuitos de código aberto baseado no código SPICE3f5 da Universidade de Berkeley. Ele é amplamente utilizado na academia e na indústria para simulações de circuitos analógicos, digitais e de sinais mistos. NGSpice é altamente flexível, suportando modelos SPICE padrão e modelos escritos em Verilog-A, o que o torna uma ferramenta poderosa para engenheiros que desejam realizar simulações precisas e detalhadas sem os custos associados a soluções comerciais.

O NGspice é o motor que dá poder de simulação ao KiCAD, através da interface oferecida pelo KiCAD é possível parametrizar e intervir na simulação em tempo real.

Exemplos de Uso em HSpice, Spectre e NGSpice

Aqui está como você pode incluir um modelo Verilog-A em HSpice, Spectre e NGSpice:

HSpice:

.hdl "simpleres.va"
x1 top 0 simpleres r=2k
v1 top 0 5

Spectre:

ahdl_include "simpleres.va"
r1 (top 0) simpleres r=2k
v1 (top 0) vsource dc=5

NGSpice:

.include "simpleres.va"
x1 top 0 simpleres r=2k
v1 top 0 dc 5

Características Básicas da Linguagem

O Verilog-A inclui arquivos de cabeçalho padrão como disciplines.vams e constants.vams, definindo disciplinas elétricas e constantes físicas e matemáticas. A construção básica é o módulo, com terminais definidos como inout e disciplina elétrica.

Parâmetros podem ser declarados com valores padrão e intervalos permitidos, e toda a funcionalidade é contida dentro de blocos analog begin / end. O operador de contribuição (<+) é usado para somar todas as contribuições à corrente ou carga.

Diretrizes de Codificação

Para uma codificação legível e eficiente, recomenda-se:

  • Indentar blocos de forma consistente.
  • Alinhar equações verticalmente.
  • Utilizar espaços ao invés de tabulações.
  • Documentar equações com comentários.
  • Usar nomes de variáveis significativos.

Erros Comuns

Alguns erros comuns incluem:

  • Uso de ln() em vez de log() para logaritmo natural.
  • Divisão inteira ao invés de ponto flutuante (1/2 resulta em 0).
  • Delimitar todos os blocos if com begin / end.

Testando Seu Modelo

É crucial testar o modelo tanto dentro quanto fora da faixa de medição para verificar a adaptação às medições e o comportamento em condições extremas (tensões altas, temperaturas extremas). Devem-se considerar também valores inesperados de parâmetros e realizar análises DC, AC e transitórias em múltiplos simuladores.

O Pacote de Liberação do Modelo

O pacote de liberação deve incluir não apenas o código-fonte, mas também documentação detalhada das equações do modelo, um conjunto de parâmetros de exemplo e um netlist. Incluir termos de licença e aviso de direitos autorais é essencial.

Integração com KiCad e NGSpice

KiCad é uma suíte de software livre para a criação de esquemas eletrônicos e circuitos impressos (PCBs). Ele inclui uma ferramenta de simulação de circuitos que pode utilizar o NGSpice, um dos mais populares simuladores SPICE de código aberto.

Relação entre KiCad, NGSpice e Verilog-A

KiCad e NGSpice:

  • KiCad integra o NGSpice para permitir a simulação de circuitos diretamente dentro da plataforma de design de PCB.
  • NGSpice é um simulador SPICE que pode interpretar netlists SPICE gerados por KiCad, permitindo que os engenheiros testem e validem seus circuitos antes de construí-los fisicamente.

Verilog-A e NGSpice:

  • NGSpice suporta a inclusão de modelos Verilog-A. Isso significa que, além de utilizar modelos SPICE padrão para componentes como resistores, capacitores e transistores, você pode criar e usar modelos mais complexos descritos em Verilog-A.

Integração Prática:

  1. Desenvolvimento de Modelos:
  • Modelos de dispositivos são escritos em Verilog-A, capturando o comportamento físico e elétrico dos componentes com maior precisão.
  1. Simulação:
  • Esses modelos podem ser importados para NGSpice, que é configurado como o motor de simulação em KiCad.
  1. Análise:
  • Dentro do ambiente KiCad, você pode criar esquemas, gerar netlists e realizar simulações que utilizam os modelos Verilog-A via NGSpice, obtendo resultados que refletem o comportamento real dos componentes modelados.

Exemplo de Fluxo de Trabalho

1. Escrita de um Modelo Verilog-A

Vamos criar um modelo Verilog-A para um resistor simples. O código abaixo exemplifica como escrever esse modelo.

`include "disciplines.vams" // Inclui definições padrão de disciplinas elétricas e funções de acesso

module simpleres(a, b); // Define um módulo chamado 'simpleres' com portas 'a' e 'b'
 inout a, b; // Declara as portas 'a' e 'b' como bidirecionais (inout)
 electrical a, b; // Declara que as portas 'a' e 'b' pertencem à disciplina elétrica

 parameter real r = 1000 from (0:inf); // Declara um parâmetro real 'r' com valor padrão 1000 e intervalo de 0 a infinito

 analog begin // Bloco analógico começa aqui
  I(a,b) <+ V(a,b) / r; // Define a corrente entre 'a' e 'b' como a tensão entre 'a' e 'b' dividida pelo valor do resistor
 end
endmodule // Fim do módulo 'simpleres'

Explicação detalhada:

  • `include "disciplines.vams": Esta linha inclui um arquivo de cabeçalho que define as disciplinas elétricas e as funções de acesso padrão usadas em Verilog-A.
  • module simpleres(a, b);: Define um módulo chamado simpleres com duas portas, a e b.
  • inout a, b;: Declara que as portas a e b são bidirecionais, permitindo corrente e tensão em ambas direções.
  • electrical a, b;: Especifica que as portas a e b são de natureza elétrica.
  • parameter real r = 1000 from (0:inf);: Declara um parâmetro r que representa a resistência, com um valor padrão de 1000 ohms e restrito ao intervalo de 0 a infinito.
  • analog begin ... end: Define um bloco analógico onde são descritas as operações de modelagem.
  • I(a,b) <+ V(a,b) / r;: Define a relação entre corrente (I) e tensão (V) para um resistor. Aqui, a corrente através do resistor é dada pela lei de Ohm, I = V/R.

2. Uso em NGSpice

Depois de escrever o modelo Verilog-A, você precisa incluí-lo em um arquivo de netlist SPICE para utilizá-lo no NGSpice.

  • Salve o modelo Verilog-A em um arquivo chamado simpleres.va.
  • Crie um arquivo de netlist SPICE (circuit.sp) que inclui o modelo e define um circuito que o utiliza.
* Incluir o modelo Verilog-A
.include "simpleres.va"

* Definir os componentes do circuito
x1 top 0 simpleres r=2k  * Instancia o resistor com valor 2k ohms
v1 top 0 dc 5            * Fonte de tensão DC de 5V

* Executar análise DC
.dc v1 0 5 0.1
.end

Explicação detalhada:

  • *.include "simpleres.va": Inclui o arquivo de modelo Verilog-A no netlist SPICE.
  • x1 top 0 simpleres r=2k: Instancia um resistor usando o modelo simpleres, conectando o nó top ao nó 0 (terra) com um valor de resistência de 2k ohms.
  • v1 top 0 dc 5: Define uma fonte de tensão DC de 5V conectada entre o nó top e o nó 0.
  • *.dc v1 0 5 0.1: Executa uma análise DC variando a tensão de v1 de 0V a 5V em incrementos de 0.1V.
  • *.end: Finaliza o netlist.

3. Simulação em KiCad

Para simular o circuito no KiCad usando NGSpice, siga estes passos:

  1. Crie o Esquema no KiCad:
  • Abra o KiCad e crie um novo projeto.
  • Use o Editor de Esquemas para desenhar o circuito, incluindo uma fonte de tensão e um resistor.
  • Atribua os valores e conecte os componentes conforme necessário.
  1. Configure a Simulação:
  • No Editor de Esquemas, vá em Simulação > Configurações de Simulação.
  • Configure a análise DC conforme descrito no netlist (.dc v1 0 5 0.1).
  1. Inclua o Modelo Verilog-A:
  • No mesmo menu de simulação, adicione a linha *.include "caminho/para/simpleres.va" para incluir o modelo Verilog-A.
  • Certifique-se de que o caminho para o arquivo simpleres.va está correto.
  1. Execute a Simulação:
  • Execute a simulação e analise os resultados, que devem mostrar o comportamento do resistor conforme definido pelo modelo Verilog-A.

Conclusão

Verilog-A é uma linguagem útil e fácil de aprender para extração de parâmetros e simulação de circuitos, com muitos modelos disponíveis como exemplo. A combinação de KiCad, NGSpice e Verilog-A fornece uma poderosa ferramenta para o design e a simulação de circuitos eletrônicos. Enquanto KiCad facilita o design de PCB e esquemas, NGSpice oferece simulação robusta e suporte para modelos avançados escritos em Verilog-A, permitindo simulações precisas e detalhadas de dispositivos e circuitos analógicos. O código deve ser autoexplicativo para facilitar o trabalho de novos alunos ou usuários industriais.

Este tutorial oferece uma base sólida para a escrita de modelos compactos em Verilog-A, com diretrizes práticas e exemplos claros para iniciar no desenvolvimento de modelos eficazes para simulação de circuitos.

Se inscrever
Notificar de
guest
0 Comentários
Mais antigo
O mais novo Mais votado
Feedbacks em linha
Ver todos os comentários

Em destaque

Tags