棋子 · 4月23日

还有人不知道这个写Verilog工具,我会生气的OK?

传说这个世界上只有代码三种编辑器,Vim , Emacs 和其他编辑器,其中Vim被称作编辑器之神,Emacs被称为神的编辑器,当然,其他编辑器永远只能是其他编辑器。

image.png

博主是坚定的Vim党,GVim即Gui Vim。Vim is the best text editor!

image.png

各大编辑器的学习曲线

本文要再次分享的是基于Gvim的开源插件,我愿称之为我见过的最强的GVim上的开源的编写Verilog插件。(定语足够多)

autoinst自动例化

支持任意跨文件夹例化,需要在endmodule最后写图示代码标识,路径指定任意位置支持相对路径、绝对路径(注意End后面必须再加一行空行)

image.png

image.png

image.png

image.png

支持Verilog1995和Verilog2001的端口描述语法,默认是关闭的需要自行配置选项打开

image.png

支持例化模块端口修改后,注释哪些被修改,哪些新增

image.png

使用方式,光标放在autoinst的位置,在Gvim命令模式,键入AI。在命令模式键入AIall,还可以一键将当前.v的所有autoinst标志的地方全部刷新。

autodef自动定义

直接写assign或者直接写always。然后完全可以自动定义wire或reg。尤其是做顶层的集成的时候,几千根wire连线,根本不是人做的。工作效率提高1000%

image.png

如果有些定义你想自己写,写在自动生成的注释段外面就行了,工具会自动查重。将当前顶层所有的wire刷新一遍,同时显示新增或删除

image.png

使用方式,在代码定义段编写标识/ autodef /,在命令模式下键入AD

autopara自动para例化

支持例化parameter变量名和自动例化数字两种方式。

image.png

在参数例化模块段编写标识/ autoinstparam /,在命令模式下键入AP,可以将子模块的parameter例化出来。在参数例化模块段编写标识/ autoinstparam_value /,键入APV,可以直接将parameter的数值例化出来

同时也支持一键例化刷新当前.v所有instance。命令分别对应为APall和APVall

autoarg自动定义端口

如果你喜欢标准1995的端口描述写法。直接帮你自动定义端口,不过我个人更喜欢2001以后的端口描述写法,端口描述写一次就够了,所以autoarg我基本没用

image.png

在端口定义段编写标识/autoarg/,在命令模式下键入AR,可以将端口自动提到port上,并区分output段和input段

支持显示RtlTree

image.png

在命令模式下键入RtlTree,可以直接显示rtl tree,点击对应的模块可以实现跳转,简直就是一个小型的IDE

支持snippet用户自定义代码段

image.png

命令模式键入HD,直接生成文件头,格式都可以自定义,文件发生更改会自动更新last modified时间

image.png

命令模式键入ALB生成组合逻辑代码段,键入ALBPN会生成时序逻辑代码段,倒数第二个P代表时钟是上升沿还是下降沿,最后一个N表示复位的高低有效。

这些commad用户都可以自定义,这些是我加的几个常用的。

image.png

snippet的代码段也是可以用户自定义,感兴趣的朋友自己研究下。

上面说的已经是可以将编码效率提高1000%了,还有其他更多的功能。这里就不一一展示了,感兴趣的朋友可以自己去探索。

安装使用

安装使用方法也很简单,直接放到vim安装目录的plugin路径中,如果有没有这个目录就新建一个。更重要的是,支持Windows、Linux、MacOs全平台。操作完全相同。

image.png

那么怎么样才能得到这个工具呢?整理编写这个脚本的网友,已经全部开源,而且还在持续更新开发。你甚至可以自己在这个基础上再开发,做出符合自己的全部需求的Verilog插件。

GitHub链接如下:

https://github.com/HonkW93/automatic-verilog

他的个人网站有更加详细的介绍和使用方法。

https://blog.honk.wang/posts/AutoMatic/

image.png

这套脚本是原生的,本文涉及到的commad是我自己加的,一些选项也有调整,经过调教,可以说胜任上亿门级别的IP开发或者集成工作都没有问题。

脚本我上gitee托管了,感兴趣的朋友可以在公众号后台回复siliconpeasant,或者上gitee搜索siliconpeasant/xuanwu9000/tools/vim仓库,就可以获得我的仓库链接啦。

最后

听我说,所有用GVim的都必须得用它,没用GVim的希望早点用。最后祝大家代码写得快,下班下得早!给我点赞,在看,分享三连!

作者:硅农
文章来源:硅农

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
20179
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息