verilog语法不亮、缩写不展开、构建报错,90%是因sublime未加载语法定义:必须精确安装veriloghighlighter插件(大小写敏感、无空格连字符),重启后手动将.sv文件绑定为systemverilog语法,且状态栏须显示systemverilog而非plain text。

Verilog 语法不亮、缩写不展开、构建报错,90% 不是配置错了,而是 Sublime 根本没加载语法定义 —— 装错插件名、.sv 没绑定 SystemVerilog、状态栏显示 Plain Text,都会导致全灰代码。
必须装对插件:VerilogHighlighter(大小写敏感,无空格无连字符)
Sublime 默认不认识 .v 或 .sv 文件,所谓“高亮失效”,其实是压根没加载语法规则。网上搜到的 Verilog Syntax、Verilog-HDL、Verilog-SystemVerilog 都不顶用。
- 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 回车 - 在弹出搜索框中**逐字输入
VerilogHighlighter**(注意首字母大写、无空格、无连字符、结尾无s)→ 回车安装 - 安装完必须重启 Sublime Text,否则插件不激活
- 如果之前误装过其他 Verilog 插件,建议先禁用或卸载,避免 scope 冲突
.sv 文件必须手动绑定为 SystemVerilog 语法
.v 文件通常能自动识别为 Verilog,但 .sv 在 Sublime 中默认就是 Plain Text —— 这是绝大多数人卡住的关键点。不手动切,logic、always_ff、interface 永远是灰色。
- 新建或打开一个
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
代码片段(mod/alw/if)只在正确 scope 下按 Tab 触发
Sublime 的补全是纯 snippet 触发,不是语义感知,不弹窗、不联想、不分析上下文。输完缩写后不按 Tab,或作用域不对,就完全没反应。
- 确认右下角状态栏显示的是
SystemVerilog(不是Verilog、VHDL或Plain Text) - 输入
mod后光标必须停在末尾,**立刻按Tab** —— 不是空格、不是回车、不是鼠标点击 - 不能在注释、字符串、已缩进行首、或
/* */块里敲缩写,那些地方 scope 是comment.block或string.quoted,不匹配source.systemverilog - 自定义 snippet 时,
<scope></scope>字段必须设为source.systemverilog或source.verilog,写成source.verilog.systemverilog会失效
构建系统调用 iverilog 失败?大概率是路径或参数没传全
报错如 Unknown module type: fifo_ctrl,不是语法错误,是 iverilog 根本没读到 fifo_ctrl.v。它不会自动递归找依赖文件。
- 单文件测试可用:
"cmd": ["iverilog.exe", "-o", "$file_base_name", "$file"] - 多文件项目必须显式列出所有源:
"cmd": ["iverilog.exe", "-o", "$file_base_name", "top.v", "fifo_ctrl.v", "defs.v"] - 路径含空格或中文时,
$file和$file_path必须加双引号:"shell_cmd": "cd \"$file_path\" && iverilog -o \"$file_base_name\" \"$file\"" - 务必设
"working_dir": "$file_path",否则`include "defs.v"会找不到 - Windows 下若用
shell_cmd,命令里要带.exe后缀;用cmd数组则不用
最易被忽略的点:插件装对了、语法也绑对了,但状态栏右下角仍显示 Plain Text —— 往往是因为刚新建文件还没保存,或保存时扩展名输成了 .SV(大写),Sublime 不认。小写 .sv 才触发绑定逻辑。











