# 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}__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