最近剛學習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
使用模板可以減少不必要的重複,大量縮短時間,希望我的分享對你有幫助,轉載請說明出處~