gvim使用:ab命令快速制作verilog模板
程序员文章站
2022-05-11 22:50:39
...
最近刚学习gvim,然后发现有个神奇的功能,可以快速制作verilog模板,但是网上没有相应的分享,所以自己制作了一个,分享出来(windows下)。
模板包括:module,时序逻辑块,组合逻辑块,testbench,计数器和三段式状态机。
使用方法:
1.将以下代码拷贝到 _vimrc文件
中(该文件在安装目录中):
:ab Module module module_name(<enter>clk ,<enter>rst_n ,<enter>in ,<enter>out <enter>);<enter><enter> parameter DATA_W = 8;<enter><enter>input clk ;<enter>input rst_n ;<enter><enter>output [DATA_W-1:0] out ;<enter><enter>reg [DATA_W-1:0] out ; <enter><enter>reg signal1 ;<enter><enter>aaa@qq.com( * ) begin<enter>end<enter><enter>always @(posedge clk or negedge rst_n) begin <enter>if(~rst_n) begin <enter>end<enter>else begin<enter>end<enter>end<enter><enter>endmodule
:ab Zuhe always @(*) begin<Enter>if( )begin<Enter>end<Enter>else begin<Enter>end<Enter>end
:ab Shixu always @( posedge clk or negedge rst_n) begin<enter>if( ~rst_n ) begin<enter>end<enter>else begin<enter>end<enter>end
:ab Jsq always @( posedge clk or negedge rst_n ) begin<enter>if ( ~rst_n ) begin<enter>cnt <= 0;<enter>end<enter>else if ( &cnt ) begin<enter>cnt <= 0;<enter>end<enter>else begin<enter>cnt <= cnt + 1;<enter>end<enter>end
:ab Ztj reg [2:0] cs;<enter>reg [2:0] ns;<enter>parameter [2:0] IDLE = 3'b000,<enter>S1 = 3'b001,<enter>S2 = 3'b010,<enter>ERROR = 3'b100;<enter>always @( posedge clk or negedge rst_n ) begin<enter>if ( !rst_n ) begin<enter>cs <= IDLE;<enter>end<enter>else begin<enter>cs <= ns;<enter>end<enter>end<enter><enter>always @( * ) begin<enter>ns = IDLE;<enter>case ( cs )<enter>IDLE : begin<enter>if ( ) begin<enter>ns = IDLE;<enter>end<enter>end<enter>S1 : begin<enter>if ( ) begin<enter>ns = S1;<enter>end <enter>end <enter>S2 : begin <enter> if ( ) begin<enter>ns = S2; <enter>end <enter>end <enter>ERROR : begin <enter> if ( ) begin<enter>ns = ERROR; <enter>end<enter>end <enter>endcase <enter>end<enter><enter>always @( posedge clk or negedge nrst ) begin <enter>if ( !nrst ) begin <enter>end<enter>else begin <enter>case ( ns )<enter>endcase <enter>end <enter>end
:ab TB `timescale 1ns/100ps<enter><enter>module dff_tb();<enter><enter> reg t_clk;<enter>reg t_rst_n;<enter>reg [3:0] t_d;<enter>wire [3:0] t_q;<enter><enter>syn_dff dut1 (.clk(t_clk),.rst_n(t_rst_n)); <enter><enter>initial begin<enter>t_clk = 0;<enter>end<enter>always #20 t_clk = ~t_clk;<enter><enter>initial begin<enter>t_rst_n = 1;<enter>@( posedge t_clk );<enter>t_rst_n = 0;<enter>@( posedge t_clk );<enter>t_rst_n = 1;<enter>end<enter><enter>initial begin<enter>t_d = 1;<enter>#25 t_d = 0;<enter>#20 $finish;<enter>end<enter>endmodule
2.打开gvim,敲入模板名字,敲回车即可,如图。
Module模块:
时序逻辑块和组合逻辑块
testbench模块
计数器和三段式状态机
_vimrc文件路径:
自己制作模板方法:
:ab name code
:ab 为命令,name为你要制作的模板名字,code为代码,如果需要换行使用< enter >即可。
Tips:
我的gvim自动缩进2空格,tab也为2空格,如果将代码复制进去格式不太好看的话可能是这个引起的,将以下代码复制到_vimrc文件
中即可:
"设置缩进
"设置Tab长度为2空格
set tabstop=2
"设置自动缩进长度为2空格
set shiftwidth=2
使用模板可以减少不必要的重复,大量缩短时间,希望我的分享对你有帮助,转载请说明出处~
上一篇: AMD Ryzen 5多少钱?AMD Ryzen 5*价格曝光
下一篇: Apache ab的使用