verilog always语法_Gvim是最好用的Verilog代码编辑器

dd65c849f59079378fa7b58a3d6582aa.png

标题党标题党。工具没有最好,只有最适合你的,Verilog行为级描述虽然已经抽象了很多,但是对于大规模的电路设计,Verilog有很多冗余编码逻辑,比如自动定义,自动实例化等等,尤其是做Top集成,上万行的连线,手动连线十分低效,也容易出错。比如现在很多工具上都有提高Verilog代码编写效率的插件,本文是分享的是两个Gvim的自动化插件。

两个插件

为了高效的编写Verilog,通常有些编辑器插件可以自动生成代码,比如自动端口定义,自动连线,自动实例化等等。一般的公司的环境有很好用的自动化插件,想给自己的电脑也整个怎么做。

博主找到了两个插件

  • Emacs中有个插件叫verilog-mode。博主习惯了用Vim,查询后发现Vim也可以调用这个插件来实现自动化。

verilog-mode开发者网站在这里,更多内容去上网查询。

https://www.veripool.org/wiki/verilog-mode

  • vim官网上也有一个插件,作者zhang guo,有好用的autodefine功能,这两个可以配合着用,写代码的时候可以完全不用在意reg和wire类型的定义,直接写assign和always块,最后autodefine一下就可以了。

https://www.vim.org/scripts/script.php?script_id=4067

Emacs的安装

第一个插件需要按装Emacs,各个版本的Emacs下载安装

https://www.gnu.org/savannah-checkouts/gnu/emacs/download.html#nonfree

MacOS安装Emacs

brew cask install emacs

CentOS安装Emacs

https://www.cnblogs.com/snake553/p/4943816.html

Windows安装Emacs

下载地址http://mirrors.ustc.edu.cn/gnu/emacs/windows/emacs-26/

放在安装目录在下,在bin文件夹下找到emacs.exe运行

Emacs的配置使用

自动化前

module 

自动化后

module 

实例化的文件和top在一个目录下直接运行就行,如果不在一个目录下,就在endmodule后添加如下

//Local Variables:

在相应的位置写好命令,测试了下不区分大小写。然后在Vim命令模式输入命令行。*号可以替换成对应的文件名。

:!emacs --batch *.v -f verilog-batch-auto

即可自动化定义和自动实例化,这个插件在Mac和Linux下可以直接输入上面的命令使用,在Windows下设置一下环境变量即可。

ab5e845b8520936ddb4cb407537790b5.png

c56c928aa99e8884ac8a0f01e0f16aba.png

设置第三行执行文件的emacs.exe的路径。

这个插件有些小问题,autoinst执行时,如果修改了端口名称,则会恢复到默认。

autowire和autoreg,只能对output和实例化的端口进行操作,直接写一个always块或assign,如果操作的变量,不在output或实例化端口中,也不会自动定义。本文开始的那段代码中的变量doutx就没有被自动定义。在Emacs-菜单栏-Verilog-AUTO Help中打开这两个auto的详细介绍,所以读者在使用的过程中应该注意。

98ab536719dfc09a4aad659fa913af1b.png

对于这两个问题,我找到了另外一个插件。

Vim官网的插件

https://www.vim.org/scripts/script.php?script_id=4067

直接下载这个文件。

在Windows中使用直接放在安装目录下plugin文件夹下,重启Gvim在菜单栏加载插件菜单。

d521e944c806936490fdcc662240788e.png

MacOS与CentOS下需要安装这个插件,在用户根目录下新建一个文件夹为.vim/plugin/,然后这个插件复制进去,重新打开Gvim,就可以看到插件自动加载。

68b7c6e15470cdd19568c7ab19302781.png

autoinst使用的过程中需要注意的是,光标必须放在需要操作位置对应的那一行,然后使用快捷键或者点击菜单栏图形界面就可以直接运行。这个插件的问题是不能垮文件夹实例化,不过对于平时做些小练习绰绰有余了,效率提高100%。

22abebd422d0d48003e46fe6bb4a584d.png

还可以添加always块,编写代码时,直接写assign和always块给变量进行赋值,使用autodef,则会自动声明变量成对应的wire或者reg。

96246c2b42321e051e424c3d7aab0c86.png

最后

Emacs verilog-mode只能自动声明输出和实例化端口的变量,而且在Windows平台下,会出现自动对齐参差不齐,但是可以自定义跨文件夹实例化。而automatic.vim弥补了Emacs verilog-mode自动定义功能的不足,但是却没有跨文件夹实例化的功能。所以两个可以配合着用,对于做个小练习,甚至做工程开发也完全没有问题。最常用的就这几个功能,还有其他功能读者可以自己去尝试,提高编码效率。

最后,编辑器这个东西,找个自己用的顺的,能跨多个平台的,多人协作尽量保持统一的就行了。没有最好,只有最适合你的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值