本示例使用windows批处理生成一段常用的Verilog文件的模板,新建一个txt文本,复制下述代码,然后将文件后缀改为.bat,在Windows下双击运行,输入需要生成的文件名,即可生成verilog文件模板。
@color b
@echo **********************************************************
@echo #
@echo #generate verilog file template
@echo #
@echo **********************************************************
@set /p name=please input file name:
@echo **********************************************************
@echo #
@echo #The file name is : %name%
@echo #
@echo **********************************************************
@echo off
rem get compute date and time
set d=%date:~0,10%
set t=%time:~0,8%
(
echo;`timescale 1ns / 1ps
echo;//
echo;// Company: XXXX
echo;// Engineer: xxxxxxxxx
echo;//
echo;// Create Date: %d% %t%
echo;// Design Name:
echo;// Module Name: %name%
echo;// Project Name:
echo;// Target Devices:
echo;// Tool Versions:
echo;// Description:
echo;//
echo;// Dependencies:
echo;//
echo;// Revision:
echo;// Revision 0.01 - File Created
echo;// Additional Comments:
echo;//
echo;//
echo;
echo;module %name%(
echo; // clock and reset
echo; input wire clk_in
echo; ,input wire reset_in
echo; // input port
echo; ,input wire signal_in0
echo; ,input wire [15:0] signal_in1
echo; // output port
echo; ,output reg signal_out0
echo; ,output reg [15:0] signal_out1
echo;^);
echo;
echo;//==============================================================================================
echo;//====== function ========
echo;//==============================================================================================
echo; //--------------------------------------------------------------------
echo; //------ Ceiling of log2(x^) ------
echo; //--------------------------------------------------------------------
echo; function integer log2
echo; (
echo; input integer x
echo; ^);
echo; integer acc;
echo; begin
echo; acc=0;
echo; while ((2**acc^) < x^)
echo; acc = acc + 1;
echo; log2 = acc;
echo; end
echo; endfunction
echo;
echo;//==============================================================================================
echo;//====== parameter ========
echo;//==============================================================================================
echo; localparam PARAMETER0 = 1;
echo;
echo;//==============================================================================================
echo;//====== define signal ========
echo;//==============================================================================================
echo; (* keep = "TRUE" *^) reg reg0 ;
echo; (* keep = "TRUE" *^) reg [15:0] reg1 ;
echo; (* keep = "TRUE" *^) wire wire0 ;
echo; (* keep = "TRUE" *^) wire [15:0] wire1 ;
echo;
echo;//==============================================================================================
echo;//====== initialize signal ========
echo;//==============================================================================================
echo; initial begin
echo;
echo; end
echo;//==============================================================================================
echo;//====== behave of RTL ========
echo;//==============================================================================================
echo; //--------------------------------------------------------------------
echo; //------ register input port signal ------
echo; //--------------------------------------------------------------------
echo; always@(posedge clk_in^)begin
echo; if(reset == 'b1^)begin
echo; reg0 ^<= 'd0;
echo; reg1 ^<= 'd0;
echo; end else begin
echo; reg0 ^<= signal_in0;
echo; reg1 ^<= signal_in1;
echo; end
echo; end
echo;
echo;
echo;endmodule
echo;)>"%name%.v"
@echo; verilog file template generate success
@pause
exit
使用者可以根据实际需求,将代码中第20行标注所在公司,将第21行作者名字改为自己的名字。
其他部分,使用着可以根据自己的实际需要,修改模板内容。