<?xml version="1.0" encoding="utf-8"?>
<!-- generator="FeedCreator 1.7.2-ppt DokuWiki" -->
<?xml-stylesheet href="http://gnucap.org/dokuwiki/lib/exe/css.php?s=feed" type="text/css"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
    <title>* gnucap:manual:tech:plugins</title>
    <tagline></tagline>
    <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/"/>
    <id>http://gnucap.org/dokuwiki/</id>
    <modified>2026-04-08T02:42:15-05:00</modified>
    <generator>FeedCreator 1.7.2-ppt DokuWiki</generator>
    <entry>
        <title>gnucap:manual:tech:plugins:coding</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:coding?rev=1371708102&amp;do=diff"/>
        <created>2013-06-20T01:01:42-05:00</created>
        <issued>2013-06-20T01:01:42-05:00</issued>
        <modified>2013-06-20T01:01:42-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:coding?rev=1371708102&amp;do=diff</id>
        <summary>Concepts

Coding

This section describes the internals of a plugin, including how it interfaces to the core simulator.

Basics

The interface to plugins is through C++ derived classes, virtual functions, and a dispatcher.

There are several types of plugins.  The type is determined by the base class that is used.  When a plugin is loaded, a single static object is created, and registered with a dispatcher.  The dispatcher allows a lookup by name.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:commands</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:commands?rev=1371708309&amp;do=diff"/>
        <created>2013-06-20T01:05:09-05:00</created>
        <issued>2013-06-20T01:05:09-05:00</issued>
        <modified>2013-06-20T01:05:09-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:commands?rev=1371708309&amp;do=diff</id>
        <summary>Framework

Command plugins are called by a command interpreter, in a loop.

Usually, the main loop reads from the standard input or a file, line by line.  Extension lines are combined when the file is read, so the command code doesn't see them.  The string is converted to a “command string”, an object of type “CS”, which is defined in “ap.h”.  This command string contains the data, an index showing how far it has been read, and some status.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:devices</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:devices?rev=1245298352&amp;do=diff"/>
        <created>2009-06-17T23:12:32-05:00</created>
        <issued>2009-06-17T23:12:32-05:00</issued>
        <modified>2009-06-17T23:12:32-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:devices?rev=1245298352&amp;do=diff</id>
        <summary>Framework

Devices, model definitions, commands, and subcircuit definitions are all stored in a linked list, and are defined by classes derived from “CARD”.  The container is a CARD_LIST.

Device instances are derived from COMPONENT, which is derived from CARD.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:files</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:files?rev=1449869995&amp;do=diff"/>
        <created>2015-12-11T15:39:55-05:00</created>
        <issued>2015-12-11T15:39:55-05:00</issued>
        <modified>2015-12-11T15:39:55-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:files?rev=1449869995&amp;do=diff</id>
        <summary>Concepts

Files

Gnucap plugins are standard “shared object” or “dynamic link” files, native to the environment.

Plugins must be compiled for the particular system, like shared libraries.

System Requirements

The host system must be capable of dynamic linking, and support the POSIX.1-2001 system calls for loading and unloading dynamic libraries on demand.  In particular, the calls “dlopen”, “dlclose”, and “dlerror” are used.  The “dlsym” call is not used.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:languages</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:languages?rev=1698976580&amp;do=diff"/>
        <created>2023-11-02T20:56:20-05:00</created>
        <issued>2023-11-02T20:56:20-05:00</issued>
        <modified>2023-11-02T20:56:20-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:languages?rev=1698976580&amp;do=diff</id>
        <summary>Framework

Language plugins read and write a particular simulation language, and set up related commands.  They determine the syntax used by gnucap.

This refers to SIMULATION languages, like “spice”, “spectre” or “verilog”, not NATURAL languages.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:output</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:output?rev=1581593260&amp;do=diff"/>
        <created>2020-02-13T05:27:40-05:00</created>
        <issued>2020-02-13T05:27:40-05:00</issued>
        <modified>2020-02-13T05:27:40-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:output?rev=1581593260&amp;do=diff</id>
        <summary>Pluggable output (preliminary)

Some data is generated by (simulation) commands. Depending on the application
it needs to appear on the screen, in an array, in a file or should be forwarded
to another process. Sometimes it is just analysed on the fly, and acted upon.
Whichever way, this is implemented in OUTPUT plugins. Eventually adding another
file format or adding another application is decoupled from implementing yet
another simulation command.

An output plugin (usually) registers a command…</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:parameter_functions_and_measurements</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:parameter_functions_and_measurements?rev=1249752077&amp;do=diff"/>
        <created>2009-08-08T12:21:17-05:00</created>
        <issued>2009-08-08T12:21:17-05:00</issued>
        <modified>2009-08-08T12:21:17-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:parameter_functions_and_measurements?rev=1249752077&amp;do=diff</id>
        <summary>Framework

The “measure” command and “parameter” commands work differently because of parsing problems.  This is will be fixed someday.

One important difference is that the “measure” command fully evaluates the function call, and any expressions associated with it, at the time of the command, but the “parameter” command defers evaluation to when the parameter is actually used.</summary>
    </entry>
    <entry>
        <title>gnucap:manual:tech:plugins:solver</title>
        <link rel="alternate" type="text/html" href="http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:solver?rev=1757239107&amp;do=diff"/>
        <created>2025-09-07T04:58:27-05:00</created>
        <issued>2025-09-07T04:58:27-05:00</issued>
        <modified>2025-09-07T04:58:27-05:00</modified>
        <id>http://gnucap.org/dokuwiki/doku.php/gnucap:manual:tech:plugins:solver?rev=1757239107&amp;do=diff</id>
        <summary>Framework

Like other plugins, solvers are loaded using the load command or -a cmdline argument. The SIM_DATA class has two matrices, _aa and _lu.
The former for dc/tran/op (real valued) and the latter for small signal analysis like ac, pz, noise etc. (complex). SIM_DATA is currently statically instanciated in CKT_BASE::_sim.</summary>
    </entry>
</feed>
