Super-FinSim allows the user to call functions written
in the C language directly from within the Verilog code. The user only has
to provide one or more C header files with the prototypes of the C functions.
The arguments of these C functions can be characters (8 bits), short integers
(16 bits) integers (32 bits), long long integers (64
bits) and pointers to them. Super-FinSim assumes that all pointers in the
interface correspond to outputs that are going to be written
inside the C functions. All other arguments are assumed to be inputs tothe
C functions. The semantics for calling C user functions and tasks are similar
to the semantics for calling Verilog or PLI functions andtasks.
The header files providing the prototypes of the C functions are passedto
finvc with the -ch <name of header file> option. This option can be
specified any number of times if more than one header file is required.
Note that the header files must be self sufficient (as all
well written header files ought to be), i.e. if a header file uses things
defined in another header file then the 2nd header file should
be included in the 1st header file. If any of the header files is in a different
directory, the user can specify the include directory by
using the +incdir option the same way as for verilog header files.
The object files containing the user C functions can be specified
either in the file finpli.mak in the variable FINUSERCOBJ:
FINUSERCOBJ = example.o
or via the environment variable with the same name:
setenv FINUSERCOBJ example.o
More than one object files can be specified. If used, the file finpli.mak
has to be in the local directory where finbuild is called.
If the specified object file does not exist, finbuild will attempt to compile
it using a default compilation rule that calls the C compiler
on the corresponding .c file.