Skip to main content

verilator

verilator(IP_LIB **kwargs)

Create a target for invoking verilator (compilation, elaboration, and simulation) on IP_LIB.

It will create a target run_<IP_LIB>_verilator that will compile, elaborate, and simulate the IP_LIB design.

Parameters

NameTypeDescription
IP_LIBstringThe target IP library, it needs to have SOURCES property set with a list of SystemVerilog files.

Keyword Arguments

NameTypeDescription
COVERAGEboolEnable code coverage during compilation and simulation.
TRACEboolEnable waveform tracing.
TRACE_FSTboolEnable FST waveform tracing format.
SYSTEMCboolEnable SystemC support.
TRACE_STRUCTSboolEnable tracing of SystemVerilog structs.
MAINboolGenerate a top-level C++ main() that parses arguments but drives no inputs. Sufficient for top-level SystemVerilog designs with no inputs. Also creates a runnable executable target.
TIMINGboolEnable timing support in simulation.
NO_RUN_TARGETboolDo not create a run target.
PREFIXstringPrefix name used for generated output files and targets.
TOP_MODULEstringTop module name to be used for elaboration and simulation.
THREADSintNumber of threads to be used during compilation or simulation.
DIRECTORYstringOutput directory for generated build and simulation files.
EXECUTABLE_NAMEstringReplace the default name of the generated executable target.
RUN_TARGET_NAMEstringReplace the default name of the run target.
VERILATOR_ARGSstringExtra arguments to be passed to the Verilator invocation.
OPT_SLOWboolEnable slow but optimized compilation mode.
OPT_FASTboolEnable fast compilation optimization mode.
OPT_GLOBALboolEnable global optimization mode.
RUN_ARGSstringExtra arguments to be passed to the simulation executable.
FILE_SETSlist[string]Specify list of file sets to retrieve the sources from.

verilator_configure_cxx(**kwargs)

.. note:: This is a macro, and so does not introduce a new scope.

This macro is used to configure the C and CXX compiler to the one used by the tool. In this specific case, it won't change anything for the compiler use but will add some useful information to IP_LIB.

The only supported library by this function is DPI-C, it can be used as done in the following example :

verilator_configure_cxx(LIBRARIES DPI-C)

Keyword Arguments

NameTypeDescription
LIBRARIESlist[string]Libraries that needs to be added.

verilator_add_cxx_libs(**kwargs)

This function is called by the verilator_configure_cxx macro, you shouldn't use it directly.

It will add the needed information to IP_LIB and add some flags for the compilation and linking.

Keyword Arguments

NameTypeDescription
32BITboolUse 32 bitness.
LIBRARIESlist[string]libraries that needs to be added, possible choice are DPI-C only for now.