差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
硬禾实战营verilog代码规范 [2016/08/03 18:41]
zhijun
硬禾实战营verilog代码规范 [2021/09/15 14:54] (当前版本)
gongyu
行 1: 行 1:
 +[[stepfpga_code_spec]]
 +### 1.RTL CODE 规范
  
-====1.RTL CODE 规范==== 
 ------ ------
 +
 ===1.1标准的文件头=== ===1.1标准的文件头===
 +
 ------ ------
 在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,创建日期,概要,更改记录,版权等必要信息。 在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,创建日期,概要,更改记录,版权等必要信息。
 统一使用以下的文件头:其中*为必需的项目 统一使用以下的文件头:其中*为必需的项目
 +
 <code verilog> <code verilog>
 //​******************************************************** //​********************************************************
行 14: 行 18:
 //   File name       : ​  ​MODULE_NAME.v //   File name       : ​  ​MODULE_NAME.v
 //   ​Module name     : ​  ​MODULE_NAME //   ​Module name     : ​  ​MODULE_NAME
-//   ​Author ​         :   tony-ning+//   ​Author ​         :   STEP
 //   ​Description ​    ​:  ​ //   ​Description ​    ​:  ​
 //   ​Email ​          : ​  ​Author’s email //   ​Email ​          : ​  ​Author’s email
行 24: 行 28:
 //   ​Modification history //   ​Modification history
 //   ​---------------------------------------------------------------------------- //   ​----------------------------------------------------------------------------
-//   ​Version ​        : +// Version ​      ​Data(2016/08/01)   V1.0 
-//   Data(yyyy/mm/dd)   +// Description
-//   Name            : +
-//   Description ​    :+
 // //
 //​************************************************************* //​*************************************************************
 </​code>​ </​code>​
  
-===1.2 标准的module格式 ===(module 整体结构)+===1.2标准的module格式=== 
 ------ ------
 +
 对于模块的书写采用统一的格式便于项目内部成员的理解和维护,我们用批处理建立了一个MODULE模块,其内容解释如下: 对于模块的书写采用统一的格式便于项目内部成员的理解和维护,我们用批处理建立了一个MODULE模块,其内容解释如下:
 \\ 端口定义按照输入,输出,双向的顺序: \\ 端口定义按照输入,输出,双向的顺序:
行 41: 行 45:
 \\ 例化名 :U_XXX ​ (大写) \\ 例化名 :U_XXX ​ (大写)
 \\ IP 内部所有的模块名都要加IP名或者IP名简称作前缀,如USB_CTRL、USB_TX_FIFO。 \\ IP 内部所有的模块名都要加IP名或者IP名简称作前缀,如USB_CTRL、USB_TX_FIFO。
 +
 <code verilog> <code verilog>
 // ***************************** // *****************************
行 106: 行 111:
  
 ===1.3一致的排版=== ===1.3一致的排版===
 +
 ------ ------
 +
 \\ A. 一致的缩排 \\ A. 一致的缩排
 +
 <code verilog> <code verilog>
  //​统一的缩排取4个空格宽度  //​统一的缩排取4个空格宽度
行 121: 行 129:
   
 \\ B.一致的 begin end 书写方式 \\ B.一致的 begin end 书写方式
 +
 <code verilog> <code verilog>
  //always 中,一定要用begin end 区分,格式和代码风格统一如下:  //always 中,一定要用begin end 区分,格式和代码风格统一如下:
行 151: 行 160:
  else  else
  </​code>​  </​code>​
 +
 ===1.4 一致的信号命名风格=== ===1.4 一致的信号命名风格===
 +
 ------ ------
 +
 简洁,清晰,有效是基本的信号命名规则,详见命名规范。 简洁,清晰,有效是基本的信号命名规则,详见命名规范。
 ^全称 ^缩写  ​       ^中文含义^ ^全称 ^缩写  ​       ^中文含义^
行 207: 行 219:
  
 ====2.模板示例==== ====2.模板示例====
 +
 ------ ------
 +
 <code verilog> <code verilog>
 //​******************************************************** //​********************************************************
行 216: 行 230:
 //   File name       : ​  ​MODULE_NAME.v //   File name       : ​  ​MODULE_NAME.v
 //   ​Module name     : ​  ​MODULE_NAME //   ​Module name     : ​  ​MODULE_NAME
-//   Full name       : ​  ​complete English name of the abbreviated module_name +//   ​Author ​         :   STEP
-//   ​Author ​         :   tony-ning+
 // Description :  ​ // Description :  ​
 //   ​Email ​          : ​  ​Author’s email //   ​Email ​          : ​  ​Author’s email
行 224: 行 237:
 // //
 //   ​Abstract ​       :    //   ​Abstract ​       :   
-// 
-//   ​Called by       : ​  ​Father module . 
 // //
 //   ​Modification history //   ​Modification history
行 231: 行 242:
 // Version ​      ​Data(2016/​08/​01) ​  V1.0 // Version ​      ​Data(2016/​08/​01) ​  V1.0
 // Description // Description
-// 
-// $Log$ 
 // //
 //​************************************************************* //​*************************************************************