Verilog在Sublime中不亮、缩写不展开、构建报错,90%因未加载语法支持:须精确安装VerilogHighlighter插件(大小写敏感、无空格连字符),重启后手动将.sv文件绑定为SystemVerilog语法,且确保状态栏显示SystemVerilog而非Plain Text。

Verilog 在 Sublime 中不亮、缩写不展开、构建报错,90% 不是配置问题,而是根本没加载对语法支持 —— VerilogHighlighter 没装对,或 .sv 文件没绑定到 SystemVerilog 语法模式。
必须装 VerilogHighlighter,不是其他名字的插件
Sublime 默认完全不认识 .v 或 .sv 文件。所谓“高亮失效”,其实是压根没加载任何语法定义。常见错误包括:
- 装了
Verilog Syntax、Verilog-HDL、Verilog-SystemVerilog等近似名插件 —— 这些基本无效 - 拼写错误:比如
veriloghighlighter(小写)、Verilog Highlighter(带空格)、Verilog-Highlighter(带连字符)—— 全部不认 - 装完没重启 Sublime:插件不会热加载,必须重启才生效
正确操作:Ctrl+Shift+P → 输入 Package Control: Install Package → 精确搜索并安装 VerilogHighlighter(大小写敏感、无空格、无连字符、作者 hobofan)。
.sv 文件必须手动绑定为 SystemVerilog 语法
.v 文件通常能自动识别为 Verilog,但 .sv 是硬编码未绑定的扩展名。不手动设,logic、always_ff、typedef struct 这些关键字永远是灰色。
- 新建
test.sv后,右下角状态栏显示Plain Text?立刻点击它 → 选SystemVerilog - 想让所有
.sv默认用该语法:菜单View → Syntax → Open all with current extension as… → SystemVerilog - 检查
Preferences → Settings – User是否有冲突规则,例如:"extensions": ["sv"]被映射成"Plain Text"
绑定后,用 Ctrl+Shift+P → Developer: Show Scope Name,光标停在 module 上,状态栏应显示 source.systemverilog(不是 source.verilog 或 source.plain)。
代码片段(mod/alw/if)按 Tab 没反应?先看作用域和触发时机
Sublime 的补全不是语义感知型,只响应「完整缩写 + 紧跟 Tab」,且严格依赖当前 scope。
- 输入
mod后光标必须停在末尾,**立刻按Tab** —— 按空格、回车、鼠标点别的地方,都会中断触发 - 状态栏右下角必须显示
SystemVerilog(.sv)或Verilog(.v),显示Plain Text或Comment就不会响应 - 不能在注释里、字符串里、已缩进的行首、或被其他插件劫持 scope 的位置敲缩写
- 自定义
.sublime-snippet时,<scope>必须写成source.systemverilog或source.verilog,写成source.verilog.systemverilog这类不存在的 scope 会直接失效
构建系统调用 iverilog 报错,大概率是路径或参数没传全
报错如 Unknown module type: fifo_ctrl,不是语法错,是 iverilog 根本没读到 fifo_ctrl.v。
-
"cmd"里只写"$file"?它只会编译当前文件,模块引用链断掉 —— 必须显式列出所有依赖,或改用"$file_path/*.v"(注意 shell 兼容性) -
"working_dir"没设成"$file_path"?相对路径的`include "defs.v"会找不到 - Windows 下
"shell": true但命令写"iverilog"(没加.exe)?实际执行的是iverilog -o,而非iverilog.exe -o
最小可用配置(保存为 verilog_build.sublime-build):
{
"cmd": ["iverilog.exe", "-o", "$file_base_name", "$file"],
"working_dir": "$file_path",
"selector": "source.verilog, source.systemverilog",
"shell": true
}
真正容易被忽略的点:所有路径都不能含中文、空格或括号;iverilog.exe 必须在系统 PATH 中,或改用绝对路径;.sv 文件用 iverilog 编译需加 -g2012 或 -g2023 参数,否则 logic、enum 会被拒。

















