经典Verilog代码标准

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、工程建立规范:

1、工程的组成:

(1)一个顶层文件夹

(2)顶层文件夹下,至少包括以下四个子文件夹

a)project文件夹:存放ISE工程文件,包括ise、bit、mac等文件

b)source文件夹:存放verilog源文件

c)explain文件件:存放注释说明文档

d)test文件夹:存放测试程序代码,可进一步分为软件调试程序、硬件调试程序

2、工程的命令:

(3)定层文件夹命令为top_xxx,xxx为工程的识别名称

(4)顶层文件夹的子文件夹分别命名为:project、source、explain、test

二、RTL CODE 规范

1.标准的文件头

在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,创建日期,概要,更改记录,版权等必要信息。

统一使用以下的文件头:

// **************************************************************

// COPYRIGHT(c)2005, Hislicon Technologies Co, Ltd

// All rights reserved.

//

// IP LIB INDEX : IP lib index just sa UTOPIA_B

// IP Name : the top module_name of this ip, usually, is same

// as the small ip classified name just as UTOPIA

// File name : file_name of the file just as “tx_fifo.v”

// Module name : module_name of this file just as “TX_FIFO”

// Full name : complete Emglish nme of this abbreviated

//

// Author : Athor/ID

// Email : Author‟s email

// Data :

// Version : V 1.0

//

//Abstract :

// Called by : Father Module

//

// Modification history

// ------------------------------------------------------------------------------------------------------

// //

// $Log$

//

// *********************************************************************

2. 标准的module 格式(module 整体结构)

对于模块的书写采用统一的格式便于项目内部成员的理解和维护,我们用批处理建立了一个MODULE模块,其内容解释如下:

●端口定义按照输入,输出,双向的顺序:

●模块名、模块例化名统一,例化名前加大写U_以区分(多次

例化另加标识),三者关系:

文件名:xxx .v (小写)

模块名:Xxx (首字母大写)

例化名:U1_xxx (首字母大写)

IP 内部所有的模块名都要加IP名或者IP名简称作前缀,如USB_CTRL、USB_TX_FIFO。

// *****************************

// DEFINE MODULE PORT //

// ******************************

//

// module MODULE_NAME (

// INPUT

input_port_1,

input_port_m,

// OUTPUT

output_port_1,

output_port_m,

);

// *****************************

// DEFINE PARAMETER //

// ******************************

parameter…

// ******************************

// DEFINE INPUT

// ******************************

input rst_n ; // reset, active low .

input clk_* ; // clock signal , 50M .

input [n:0] a_din ; // *****

input [k:0] b_din ; // *****

// ******************************

// DEFINE OUTPUT //

// ******************************

output [m:0] a_dout ; // *****

output [i:0] b_dout ; // *****

// ******************************

// OUTPUT ATRRIBUTE //

// ******************************

// REGS

reg [m:0] a_dout ; // *****

//WIRES

wire [i:0] b_dout ; // *****

// ******************************

// INSTSNCE MODULE //

// ******************************

MODULE_NAME_A U_MODULE_NAME_A(

.A (A ),

.B (B ),

.C (C ),

); …

// ******************************

//MAIN CODE //

// ******************************

… …

… …

… …

// ****************************** //

Endmodule

3.一致的排版

A. 一致的缩排

●统一的缩排取4个空格宽度

●输入输出信号的宽度定义与关键字之间,信号名与宽度之间要用

空格分开;所有宽度定义对所有信号名对齐,代码风格统一如下:input [3:0] input_a ; // *****

input input_b ; // *****

相关文档
最新文档