太长不看版:
- 语法高亮:sublime插件Verilog和SystemVerilog
- 代码补全:sublime插件lsp;命令行工具vls
- 代码编译工具:Icarus Verilog(iverilog)
- 波形查看工具:surfer(也可以选择其它)
代码高亮
Sublime Text默认没有针对Verilog的代码高亮,我们可以通过安装插件来实现。
安装插件Verilog和SystemVerilog。安装方法可以从别处找到,简而言之是通过Package Control: Install Package来安装。
Verilog和SystemVerilog是两个独立的插件,原则上选择其一即可。两个都要安装的原因之后会说明。
对于语法高亮,SystemVerilog插件的效果更好。打开一个.v
的verilog文件,从菜单栏选择View -> Syntax -> Open all with current extension as... -> SystemVerilog
,之后所有.v
文件都会被以SystemVerilog扩展提供的高亮显示。
note:即便叫做systemverilog,由于我们只要代码高亮功能,它是可以完美兼容我们的verilog代码的
代码补全
systemverilog插件自己有一个简单的弹框,但是做的很差。我们要将其禁用。在SystemVerilog插件的设置中,增加这一段:
1 | { |
取而代之,选择大名鼎鼎的LSP服务。LSP是Language Server Protocol的缩写,是一种通用的语言服务器协议。
- Sublime Text下载LSP
通过Package Control: Install Package安装LSP即可。之后可能要重启Sublime Text。
- 下载vls
vls是针对verilog的一个LSP服务。配置好后,Sublime会自动调用vls来进行代码补全等操作。
从项目的Github页面下载当前版本。解压,得到一个名为vls
的可执行文件。将其/usr/local/bin
(你可能要通过终端进行移动)。
1 | # 替换其中的~/Downloads/vls为你下载的vls文件的路径 |
还可能需要配置权限以保证vls可以被执行:
1 | sudo chmod +x /usr/local/bin/vls |
完成后,在终端键入vls --help
观察是否有输出。如果有,说明vls已经配置成功。
- 配置Sublime-LSP
打开Sublime中的LSP设置,增加这一段:
1 | // ~/Library/Application Support/Sublime Text/Packages/User/LSP.sublime-settings |
重启Sublime Text,打开一个verilog文件,鼠标停留在一个变量上,能看到一个弹框,并且有一些“转到定义”、“查找引用”等选项,说明代码补全已经生效。
这里解释一下要装Verilog和Systemverilog两个插件的原因:代码补全里面的代码高亮需要用到Verilog,如果只用Systemverilog,LSP的弹框里面的内容没法被正确高亮。这确实很不优雅但是,well
编译
我们使用Icarus Verilog(简称iverilog)来进行代码编译。
1 | brew install icarus-verilog |
等待安装完成。
完成后,输入iverilog
,如果有输出,说明安装成功。
原则上,如果安装了iverilog
,先前安装的LSP可以在代码中实时高亮语法错误的部分。
- 编译一个文件
1 | iverilog -y . -o hello hello.v |
解释: -y .
表示搜索当前目录下的文件,如果你的top模块调用了其它文件中的模块,编译器会帮你搜索到它们;-o hello
表示输出文件名为hello。hello.v
是你的顶层模块文件。
- 编译完成后运行
1 | vvp hello |
解释:vvp
是iverilog的运行命令,后面跟着的是你的刚刚输出文件名。现在你从控制台可以看见你的一些$display()
调试输出。
- 重要:生成波形
一般的testbench代码运行不会生成波形。一定要在你的testbench代码中加入这两行:
1 | initial begin |
- 将编译过程整合进Sublime Text
Tool -> Build System -> New Build System
,输入以下内容,并保存为iVerilog.sublime-build
:
1 | // ~/Library/Application Support/Sublime Text/Packages/User/iVerilog.sublime-build |
这样,在Sublime中按下Cmd+B
即可编译你的代码。按下Cmd+Shift+B
可以选择编译模式。这里定义了几个模式:
- 仅编译(默认)
- 编译后执行(带Run)
- 执行完毕后打开波形查看器(参见下一部分)
波形查看
传统方案是使用gtkwave查看。不过gtkwave不支持m1以上的mac芯片。我们要另辟蹊径。
经过一些查找,我们可以使用surfer(官网https://surfer-project.org/)这个软件。
它有一个网页版可以上传文件查看波形。如果要本地启动,需要在本地编译:
首先安装rust和rust的包管理器cargo(自行解决)
然后执行
1 | cargo install --git https://gitlab.com/surfer-project/surfer surfer |
(你可能需要先安装openssl。总之参照官方README)
完成后,在终端输入surfer可以打开程序查看波形。