28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
# OSDI implementation for NGSPICE
|
|
|
|
OSDI (Open Source Device Interface) is a simulator independent device interface, that is used by the OpenVAF compiler.
|
|
Implementing this interface in NGSPICE allows loading Verilog-A models compiled by OpenVAF.
|
|
The interface is fixed and does not require the compiler to know about NGSPICE during compilation.
|
|
NGSPICE also doesn't need to know anything about the compiled models at compilation.
|
|
Therefore, these models can be loaded dynamically at runtime.
|
|
|
|
To that end the `osdi` command is provided.
|
|
It allows loading a dynamic library conforming to OSDI.
|
|
Example usage: `osdi diode.osdi`.
|
|
|
|
If used within a netlist the command requires the `pre_` prefix.
|
|
This ensures that the devices are loaded before the netlist is parsed.
|
|
|
|
Example usage: `pre_osdi diode.osdi`
|
|
|
|
If a relative path is provided to the `osdi` command in a netlist, it will resolve that path **relative to the netlist**, not relative to current working directory.
|
|
This ensures that netlists can be simulated from any directory
|
|
|
|
## Build Instructions
|
|
|
|
To compile NGSPICE with OSDI support ensure that the `--enable-predictor` and `--enable-osdi` flags are used.
|
|
The `compile_linux.sh` file enables these flags by default.
|
|
|
|
|
|
|