此篇为终篇,介绍所有安装好的定制功能。

开始之前先看个有趣的。据说各编辑器的学习难度是这样的。

editorLearningCurve

本文延续上两篇的内容。

初篇|环境配置(几乎所有参考的插件和脚本在此篇)

中篇|使用手册(部分功能的使用说明)

与之前篇的不同?

  1. 将verilog相关的内容从vimrc配置文件全部移动到了automatic.vim文件中
  2. 添加emacs verilog-mode的调用快捷键
  3. 根据自己习惯调整了菜单栏和工具栏的一些结构,重新定义了快捷键方便自己操作(比如headeral改为了;header;al
  4. 新增ASCII画部分功能

下面演示部分GvimVerilog功能。

PS:快捷键单独配置,只针对博主自用版的Gvim有效。

Wave

Gvim中添加&调整时序波形

调整波形图

参考中篇|使用手册。波形的起始位置、时钟间隔空格长度、时钟偏移及上升沿或下降沿触发等均可在脚本中自行配置。

快捷键:

<C-F8>翻转波形

Code

Generate

代码段快速生成,包括头部信息,always块,单行多行注释,状态机,当前时间等,可以通过快捷键或者直接点击的方式生成代码。

addcode

鼠标点击的方式参考中篇|使用手册

快捷键:

headeral快捷键已经改为带Leader的;header;al,主要为了不影响ha键的操作速度。头部的作者、芯片、网站等信息在_vimrc中配置

状态机的fsm快捷键暂时删除,现在有更新的自动生成方法

<F2>添加单行注释,<F3>选中区域添加多行注释,<F4>行末添加注释

插入模式下使用<F2>插入当前时间

Load Template

每次在代码里添加新模板太麻烦了,可以直接导入整个写好的.v文件作为模板

load-template

快捷键:

输入:LoadTemplate后输入数字选择.v文件的模板即可,模板可自行编写

New

新建.v文件自动套用模板

autotemplate

Auto Update

写入文件时修改时间自动更新

lastmodified

Multi Channel

多通道批量命名

递增序列

参考中篇|使用手册,功能源自vim插件VisIncr

快捷键:

列可视模式选定后输入:I<CR>(递增)或:I -1<CR>(递减)

Declaration

进行端口和寄存器等的声明并自动对齐

declarationsig

参考中篇|使用手册初篇|环境配置,功能源自快捷键的对齐操作。

快捷键:

;di产生input信号声明,;dow产生output wire 信号声明,;dor产生output reg信号声明(注意声明时不能带位宽,不然会被截位。)

F7对齐输入输出端口的格式;F8对齐reg/wire的格式;通过快捷键F6调整例化模块的端口对齐

Align

一键自动对齐所有格式(包括输入输出端口、注释位置、always块、assign块等)。

特殊原因,暂缓。

Auto

automaic.vim插件本身包含的自动化功能包含自动例化(Autoinst),自动例化端口更新(AutoinstUpdate),自动例化端口顺序更新(AutoinstUpdateOrder),自动例化模块信号对齐(AutoPortReAlign),自动例化端口添加输入or输出的注释(AutoinstPortDirectionToInst),自动定义wire和reg(AutoDef),自动定义端口连接线(AutoArg)

Emacs的verilog-mode插件的自动化功能包括自动例化(AutoInst),自动wire(AautoWire),自动reg(AutoReg),自动例化参数(AutoParam)

automatic

只展示自动例化和自动添加参数。

有关automatic.vim参考vim auto script for verilog & RtlTree - (like Emacs, Verdi) - FPGA/ASIC资料共享 - EETOP 创芯网论坛 -

有关Emacs的verilog-mode 参考ExASIC: RTL顶层自动连线的秘武器:Emacs verilog-mode介绍以及如何高效的编写Verilog—终极版 Gvim自动化插件分享_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

快捷键:

自动例化:插入/*autoinst*/后使用<S-F3>

自动生成所有wire/reg:插入/*autodef*/后使用<S-F2>

自动例化parameter:插入/*autoinstparam*/后使用:EmacsAuto<CR>调用Emacs的verilog-mode即可

其余不常用,自行菜单栏调用

Jump

Rtl树,搜索module/instance,进/出子模块,搜索驱动信号

searchandjump

类似Verdi的跳转功能,Rtl树生成参考中篇|使用手册,功能仍然参考vim auto script for verilog & RtlTree - (like Emacs, Verdi)

Syntax

语法检查,快速跳转错误位置

syntasticcheck

参考中篇|使用手册,功能源自vim插件SyntasticCheck,另需要外置iverilog作为Linter。

快捷键:

:SyntasticCheck<CR>

Ascii

(2020/8/16更新)最近发现了ASCII画,稍微研究了一下。主要有表格、图像和字符画这几个。

Table

快速生成ASCII表格,快捷调整表头、表格位置。

tablify

参考stormherz/tablify。功能源自vim插件tablify

快捷键:

可视模式下选中编辑好的文本后\tl or \tt 生成表格(左对齐),\tc 生成表格(居中对齐),\tr 生成表格(右对齐)

\tu还原已转换的表格

\tS已转换的表格按当前列排序(数字或字母顺序)

\tRL重新右对齐当前行,\tRR重新左对齐当前行,\tRC重新居中对齐当前行

\tK当前行上移\tJ当前行下移 \tL当前列左移 \tH 当前列右移

DrawIt

画带箭头的ASCII结构图

darwit

参考vim-scripts/DrawIt以及How To Create ASCII Drawings in Vim Editor。功能源自vim插件DrawIt

\di开启DrawIt\ds关闭DraIt。开启后直接移动方向键<Up><Down><Right><Left>即可画线

通过><v^画箭头,通过\>\<\V\^画大箭头。\b绘制长方形盒,\e绘制椭圆

其余快捷键过多,见参考链接

Text2ASCII

通过Text to ASCII Art Generator (TAAG)直接生成即可。

比如我的名字HonkW:

1
2
3
4
5
6
//    _    _             _  __          __
// | | | | | | \ \ / /
// | |__| | ___ _ __ | | _\ \ /\ / /
// | __ |/ _ \| '_ \| |/ /\ \/ \/ /
// | | | | (_) | | | | < \ /\ /
// |_| |_|\___/|_| |_|_|\_\ \/ \/

Summary

Gvim的折腾到此为止,基本整合完之前看到的所有内容。

如果有推荐或新发现的插件或脚本,会在这篇文章中额外添加。感谢阅读。