介绍几个用emacs写verilog的好用的插件,效率翻倍。
projectile是以项目为单位进行编辑插件。默认会把git、mercurial hg的根目录当作项目根目录,也可以手动创建一个.projectile
的空文件作为项目根路径的标记。这里(https://docs.projectile.mx/projectile/index.html)有详细介绍。
配置方法:
配置好后,emacs打开文件时会自动识别项目根目录,然后用F12 f xxx
来打开当前项目下的文件,就不用指定具体路径,插件会自动在项目下匹配文件名。
又如,F12 s g
就会自动调用grep
在整个项目下搜索,并且会自动过滤一些临时文件目录。当然你可以指定用ag
(F12 s s
)或者ripgrep
(F12 s r
)来搜索,速度比linux自带的grep
快得多。
下载ag安装包(也可以从这里下载:ag_2.1.0.tar.gz,适用于centos7.9,解压即可),安装并加到PATH。
下载emacs的ag
、dash
和s
三个配置文件(可以从这里https://melpa.org下载)。
修改.emacs
,增加ag
的配置,如下。
ivy(包括counsel、swiper)是一个命令自动补全的插件,当我们在搜索、执行命令时会自动补全,效率会高很多。
配置方法:
把swiper
和swiper-backward
绑定的C-s
和C-r
,替换掉emacs自带的搜索。当按下C-s
时,就会自动调用ivy还搜索,更方便快捷地在文件中多处匹配之前跳转。
在执行M-x
时,也可以调用counsel,仅输入命令的一部分关键词,来快速筛选出命令,并自动补全。
auto-complete是一个自动补全框架,支持多种语言的语法关键字,其中就包括verilog
。
auto-complete也会自动收集RTL或者Testbench中的变量,当再次输入变量时,只需要敲前两个字母就会弹出候选菜单,通过快捷键或者方向箭头来选取。极大的提高了写verilog的速度。
当然也可以再结合etag
等工具来生成verilog的调用关系,方便在模块和实例化、函数调用和声明之前跳转。
具体方法可以参考Synopsys用户大会上华为的一篇文章《Using Verdi to Generate vi and emacs Tagging Databases.pdf》(点击阅读原文下载)。
下载地址:emacs-20241020.zip,解压后合并.emacs
文件