SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同学投稿至 eesast@mail.tsinghua.edu.cn , 期待你的作品!
米娜桑,晚上好。这次我来分享一下改善 verilog 编写环境的一些插件。
编辑器
看过我之前写的两篇 Weekly 的应该都知道,我用的编辑器是 VSCode。这次也要将 vivado 的编辑器更换为 VSCode 以得到更好的体验。
相比与 VSCode,vim 和 sublime 似乎都有更多的针对 verilog 设计的插件,不过我不用它们。不想用 VSCode 的伙伴可以跳到最后一部分了XD。
打开 vivado,在顶部菜单栏中点击Tools-Settings后即可打开设置窗口,在其中的Text Editor中可以修改成想要的编辑器。点击下拉框右边的按钮,在弹出的窗口填写类似这样的命令:
D:/Program Files/Microsoft VS Code/Code.exe [file name] -l[line number]
第一部分是 VSCode 的安装位置,请注意不要直接复制粘贴了 XD。
配置好后的效果是这样的
编辑器配置好了,下面便开始介绍各种插件了。
Verilog HDL/SystemVerilog
此插件提供了以下功能:
Verilog 和 SystemVerilog 的语言支持
语法高亮
简单片段的快速补全
使用 iverilog、xvlog、modelsim、verilator 进行静态代码检查 后面会介绍 vivado 提供的 xvlog
使用 Ctags 实现以下功能:
自动补全
文件大纲
悬停展示变量声明
使用此插件分为三步:
安装插件:在 VSCode 的插件商店中搜索
verilog
便可找到并安装安装 Ctags:前往 GitHub 上的https://github.com/universal-ctags/ctags-win32进行下载
配置
xvlog 添加的环境变量
添加 Ctags 的路径
可以参考我这样的配置
完成后的效果如下:
将 wire 改成 reg 后,报错如下:
verilog-formatter + iStyle Verilog Formatter
iStyle Verilog Formatter 是一个开源的 verilog 代码格式化程序。源代码可见 https://github.com/thomasrussellmurphy/istyle-verilog-formatter
使用 iStyle 需要自己将其代码编译成为可执行文件。在 windows 平台需要自行修改 makefile,个人比较推荐使用 wsl 进行编译。或者也可以使用我编译好的程序 https://github.com/duskmoon314/THU_EXP/blob/master/数逻实验/tools/iStyle.exe
虽然 iStyle 本身是命令行中使用的,不过 verilog-formatter 这个插件帮我们省去了这一麻烦。在 VSCode 的插件商店中搜索这一名字,确定是 IsaacT 开发的即可。
配置中第一行是参数,可以指定是否运算符两侧添加空格等。第二行是 iStyle 的位置。第三行是选择代码风格,有 ANSI、GNU、K&R 和只添加缩进四种选择。效果如下:
Verilog_Testbench
Verilog_Testbench 可以帮助生成 testbench 代码结构,提高开发效率。
安装只需要在 VSCode 的插件商店中搜索即可。使用时使用快捷键ctrl + shift + p
打开 VSCode 的命令面板,然后输入testbench + enter
,插件便会生成 testbench 代码并打印到命令行中。
vivado-git
项目地址:https://github.com/barbedo/vivado-git
vivado-git 包含三个 tcl 脚本,将 git 集成到 tcl 控制台中进行使用。实现了以下功能:
在
/project_name/vivado_project
建立的项目,会在使用git init
后,在/project_name
下自动创建.git
和.gitignore
在进行了
git commit
后,会生成project_name.tcl
。此 tcl 脚本用于生成项目文件。
项目参考文件结构如下:
PROJECT_NAME ├── .git ├── .gitignore ├── project_name.tcl # Project generator script ├── src/ # Tracked source files │ ├── design │ │ ├── *.v │ │ └── *.vhd │ ├── testbench │ │ ├── *.v │ │ └── *.vhd │ ├── blockdesign │ │ ├── ui │ │ ├── ip │ │ ├── *.bd │ │ └── ... │ └── ... └── vivado_project/ # Untracked generated files ├── project_name.xpr ├── project_name.cache/ ├── project_name.hw/ ├── project_name.sim/ └── ...
在 vivado 中使用如下
小结
以上是我目前配置了的一些插件,一定程度上改善了写 verilog 的体验。希望也能帮助到读到这里的你。
本文大量参考了学长的 https://github.com/RainEggplant/vscode-verilog-integration
还参考了:https://blog.csdn.net/qq_39498701/article/details/84668833
针对上面提到的各个插件,我计划(在撰写本文时)在 https://github.com/duskmoon314/THU_EXP 进行更为详尽的整理和记录。也欢迎各位一起整理这些让生活变得更为美好的工具插件。
注:THU_EXP这个repo是大一下物理实验时我开始整理的实验报告模板(无内容的报告框架)和数据处理工具,目的是减少与实验无关的繁琐事务。目前由于含有个人实验数据的内容不会上传,所以repo内容较少,欢迎各位一起整理。
撰稿人:贺鲲鹏
审稿人:刘圣禹