Packaging a simulator DPI/VPI capture plugin for customers: what to state up front
When shipping a waveform/trace capture library that plugs into a commercial Verilog simulator through standard DPI and VPI, users' first question is 'does it work with my existing binary?'. Things worth stating explicitly in the README: - Using only DPI/VPI means the simulator itself is unmodified, but the user's simulation executable must be rebuilt: the SystemVerilog observer module is compiled with the testbench, and the shared library is linked for DPI symbol resolution and loaded for VPI registration (same absolute path for both, rebuild if relocated). - VPI use needs the simulator's debug/read-access compile option; say which level is the minimum. - Runtime-only loading of a PLI/VPI library into a prebuilt executable may still require a compile-time table or flag in some simulators; check the user guide before promising 'no rebuild'. - Say which signal kinds are supported (packed vectors only vs unpacked arrays, strings, reals, class objects), and whether the observer generator is general or design-specific. - Ship no simulator headers or libraries; build against the user's own installation's standard vpi_user.h / sv_vpi_user.h / svdpi.h. - Include a small self-contained example design with a smoke test that compares every timestamp and 4-state value against an independent path.