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/        => 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:


CMake include script for compiling (from –make cmake)


Make include file for compiling (from –make gmake)


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


Make file for hierarchy blocks (from –make gmake)


Arguments for hierarchical Verilation (from –make gmake)


Arguments for hierarchical Verilation (from –make cmake)


Model header


Model C++ file


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


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


Additional top-level internal C++ files


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


Infrequent cold routines


Infrequent cold routines (hashed to reduce build times)


Wave file generation code (from –trace)


Wave file generation code (from –trace)


DPI import and export declarations (from –dpi)


Global DPI export wrappers (from –dpi)


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


Inline support functions


Global symbol table header


Global symbol table C++


Lower level internal header files


Lower level internal C++ files


Additional lower C++ files


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

For –hierarchy mode, it creates:


Directory to Verilate each hierarchy block (from –hierarchy)


Make dependencies of the top module (from –hierarchy)


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

In specific debug and other modes, it also creates:


XML tree information (from –xml)


JSON tree information (from –json-only)


JSON tree metadata (from –json-only)


Clock Domain Crossing checks (from –cdc)


Statistics (from –stats)


Symbol demangling (from –protect-ids)


Make dependencies (from -MMD)


Timestamps (from –skip-identical)


Debugging graph files (from –debug)


Debugging files (from –debug)


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:


Intermediate dependencies


Intermediate objects


Intermediate dependencies


Intermediate objects


Final executable (from –exe)


Final archive (default lib mode)


Runtime for verilated model (default lib mode)


Library of all Verilated objects


Include of all code for single compile


Intermediate dependencies


Intermediate objects

The Verilated executable may produce the following:


Code coverage output, and default input filename for verilator_coverage


GCC/clang code profiler output, often fed into verilator_profcfunc


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


–prof-exec data file for verilator_gantt

Verilator_gantt may produce the following:


Gantt report waveform output