我的应用实例
选用Vim这种编辑工具的原因是,在Xilinx的开发工具Vivado里直接编辑、或者用Sublime、UltraEdit这样的代码编辑工具,需要做很多Verilog编程的重复劳动,比如写模块的声明、写内部用到的wire reg变量的声明。而Vim加了特定的插件之后,这些可以输入简短的指令自动办到。
我是这样工作的,之前的代码要好好消化,摘出来有状态机的部分,用Vim写仿真文件。这样会提高效率,我也是借此练工具。
以后就是Vim的复制粘贴,自动生成模块调用、内部的变量声明,都要快速,脑子跟得上。
做尽可能多的情况的仿真,把要看的变量都拉出来。
我在没有注释的情况下,猜原作者写这些代码是为了什么,思考有什么欠缺。
结合Verilog语言安全子集,把代码的水平提高。
附上我认为常用的Vim快捷指令:
刚进入vim就是命令模式,平时多用esc退出,就会推到命令模式
Vim在打开了一个文件之后,想再打开一个文件,在命令模式下输入:open file
开新窗口打开另一个文件 :split 文件名 在同一目录下就直接是XX.v就可以,不用路径
开了两个Vim窗口后,在两个窗口之间切换,是用ctrl+w+w
方向键 h左 j下 k上 l右 这个我还是老记不住,手感中间两个是上下用,左右两边的是左右,与j的突起处放手的正常姿态不太合,总感觉同一个右手食指指要控制hj不太适应
选中这个词 shift+8 就可以在全文中搜索 这个词被高亮了
选中这个词 shift+3 这个词被高亮了还可以上下切换
在多个文件中搜索关键词:进入要搜索的目录下,用vim打开任何一个文件,在命令模式输入 :vimgrep//**/*.v 含义是在这个目录下所有v文件中搜索app_rdy.查看下一个结果是:cnext 但我发现不能用超过三次
:copen打开一个界面区域,能看到所有搜索的结果,可以在某条上用鼠标选中进入代码具体位置,就是没有单步的返回
yy复制本行,之后在行末输入p,可以粘贴到下一行(是在Vim中复制,要粘贴到Vim中)
Vim跨文件的复制粘贴,陈赞配置过,shift+v进入可视模式,直接ctrl+c ctrl+v就复制粘贴了
从剪贴板(也就是其他软件里复制的 ctrl+c的)来,要在Vim里粘贴的 shift+insert
替换110行至124行的<=为= :110,124s/<=/=/g
替换m行到n行的str1为str2,只换每行的第一个 :m,ns/str1/str2/
Vim中有!x这样的警报,说明我那里可能写的不对,便于检查。它的消除和看状态是要在命令模式下
就正常写代码,写完了把光标移动到在所有这些代码之前,写下/*autoreg*/
按esc进到命令模式,输入;atr回车(这个过程在界面中看不到输入的字符,要盲打,打字快一点),就可以自动生成内部的reg声明
就正常写代码,写完了把光标移动到在所有这些代码之前,写下/*autowire*/
按esc进到命令模式,输入;atw回车(这个过程在界面中看不到输入的字符,要盲打,打字快一点),就可以自动生成内部的wire声明
在当前编辑的v文件同文件夹内有已经写好的某个模块的v文件 如a.v 模块名叫a
则在当前编辑的v文件中想实例化a这个模块,实例为inst
在想要实例化的位置输入 a inst(/*autoinst*/)
把光标移到a inst(/*autoinst*/)的a之前 在命令模式下输入;ati回车 即可自动生成 a的名为inst的实例化代码段,内部各输入输出变量都有
类似的还有/*autoarg*/ 是用来自动生成module的最开头的
module a(/*autoarg*/) 光标移到最前 命令模式下输入;ata回车 即可自动生成module头
https://automatic-verilog.honk.wang/#/handbook
没有回复内容