Icarus Verilog LOADABLE TARGET API (ivl_target) Copyright 2002 Stephen Williams The ivl_target API is the interface available to modules that the Icarus Verilog compiler loads to act as a code generator. The API provides an interface to the elaborated, possibly synthesized, design for code generators that are intended to write netlist files or executable programs. The functions and types of the API are summarized in the ivl_target.h header file. This document describes how the functions and types of the API are used to access and interpret the netlist of the design. LPM DEVICES All LPM devices support a small set of common LPM functions, as described in the ivl_target header file. The ivl_lpm_t object has a type enumerated by ivl_lpm_type_t, and that type is accessible via the ivl_lpm_type function. The following are type specific aspects of LPM devices. * IVL_LPM_UFUNC This LPM represents a user defined function. It is a way to connect behavioral code into a structural network. The UFUNC device has a vector output and a set of inputs. The ivl_lpm_define function returns the definition as an ivl_scope_t object. The output vector is accessible through the ivl_lpm_q, and the output has the width defined by ivl_lpm_width. This similar to most every other LPM device with outputs. There are ivl_lpm_size() input ports, each with the width ivl_lpm_data2_width(). The actual nexus is indexed by ivl_lpm_data2().