本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com
规范的 IC 流程中,在编写完设计文档后,后面的代码 Coding 工作对于设计工程师来说,大部分都是体力工作了,我们可以使用插件 / 宏操作等来提高我们的编码效率。
-
reg/wire 型定义的处理;
一般在写代码的时候,reg/wire 型都是随用随定义的,就会导致在模块很大的时候,最后将 reg/wire 型信号整理在一起是一件很麻烦的事情,我们可以通过 Gvim 提供的宏命令便捷的操作。
-
:/<reg>/ (选择 reg 型定义的字符)
-
光标移动到第一个高亮的 reg 处,输入 “qa” 进行宏命令录制;
-
“dd” 删除第一个高亮的 reg 所在的行,之后按 “gg” 跳转到模块开始处,按 “P” 进行粘贴;
-
之后按 “ctrl + o” 返回到之前光标所在的位置,按 “n” 跳转到下一个高亮的 reg 所在的行,之后按 “q” 退出宏命令录制;
-
这样子的话,我们就将一个剪切 reg 型变量行到模块开始处并且自动跳转到下一个 reg 型变量的宏命令录制好了;
-
之后根据自己的需要输入宏命令执行的次数即可。比如还有 15 个 reg 型需要进行整理,那么输出 “15@a” 就可以将宏命令执行 15 次;
-
最后的话,就是将 module 开始处的 reg 型变量全部剪切到需要统一定义的地址即可;
2. 逗号或者封号对齐
在接口信号以及内部寄存器 / 信号定义的时候,经常都是不对齐的,一般在代码完全写完之后再进行处理;
常见的方式有两种,一是利用 gvim 提供的插件进行处理,二是利用宏命令录制,自己来调整代码的对齐方式;
这里推荐的插件的话,推荐 Tabular,详细的安装教程大家可以百度一下~
利用宏命令
-
输入 “: /[” 搜索所有带位宽的信号定义,光标跳转到第一个高亮的 “[” 处,按 “q” 进行宏录制。
-
按 “100i 30d|” 命令进行操作,将 “[” 删除到指定列。“100i” 代表插入 100 个空格(注意此处有个空格), 代表进行命令模式,“30d|” 代表一直删除到第 30 列。
-
按 “nn” 跳转到下一个 “[” 处,按 “q” 进行退出宏命令录制,之后根据自己的需求执行次数即可。
-
之后将光标移动到第一个信号定义处的行首,输入 “: /[0-9a-z_A-Z]\S;$” 匹配信号定义到结尾处;
-
按 “qb” 进行命令录制,按 “n” 既可跳转到信号名处,输入 “100i 50d|”,之后按 “ww” 跳转到封号处,输入 “100i 80d|”,最后,按 “n” 跳转到下一个信号名处,按 “q” 退出命令录制既可。
-
之后,根据自己的需求执行次数即可。
3. 代码之间跳转
代码之间跳转推荐大家使用 vim 自带的 ctags 工具,比较好用;
4. 文件列表之间跳转
比如在 filelist 里面,想要直接进入某个文件的话,可以通过全选方式文件路径,按 “gf” 可以跳转到对应的文件中,之后想退出的话按 “ctrl + ^” 返回源文件即可,配合 ctags 更加的方便~