# VVP as a library

If configured with

    --enable-libvvp

the vvp program will be built as a small stub that depends on a shared library, libvvp.so. The library may also be used to include a vvp simulation in a larger program. Typically, the simulation communicates with its host program using VPI, but since almost all the functions of vvp are included in the library it may be possible to use text output and interactive mode.

The accessible functions of the library are defined and documented in the header file, vvp/libvvp.h. Although vvp is a C++ program, the header file presents a C interface.

Note that the vvp software was not designed to be used this way and the library is a straightforward recompilation of the program code. That imposes some restrictions, mostly arising from the use of static variables: only a single run of a single simulation instance can be expected to work without special actions. To mitigate these restrictions, the library may by loaded dynamically and unloaded at the end of each simulation run. Parallel simulation should be possible by making multiple copies of the library with different names.