Fix for assertion error when expanding macro.
[iverilog.git] / t-dll.txt
bloba9394a19186bd6320f217ac4eec3db9b592b22e8
2 LOADABLE TARGETS
4 Icarus Verilog supports dynamically loading code generator modules to
5 perform the back-end processing of the completed design. The user
6 specifies on the command line the module to load. The compiler loads
7 the module (once the design is compiled and elaborated) and calls it
8 to finally handle the design.
10 Loadable target modules implement a set of functions that the core
11 compiler calls to pass the design to it, and the module in turn uses a
12 collection of functions in the core (the API) to access details of the
13 design.
15 LOADING TARGET MODULES
17 The target module loader is invoked with the ivl flag "-tdll". That
18 is, the DLL loader is a linked in target type. The name of the target
19 module to load is then specified with the DLL flag, i.e. "-fDLL=<path>".
21 COMPILING TARGET MODULES
23 <write me>
25 LOADABLE TARGET MODULE API
27 The target module API is defined in the ivl_target.h header file. This
28 declares all the type and functions that a loadable module needs to
29 access the design.
32 ABOUT SPECIFIC EXPRESSION TYPES
34 In this section find notes about the various kinds of expression
35 nodes. The notes here are in addition to the more generation
36 documentation in the ivl_target.h header file.
38 * IVL_EX_CONCAT
40   The concatenation operator forms an expression node that holds the
41   repeat count and all the parameter expressions. The repeat count is
42   an integer that is calculated by the core compiler so it fully
43   evaluated, and *not* an expression.
45   The parameter expressions are retrieved by the ivl_expr_parm method,
46   with the index increasing as parameters go from left to right, from
47   most significant to least significant. (Note that this is different
48   from the order of bits within an expression node.)
50 * IVL_EX_NUMBER
52   This is a constant number. The width is fully known, and the bit
53   values are all represented by the ASCII characters 0, 1, x or z. The
54   ivl_expr_bits method returns a pointer to the least significant bit,
55   and the remaining bits are ordered from least significant to most
56   significant. For example, 5'b1zzx0 is the 5 character string "0xzz1".