Device Interface wrappers, work in progress and questions (c.f. here).

  1. Could the gnucap verilog modelgen be made to target other simulators with enough work or is it very tightly coupled to gnucap internals throughout? For example something like OSDI to replace/supplement OpenVAF in ngspice/vacask?

There are two answers here.

modelgen-verilog separates read-in/elaboration from code generation. mg_in_*cc and mg_out_*.cc In order to generate different code, you'd only need to replace the mg_out_*.cc files. This is akin to replacing the “templates” in ADMS or the “targets” in icarus. If you'd like to do an initial set of mg_out_*.cc, I'm happy to help resolve some friction and consolidate interfaces.

We also have a replacement for ODSI. It's the Gnucap device interface. Gnucap devices are built from controlled sources. The coupling between Gnucap device model and simulator is negotiated by plugins (those sources), and you could use whatever you need. There is spice-wrapper.cc that wraps spice interface to gnucap interface. It gives some ideas. Probably the next step is an inverse wrapper, or a wrapper for OSDI. OSDI is a little less than spice, and should be a straighforward mod. (We have funding for this work, too).