gvim使用:ab命令快速製作verilog模板

最近剛學習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>always@( * ) 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

使用模板可以減少不必要的重複,大量縮短時間,希望我的分享對你有幫助,轉載請說明出處~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章