环境:RedHat Linux,工具:GVim,Emacs
为了高效的编写Verilog,通常有些编辑器插件可以自动生成代码,比如自动端口定义,自动连线,自动实例化等等。公司的环境有很好用的自动化插件,想给自己的电脑也整个怎么做。比如Emacs中有个插件叫verilog-mode。但是博主习惯了用Vim,查询后发现Vim也可以调用这个插件来实现自动化。
verilog-mode开发者网站在这里,更多内容去上网查询。
https://www.veripool.org/wiki/verilog-mode
自动化前
module
自动化后
module
在相应的位置写好命令,测试了下不区分大小写。然后在Vim命令模式下按 < Leader > + a,< Leader>在Vim中默认是 ,也就是按 + a,就OK了。这个对于写顶层的来说大大提高了效率。
实例化的文件和top在一个目录下直接运行就行,如果不在一个目录下,就在endmodule后添加如下
//Local Variables:
如何安装
- 确保自己的环境Emacs安装完整,最新的Emacs版本会自带这个插件
- 从git上下这个文件到本地
git clone https://github.com/zhuzhzh/verilog_emacsauto.vim
- 把这个插件放在/home/xxx/.vim/plugin/verilog_emacsauto.vim,plugin这个文件夹默认是没有,可以自己新建一个。
- 然后打开verilog_emacsauto.vim里面的文件verilog_emacsauto.vim/plugin/systemverilog_emacs_auto.vim
- 把其中所有的%.emacsautotmp全部替换成%.tmp.v
- 把-l ~/.elisp/verilog-mode.el全部去掉
没去掉之前是这个亚子的
去掉之后是这个亚子的
- 然后就大功告成了,还有图形界面可以使用
常用的就这几个,还有更多的自动化读者可以自己去本文开始的开发者网站探索。或者打开Emacs,菜单栏-Verilog-AUTO Help,
点击对应的auto会有下详细解释。
我也试了一下,这个autowire和autoreg,只能对output和实例化的端口进行操作,直接写一个always块或assign,如果操作的变量,不在output或实例化端口中,也不会自动定义。本文开始的那段代码中的变量doutx就没有被自动定义。在Emacs-菜单栏-Verilog-AUTO Help中打开这两个auto的详细介绍,貌似就是这样的。所以读者在使用的过程中应该注意。
本操作只在RedHat下操作成功,其他平台感兴趣的读者可以自己试试,有人有疑惑为什么不直接用Emacs呢,这就是习惯,编辑器用习惯了其实也都一样,并不是要说哪个更好用。听说Sublime Text中也有类似这样的插件,不过编辑器这个东西,找个自己用的顺的,能跨多个平台的就可以了。
关于写代码还有哪些便捷,提高效率的工具,欢迎留言区分享出来。
感谢订阅号 ExASIC提供的这个方法,并帮助我进行配置修改。