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可以小写)

posted @ 2024-10-11 16:20  心比天高xzh  阅读(72)  评论(0编辑  收藏  举报