- 作者:SZTU-桦林子
- 本文旨在学习使用markdown以及HTML(HyperText Markup Language,超文本标记语言)记录Verilator的命令行选项的中文汇总,方便后续学习。
选项介绍中文速览
- 官方手册参数页 - verilator Arguments
- 下文中,我将用“选项”指代“Arguments”,至于原因请看科普:参数、命令、选项傻傻分不清楚
<file.v> Verilog包、模块和顶层模块文件名
<file.c/cc/cpp> 可选需要编译的C++文件
<file.a/o/so> 可选需要链接的C++文件
+1364-1995ext+<ext> 使用Verilog 1995标准并指定文件扩展名<ext>
+1364-2001ext+<ext> 使用Verilog 2001标准并指定文件扩展名<ext>
+1364-2005ext+<ext> 使用Verilog 2005标准并指定文件扩展名<ext>
+1800-2005ext+<ext> 使用SystemVerilog 2005标准并指定文件扩展名<ext>
+1800-2009ext+<ext> 使用SystemVerilog 2009标准并指定文件扩展名<ext>
+1800-2012ext+<ext> 使用SystemVerilog 2012标准并指定文件扩展名<ext>
+1800-2017ext+<ext> 使用SystemVerilog 2017标准并指定文件扩展名<ext>
+1800-2023ext+<ext> 使用SystemVerilog 2023标准并指定文件扩展名<ext>
--assert 启用所有断言
--assert-case 启用unique/unique0/priority case相关检查
--autoflush 在所有$display后自动刷新流
--bbox-sys 将未知$system调用模块黑盒化
--bbox-unsup 将不支持的语言特性模块黑盒化
--binary 生成模型二进制文件
--build Verilation后编译生成可执行文件/库
--build-dep-bin <filename> 覆盖构建依赖的Verilator二进制文件
--build-jobs <jobs> --build的并行任务数
--cc 生成C++输出
-CFLAGS <flags> Makefile中C++编译器的参数
--clk <signal-name> 将指定信号标记为时钟
--no-clk <signal-name> 阻止将指定信号标记为时钟
--compiler <compiler-name> 针对指定C++编译器优化
--compiler-include 在预编译头文件中包含额外头文件
--converge-limit <loops> 调整收敛循环次数限制
--coverage 启用所有覆盖率检测
--coverage-line 启用行覆盖率
--coverage-max-width <width> 覆盖率的数组最大深度
--coverage-toggle 启用翻转覆盖率
--coverage-underscore 启用下划线信号的覆盖率
--coverage-user 启用SVL用户自定义覆盖率
-D<var>[=<value>] 设置预处理器宏定义
--debug 启用调试模式
--debug-check 启用调试断言
--no-debug-leak 在调试模式下禁用内存泄漏检测
--debugi <level> 启用指定级别的调试
--debugi-<srcfile> <level> 对指定源文件启用调试级别
--decorations <level> 设置输出注释和缩进级别
--no-decoration 禁用注释并降低缩进级别
--default-language <lang> 设置默认解析语言
+define+<var>=<value> 设置预处理器宏定义
--dpi-hdr-only 仅生成DPI头文件
--dump-defines 使用-E时显示预处理器宏定义
--dump-dfg 启用DfgGraph到.dot文件的导出
--dump-graph 启用V3Graph到.dot文件的导出
--dump-tree 启用AST树.tree文件导出
--dump-tree-addrids 使用短标识符代替地址
--dump-tree-dot 启用AST树.tree.dot调试文件导出
--dump-tree-json 启用AST树.tree.json文件和.tree.meta.json文件导出
--dump-<srcfile> 启用指定源文件的所有导出
--dumpi-dfg <level> 按级别导出DfgGraph到.dot文件
--dumpi-graph <level> 按级别导出V3Graph到.dot文件
--dumpi-tree <level> 按级别导出AST树.tree文件
--dumpi-tree-json <level> 按级别导出AST树.tree.json文件
--dumpi-<srcfile> <level> 按级别导出指定源文件的所有内容
-E 仅进行预处理,不编译
--emit-accessors 生成模型顶层类的getter/setter方法
--error-limit <value> 达到指定错误数量后中止
--exe 链接生成可执行文件
--expand-limit <value> 设置展开优化限制
-F <file> 从文件读取参数(相对路径)
-f <file> 从文件读取参数
-FI <file> 强制包含文件
--flatten 强制内联所有模块、任务和函数
--future0 <option> 为兼容性忽略某个选项
--future1 <option> 为兼容性忽略带参数的选项
-fno-<optimization> 禁用内部优化阶段
-G<name>=<value> 覆盖顶层参数
--gate-stmts <value> 调整门级优化深度
--gdb 在GDB交互模式下运行Verilator
--gdbbt 在GDB中运行Verilator获取堆栈跟踪
--generate-key 为--protect-key生成随机密钥
--getenv <var> 获取带默认值的环境变量
--get-supported <feature> 检查是否支持某个功能
--help 显示帮助信息
--hierarchical 启用层次化Verilation
--hierarchical-params-file <name> 指定层次块参数文件(内部选项)
-I<dir> 头文件搜索目录
--if-depth <value> 调整IFDEPTH警告阈值
+incdir+<dir> 包含文件搜索目录
--inline-mult <value> 调整模块内联参数
--instr-count-dpi <value> 假设DPI导入的动态指令数
-j <jobs> --build-jobs/--verilate-jobs的并行任务数
--l2-name <value> 顶层模块的Verilog作用域名称
--language <lang> 设置默认解析语言标准
-LDFLAGS <flags> Makefile中链接器的预对象参数
--lib-create <name> 创建DPI库
+libext+<ext>+[ext]... 模块文件扩展名列表
--lint-only 仅进行代码检查,不生成输出
--localize-max-size <value> 调整localize优化的变量大小
--make <build-tool> 为指定构建工具生成脚本
-MAKEFLAGS <flags> 传递给make的参数(--build时使用)
--main 生成C++ main()文件
--main-top-name 指定生成的C++ main中传递给Verilated模型的顶层名称
--max-num-width <value> 最大数值位宽(默认64K)
--Mdir <directory> 输出目录名称
--MMD 生成.d依赖文件
--mod-prefix <topname> 底层类名前缀
--MP 生成伪依赖目标
+notimingchecks 忽略时序检查
-O0 禁用优化
-O3 高性能优化
-O<optimization-letter> 选择性优化
-o <executable> 最终可执行文件名称
--output-groups <numfiles> 将.cpp文件分组为更大的文件
--output-split <statements> 分割.cpp文件
--output-split-cfuncs <statements> 分割模型函数
--output-split-ctrace <statements> 分割追踪函数
-P 使用-E时去除行号和空行
--pins-bv <bits> 指定顶层端口类型为位向量
--pins-inout-enables 为inout端口生成__en和__out信号
--pins-sc-biguint 指定顶层端口为SystemC大无符号类型
--pins-sc-uint 指定顶层端口为SystemC无符号类型
--pins-sc-uint-bool 指定顶层端口为SystemC无符号+布尔类型
--pins-uint8 指定顶层端口为uint8类型
--no-pins64 禁用对33-64位信号使用uint64_t
--pipe-filter <command> 通过脚本过滤所有输入
--pp-comments 使用-E时显示预处理器注释
--prefix <topname> 顶层类名称
--private 调试选项(详见文档)
--prof-c 使用性能分析编译C++代码
--prof-cfuncs 为性能分析命名函数
--prof-exec 生成执行性能分析(甘特图)
--prof-pgo 生成PGO性能分析数据
--protect-ids 哈希处理标识符名称(混淆)
--protect-key <key> 符号保护密钥
--protect-lib <name> 创建受保护的DPI库
--public 将信号标记为public(详见文档)
--public-depth <level> 标记到指定模块深度的public
--public-params 将所有参数标记为public_flat
--public-flat-rw 将所有变量等标记为public_flat_rw
-pvalue+<name>=<value> 覆盖顶层参数
--quiet 最小化附加输出
--quiet-exit 失败时不显示命令
--quiet-stats 不显示统计信息
--relative-includes 根据当前文件解析包含路径
--reloop-limit 形成循环的最小迭代次数
--report-unoptflat 提供UNOPTFLAT额外诊断
--rr 使用rr记录Verilator运行
--runtime-debug 启用模型运行时调试
--savable 启用模型保存/恢复功能
--sc 生成SystemC输出
--no-skip-identical 禁用跳过相同输出
--stats 生成统计文件
--stats-vars 提供变量统计信息
--no-std 不加载标准文件
--no-std-package 不解析标准package
--no-std-waiver 不解析标准lint豁免
--no-stop-fail 断言失败时不调用$stop
--structs-packed 将所有非压缩结构转为压缩结构
-sv 启用SystemVerilog解析
+systemverilogext+<ext> 同+1800-2023ext+<ext>
--threads <threads> 启用多线程
--threads-dpi <mode> 启用多线程DPI
--threads-max-mtasks <mtasks> 调整最大mtask分区
--timing 启用时序支持
--no-timing 禁用时序支持
--timescale <timescale> 设置默认时间单位
--timescale-override <timescale> 覆盖所有时间单位
--top <topname> --top-module的别名
--top-module <topname> 指定顶层模块名称
--trace 启用波形生成
--trace-coverage 启用覆盖率追踪
--trace-depth <levels> 追踪深度
--trace-fst 启用FST波形格式
--trace-max-array <depth> 波形追踪的最大数组深度
--trace-max-width <width> 波形追踪的最大位宽
--trace-params 启用参数追踪
--trace-structs 启用结构体名称追踪
--trace-threads <threads> 在独立线程中生成FST波形
--no-trace-top 不追踪Verilator生成的顶层模块信号
--trace-underscore 启用下划线信号追踪
-U<var> 取消预处理器宏定义
--no-unlimited-stack 不解除栈大小限制
--unroll-count <loops> 调整循环展开次数
--unroll-stmts <stmts> 调整循环体展开大小
--unused-regexp <regexp> 调整UNUSED lint信号的正则表达式
-V 显示详细版本信息
-v <filename> Verilog库文件
--valgrind 在valgrind下运行Verilator
--verilate-jobs Verilation阶段的并行任务数
--no-verilate 跳过Verilation,仅编译已Verilated的代码
+verilog1995ext+<ext> 同+1364-1995ext+<ext>
+verilog2001ext+<ext> 同+1364-2001ext+<ext>
--version 显示版本信息
--vpi 启用VPI编译
--waiver-multiline 生成多行豁免匹配
--waiver-output <filename> 基于lint警告生成豁免文件
-Wall 启用所有风格警告
-Werror-<message> 将指定警告转为错误
-Wfuture-<message> 禁用未知消息警告
-Wno-<message> 禁用指定警告
-Wno-context 禁用警告中的源码上下文
-Wno-fatal 禁用警告导致致命错误
-Wno-lint 禁用所有lint警告
-Wno-style 禁用所有风格警告
-Wpedantic 严格合规性警告
-Wwarn-<message> 启用指定警告
-Wwarn-lint 启用所有lint警告
-Wwarn-style 启用所有风格警告
--x-assign <mode> 非初始X赋值模式
--x-initial <mode> 初始X赋值模式
--x-initial-edge 启用X->0和X->1的初始边沿触发
--no-json-edit-nums .tree.json中不输出editNum
--no-json-ids .tree.json中不使用短标识符代替地址/路径
--json-only 仅生成JSON解析输出(.tree.json和.meta.json)
--json-only-output 指定.tree.json输出文件名
--json-only-meta-output 指定.tree.meta.json输出文件名
--xml-only 仅生成XML解析输出
--xml-output 指定XML输出文件名
-y <dir> 模块搜索目录
题外话
推荐同学们有兴趣可以了解一下UML(Unified Modeling Language, 统一建模语言)、HTML(HyperText Markup Language,超文本标记语言)、面向对象的设计方法,结合以“流”的概念(业务流、工作流、数据流、信息流),可以帮助自己进行电路设计,并且这些办法是通用的,可以运用在很多方面。