vim使用verilog_mode
vim下载插件
下载verilog-emacsauto.vim
在插件文件夹中,例如.vim/bundle文件夹下载verilog-emacsauto.vim
下载网址[https://www.vim.org/scripts/script.php?script_id=1875]
下载verilog-mode.el
verilog-mode.el下载拷贝到.vim/verilog_mode
下载网址[https://github.com/veripool/verilog-mode]
修改verilog-emacsauto.vim
修改verilog-mode.el路径
修改为指向verilog-mode.el的实际路径
修改快捷键
根据自己的习惯进行设置。
verilog_mode使用
autoinst自动例化
例化模块时test u_test(/*autoinst*/)
,对test这个module例化。
autoinstparam自动添加参数
例化模块时test u_test #(/*autoparam*/) (/*autoinst*/)
,对test这个module例化。
autoreg自动声明reg
input,output声明之后加入/*autoreg*/
,对来自寄存器的输出添加reg声明。
autowire自动声明wire
input,output声明之后加入/*autowire*/
,声明所有子模块输出但顶层模块没有输出的连接线。
autoreset自动reset
经常用于always下的if条件下,always@(...) if(...)/*autoreset*/
autoreginput自动声明tb中的reg输入
写tb时,/*autoreginput*/
,将所有的输入声明为reg。
autosense自动声明always中的敏感信号
always@(/*autosense*/) begin end
用于组合逻辑。
autoinput,autooutput自动声明顶层模块的输入输出信号。
顶层模块中,将所有子模块中没有互连的信号声明为为顶层模块的输入输出信号。
verilog_mode配置
取消自动折叠
verilog_mode添加的内容设置为自动折叠,如果希望它不自动折叠,可以在.vimrc中添加指令set foldlevelstart=99
添加搜索路径
verilog_mode默认只在当前路径下搜索模块,当.v文件存放在别的位置时,需要添加搜索路径。
在文件结尾添加
// Local Variables:
// verilog-library-directories:("." "subdir" "subdirs")
// verilog-library-extensions:(".v" ".h")
// verilog-library-files:("file1_path" "file2_path")
// End:
修改问题
需要注意的是,如果在它的自动填补内容基础上进行了修改的话,最好删掉/*auto...*/
。
否则下一次别的地方进行自动填补时,会将已有的自动填补内容按照它的规则修改到原样。
autoinst端口名不一致问题。
当例化端口名与端口名不一致时,需要把在例化时将这些端口放在/autoinst/上方。
例如sub定义为a,b输入,c输出的模块
sub u_sub (
// Inputs
.a(aa),
// Outputs
.c(cc),
/*autoinst*/
);
此时就可以只例化b端口,并且识别aa,cc为输入输出(Inputs与Outputs的注释不能丢,否则/*autoinput*/
等会出错,且必须为一个空格,I与O可以小写)