Tutorial do Simulador SPICE Microeletrônica Tutorial do Simulador SPICE Prof. Dr. Fabian Vargas Prof. Msc. Juliano Benfica Marlon Moraes Marcelo Mallmann Setembro / 2007 Introdução Este tutorial tem como objetivo principal fazer uma breve e sucinta introdução à ferramenta de simulação de circuitos SPICE aos alunos da disciplina de Microeletrônica do curso de Engenharia Elétrica da PUCRS. Além do contato inicial com ambiente de simulação SPICE, abordaremos também os princípios da sintaxe de descrição de circuitos juntamente com os comandos básicos para simulações de componentes semicondutores, foco desta disciplina. O que é o SPICE? O SPICE é um software de simulação que pode ser utilizado para analisar o comportamento elétrico de um circuito contendo uma grande variedade de componentes, como por exemplo, transistores, diodos, resistores, capacitores e etc. Esta poderosa ferramenta possibilita que o usuário estime com bastante precisão, através de vários tipos de simulações, o comportamento de circuitos elétricos dos mais variados tamanhos e níveis de complexidade. Para que o SPICE possa realizar tais estimativas, via simulação, o usuário deve fornecer ao software os seguintes dados: a) Descrição do circuito: uma descrição completa do circuito a ser analisado; seus elementos, suas fontes de sinais e de polarização e principalmente, como estes dispositivos estão interligados no circuito. Também é necessário o fornecimento dos parâmetros modelares empregados para a descrição comportamental dos componentes ativos a serem simulados. b) Especificação de análise: uma definição dos tipos de análise, por exemplo, cc, transiente, pequenos sinais, etc.. Prof. Fabian Vargas. & Prof. Juliano Benfica 1/11 Tutorial do Simulador SPICE Microeletrônica c) Especificação dos resultados: uma definição do tipo de resultado esperado com a simulação, por exemplo, uma tabela contendo correntes e tensões cc, um gráfico CTT de uma porta-lógica etc.. Neste tutorial abordaremos, de uma forma bastante breve, como essas informações devem ser apresentadas ao SPICE, porém antes devemos mencionar que todas essas informações são passadas ao SPICE em forma de seqüência de linhas de descrição armazenadas em um arquivo chamado de arquivo de entrada (SPICE input file) cuja sua extensão usualmente é ‘*.cir’ ou ‘*.sp’ . A composição do arquivo de entrada é bastante simples, entretanto algumas regras devem ser seguidas. É o caso da primeira linha, que é reservada para a identificação do título da simulação. A última linha, do arquivo de entrada, também é reservada para o comando ‘.END’ que é utilizado para a sinalização do fim do arquivo para o SPICE. A ordem das linhas de comandos e definições restantes é totalmente arbitrária e fica a critério do usuário, embora seja recomendável o uso de comentários ao longo do arquivo para facilitar a sua posterior interpretação. As linhas de comentário são identificadas pela presença do asterisco (*) como primeiro caractere. Descrição do Circuito Cada elemento no circuito é especificado por uma declaração de elemento (element statement) contendo o seu nome, os nós do circuito aos quais ele está conectado e o(s) valor(es) do(s) seu(s) parâmetro(s) elétrico(s). O nome do elemento pode conter até oito caracteres alfanuméricos, sendo a primeira letra a indicação do seu tipo (por exemplo, R para resistor). Os nós do circuito são especificados por meio de números inteiros nãonegativos, não sendo necessária a numeração seqüencial. O nó de referência (terra) deve obrigatoriamente ser numerado com o número zero. Cada nó deve possuir, pelo menos, duas conexões, exceto os nós de substrato dos MOSFETs e as linhas de transmissão sem terminação. Os formatos de especificações básicas para componentes são apresentados na Tabela 1, na qual: Prof. Fabian Vargas. & Prof. Juliano Benfica 2/11 Tutorial do Simulador SPICE Microeletrônica Componentes Nome Nós Valores Resistor Rxxxxxxx N+ N- VALOR Capacitor Cxxxxxxx N+ N- VALOR Indutor Ixxxxxxx N+ N- VALOR GCCT(VCCS) Gxxxxxxx N+ N- NC+ NC- VALOR GTCT(VCVS) Exxxxxxx N+ N- NC+ NC- VALOR GCCC(CCCS) Fxxxxxxx N+ N- VNOM VALOR GTCC(CCVS) Hxxxxxxx N+ N- VNOM VALOR Fonte de Tensão Vxxxxxxx N+ N- QUAL Fonte de Corrente Ixxxxxxx N+ N- QUAL Tabela 1 – Sintaxes para declarações de elementos. 1. O nome do componente começa com uma letra específica (como indicado na Tabela 1) e possui de um a oito caracteres alfanuméricos. 2. N+ e N- indicam os nós de ligação no circuito, o primeiro sendo o nó positivo (se essa informação for necessária). É importante observar que a corrente de uma fonte de corrente flui do nó N+ para o nó N-. 3. VALOR está nas unidades básicas de ohms, farads, henries, A/V, V/V, A/A, V/A, respectivamente para os sete componentes listados anteriormente. Por conveniência, prefixos de unidades podem ser usados, conforme indicado na Tabela 2. Sufixo indicativo Prefixo métrico Fator multiplicador T tera 1012 G giga 109 Meg mega 106 K quilo 103 M mili 10-3 U micro 10-6 N nano 10-9 P pico 10-12 F fento 10-15 Tabela 2 – Abreviaturas para fatores de escala reconhecidos pelo SPICE. 4. NC+ e NC- são nós aos quais a tensão de controle está ligada. 5. VNOM é a fonte de tensão através da qual a corrente de controle flui. 6. QUAL é o conjunto de atributos para a descrição das fontes. A Tabela 3 apresenta o conjunto de atribuições para algumas fontes importantes. Prof. Fabian Vargas. & Prof. Juliano Benfica 3/11 Tutorial do Simulador SPICE Fonte DC Senoidal Quadrada Microeletrônica QUAL DC valor_dc sin(offset amplitude freqüência temp_inicio) pulse(dc_1 dc_2 inicio_pulso tmp_sub tmp_desc largura_pulso periodo) Tabela 3 – Atributos de descrição de fontes. 7. Uma fonte de tensão com valor zero é usada como ponto de medição de corrente. Como exemplo, um resistor de 2,2MΩ, com o nome RB2, conectado entre os nós 4 e 5, pode ser descrito ao SPICE pela seguinte declaração de elemento (note que é usado ponto e MEG): RB2 4 5 2.2MEG Como outro exemplo, um capacitor de 1,0µF (CC1) conectado entre os nós 3 e 4 e tendo uma tensão inicial de 5V pode ser descrito pela seguinte declaração: CC1 3 4 1.0M IC=5 Como exemplo final, uma fonte de tensão dependente controlada por tensão (gerador de tensão controlado por tensão) e com fator de controle 105 V/V (ganho), pode ser descrito como: EOUT 3 0 2 1 100K Onde EOUT indica o GTCT, no qual o seu terminal de saída está ligado ao nó 3, sua referência ao no de terra (nó 0) e os seus terminais de entrada ligados aos nós 2 e 1. Descrever um dispositivo semicondutor no SPICE exige, além da declaração do elemento, a declaração de modelo do elemento (model statement). A Tabela 4 apresenta a sintaxe das declarações de elemento para diodos, o TJBs e os MOSFETs. Componentes Nome Nós e Modelos Diodo Dxxxxxxx N+ NMNOME TJB Qxxxxxxx NC NB NE NS MNOME MOSFET Mxxxxxxx ND NG NS NB MNOME Tabela 4 – Declaração de elemento para dispositivos semicondutores. Prof. Fabian Vargas. & Prof. Juliano Benfica AREA AREA L W 4/11 Tutorial do Simulador SPICE Microeletrônica 1. A declaração inicia-se com o nome do dispositivo, do qual a primeira letra indica o tipo de dispositivo. 2. Para um diodo, N+ é o nó no qual se liga o anodo e N- é o nó ao qual se liga o catodo. 3. Para um TJB, NC, NB, NE e NS são respectivamente os nós do circuito aos quais se ligam o coletor, a base, o emissor e o substrato. 4. Para um MOSFET, ND, NG, NS e NB são respectivamente os nós do circuito aos quais se ligam o dreno, o gate, o source e o substrato. 5. MNOME indica o nome do modelo para o dispositivo em particular. Os valores dos parâmetros do modelo são especificados separadamente na declaração do modelo (abordaremos esta declaração a seguir). 6. AREA é um fator de escala de área (opcional): é o número de diodos ou TBJs do tipo em questão que devem ser conectados em paralelo para formar o dispositivo desejado. 7. L e W indicam o comprimento e a largura do canal do MOSFET (em metros). Notas: O nó substrato em geral é conectado na referência de terra (nó 0) para transistores NMOS e o na alimentação (nó Vcc) para transistores PMOS. Finalmente, a Tabela 5 apresenta as sintaxes das declarações de modelos para diodos, TBJs e MOSFETs. Componentes Declaração de Modelo Diodo .Model MNOME D(IS=... n=... etc.) TBJ .Model MNOME NPN (ou PNP) (IS=... βF=... etc.) MOSFET .Model MNOME NMOS (ou PMOS) (kP=... Vt0=... etc.) Tabela 5 – Sintaxe para as declarações de modelos. Onde MNOME novamente refere-se ao nome do modelo de elemento. Cada tipo de dispositivo semicondutor, por exemplo, deve possuir uma declaração de modelo de elemento especificando os valores dos seus parâmetros de fabricação. Também é possível, para a descrição e simulação de circuitos muito grandes e/ou complexos, o uso da estrutura de sub-circuitos. A Tabela 6 Prof. Fabian Vargas. & Prof. Juliano Benfica 5/11 Tutorial do Simulador SPICE Microeletrônica apresenta a sintaxe de declaração e adição destas estruturas no arquivo de entrada: Declaração .subckt nome_sub-circuito nó_1 nó_2 ... nó_n R.. L... (descrição do sub-circuito) C... .ends nome_sub-circuito Adição X-------- nó_1 nó_2 ... nó_n nome_sub-circuito Tabela 6 – Sintaxe para as declaração e adição sub-circuitos. Os nós do sub-circuito (nó_1 nó_2 ... nó_n) representam os nós que poderão ser acessados quando o sub-circuito for adicionado, estes nós obrigatoriamente devem ser descritos na mesma ordem definida no comando .subckt, sendo que os sinais ou nós internos aos sub-circuitos sem acesso externo não podem ser observados na simulação. Especificando os Tipos de Análises Uma vez descrito o circuito o usuário deve então especificar, também no arquivo de entrada, o tipo de análise desejada para a simulação. Existem basicamente três tipos de análises: ponto de operação cc (DC operating ponint), resposta ca em freqüência (AC frequency response) e resposta transiente (transient response). A Tabela 7 apresenta a sintaxe dessas análises, juntamente com o comando de varredura cc (DC sweep command). Note que cada um destes comandos inicia com um ponto (.), este caractere informa ao SPICE que a linha se trata de um comando solicitando uma ação específica. Análise solicitada Ponto de operação Varredura cc Resposta ca em freqüência Resposta transiente Comando SPICE .OP .DC nome_da_fonte valor_inicial valor_final valor_do_passo .AC DEC pontos_por_decada freq_inicial freq_final .AC OCT pontos_por_oitava freq_inicial freq_final .AC LIN total_de_pontos freq_inicial freq_final .TRAN passo_de_tempo tempo_final [tempo_sem_imprimir tamanho_máximo_do_passo] [UIC] Tabela 7 – Principais comandos de análise. Prof. Fabian Vargas. & Prof. Juliano Benfica 6/11 Tutorial do Simulador SPICE Microeletrônica O comando ponto de operação cc (.OP), calcula o comportamento cc do circuito, apresentando um arquivo com todas as tensões nodais, correntes nos ramos e as dissipações de potência das fontes. Embora a curva característica do circuito possa ser determinada executando algumas análises de operação cc, alterando-se o valor da fonte cc de entrada, o SPICE apresenta uma alternativa bastante eficiente e confiável, o comando de varredura cc (.DC) executa essa tarefa automaticamente. A sintaxe desse comando inclui o nome da fonte cc de entrada que deve ser variada (nome_da_fonte), o valor em que ela começa (valor_inicial), o incremento ou decremento em sem valor (valor_do_passo) e o valor final a ser atingido (valor_final). Com o comando de resposta ca em frequência (.AC), o SPICE executa uma análise em freqüência para pequenos sinais (resposta linear). Sendo calculado automaticamente o ponto de operação cc, por meio do qual a ferramenta define os valores dos parâmetros a serem empregados nos circuitos de modelos equivalentes para pequenos sinais. O circuito linear equivalente completo para pequenos sinais é então analisado para freqüências iniciando em (freq_inicial) e terminando em (freq_final). Os pontos intermediários são espaçados logaritmicamente, ou por década (DEC) ou por oitava (OCT). O número de pontos em um dado intervalo de freqüências é especificado pelo usuário (pontos_por_decada ou pontos_por_oitava). Podemos também especificar uma varredura linear em freqüência (LIN) e o número de pontos calculados (total_de_pontos). Usualmente, utiliza-se a varredura linear em freqüência quando a faixa de freqüências de interesse é estreita e a varredura logarítmica quando a faixa de freqüências de interesse é larga. Finalmente, com o comando de resposta transiente (.TRAN), o SPICE calcula as variáveis de circuito em função do tempo. O intervalo de tempo inicia-se em t=0 e prossegue a passos lineares (passo_de_tempo) até que tempo_final seja atingido. Embora toda a análise transiente inicie-se em t=0, pode-se iniciar a impressão ou plotagem dos resultados de saída após um determinado intervalo de tempo especificado (tempo_sem_imprimir). Essa é uma forma conveniente de pular a etapa transiente inicial de uma rede e de visualizar apenas sua resposta em estado estável. Prof. Fabian Vargas. & Prof. Juliano Benfica 7/11 Tutorial do Simulador SPICE Microeletrônica Antes do início de qualquer análise transiente, o SPICE precisa determinar os valores iniciais das variáveis de circuito, usualmente a partir de uma análise cc. Se o parâmetro opcional UIC (use initial conditions) for especificado no comando .TRAN, o SPICE não realizará a análise cc e usará apenas informações contida no parâmetro “IC=” que acompanha cada declaração de capacitor ou indutor. Entretanto, todos aqueles elementos que não contiverem uma especificação “IC=” definida serão considerados com condição inicial nula. Especificando os Resultados Simulações de circuitos produzem uma enorme quantidade de dados, o que por vezes é bastante inconveniente e desnecessário. O SPICE possui ferramentas de apresentação de resultados que possibilitam ao usuário especificar quais variáveis do circuito ele deseja visualizar e qual o melhor formato de apresentação para estas informações. A Tabela 8 apresenta a sintaxe dos formatos de impressão e plotagem dos dados no SPICE. Saída solicitada Imprima os pontos calculados Comando SPICE .PRINT DC variáveis_saída .PRINT AC variáveis_saída .PRINT TRAN variáveis_saída .PLOT DC variáveis_saída [limite_inferior; limite_superior] Plote os pontos calculados .PLOT AC variáveis_saída [limite_inferior; limite_superior] .PLOT TRAN variáveis_saída [limite_inferior; limite_superior] Tabela 8 – Principais comandos de análise. Notas: 1. variáveis_saída no SPICE podem ser quaisquer tensões nodais V(nó), tensões diferenciais entre dois nós V(nó1,nó2) ou correntes através de uma fonte de tensão I(Vnome). 2. variáveis_saída em ca também podem ser: Vr,Ir: parte real Vi,Ii: parte imaginária Vm,Im: magnitude Vp,Ip: fase Vdb,Idb: em decibéis O comando .PRINT imprime as variáveis desejadas na forma tabular como função da variável independente associada a cada tipo de análise. Com ele, precisamos especificar o tipo de análise (DC, AC, TRAN) em questão. A seguir é especificado uma lista de variáveis (tensões ou correntes, indicadas por variáveis_saída). Prof. Fabian Vargas. & Prof. Juliano Benfica 8/11 Tutorial do Simulador SPICE Microeletrônica Geralmente, uma variável do tipo tensão é especificada como a tensão diferencial entre dois nós na forma V(nó1,nó2), entretanto quando um dos nós é omitido, assume-se o nó do terra (0) como referência. O SPICE permite que apenas as correntes fluindo através de fontes independentes de tensão sejam observadas. Tais correntes são especificadas na forma I(Vnome), em que Vnome é o nome da fonte independente de tensão através da qual a corrente está fluindo. Se desejarmos observar uma corrente de um ramo no qual não há uma fonte de tensão, devemos adicionar uma fonte de tensão nula (DC) em série com o ramo e solicitar que a corrente através desta fonte seja impressa ou plotada. Os resultados de uma análise do tipo TRAN são as tensões nodais e as correntes nos ramos calculadas em função do tempo. As ferramentas de plotagem do SPICE geram gráficos com os pontos conectados por linhas em função da variável independente. As sintaxes para o comando de plotagem são idênticas àquelas do comando de impressão. Exemplos Nesta seção são apresentados alguns exemplos de fixação sobre a sintaxe e o uso do SPICE como ferramenta para descrição e simulação de circuitos elétricos. Arquivo de Entrada Circuito Resistivo Circuito Equivalente ** declaração das fontes. vcc 1 0 dc 7.5 ** descrição do circuito. r1 1 2 1k r2 2 0 560 r3 2 3 470 r4 3 0 470 ** comandos .op R1 1 R3 2 3 1k 470 Vcc R2 7.5 R4 560 0 0 470 0 .end Prof. Fabian Vargas. & Prof. Juliano Benfica 9/11 Tutorial do Simulador SPICE Microeletrônica Circuito RC Diferenciador C1 ** descrição de fontes vin 1 0 pulse(0 10 0 1n 1n 0.5 1) 1 ** descrição do circuito r1 1 2 1k c1 2 0 100m 2 10m Vin VOFF = 0 VAMPL = 1 FREQ = 10 ** comandos .tran 0.1m 1000 [990] .print tran v(1) v(2) R1 1k 0 0 .end Circuito RC Diferenciador e Integrador ** declaração das fontes. vin 1 0 pulse(0 10 0 0 0 1m 2m) C1 ** descrição do circuito. c1 1 2 100p r1 2 0 47k R2 1 2 3 100p r2 1 3 47k c2 3 0 100n ** comandos .tran 0.001m 50m .print tran v(1) v(2) v(3) 47k V3 V1 = 0 V2 = 10 TD = 0 TR = 0 TF = 0 PW = 1m PER = 2m R1 C2 47k 0 100n 0 0 .end Titulo: Sub-circuitos e Transistores MOS .MODEL nmos nmos level=2 vto=.82 tox=2e-08 nsub=2.5e+16 uo=690 .MODEL pmos pmos level=2 vto=-1.4 tox=2e-08 nsub=2.5e+16 uo=231 vcc vcc 0 dc 3.3 vin 1 0 pulse(3.3 0 0 0.1n 0.1n 10n 20n) VCC ** descrição do sub-circuito. .subckt inv out in vcc M1 out in vcc vcc pmos l=1e-06 w=2u ad=20p as=20p M2 out in 0 0 nmos l=1u w=2u pd=16u ps=16u ad=8p as=8p .ends inv G S M1 D IN OUT ** descrição do circuito. X1 2 1 vcc inv X2 3 2 vcc inv C1 3 0 1fF D M2 G S X1 .tran 0.1n 80n .plot tran v(1) v(2) v(3) .end 1 INV Vin 0 Prof. Fabian Vargas. & Prof. Juliano Benfica X2 2 V1 = 3.3 V2 = 0 TD = 0 TR = 0.1n TF = 0.1n PW = 10n PER = 20n 0 3 INV C1 1fF 0 10/11 Tutorial do Simulador SPICE Microeletrônica Bibliografia [1] [2] [3] [4] Sedra, Adel S., Microeletrônica. 4. ed. São Paulo: Makron Books, 2005. T. Quarles, A.R. Newton, D.O. Pederson, A. Sangiovanni-Vincentelli, SPICE3 Version 3f3 User’s Manual, Department of Electrical Engineering and Computer Sciences, University of California Berkeley, Ca., May, 1993. HSPICE Command Reference Release W-2004.09, Synopsys, 2004 Renato P. Ribas, Tutorial do Simulador Elétrico SPICE, UFRGS, Abril, 2001. Prof. Fabian Vargas. & Prof. Juliano Benfica 11/11