棋子 · 2 天前

Verilog/SystemVerilog Tools——遇到的最好用插件

✎ 编 者 按
最近因为工作原因在用 systemverilog 去写些东西,对于 systemverilog,一直缺乏一个在 IDEA 里写 SpinalHDL 的环境。在 VScode 中关于 Systemverilog 的插件有不少,每个插件都有各种各样完善的功能,但使用起来要么配置繁琐,要么功能不及个人预期,最近发现了 Verilog/SystemVerilog Tools 这个插件,很符合我的需求。

需要什么

之前习惯了在 IDEA 里面敲 SpinalHDL,用起来很丝滑,现在写回 SystemVerilog,对于个人而言,不需要一栈化的编译仿真能力,主要的诉求是:

  1. 能够代码自动补全。
  2. 能够实时全局 lint 检查。

对于 VSCode 上的各种插件,代码自动补全、做 Lint 的工具不在少数,然而对于全局 lint,要么支持有限,要么配置繁琐。作为一个懒人,个人一直所希望的就是开箱即用,接受一点简单的配置。然而之前并没有类似让我眼前一亮的插件,能够享受像写 SpianlHDL 那样的丝滑,哪怕接近也行。

Verilog/SystemVerilog Tools

看下这个插件的介绍:

The extension leverages the "-y" flag found on most tools, pointing it to a symlink index of the repo. This makes for almost zero per-project config when modules match each file name.

不需要做过多的配置,在 VSCode 上就能像打开 Vivado 一样看工程的层次结构,自动补全、自动全局 lint 等功能,对于我这等懒人简直不要太爽。
打开一个工程,选中顶层,可以很清晰的看清工程模块的层次路径:

image.png

在代码中选中一个例化模块,可以很清晰的看清楚他的端口方向,位宽:

image.png

在例化模块是,只需要敲出模块的名字然后加#号,按回车键即可自动例化:

image.png

这简直不要太爽!

更为简单的是,它自动做全局lint简直太方便。对于package不需要自己设置参数即可自动索引检错,这才是真正的写代码工作方式。

image.png

setting.json

在设置上,Verilog/SystemVerilog Tools 建议安装 universal-ctags 和 slang。slang 的安装比较复杂,不太建议使用。个人体验使用 ctags 以及 verilator 即可,两者在 mac 上均可通过 homebrew 进行命令行安装,简单便捷。对于一个工程,可打开 VSCode 的 Setting 对工作区做如下设置:

{
    "verilog.includes": [
        "src"
    ],
    "verilog.ctags.path": "/usr/local/bin/ctags",
    "verilog.index.indexAllIncludes": true,
    "verilog.inlayHints.ports": "hover",
    "verilog.languageServer.path": "/usr/local/bin/ctags",
    "verilog.lint.slang.enabled": false,
    "verilog.lint.verilator.args": "",
    "verilog.lint.verilator.enabled": true,
    "verilog.lint.verilator.path": "/usr/local/bin/verilator",
    "verilog.lint.verilator.projectEnabled": true,
    "verilog.lint.verilator.runAtFileLocation": true
}

verilog.include 用于设置工程中 include 的头文件相对工程打开位置的目录,package 则不需要放进去,其他 path 换成自己相应的位置即可。

设置完成后重新打开 VSCode 即可丝滑的 Coding 了。

END

作者:玉骐
文章来源:Spinal FPGA

推荐阅读

更多 IC 设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
22359
内容数
1354
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息