VERILATOR(1)
๐ VERILATOR(1) ๐
User Contributed Perl Documentation
okay bestie, welcome to the VERILATOR(1) page โ brought to you by User Contributed Perl Documentation. Sheโs giving legendary tool energy, and weโre gonna get through this together, no cap. ๐
๐ NAME ๐
Verilator โ lint, compile and simulate SystemVerilog code using C++/SystemC. periodt. โจ
โจ SYNOPSIS โจ
Hereโs the vibe check for how you actually call her:
verilator --help
verilator --version
verilator --binary -j 0 [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --cc [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --sc [options] [source_files.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --lint-only -Wall [source_files.v]...
๐ธ DESCRIPTION ๐ธ
The Verilator package converts all synthesizable, and many behavioral, Verilog and SystemVerilog designs into a C++ or SystemC model that after compiling can be executed. Lowkey iconic behavior. ๐
Real talk though: Verilator is not a traditional simulator, but a compiler. Sheโs built different, fr fr. ๐
For documentation see <https://verilator.org/verilator_doc.html>.
๐ ARGUMENT SUMMARY ๐
This is a short summary of the arguments to the verilator executable. See <https://verilator.org/guide/latest/exe_verilator.html> for the detailed descriptions of these arguments.
<file.v>โ Verilog package, module, and top module filenames. These are the main characters of your file list, ngl. ๐<file.c/cc/cpp>โ Optional C++ files to compile in. Extra C++? She said โsay less,โ bestie. ๐ซถ<file.a/o/so>โ Optional C++ files to link in. Throw them in the group chat, iykyk. ๐ฅ+1364-1995ext+<ext>โ says use Verilog 1995 when you see files with the extension<ext>. old school, but make it fashion ๐+1364-2001ext+<ext>โ use Verilog 2001 for<ext>files. glow up from 1995 โจ+1364-2005ext+<ext>โ use Verilog 2005 for<ext>files. the 2005 era said let there be more features ๐+1800-2005ext+<ext>โ use SystemVerilog 2005 for<ext>files. entering the SV era ๐ฆ+1800-2009ext+<ext>โ use SystemVerilog 2009 for<ext>files. 2009 said hold my coffee โ+1800-2012ext+<ext>โ use SystemVerilog 2012 for<ext>files. the 2012 vibes are immaculate ๐+1800-2017ext+<ext>โ use SystemVerilog 2017 for<ext>files. 2017 said we're not done yet ๐ฅ+1800-2023ext+<ext>โ use SystemVerilog 2023 for<ext>files. freshest of fresh, no cap ๐--no-aslrโ turns off address space layout randomization. just don't, bestie ๐--no-assertโ kills all assertions. they're silenced, periodt ๐คซ--no-assert-caseโ kills those unique/unique0/priority-case assertions. bye bye ๐--autoflushโ flushes streams after every$display. everything comes out immediately, no waiting ๐ฆ--bbox-sysโ blackboxes unknown$systemcalls. wraps them up like a lil gift ๐--bbox-unsupโ blackboxes unsupported language features. we don't talk about those ๐--binaryโ builds a model binary. it's giving executable energy ๐โโ๏ธ--buildโ builds the model executable/library after Verilation. the main event after the pre-game ๐ฌ--build-dep-bin <filename>โ overrides the build dependency Verilator binary. swap out the binary, swap out the vibe ๐--build-jobs <jobs>โ sets parallelism for--build. more jobs = more multitasking ๐ช--ccโ creates C++ output. C++ bestie, we love to see it ๐-CFLAGS <flags>โ C++ compiler arguments for the makefile. pass those flags like notes in class ๐--compiler <compiler-name>โ tunes for the specified C++ compiler. tell Verilator which compiler it's dealing with ๐ค--compiler-includeโ includes an additional header in the precompiled one. extra header, extra sparkle โจ--constraint-array-limit <size>โ maximum array size for constraint array reduction. big arrays need limits too ๐ง--converge-limit <loops>โ tunes convergence settle time. how many loops till we chill? ๐--coverageโ enables all coverage. turned all the way up, no dimming ๐--coverage-exprโ enables expression coverage. tracking every expression like a stalker ๐--coverage-expr-max <value>โ maximum permutations allowed for an expression. cap it, bestie ๐งข--coverage-fsmโ enables FSM state/arc coverage. state machine tea is piping hot ๐ต--coverage-lineโ enables line coverage. every line counts, literally ๐--coverage-max-width <width>โ maximum array depth for coverage. depth limit, we're not going to the abyss ๐--coverage-toggleโ enables toggle coverage. flip flop flippin' ๐--coverage-underscoreโ enables coverage of_signals. those sneaky underscores get tracked too ๐ต๏ธโโ๏ธ--coverage-userโ enables SVL user coverage. user-defined coverage, you do you ๐โโ๏ธ-D<var>[=<value>]โ sets a preprocessor define. define it like you mean it ๐--debugโ enables debugging. detective mode activated ๐ต๏ธโโ๏ธ--debug-checkโ enables debugging assertions. double-checking the debug, very meta ๐--no-debug-leakโ stops leaking memory in--debugmode. no more leaky vibes ๐ฐ--debugi <level>โ enables debugging at a specified level. dial the debug up to level<level>๐๏ธ--debugi-<srcfile> <level>โ enables debugging a source file at a level. per-file debug control, fancy ๐--no-decorationโ disables comments and lowers the spacing level. minimalism era, clean aesthetic ๐ค--decorations <level>โ sets output comment and spacing level. decoration level:<level>๐--default-language <lang>โ default language to parse. start with<lang>as the main character ๐ญ+define+<var>=<value>โ sets a preprocessor define. plus sign energy, but it's a define โ--diagnostics-sarifโ enables SARIF diagnostics output. bougie diagnostic format, we love ๐--diagnostics-sarif-output <filename>โ sets the SARIF diagnostics output file. write it to<filename>๐--dpi-hdr-onlyโ only produces the DPI header file. header only, no extras ๐--dump-<srcfile>โ enables dumping everything in the source file. dump it all, no filter ๐๏ธ--dump-definesโ shows preprocessor defines with-E. spill the defines, bestie ๐ซ--dump-dfgโ enables dumping DfgGraphs to.dotfiles. graph dump, aesthetic.dotfiles ๐ธ๏ธ--dump-dfg-patternsโ enables dumping Dfg pattern statistics. stats on patterns, very analytical ๐--dump-graphโ enables dumping V3Graphs to.dotfiles. more graphs, more.dot๐--dump-inputsโ enables dumping preprocessed input files. input files, dumped ๐ฅ--dump-treeโ enables dumping Ast.treefiles. tree files, branching out ๐ณ--dump-tree-addridsโ uses short identifiers instead of addresses. short IDs, cute and concise ๐--dump-tree-dotโ enables dumping Ast.tree.dotdebug files. debug files with.dotextension, periodt ๐ด--dump-tree-jsonโ enables dumping Ast.tree.jsonfiles and a.tree.meta.jsonfile. JSON everywhere, we love data ๐ฆ--dumpi-<srcfile> <level>โ enables dumping everything in a source file at a level. source file dump, level<level>๐๏ธ--dumpi-dfg <level>โ enables dumping DfgGraphs to.dotfiles at level. DFG dump level<level>๐--dumpi-graph <level>โ enables dumping V3Graphs to.dotfiles at level. graph dump level<level>๐--dumpi-tree <level>โ enables dumping Ast.treefiles at level. tree dump level<level>๐ฒ--dumpi-tree-json <level>โ enables dumping Ast.tree.jsonfiles at level. JSON tree dump level<level>๐๏ธ-Eโ preprocesses but does not compile. just the pre-game, no actual game ๐--emit-accessorsโ emits getter and setter methods for the model top class. getters and setters, so polite ๐ฉ--error-limit <value>โ aborts after this number of errors. too many errors? we out โ๏ธ--exeโ links to create an executable. executable time, let's go ๐--expand-limit <value>โ sets the expand optimization limit. limit the expansion, contain the chaos ๐งฉ-F <file>โ parses arguments from a file, relatively. relative file parsing, fancy ๐-f <file>โ parses arguments from a file. just read the file, bestie ๐-FI <file>โ forces inclusion of a file. force include, no take-backs ๐ฅ--flattenโ forces inlining of all modules, tasks and functions. flatten it all like a pancake ๐ฅ--func-recursion-depth <value>โ maximum recursive constant function depth. recursion depth limit, don't get lost ๐--future0 <option>โ ignores an option for compatibility. future vibes, but ignore it ๐ค--future1 <option>โ ignores an option with an argument for compatibility. future with argument, still ignored ๐ธ-fno-<optimization>โ disables an internal optimization stage. turn off that optimization, we don't need it ๐ซ-G<name>=<value>โ overwrites a top-level parameter. change the parameter, change the game ๐ฎ--gate-stmts <value>โ tunes gate optimizer depth. gate optimizer depth tuning, very technical ๐--gdbโ runs Verilator under GDB interactively. GDB interactive mode, debug like a pro ๐--gdbbtโ runs Verilator under GDB for a backtrace. backtrace via GDB, get that stack trace ๐--generate-keyโ creates a random key for--protect-key. random key generation, secure vibes ๐--get-supported <feature>โ gets if a feature is supported. is<feature>supported? let's find out ๐--getenv <var>โ gets an environment variable with defaults. env var with defaults, convenient ๐--helpโ shows this help. the classic help flag, always there for you ๐--hierarchicalโ enables hierarchical Verilation. hierarchical mode, organized and chic ๐๏ธ--hierarchical-block <block>โ internal use only for--hierarchical. internal only, don't touch ๐ง--hierarchical-child <block>โ internal use only for--hierarchical. also internal, also don't touch ๐ โโ๏ธ--hierarchical-params-file <name>โ internal option that specifies parameters file for hier blocks. internal params file, keep it moving ๐--hierarchical-threads <threads>โ number of threads for hierarchical scheduling. threads for scheduling, multitasking queen ๐-I<dir>โ directory to search for includes. include directory, search here ๐--if-depth <value>โ tunes the IFDEPTH warning. tune that IFDEPTH warning, just right ๐๏ธ+incdir+<dir>โ directory to search for includes. another include directory, plus sign style โ--inline-cfuncs <value>โ inlines CFuncs with<=valuenodes (0=off). inline those CFuncs, 0 means off ๐ซ--inline-cfuncs-product <value>โ inlines CFuncs ifsize*calls <= value. inline if size times calls is small enough ๐งฎ--inline-mult <value>โ tunes module inlining. module inlining tuning, get it just right ๐๏ธ--instr-count-dpi <value>โ assumed dynamic instruction count of DPI imports. assumed instruction count for DPI, just a guess ๐ค-j <jobs>โ parallelism for--build-jobs/--verilate-jobs. set the jobs, parallel processing ๐ช--no-json-edit-numsโ don't dumpeditNumin.tree.jsonfiles. no edit numbers, keep it clean ๐งผ--no-json-idsโ don't use short identifiers instead of addresses/paths in.tree.json. no short IDs in JSON, use the full thing ๐--json-onlyโ creates JSON parser output (.tree.jsonand.meta.json). JSON only, no compiler output ๐ฆ--json-only-meta-output <filename>โ sets.tree.meta.jsonoutput filename. meta JSON output filename set to<filename>๐--json-only-output <filename>โ sets.tree.jsonoutput filename. JSON output filename set to<filename>๐--l2-name <value>โ Verilog scope name of the top module. top module scope name, so important ๐ท๏ธ--language <lang>โ default language standard to parse. default language standard,<lang>is the vibe ๐-LDFLAGS <flags>โ linker pre-object arguments for the makefile. linker flags, pre-object, very specific ๐-libmapโ specifies a library mapping file. library mapping file, map it out ๐บ๏ธ--lib-create <name>โ creates a DPI library. DPI library creation,<name>it ๐+libext+<ext>+[ext]...โ extensions for finding modules. library extensions for finding modules, plus signs everywhere โ+librescanโ ignored for compatibility. literally ignored, just there for compatibility ๐ซ--lint-onlyโ lints but does not make output. lint only, no output, just vibes ๐งน--localize-max-size <value>โ tunes the localize optimization variable size. localize optimization size tuning, get it right ๐ฏ--mainโ generates a C++main()file. generate that main file, C++ style ๐ฌ--main-top-nameโ specifies the top name passed to the Verilated model in the generated C++ main. top name for the generated main, name it right ๐ท๏ธ--make <build-tool>โ generates scripts for the specified build tool. generate scripts for<build-tool>, build tool time ๐ ๏ธ-MAKEFLAGS <flags>โ arguments to pass to make during--build. make flags for the build, pass them along ๐ค--max-num-width <value>โ maximum number width (default: 64K). max number width, default is 64K ๐--Mdir <directory>โ name of the output object directory. output directory name,<directory>is the spot ๐--MMDโ creates.ddependency files. create those.dfiles, dependency style ๐--mod-prefix <topname>โ name to prepend to lower classes. prefix for lower classes,<topname>prepended ๐ท๏ธ--MPโ creates phony dependency targets. phony targets, fake but useful ๐ป+notimingchecksโ ignored. literally ignored, periodt ๐ซ-o <executable>โ name of the final executable. name the executable<executable>๐โโ๏ธ-O0โ disables optimizations. zero optimizations, raw and unfiltered ๐ง-O1โ default optimizations. default optimizations, the standard vibe ๐๏ธ-O2โ stronger optimizations. stronger optimizations, level up ๐ช-O3โ high-performance optimizations. high-performance, maxed out ๐ฅ-O<optimization-letter>โ selectable optimizations. pick your optimization letter, choose your fighter ๐ฎ--output-groups <numfiles>โ groups.cppfiles into larger ones. group those.cppfiles, bigger is better ๐ฆ--output-split <statements>โ splits.cppfiles into pieces. split.cppfiles into pieces, portion control ๐ฐ--output-split-cfuncs <statements>โ splits model functions. split model functions, divide and conquer โ๏ธ--output-split-ctrace <statements>โ splits tracing functions. split tracing functions, trace it out ๐-Pโ disables line numbers and blanks with-E. no line numbers or blanks, minimalist ๐--pins-bv <bits>โ specifies types for top-level ports. pin types for top-level ports,<bits>style ๐--pins-inout-enablesโ specifies that__enand__outsignals be created for inouts. create__enand__outfor inouts, fancy pins ๐--pins-sc-biguintโ specifies types for top-level ports. SC biguint pin types, specific ๐ฏ--pins-sc-uintโ specifies types for top-level ports. SC uint pin types, very typed ๐ข--pins-sc-uint-boolโ specifies types for top-level ports. SC uint bool pin types, boolean energy ๐--pins-uint8โ specifies types for top-level ports. uint8 pin types, small but mighty ๐--no-pins64โ don't useuint64_t's for 33-64 bit sigs. no 64-bit pins, keep it smaller ๐ซ--pipe-filter <command>โ filters all input through a script. pipe filter through<command>, script it up ๐ฌ--prefix <topname>โ name of top-level class. top-level class name,<topname>๐ท๏ธ--preproc-commentsโ includes preprocessor comments in the output with-E. preprocessor comments in output, with-E๐ฌ--preproc-definesโ includes preprocessor defines in the output with-E. preprocessor defines in output, with-E๐--preproc-resolveโ includes all found modules in the output with-E. all found modules in output, with-E๐งฉ--preproc-token-limitโ maximum tokens on a line allowed by the preprocessor. max tokens per line, preprocessor limit ๐ฆ--privateโ debugging; see docs. private debugging thing, see docs for the tea ๐ต๏ธ--prof-cโ compiles C++ code with profiling. profile that C++ code, see where time goes โฑ๏ธ--prof-cfuncsโ names functions for profiling. name functions for profiling, label them ๐ท๏ธ--prof-execโ enables generating an execution profile for a gantt chart. exec profile for gantt chart, fancy chart ๐--prof-pgoโ enables generating profiling data for PGO. PGO profiling data, optimize later ๐--protect-idsโ hashes identifier names for obscurity. hash those identifiers, keep them secret ๐--protect-key <key>โ key for symbol protection. protection key,<key>๐--protect-lib <name>โ creates a DPI protected library. protected DPI library,<name>it ๐ก๏ธ--publicโ marks signals as public; see docs. public signals, see docs ๐ข--public-depth <level>โ marks public to a specified module depth. public up to depth<level>, deep public ๐--public-flat-rwโ marks all variables, etc aspublic_flat_rw. mark all aspublic_flat_rw, flat and public ๐ท๏ธ--public-ignoreโ ignores all public comment markings. ignore public markings, we don't see them ๐--public-paramsโ marks all parameters aspublic_flat. mark all params aspublic_flat, flat public ๐-pvalue+<name>=<value>โ overwrites a toplevel parameter. overwrite the toplevel parameter,<name>=<value>style ๐--quietโ minimizes additional printing. quiet mode, shhh ๐คซ--quiet-buildโ doesn't print build progress. no build progress printing, silent build ๐ค--quiet-exitโ shhh, don't print the command when it fails ๐--quiet-statsโ no statistics printing, we're keeping it lowkey--relative-includesโ resolve includes relative to the current file--reloop-limit <value>โ minimum iterations for forming loops--replication-limit <value>โ replication concatenation limit (default: 8k)--report-unoptflatโ extra diagnostics forUNOPTFLAT, the messiest of warnings--rrโ run Verilator and record everything with rr--runtime-debugโ enable model runtime debugging--savableโ enable model save-restore--scโ create SystemC output--sched-zero-delayโ specify#0delay support--no-skip-identicalโ disable skipping identical output--statsโ create that statistics file ๐--stats-varsโ provide statistics on variables--no-stdโ prevent loading standard files--no-std-packageโ prevent parsing the standard package--no-std-waiverโ prevent parsing standard lint waivers--no-stop-failโ do not call$stopwhen an assertion fails-svโ enable SystemVerilog parsing โจ+systemverilogext+<ext>โ synonym for+1800-2023ext+<ext>--threads <threads>โ enable multithreading--threads-dpi <mode>โ enable multithreaded DPI--threads-max-mtasks <mtasks>โ tune the maximum mtask partitioning--timescale <timescale>โ sets the default timescale--timescale-override <timescale>โ overrides all timescales, no exceptions ๐--timingโ enable timing support--no-timingโ disable timing support--top <topname>โ alias of--top-module--top-module <topname>โ name of the top-level input module--traceโ enable VCD waveform creation--trace-coverageโ enable tracing of coverage--trace-depth <levels>โ depth of tracing--trace-fstโ enable FST waveform creation--trace-max-array <depth>โ maximum array depth for tracing--trace-max-width <width>โ maximum bit width for tracing--trace-paramsโ enable tracing of parameters--trace-saifโ enable SAIF file creation--trace-structsโ enable tracing structure names--no-trace-topโ do not emit traces for signals in the top module generated by verilator--trace-underscoreโ enable tracing of_signals--trace-vcdโ enable VCD waveform creation-U<var>โ undefine preprocessor define--no-unlimited-stackโ don't disable the stack size limit--unroll-count <loops>โ tune maximum loop iterations--unroll-limit <loops>โ maximum loop iterations before assuming an infinite loop ๐ต--unroll-stmts <stmts>โ tune maximum loop body size--unused-regexp <regexp>โ tuneUNUSEDlint signals-Vโ verbose version and config-v <filename>โ Verilog library--valgrindโ run Verilator under valgrind--no-verilateโ skip Verilation and just compile previously Verilated code--verilate-jobsโ job threads for the Verilation stage+verilog1995ext+<ext>โ synonym for+1364-1995ext+<ext>+verilog2001ext+<ext>โ synonym for+1364-2001ext+<ext>--versionโ show program version and exits--vpiโ enable VPI compiles--waiver-multilineโ create multiline--matchfor waivers--waiver-output <filename>โ create a waiver file based on linter warnings-Wallโ enable all style warnings, we love a thorough queen ๐-Werror-<message>โ convert warnings to errors-Wfuture-<message>โ disable unknown message warnings-Wno-<message>โ disable a warning-Wno-contextโ disable source context on warnings-Wno-fatalโ disable fatal exit on warnings-Wno-lintโ disable all lint warnings-Wno-styleโ disable all style warnings-work <libname>โ set config library for the following files-Wpedanticโ warn on compliance-test issues-Wwarn-<message>โ enable a specified warning message-Wwarn-lintโ enable lint warning message-Wwarn-styleโ enable style warning message--x-assign <mode>โ assign non-initial Xs to this value--x-initial <mode>โ assign initial Xs to this value--x-initial-edgeโ enable initial X->0 and X->1 edge triggers-y <dir>โ directory to search for modules
okay so now we're talking about the simulation runtime side of things โ the args for the final Verilated simulation runtime models, bestie. this is just a lil summary; the detailed description of these arguments lives over at <https://verilator.org/guide/latest/exe_verilator.html> ๐ซถ
+verilator+coverage+file+<filename>โ set coverage output filename+verilator+debugโ enable debugging+verilator+debugi+<value>โ enable debugging at a level+verilator+error+limit+<value>โ set error limit+verilator+helpโ show help+verilator+noassertโ disable assert checking+verilator+prof+exec+file+<filename>โ set execution profile filename+verilator+prof+exec+start+<value>โ set execution profile starting point+verilator+prof+exec+window+<value>โ set execution profile duration+verilator+prof+vlt+file+<filename>โ set PGO profile filename+verilator+quietโ minimize additional printing+verilator+rand+reset+<value>โ set random reset technique+verilator+seed+<value>โ set random seed+verilator+solver+file+<filename>โ set random solver log filename+verilator+Vโ show verbose version and config+verilator+versionโ show version and exit+verilator+wno+unsatconstr+<value>โ disable constraint warnings
๐ DISTRIBUTION ๐
the latest version is right there at <https://verilator.org> โ go get her ๐
Copyright 2003-2026 by Wilson Snyder. This program is free software; you can redistribute it and/or modify the Verilator internals under the terms of either the GNU Lesser General Public License Version 3 or the Perl Artistic License Version 2.0.
All Verilog and C++/SystemC code quoted within this documentation file are released as Creative Commons Public Domain (CC0). Many example files and test files are likewise released under CC0 into effectively the Public Domain as described in the files themselves.
๐ SEE ALSO ๐
verilator_coverage,verilator_gantt,verilator_profcfunc,make,"verilator --help"which is the source for this document (periodt, that's the origin story)- and <https://verilator.org/verilator_doc.html> for the detailed documentation
okay bestie, that's the whole vibe โ happy Verilating, go slay your simulation ๐ฆ๐
this page came to you courtesy of perl v5.40.1 and is dated 2026-04-29 โ iconic, timeless, no cap โจ
๐ฆ where this page comes from
- ubuntu stonking: verilator 5.048-1 ยท Artistic-2.0 OR LGPL-3.0-only
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms