在settings->packages下安裝這兩個包
在snippet中設置代碼塊
.v文件的scope是:source.verilog
找到snippets.cson文件(我用everything直接搜出來)
時序電路模板(輸Shixu+Tab觸發):
'.source.verilog':
'shixu template':
'prefix':'Shixu'
'body':'''
always@(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
${1};
else begin
${2};
end
end
'''
組合邏輯電路模板(輸Zuhe+Tab觸發):
#'.source.verilog':
'zuhe template':
'prefix':'Zuhe'
'body':'''
always@(*)begin
${1};
end
'''
Module模板(輸Module+Tab觸發):
#'.source.verilog':
'module template':
'prefix':'Module'
'body':'''
module ${1:module_name}(
clk ,
rst_n,
${2:dout}
);
//參數定義
parameter DATA_W = ${3};
//輸入信號定義
input clk;
input rst_n;
//輸出信號定義
output[DATA_W-1:0] ${2:dout};
reg[DATA_W-1:0] ${2:dout};
//中間信號定義
reg signal1;
//組合邏輯
always(*)begin
end
//時序邏輯
always@(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
;
else begin
;
end
end
endmodule
'''
測試模塊模板(輸Test+Tab觸發):
#'.source.verilog':
'test template':
'prefix':'Test'
'body':'''
'timescale 1 ns/1 ns
module ${1:testbench_name}();
reg clk;
reg rst_n;
//uut的輸入信號
reg[3:0] din0;
reg din1;
//uut的輸出信號
wire dout0;
wire[4:0] dou1;
//時鐘週期,單位ns,在這裏修改時鐘週期
parameter CYCLE = 20;
//復位時間,此時表示復位3個時鐘週期的時間
parameter RST_TIME = 3;
//待測試模塊例化
module_name uut(
.clk (clk ),
.rst_n (rst_n ),
.din0 (din0 ),
.din1 (din1 ),
.dout0 (dout0 ),
.dout1 (dout1 )
);
//生成本地時鐘50M
initial begin
clk = 0;
forever
#(CYCLE/2)
clk=~clk;
end
//產生復位信號
initial begin
rst_n = 1;
#2;
rst_n = 0;
#(CYCLE = RST_TIME);
rst_n = 1;
end
//輸入信號din0賦值方式
initial begin
#1;
//賦初值
din0 = 0;
#(10*CYCLE);
//開始賦值
end
//輸入信號din1賦值方式
initial begin
#1;
//賦初值
din1 = 0;
#(10*CYCLE);
//開始賦值
end
endmodule
'''
保存之後,編寫Verilog文件的時候就能用指令來生成預先定義好的代碼塊啦。