Files

Files in the Git Tree

The following is a summary of the files in the Git Tree (distribution) of Verilator:

Changes                     => Version history
README.rst                  => This document
bin/verilator               => Compiler wrapper invoked to Verilate code
docs/                       => Additional documentation
examples/                   => Examples (see manual for descriptions)
include/                    => Files that should be in your -I compiler path
include/verilated*.cpp      => Global routines to link into your simulator
include/verilated*.h        => Global headers
include/verilated.mk        => Common Makefile
src/                        => Translator source code
test_regress                => Internal tests

Files Read/Written

All output files are placed in the output directory specified with the --Mdir option, or “obj_dir” if not specified.

Verilator creates the following files in the output directory:

For –cc/–sc, it creates:

{prefix}.cmake

CMake include script for compiling (from –make cmake)

{prefix}.mk

Make include file for compiling (from –make gmake)

{prefix}_classes.mk

Make include file with class names (from –make gmake)

{prefix}_hier.mk

Make file for hierarchy blocks (from –make gmake)

{prefix}__hierMkArgs.f

Arguments for hierarchical Verilation (from –make gmake)

{prefix}__hierCMakeArgs.f

Arguments for hierarchical Verilation (from –make cmake)

{prefix}.h

Model header

{prefix}.cpp

Model C++ file

{prefix}___024root.h

Top-level internal header file (from SystemVerilog $root)

{prefix}___024root.cpp

Top-level internal C++ file (from SystemVerilog $root)

{prefix}___024root{__n}.cpp

Additional top-level internal C++ files

{prefix}___024root{__DepSet_hash__n}.cpp

Additional top-level internal C++ files (hashed to reduce build times)

{prefix}___024root__Slow{__n}.cpp

Infrequent cold routines

{prefix}___024root{__DepSet_hash__n}.cpp

Infrequent cold routines (hashed to reduce build times)

{prefix}___024root__Trace{__n}.cpp

Wave file generation code (from –trace)

{prefix}___024root__Trace__Slow{__n}.cpp

Wave file generation code (from –trace)

{prefix}__Dpi.h

DPI import and export declarations (from –dpi)

{prefix}__Dpi.cpp

Global DPI export wrappers (from –dpi)

{prefix}__Dpi_Export{__n}.cpp

DPI export wrappers scoped to this particular model (from –dpi)

{prefix}__Inlines.h

Inline support functions

{prefix}__Syms.h

Global symbol table header

{prefix}__Syms.cpp

Global symbol table C++

{prefix}{each_verilog_module}.h

Lower level internal header files

{prefix}{each_verilog_module}.cpp

Lower level internal C++ files

{prefix}{each_verilog_module}{__n}.cpp

Additional lower C++ files

{prefix}{each_verilog_module}{__DepSet_hash__n}.cpp

Additional lower C++ files (hashed to reduce build times)

For –hierarchy mode, it creates:

V{hier_block}/

Directory to Verilate each hierarchy block (from –hierarchy)

{prefix}__hierVer.d

Make dependencies of the top module (from –hierarchy)

{prefix}__hier.dir

Directory to store .dot, .vpp, .tree of top module (from –hierarchy)

In specific debug and other modes, it also creates:

{prefix}.xml

XML tree information (from –xml)

{prefix}.tree.json

JSON tree information (from –json-only)

{prefix}.tree.meta.json

JSON tree metadata (from –json-only)

{prefix}__cdc.txt

Clock Domain Crossing checks (from –cdc)

{prefix}__stats.txt

Statistics (from –stats)

{prefix}__idmap.txt

Symbol demangling (from –protect-ids)

{prefix}__ver.d

Make dependencies (from -MMD)

{prefix}__verFiles.dat

Timestamps (from –skip-identical)

{prefix}{misc}.dot

Debugging graph files (from –debug)

{prefix}{misc}.tree

Debugging files (from –debug)

{prefix}__inputs.vpp

Pre-processed verilog for all files (from –debug)

{prefix}_ {each_verilog_base_filename}.vpp

Pre-processed verilog for each file (from –debug)

After running Make, the C++ compiler may produce the following:

verilated{misc}*.d

Intermediate dependencies

verilated{misc}*.o

Intermediate objects

{mod_prefix}{misc}*.d

Intermediate dependencies

{mod_prefix}{misc}*.o

Intermediate objects

{prefix}

Final executable (from –exe)

lib{prefix}.a

Final archive (default lib mode)

libverilated.a

Runtime for verilated model (default lib mode)

{prefix}__ALL.a

Library of all Verilated objects

{prefix}__ALL.cpp

Include of all code for single compile

{prefix}{misc}.d

Intermediate dependencies

{prefix}{misc}.o

Intermediate objects

The Verilated executable may produce the following:

coverage.dat

Code coverage output, and default input filename for verilator_coverage

gmon.out

GCC/clang code profiler output, often fed into verilator_profcfunc

profile.vlt

–prof-pgo data file for Thread Profile-Guided Optimization

profile_exec.dat

–prof-exec data file for verilator_gantt

Verilator_gantt may produce the following:

profile_exec.vcd

Gantt report waveform output