40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
|
|
Icarus Verilog LOADABLE TARGET API (ivl_target)
|
|
|
|
Copyright 2002 Stephen Williams <steve@icarus.com>
|
|
|
|
|
|
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().
|