Saltar al contenido principal
LibreTexts Español

7.3: Fundamentos de la programación SPICE

  • Page ID
    153800
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Programar una simulación de circuito con SPICE es muy similar a la programación en cualquier otro lenguaje informático: debes escribir los comandos como texto en un archivo, guardar ese archivo en el disco duro de la computadora y luego procesar el contenido de ese archivo con un programa (compilador o intérprete) que entienda dichos comandos.

    En un lenguaje informático interpretado, la computadora contiene un programa especial llamado intérprete que traduce el programa que escribiste (el llamado archivo fuente) al lenguaje propio de la computadora, sobre la marcha, como se ejecuta:

    01041.png

    En un lenguaje informático compilado, el programa que escribiste es traducido de una vez al propio idioma de la computadora por un programa especial llamado compilador. Después de que el programa que has escrito haya sido “compilado”, el archivo ejecutable resultante no necesita más traducción para ser entendido directamente por la computadora. Ahora se puede “ejecutar” en una computadora ya sea que se haya instalado o no software compilador en esa computadora:

    01042.png

    SPICE es un lenguaje interpretado. Para que una computadora pueda entender las instrucciones SPICE que escribes, debe tener instalado el programa SPICE (intérprete):

    01043.png

    Los archivos fuente SPICE se conocen comúnmente como “netlists”, aunque a veces se les conoce como “mazos” con cada línea del archivo que se llama “carta”. Lindo, ¿no te parece? Las listas de red son creadas por una persona como usted escribiendo instrucciones línea por línea usando un procesador de textos o un editor de texto. Los editores de texto son muy preferidos sobre los procesadores de texto para cualquier tipo de programación informática, ya que producen texto ASCII puro sin códigos incrustados especiales para resaltar texto (como fuentes cursiva o negrita), que son ininterpretables por el software intérprete y compilador.

    Al igual que en la programación general, el archivo fuente que cree para SPICE debe seguir ciertas convenciones de programación. Es un lenguaje informático en sí mismo, aunque sencillo. Habiendo programado en BASIC y C/C++, y tener algo de experiencia leyendo programas PASCAL y FORTRAN, es mi opinión que el lenguaje de SPICE es mucho más sencillo que cualquiera de estos. Se trata de la misma complejidad que un lenguaje de marcado como HTML, quizás menos.

    Hay un ciclo de pasos a seguir en el uso de SPICE para analizar un circuito. El ciclo comienza cuando invocas por primera vez el programa de edición de texto y haces tu primer borrador de la netlist. El siguiente paso es ejecutar SPICE en esa nueva netlist y ver cuáles son los resultados. Si eres un usuario novato de SPICE, tus primeros intentos de crear una buena netlist estarán plagados de pequeños errores de sintaxis. No se preocupen, como todo programador de computadoras sabe, la competencia viene con mucha práctica. Si su ejecución de prueba produce mensajes de error o resultados que obviamente son incorrectos, debe volver a invocar el programa de edición de texto y modificar la lista de red. Después de modificar el netlist, es necesario volver a ejecutar SPICE y verificar los resultados. La secuencia, entonces, se ve algo así:

    • Redacte una nueva lista de redes con un programa de edición de texto. Guarde esa lista de red en un archivo con un nombre de su elección.
    • Ejecute SPICE en esa netlist y observe los resultados.
    • Si los resultados contienen errores, inicie nuevamente el programa de edición de texto y modifique la lista de red.
    • Ejecute SPICE nuevamente y observe los nuevos resultados.
    • Si aún hay errores en la salida de SPICE, vuelva a editar la netlist con el programa de edición de texto. Repita este ciclo de edición/ejecución tantas veces como sea necesario hasta obtener los resultados deseados.
    • Una vez que hayas “depurado” tu netlist y estés obteniendo buenos resultados, vuelve a ejecutar SPICE, solo que esta vez redirigiendo la salida a un nuevo archivo en lugar de simplemente observarlo en la pantalla de la computadora.
    • Inicie un programa de edición de texto o un programa de procesador de textos y abra el archivo de salida SPICE que acaba de crear. Modifique ese archivo para que se adapte a sus necesidades de formato y guarde esos cambios en el disco y/o imprímalos en papel.

    Para “ejecutar” un “programa” SPICE, debe escribir un comando en una interfaz de símbolo del terminal, como el que se encuentra en MS-DOS, UNIX o la opción de símbolo MS-Windows DOS:

    spice < example.cir 

    La palabra “spice” invoca el programa de interpretación SPICE (¡siempre que el software SPICE haya sido instalado en la computadora!) , el símbolo “<” redirige el contenido del archivo fuente al intérprete SPICE, y example.cir es el nombre del archivo fuente para este ejemplo de circuito. La extensión de archivo “.cir” no es obligatoria; he visto “.inp” (para “entrada”) y simplemente “.txt” simplemente funcionan bien, también. Incluso funcionará cuando el archivo netlist no tenga extensión. A SPICE no le importa cómo lo nombras, siempre y cuando tenga un nombre compatible con el sistema de archivos de tu computadora (para máquinas MS-DOS antiguas, por ejemplo, el nombre de archivo no debe tener más de 8 caracteres de longitud, con una extensión de 3 caracteres, y sin espacios u otros caracteres no alfanuméricos).

    Cuando se escribe este comando, SPICE leerá el contenido del archivo example.cir, analizará el circuito especificado por ese archivo y enviará un informe de texto a la salida estándar del terminal de computadora (generalmente la pantalla, donde se puede ver que se desplaza). Una salida típica de SPICE es varias pantallas dignas de información, por lo que es posible que desee revisarla con una ligera modificación del comando:

    spice < example.cir | more 

    Esta alternativa “canaliza” la salida de texto de SPICE a la utilidad “more”, que permite que solo se muestre una página a la vez. Lo que esto significa (en inglés) es que la salida de texto de SPICE se detiene después de una pantalla llena, y espera hasta que el usuario presione una tecla del teclado para mostrar la siguiente pantalla llena de texto. Si solo estás probando tu archivo de circuito de ejemplo y quieres verificar si hay algún error, esta es una buena manera de hacerlo.

    spice < example.cir > example.txt 

    Esta segunda alternativa (arriba) redirige la salida de texto de SPICE a otro archivo, llamado example.txt, donde se puede ver o imprimir. Esta opción corresponde al último paso del ciclo de desarrollo enumerado anteriormente. Este autor recomienda que utilices esta técnica de “redirección” a un archivo de texto solo después de haber probado que tu netlist de circuito de ejemplo funciona bien, para que no pierdas el tiempo invocando un editor de texto solo para ver la salida durante las etapas de “depuración”.

    Una vez que tenga una salida SPICE almacenada en un archivo.txt, puede usar un editor de texto o (¡mejor aún!) un procesador de textos para editar la salida, eliminando cualquier banner y mensaje innecesarios, incluso especificando fuentes alternativas para resaltar los encabezados y/o datos para una apariencia más pulida. Entonces, por supuesto, puedes imprimir la salida en papel si así lo deseas. Siendo que la salida directa SPICE es texto ASCII plano, dicho archivo será universalmente interpretable en cualquier computadora ya sea SPICE instalado en él o no. Además, el formato de texto plano asegura que el archivo será muy pequeño en comparación con los archivos gráficos de captura de pantalla generados por simuladores de “apuntar y hacer clic”.

    El formato de archivo netlist requerido por SPICE es bastante sencillo. Un archivo netlist no es más que un archivo de texto ASCII sin formato que contiene múltiples líneas de texto, cada línea describe un componente de circuito o un comando especial SPICE. La arquitectura del circuito se especifica asignando números a los puntos de conexión de cada componente en cada línea, las conexiones entre los componentes designados por números comunes. Examine el siguiente diagrama de circuito de ejemplo y su correspondiente archivo SPICE. Por favor, ten en cuenta que el diagrama de circuito existe solo para facilitar la comprensión de la simulación a los seres humanos. SPICE solo entiende netlists:

    01004.png

    Example netlist
    v1 1 0 dc 15
    r1 1 0 2.2k
    r2 1 2 3.3k     
    r3 2 0 150
    .end
    

    Cada línea del archivo fuente que se muestra arriba se explica aquí:

    • v1 representa la batería (fuente de voltaje 1), terminal positivo numerado 1, terminal negativo numerado 0, con una salida de voltaje CC de 15 voltios.
    • r1 representa la resistencia R1 en el diagrama, conectada entre los puntos 1 y 0, con un valor de 2.2 kΩ.
    • r2 representa la resistencia R2 en el diagrama, conectada entre los puntos 1 y 2, con un valor de 3.3 kΩ.
    • r3 representa la resistencia R3 en el diagrama, conectada entre los puntos 2 y 0, con un valor de 150 kΩ.

    Los puntos eléctricamente comunes (o “nodos”) en una descripción de circuito SPICE comparten números comunes, de la misma manera que los cables que conectan puntos comunes en un circuito grande suelen compartir etiquetas de cable comunes.

    Para simular este circuito, el usuario escribiría esas seis líneas de texto en un editor de texto y las guardaría como un archivo con un nombre único (como ejemplo.cir). Una vez que el netlist está compuesto y guardado en un archivo, el usuario procesa ese archivo con una de las instrucciones de línea de comandos mostradas anteriormente (spice < ejemplo.cir), y recibirá esta salida de texto en la pantalla de su computadora:

    1*******10/10/99 ******** spice 2g.6 3/15/83 ********07:32:42*****
    
    0example netlist    
    
    0****   input listing                 temperature =   27.000 deg c
    
     v1 1 0 dc 15    
     r1 1 0 2.2k     
     r2 1 2 3.3k     
     r3 2 0 150      
     .end    
    
    *****10/10/99 *********  spice 2g.6  3/15/83 ******07:32:42******
    
    0example netlist   
    0****   small signal bias solution     temperature =   27.000 deg c
    
      node   voltage     node   voltage
    
     (  1)   15.0000    (  2)    0.6522
    
         voltage source currents
         name       current
    
         v1       -1.117E-02
    
         total power dissipation   1.67E-01  watts
             
            job concluded
    0         total job time            0.02
    1*******10/10/99 ********  spice 2g.6  3/15/83 ******07:32:42*****
    
    0****   input listing                 temperature =   27.000 deg c
    

    SPICE comienza imprimiendo la hora, fecha y versión utilizada en la parte superior de la salida. Luego enumera los parámetros de entrada (las líneas del archivo fuente), seguido de una visualización de lecturas de voltaje de CC de cada nodo (número de referencia) a tierra (siempre número de referencia 0). A esto le sigue una lista de lecturas de corriente a través de cada fuente de voltaje (en este caso solo hay una, v1). Finalmente, se imprime la disipación de potencia total y el tiempo de cómputo en segundos.

    Todos los valores de salida proporcionados por SPICE se muestran en notación científica.

    El listado de salida SPICE que se muestra arriba es un poco verboso para el gusto de la mayoría de las personas. Para una presentación final, podría ser agradable recortar todo el texto innecesario y dejar solo lo que importa. Aquí hay una muestra de esa misma salida, redirigida a un archivo de texto (spice example.txt < example.cir >), luego recortada juiciosamente con un editor de texto para su presentación final e impresa:

    example netlist    
    v1 1 0 dc 15    
    r1 1 0 2.2k     
    r2 1 2 3.3k     
    r3 2 0 150      
    .end  
    
    node    voltage    node     voltage
    (  1)   15.0000    (  2)    0.6522
    
    voltage source currents
    name       current
    v1       -1.117E-02
    
    total power dissipation   1.67E-01  watts
    

    Una de las cosas muy buenas de SPICE es que tanto los formatos de entrada como de salida son de texto plano, que es el formato electrónico más universal y fácil de editar que existe. Prácticamente cualquier computadora podrá editar y mostrar este formato, incluso si el programa SPICE en sí no reside en esa computadora. Si el usuario lo desea, es libre de usar las capacidades avanzadas de los programas de procesamiento de textos para hacer que la salida se vea más elegante. Los comentarios pueden incluso insertarse entre líneas de la salida para mayor claridad para el lector.


    This page titled 7.3: Fundamentos de la programación SPICE is shared under a gnudls 1.3 license and was authored, remixed, and/or curated by Tony R. Kuphaldt (All About Circuits) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.