You can clone with
Cannot retrieve contributors at this time
HOW IT WORKSThe VPI interface for Icarus Verilog works by creating from acollection of PLI applications a single vpi module. The vpi moduleincludes compiled code for the applications linked together (with anyother libraries that the applications need) into a module with asingle exported symbol, the vlog_startup_routines array.The product that wishes to invoke the module (normally at run time)loads the module, locates the vlog_startup_routines table, and callsall the startup routines contained in that table. It is possible for aproduct to link with many modules. In that case, all the modules arelinked in and startup routines are called in order.The product that uses vpi modules uses the environment variableVPI_MODULE_PATH as a ':' separated list of directories. This is themodule search path. When a module is specified by name (using whatevermeans the product supports) the module search path is scanned untilthe module is located.The special module name "system.vpi" is part of the core IcarusVerilog distribution and includes implementations of the standardsystem tasks/functions.COMPILING A VPI MODULESee the iverilog-vpi documentation.TRACING VPI USEThe vvp command includes the ability to trace VPI calls. This isuseful if you are trying to debug a problem with your code. Toactivate tracing simply set the VPI_TRACE environment variable, withthe path to a file where trace text gets written. For example: setenv VPI_TRACE /tmp/foo.txtThis tracing is pretty verbose, so you don't want to run like thisnormally. Also, the format of the tracing messages will changeaccording to my needs (and whim) so don't expect to be able to parseit in software.