Sublime与Verilog【二】:几款提升搬砖效率的插件! - 知乎
前文简单介绍了Sublime Text 3的下载安装、几款基本的插件以及与Vivado的关联使用,这次就介绍下几款真的可以提升编写Verilog代码效率的插件!
虽说网上已有很多相关文章,但是大多未详细介绍插件使用方法,所以本文就详细介绍一下!
(当然,使用其他编辑器也可能达到同样效果)
“秃头加速器”
之前介绍了Package Control、ChineseLocalizations、Verilog、ConvertToUTF8四款插件,这里就不再多说,至于插件的安装方法可详见前文:
十二点过九分:Sublime与Verilog【一】:从安装到使用,提高FPGA开发效率!81 赞同 · 22 评论文章正在上传…重新上传取消
几款比较实用的插件
- Snippet Maker
对于Verilog搬砖工来说,最需要的就是代码自动补全功能,毕竟像是always、generate等语句一敲就是一大段,这谁受得了。当然在前面的Verilog插件已经实现了一些必要语句的补全,但若想一键搭个状态机的框架出来、或一键生成常用的代码结构,前面的插件似乎就无能为力了,而Sublime的Snippet(代码片段)功能可以很好的实现想要的效果。
对于Snippet功能和编写不多介绍,可详见:手把手教你写Sublime中的Snippet
推荐一个快速编写Snippet的插件“Snippet Maker”,在install package中可以下载安装,如下图所示:
该插件的具体使用方式为:
- 选中一段代码片段,比如选择always块;
- 使用快捷键“ctrl + shift + p”进入控制台并输入“make snippet”进行代码片段的生成;
- 在界面下方的Trigger框中输入触发命令并回车(即之后输入该命令即可调出该代码片段),比如为al;
- 在界面下方的Description框中输入该代码片段的描述并回车,比如为alwaysblock;
- 在界面下方的Scope框中输入“source.verilog”并回车(即在Verilog下触发该片段);
- 在界面下方的File Name框中输入该代码片段的保存名称并回车(注意需要以sublime-snippet结尾),比如al.sublime-snippet;
上述操作可如下动图所示:
然后得到下图的片段后进行保存,需要按照需求进行一定的修改,修改方式可以参考手把手教你写Sublime中的Snippet
笔者在这里修改为下图所示:
修改完保存后,在需要使用的时候直接输入“al”即可调出该代码段,如下图所示:
有了这一绝技之后可以自定义其他很多的代码片段,例如下列操作:
三段式状态机
添加文件头注释
生成Module
- Verilog Gadget
在写Verilog中除了需要代码补齐外,还需要的一个功能是自动生成例化模板和自动生成可供仿真使用的TestBeach,对于输入输出信号多的模块而言尤为重要,而插件“Verilog Gadget”恰好具有这个功能。
同样直接在install package里搜索“Verilog Gadget”,如下图所示:
安装好后弹出说明页面如下图所示:
从图中可以看出其功能主要是:
- 生成模块的实例化模板,快捷键“ctrl+shift+c”,然后“ctrl + v”粘贴到相应的地方即可;
- 生成模块的仿真TestBeach,生成的文件加以修改和保存就可以使用;
- 生成模块的简单仿真模型,可用于modelsim或者vcs(不过这个功能目前笔者没有使用过,所以不与说明了);
- 生成模块头部注释说明,快捷键“ctrl+shift+insert”;
- 生成多个需要重复的代码,例如多位宽的信号赋值使用,快捷键“ctrl + F12”;
- 代码对齐功能,快捷键“ctrl+shift+x”;
- 插入代码片段,快捷键“ctrl+alt+p”;
- 将.vcd格式的时序图转为WaveDrom使用,快捷键“ctrl+alt+v”(目前笔者也没有使用过,所以不与说明了);
此外,该插件还提供部分设置选项,在首选项--package settings -- verilog Gadget -- settings中可以查看修改
包括:界面、例化名、对齐、代码片段、仿真模板等设置选项,根据需求设置即可,像是一些菜单栏可以选择关闭。
另外,对于其快捷键修改,可以到插件安装的路径下寻找,一般插件的安装路径在:
C:\Users\AppData\Roaming\Sublime Text 3\Packages
接下来就是演示该插件比较常用的功能:
模块的例化模板:
打开被例化模块的.v文件,单击右键选择“Instantiate Module”,然后到需要例化的模块下直接粘贴,就得到例化模板了,直接“ctrl+shift+c”和“ctrl+v”也行。不过存在的问题是,得到的例化模板没有定义信号和位宽,不过可以从自动生成的TB里复制也行。
快捷键“ctrl+shift+c”和“ctrl+v”
生成TestBeach:
打开需要仿真的模块单击右键,选择“Generate Testbench”,将产生一个TB文件,直接另存为然后按照需求进行修改就可以使用。
插入头部注释:
打开需要加入头部注释的模块,单击右键选择“Insert Header”,这个相较于snippet的好处是可以按当前时间生成,对于模块的修改可以到插件的安装路径下Verilog Gadget\template\verilog_header.v进行修改。
快捷键“ctrl+shift+insert”
生成多个重复信号:
选择需要复制成多行的代码,单击右键选择“Repeat Code with Numbers”,在下面框中输入复制多少次。
快捷键“ctrl+F12”
代码对齐:
选中需要对齐的代码,使用快捷键“ctrl+shift+x”,即可完成代码的对齐。
快捷键“ctrl+shift+x”
不过这个插件比较迷的一点是可修改的内容不是很多,最核心部分的代码是python编译后的代码、没法直接改(也可能是笔者没找到正确方式),这样一来,像是例化模板和生成TB这两项重要的功能就没法再定制化了。
- SublimeLinter与SublimeLinter-contrib-modelsim
对于编写Verilog最重要的是代码检查了,在Sublime中提供一系列代码检测的插件是SublimeLinter,而针对Verilog的检测也是基于SublimeLinter的一些插件,目前已知的有SublimeLinter-contrib-iverilog、SublimeLinter-contrib-verilator、SublimeLinter-contrib-modelsim,针对这三个插件的主要区别在于利用的检测软件不同,鉴于笔者只安装了ModelSim,所以果断选择最后一个。
SublimeLinter的特点在于支持边写边检查,而SublimeLinter-contrib-modelsim只需要提前安装好Modelsim就可以完成检查操作,使用这一工具可以大大提高编码效率(至少不需要等到每次综合或者仿真编译的时候才发现)。
安装步骤:
- 首先在install package里搜索安装“SublimeLinter”
- 其次在install package里搜索安装“SublimeLinter-contrib-modelsim”;
- 如若选择SublimeLinter-contrib-modelsim则需要确保已经安装Modelsim(即包含vcom/vlog);
- 当然如果选择安装SublimeLinter-contrib-iverilog或者SublimeLinter-contrib-verilator,则需要确保已经安装了iverilog或者verilator;
上述的操作如下图所示:
“ctrl+shift+p”install package
使用效果如下图所示:
语法检查1
语法检查2
语法检查3
不过这个插件有个问题就是,会在工程文件夹下生成一个work文件夹,如下图所示,插件的文档并未说明怎么解决这个问题。
- Transparency
sublime有一点不好的就是没法像VS Code等一样设置图片背景,要知道一张好的背景图片可以极大的提高生产力,既然没办法设置背景,只好曲线救国,可以把界面的透明度降低,这样一来,桌面的壁纸就成了sublime的背景了,而插件“Transparency”刚好可以实现透明度调整。
同样直接在install package里搜索“Transparency”,点击安装即可,如下图所示:
安装好之后可以使用快捷键“ctrl + shift + 1/2/3/4/5/6”调整界面的透明度,其中“ctrl + shift + 1”为不透明,“ctrl + shift + 6”透明度最高。
上述快捷键也可以到插件安装的路径下进行修改,如下图所示:
此外也可以到“首选项--Package Settings--sublimeTextTrans--Settings-Default”中设置每一级的透明度,如下图所示:
其中255为不透明、0为全透明,然后每一级自行设置即可,至于设置透明度为多少合适就自行体会了。
最终实现效果如下图所示,有了动态壁纸和透明背景加持,搬砖都能多搬几块了~
这个插件极大的提升了搬砖效率
大概就是以上几款插件,另外像是SystemVerilog、Sublimerge、Alignment等插件由于用的不多就等改天熟悉后再补充,另外如果发现新的插件将持续更新!