HDL编码风格与编码指南
草案初稿
作者
徐欣
孙广富
Rev. 0.1
June 30,2002
IP Core 开发小组 HDL 编码风格与编码指导 dr.xuxin@163.net
目 录
部分:说明...............................................................................................................................4
第二部分:HDL编码风格..............................................................................................................5
1. 文件头和修订列表..............................................................................................................5
1.1文件头包含以下内容:..........................................................................................5
1.2修订列表包含以下内容:......................................................................................5
2.联机注释.............................................................................................................................7
3.命名规则.............................................................................................................................7
3.1 实体和结构.............................................................................................................7
3.2 端口.........................................................................................................................7
3.3 结构体.....................................................................................................................8
3.4 元件 component.....................................................................................................8
3.5 配置.........................................................................................................................8
3.6包、函数和过程......................................................................................................8
3.6.1 包...............................................................................................................8
3.6.2 函数和过程...............................................................................................8
3.7常量和类属说明......................................................................................................9
3.8枚举(enumeration),数据类型,记录和数组....................................................9
3.9信号和变量..............................................................................................................9
3.9.1 信号...........................................................................................................9
3.9.2 变量...........................................................................................................9
3.10进程和块..............................................................................................................10
3.10.1 进程.......................................................................................................10
3.10.2 块...........................................................................................................10
3.11测试工作台 test bench........................................................................................10
3.12文件和目录结构..................................................................................................10
3.13其它......................................................................................................................10
第三部分:HDL编码指导............................................................................................................11
1.复位..................................................................................................................................11
1.1 作用.......................................................................................................................11
1.2 推荐:...................................................................................................................11
1.3强烈推荐:............................................................................................................11
2.时钟..................................................................................................................................11
2.1好的习惯:............................................................................................................11 2.2推荐:....................................................................................................................11
2.3强烈推荐:............................................................................................................12
3.
总线..................................................................................................................................12
4.通用规则...........................................................................................................................12
4.1强烈推荐:............................................................................................................12
4.2同步设计和时序优化............................................................................................12
4.2.1强烈推荐:..............................................................................................12
4.2.2推荐:......................................................................................................12
4.2.3好的习惯:..............................................................................................13
5.verilog编码指导原则......................................................................................................13
5.1一般规则................................................................................................................13
5.1.1强烈推荐:..............................................................................................13
5.1.2推荐:......................................................................................................13
5.1.3好的习惯:..............................................................................................13
5.2仿真和调试............................................................................................................13
5.2.1强烈推荐:..............................................................................................13
5.2.2好的习惯:..............................................................................................13
6.VHDL 代码指导原则......................................................................................................14
6.1一般规则................................................................................................................14
6.1.1强烈推荐:..............................................................................................14
6.1.2好的习惯:..............................................................................................14
6.1.3好的习惯:..............................................................................................15
6.1.4推荐:......................................................................................................15
6.1.5强烈推荐:..............................................................................................15
6.2可综合编码............................................................................................................16
6.2.1好的习惯:..............................................................................................16
6.2.2推荐:......................................................................................................16
6.2.3强烈推荐:..............................................................................................16
6.3以仿真和调试为目的的编码................................................................................17
6.3.1好的习惯:..............................................................................................17
部分:说明
1.准则的重要程度分三个层次:
好的经验——表明这条规则是一般情况下比较好的经验,在大多数的情况下要遵循,在特殊情况下可以突破这一规则。
推荐——推荐这一规则,在遵循这一规则的条件下,一般不会出现问题;
强烈推荐——表示严格规定,除非出现特别特殊的情况,否则要严格遵守。
2.斜体部分一般表明不按照规则执行,会出现的问题和现象,或一些相关注释。
3.版本及修订工作
姓名
修订
日期
联系方式
徐欣,孙广富
规范的初发布
2002-6-30
Dr.xuxin@163.net
第二部分:HDL编码风格
1. 文件头和修订列表
作为好的源代码,其中必须包含所有需要的信息。因此源代码中要包含文件头和修订列表(以获得修改情况)。
1.1文件头包含以下内容:
·模块名
·文件名
·需要的库
·模块描述
·使用的
仿真器——其运行平台和版本
·使用的综合工具,其运行平台和版本
·作者名字和e-mail
1.2修订列表包含以下内容:
·修订版本号
·改动的数据
·修订者名字和e-mail
·改动的详细描述
下面是一个例子:
Example Header
-------------------------------------------------------------------------------------------
-- Module : MAC (Multiply Accumulate Unit)
-- File : mac.vhd
-- Library : ieee,.......
-- Description : It is a general Purpose Multiply Accumulate Unit capable of
-- Simulator : Modelsim 5.2 / Windows 95
-- Synthesizer : Synplify / Windows95
-- Author / Designer : Harish Y S (harish@opencores.org)
-------------------------------------------------------------------------------------------
Example Revision List
-------------------------------------------------------------------------------------------
-- Revision Number : 1
-- Date of Change : 20th March 2000
-- Modifier : Harish Y S (harish@opencores.org)
-- Description : Initial Design
-------------------------------------------------------------------------------------------
-- Revision Number : 2
-- Date of Change : dd mm yyyy
-- Modifier : XYZ (email)
-- Description : Modified the ????.to improve ????..
-------------------------------------------------------------------------------------------
文件头的标准模式:
-------------------------------------------------------------------------------
-- Title :
-- Project :
-------------------------------------------------------------------------------
-- File :
-- Author : name <email>
-- Organization:
-- Created :
-- Last update :
-- Platform :
-- Simulators :
-- Synthesizers:
-- Targets :
-- Dependency :
-------------------------------------------------------------------------------
-- Description:
-------------------------------------------------------------------------------
-- Copyright (c) notice
-------------------------------------------------------------------------------
-- Revisions :
-- Revision Number :
-- Version :
-- Date :
-- Modifier : name <email>
-- Desccription :
------------------------------------------------------------------------------
2.联机注释
每一个重要的操作和定义后都要加上注释,描述操作和声明的使用。
3.命名规则
3.1 实体和结构
规则:·实体名要确切描述其功能;
·实体名只能用小写字母,不超过10个字符;
推荐:每个实体有一个3-4个字母的缩略名,可以将其应用在其内部的构造模块(component)和信号名中。
3.2 端口
规则:·端口名应和信号相对应,以大写字母开头;
·若端口是标准设备,可包含标准名,不超过15个字符;
·端口声明后要有详细注释。 www.IPcore.com.cn 第 7 页 共 17 页
IP Core 开发小组 HDL 编码风格与编码指导 dr.xuxin@163.net
3.3 结构体
结构体定义系统行为,可从不同方面对其进行描述,结构体和实体是一致的,其名字要表明系统描述的方法。
规则:·构造体名可用“behavioural”表示行为描述,“structural”表示结构描述,“RTL”表示寄存器描述等;
·由综合出来的结构体要有“_syn”后缀,并且在开始和结束出要注明采用的技术;
·在“ARCHITECTURE”语句前要有一行注释,说明其功能,并说明是否可综合,或仅可仿真。
推荐:当一个设计中包含多个文件时,通过加“_arch”后缀来加以区分。
3.4 元件 component
元件 component在VHDL设计的层次结构中使用。
规则:其名称以包或实体的缩略名作开头;
可取有实际意义的单词,大小写可混用,不要超过8个字符。
3.5 配置
配置是用来说明逻辑模块和其构造体间的关系。
规则:配置名中要包含顶层设计名;以大写字母开头,不超过15个字符。
推荐:加“_cfg”后缀区分多个文件。
3.6包、函数和过程
3.6.1 包
规则:·包中要包含系统所需定义的所有常量,数据类型,模块,过程和函数;
·包名以大写字母开头,不超过15个字符。
推荐:加“_pkg”后缀区分多个文件,为包定义一个3-4个字符的缩略名,加在其中的常量,过程和函数名中,用以区分不同包中的内容。
3.6.2 函数和过程
规则:·以大写字母开头,不超过10个字母;