Skip to content

Configuration

wenjiapeng edited this page Oct 29, 2026 · 2 revisions

配置参考

在设置中搜索 svtools,或编辑工作区 .vscode/settings.json。用户级与工作区级设置按 VS Code 的常规优先级合并;文件头两项支持资源作用域,可按多根工作区分别配置。

下面默认值来自4.1正式版的扩展清单;路径示例使用正斜杠可避免JSON反斜杠转义。补全标准不改变仿真器编译选项,include目录不等同于源文件表。

4.1新增的常用设置:svtools.project.traceTrigger默认为"selection"(选择即追踪),可设为"manual";svtools.tasks.retainedRuns默认为5,设为0关闭工具任务目录自动封顶。

配置 默认值 说明
svtools.tabSize 4 缩进使用的空格数
svtools.useTab false 缩进使用制表符(Tab)
svtools.indentStyle "1tbs" 缩进风格
svtools.ignoreTick true 缩进计算时忽略预处理指令
svtools.maxConsecutiveEmptyLines 1 允许的最大连续空行数(0 = 允许处也不留空行;-1 = 完全不处理空行)
svtools.stripEmptyLine true 删除对齐端口/参数列表时产生的多余空行
svtools.inlineCompact true 行内紧凑:单行语句内主动删除多余空格(关键词、变量、运算符之间,如 else $error("x", $time))
svtools.blankCompact true 行间紧凑:主动删除多余空行(块内删除、块间折叠)。关闭则保持用户空行且不新增空行
svtools.portNameGap 2 模块/接口头端口表及 task/function 参数表中名称列与最宽前缀(方向/类型/位宽)之间的空格数(1-8)
svtools.oneBindPerLine true 模块实例化中每行只写一个端口连接
svtools.oneDeclPerLine false 每行只写一个信号声明
svtools.paramOneLine true 参数声明在可行时保持单行
svtools.importSameLine false import 语句与 module 声明保持在同一行
svtools.alignComma true 对齐逗号/分号
svtools.instAlignPort true 对齐实例化端口
svtools.instPrefix "u_" 模块实例名的默认前缀
svtools.includePortDeclarations true 生成模块实例化时附带信号声明(input 生成 reg,output 生成 wire)
svtools.clock ["clk","uclk","cclk"] 默认的时钟信号名列表
svtools.reset ["rst_n","reset_n"] 默认的异步复位信号名列表
svtools.sreset ["sreset","srst"] 默认的同步复位信号名列表
svtools.waveType "vcd" 测试台生成的波形格式(默认 VCD;FSDB/VPD/SHM 需要对应的仿真器支持)。
svtools.taskInit true 测试台中生成 init 任务
svtools.taskDrive true 测试台中生成 drive 任务
svtools.headerTemplate "" 多行文件头模板,支持 {FILE}、{DATE}、{TIME}、{YEAR}。可直接粘贴带换行的文本;settings.json 中使用 JSON 的 \n 换行转义。留空使用内置模板;headerTemplateFile 优先。
svtools.headerTemplateFile "" UTF-8 文件头模板路径,每次插入时重新读取。支持绝对路径、相对于当前文档所属工作区的路径或 ${workspaceFolder}/templates/header.txt;工作区外的相对路径以源码目录为准。留空使用 headerTemplate;文件无效时明确报错,不插入默认模板。
svtools.lint.engine "iverilog" Lint 引擎:Icarus Verilog(iverilog -tnull)或 Vivado xvlog(工具链位置取 svtools.vivado.path)
svtools.lint.currentFileOnly true 只对打开的文件做语法检查——快速、不产生工作区其他文件的诊断。关闭后跨文件解析(iverilog -y 扫描 / xvlog 附带工作区文件集)
svtools.iverilog.path "" Icarus Verilog 的 bin 目录(或 iverilog 可执行文件的完整路径)。留空 = 从 IVERILOG_HOME、PATH 和常见安装位置自动探测。
svtools.iverilog.cygwinPath "" cygwin1.dll 所在目录,Cygwin 构建的 Icarus Verilog 安装在 Cygwin 根目录之外时需要。留空 = 自动探测。
svtools.iverilog.standard "auto" 传给 -g 的语言标准。auto:.sv/.svh 使用 2012,.v/.vh 使用 2005;default:由 iverilog 自行决定
svtools.iverilog.lintOnSave true 保存时运行 iverilog 语法检查,诊断结果显示在问题(Problems)面板
svtools.iverilog.lintOnChange true 输入时运行 iverilog 语法检查(防抖,未保存的缓冲区内容经临时文件参与检查)
svtools.iverilog.lintDebounceMs 800 输入触发语法检查的防抖延迟(毫秒)
svtools.iverilog.lintOnOpen true 打开 Verilog 文件时运行 iverilog 语法检查
svtools.iverilog.lintArgs ["-Wall"] lint 与仿真编译附加的 iverilog 参数(如 -Wall)
svtools.iverilog.includePaths [] 头文件包含目录(-I),相对工作区根目录。文件所在目录始终会被包含。
svtools.iverilog.libraryPaths [] 模块库目录(-y,按文件名解析模块),相对工作区根目录。文件所在目录始终会被包含。
svtools.iverilog.scanWorkspace true 扫描工作区内的 Verilog 源码:将所有包含源文件的目录加入 -y/-I,并按模块定义索引解析缺失模块(支持文件名与模块名不一致的情况)
svtools.iverilog.simFiles [] 仿真时与当前文件一同编译的附加源文件 glob 模式(如 src/.v、tb/.sv)
svtools.iverilog.simTop "" 仿真的顶层模块(-s)。留空 = 由 iverilog 自动选择根模块。
svtools.iverilog.simArgs [] 仿真扩展参数,置于 .vvp 输入文件后(如 +trace、+seed=73、-fst)。已知 vvp CLI 选项(带值的 -l/-M/-m 及 -h/-i/-n/-N/-q/-s/-v/-V)自动置于文件前;-- 之后的值均按扩展参数原序传递。
svtools.iverilog.simTimeoutMs 0 仿真超时时间(毫秒);0 = 运行到 $finish 结束(可通过命令或状态栏停止)
svtools.iverilog.autoOpenWaveform true 仿真产生新的 .vcd 文件时自动打开内置波形查看器
svtools.iverilog.waveViewer "" 外部波形查看器可执行文件(如 GTKWave)。留空 = 使用内置 VCD 波形查看器(webview 面板;.fst 文件使用外部程序打开)
svtools.vivado.path "" Vivado 安装目录(如 D:/Xilinx/Vivado/2022.1,也接受其 bin 目录或 vivado.bat 全路径)。留空 = 从 XILINX_VIVADO、PATH 和常见安装位置自动探测。
svtools.vivado.part "" 工程创建向导的默认器件型号(-part,如 xc7a35tcsg324-1)。留空 = 建好后在 Vivado 中选择。
svtools.vivado.timeoutMs 0 Vivado batch 超时时间(毫秒);0 = 不限时(可通过命令或状态栏停止)
svtools.vivado.simRuntime "" Vivado xsim 仿真运行时长(xsim.simulate.runtime),如 1000ns。留空 = 跑到 $finish(xsim -runall)
svtools.vivado.structure {"sources":["src","rtl","rtl/**","src/**"],"sim":["sim","tb","sim/**","tb/**"],"constraints":["constraints","xdc","constraints/**","xdc/**","*.xdc"],"projectDir":"prj"} 工程创建向导使用的工程结构模板:按目录 glob 把文件划入 sources / sim / constraints 文件集,并指定 Vivado 工程输出目录。默认遵循 src/sim/prj 布局。
svtools.completion.uvmVersion "1.2" UVM 补全接口版本:UVM 1.2、IEEE 1800.2-2020(Accellera 2020.3.2)或关闭。独立于编译器配置。
svtools.completion.includePaths [] 补全索引额外读取的 HDL 头文件/库目录。相对路径基于工作区文件夹,支持 ${workspaceFolder}。
svtools.completion.maxFiles 5000 补全工程索引的 HDL 文件数量上限。超过预算时标记补全列表不完整。
svtools.completion.maxFileSizeKB 2048 补全索引读取的单个未打开 HDL 文件大小上限(KiB)。已打开文件使用当前未保存内容。
svtools.completion.maxTotalSourceMB 32 未打开文件补全索引的 UTF-8 源码总预算(MiB);这是源码容量预算,不是堆内存上限。
svtools.completion.standard "auto" 补全关键词的语言标准。auto 根据文档语言及当前 `begin_keywords 指令选择。独立于编译器选项。
svtools.completion.maxItems 1000 单次补全的候选项上限。宽泛请求会标记不完整,继续输入前缀可定位索引内其余声明。
svtools.circuit.yosysPath "bundled" 默认 bundled 使用插件内置 Yosys,无需 Python 或额外安装;也可指定外部 Yosys 可执行文件路径。
svtools.circuit.frontend "auto" auto:内置Yosys默认使用Slang解析SystemVerilog,外部工具沿用read_verilog -sv。slang/verilog显式覆盖;外部slang需工具提供read_slang。
svtools.circuit.sources [] 有序 RTL 源文件列表。留空时自动收集当前工作区文件夹内的模块、接口及包依赖;非空时遵守此顺序,当前文件未列出则追加,不再自动扫描。
svtools.circuit.includeDirs [] HDL include 目录,可相对工作区或使用绝对路径。
svtools.circuit.defines [] 预处理宏,例如 SYNTHESIS 或 WIDTH=8。
svtools.circuit.top "" RTL 电路顶层模块;留空则从当前文件选择。
svtools.circuit.generationTimeout 120 电路生成超时,单位秒。

具体操作见格式化、文件头、补全、仿真、Vivado和电路。

Clone this wiki locally