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:
- O que um modelo compacto deve fazer.
- Como um simulador de circuitos utiliza um modelo compacto.
- Como traduzir equações do dispositivo para Verilog-A.
- Alguns erros comuns.
- Como testar seu modelo.
- 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 delog()
para logaritmo natural. - Divisão inteira ao invés de ponto flutuante (
1/2
resulta em0
). - Delimitar todos os blocos
if
combegin / 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:
- 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.
- Simulação:
- Esses modelos podem ser importados para NGSpice, que é configurado como o motor de simulação em KiCad.
- 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 chamadosimpleres
com duas portas,a
eb
.inout a, b;
: Declara que as portasa
eb
são bidirecionais, permitindo corrente e tensão em ambas direções.electrical a, b;
: Especifica que as portasa
eb
são de natureza elétrica.parameter real r = 1000 from (0:inf);
: Declara um parâmetror
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 modelosimpleres
, 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 dev1
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:
- 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.
- 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
).
- 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.
- 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.