Oregano,  Programación

Models y SubCkt

Una cosa que le venía faltando a Oregano era la posibilidad de utilizar modelos complejos para la simulación, y que por suerte ya quedó en el pasado ;).

Hoy luego de mucho leer sobre Spice, NgSpice y GnuCap logré entender un poco como se usan los modelos (a través del comando .model) y los subcircuitos (a través del comando .subckt). Esto sumado a la magia del .include hacen posible, por ejemplo, utilizar un componente «Diode Bridge» en lugar de tener que poner cuatro diodos :-).

La historia empieza modificando el componente «Diode Bridge» de la biblioteca default para que en lugar de usar el template que no andaba utilice : X_@refdes %1 %2 %3 %4 @model, siendo Mode = DiodeBridge. El X_ le dice al backend que es una llamada a un subcircuito y @refdes es completado con el nombre elegido.

El siguiente paso es crear un archivo DiodeBridge.model en el directorio data/models que contenga la descripción del circuito. El resto de la mágia está ya en el código de generación de la netlist.

El objetivo ahora es tratar de extender más aún este nuevo feature y para eso voy a empezar con los ejemplos que encontró acá. Un punto importante y que yo realmente desconozco, es qué componentes son sumamente necesarios y deberían funcionar out-of-the-box. Si fuera por mí con resistencias ideales me sobra :P, por lo que escucho ofertas!.
El screenshot obligado (perdón, la ventana de plot ocupa mucho lugar y me tapa el fondo :-))

oreganomodels.png

4 Comments

  • linkmk

    ola que tal, estoy empezando a simular circuitos con oregano, y trato de simular una compuerta or o una and. el caso es que en las librerias de oregano viene el modelo pero a la hora de ejecutar la simulacion, marca que no lo encuentra, mi pregunta es, que si no conoces algun lugar para encontrar los modelos para oregano

  • Gazer

    Desgraciadamente no. El problema que no siempre se pueden redistribuir los modelos que dan los fabricantes y nunca nadie se tomo el trabajo de hacer unos propios que sean aceptablemente útiles.