编码规范

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

编码规范整理初稿

1命名规范

1.1顶层文件命名规范

级别: 规定

说明: 采用芯片型号名+top的命名方式

示例:xxxx_top.v

1.2子系统顶层命名规范

级别: 规定

说明: 采用子系统缩写+top的命名方式

示例:xxxx_top.v

1.3存储器模块命名规范

级别: 规定

说明: RAM存储器模块的文件命名采用下面的形式:

时钟类型_Ram类型_深度x位宽[w_深度x位宽r][_reg].v

时钟类型:读写时钟同步用com,异步用diff

Ram类型:对于双口ram为dpram,对于单端口ram为ram,对于单端口rom为rom,对于

FIFO为fifo,对于移位寄存器为shift;

_深度x位宽:用于描述写端口的位宽以及该位宽对应的深度;

[w_深度x位宽r]:可选字段,用于描述读端口的位宽以及该位宽度对应的深度,若

存储器读写端口位宽一致,或存储器只读,该字段可省略;

[_reg]:可选字段,采用寄存器输出的使用需要以_reg为结尾进行标示,输出不采用寄存器输出的则不使用.

示例:

1.4模块命名规范其他约束

级别: 规定

说明: 一个设计文件只包含一个模块,为了方便阅读查找,文件名应与里面的模块(module)名相同

示例:

1.5文件名应由字母、数字及下划线组成,首字符应为字母级别: 规定

说明: 命名只能由26个英文字母(a-z,A-Z)、数字(0-9)或者下划线( _ )组成。不允许使用破折号和连续的下划线。第一个字符只能使用字母,不能使用下划线。

示例:

1.6信号名使用有意义的名字,不宜超过32个字符

级别: 规定

说明: 文件名和信号名应尽量做到望文生义,言简意赅,同时不宜超过32个字符。

示例:

1.7用下划线分开多个单词

级别: 规定

说明: 由多个字符串组成的文件名或者信号名,每个字之间要用下划线分开

说明:可读性

示例:

1.8常量应用大写字母表示,推荐以“C_”打头

级别: 规定

说明: 常量应大写。包括参量(parameter)名、文本宏名都要大写

说明:提高可读性

示例:

1.9模块内部的信号以“S_”打头,其他字母建议小写

级别: 规定

说明: 对内部定义的信号,命名以”S_”打头,其他字母小写。

示例:

1.10模块的端口信号命名应采用I_portname、

O_portname、IO_portname分别对应输入、输出和

双向端口。

级别: 规定

说明: 让人很容易的看出该信号的输入输出属性

示例:

1.11时钟信号命名必须以_clk作为后缀,频率确定时需

要描述该时钟的频率特性。

级别:规定

说明:如果在设计中涉及到时钟,除了加上_clk后缀外,还需要加上时钟的频率特性说明,之间以下划线分开,如模块内部的时钟信号采用I _xx_clk(其中xx代表时钟的特

性)

示例:

1.12复位信号必须以_rst[_n]作为后缀

级别:规定

说明:便于阅读,不推荐rstn写法

示例:

1.13低电平有效的信号的后缀为_n

级别: 规定

说明: 当一个信号低电平有效时,它必须用后缀_n命名,_n的含义为negative;只是低电平有效的信号才能用_n结尾,利于设计的可读性。

示例:

1.14状态机变量的后缀应为state_cs,state_ns

级别: 推荐

说明: 状态机设计中次态变量的命名添加特定后缀,利于设计的理解。

示例:

1.15Latch变量的后缀应为_lat

级别: 推荐

说明: 便于理解和脚本分析

示例:

1.16命名应唯一,不能用大小写来区分命名

级别: 规定

说明: construct、net、variable的命名要唯一,不能用大小写来区分命名,推荐尽可能采用小写字符。

示例:

1.17保持信号在整个层次中的一致性

级别: 推荐

说明: 信号名在整个设计层次中应保持一致。对于穿透多个模块的信号在各个层次中信号名应保持一致,尤其是复位和时钟信号,应有一个统一的名称和有效电平

示例:

1.18不应用Verilog和VHDL的关键词来命名

级别: 规定

说明: 代码中的命名不应使用Verilog和VHDL的关键词。

示例:

1.19采样信号的后缀为‘_buf’,多次采样信号在后面加数

字区分

级别: 规定

说明: 利于代码的可读性

示例:

1.20例化模块的命名应与模块名对应,例化的实例采用

‘Un_xx_模块名’的形式

级别: 推荐

说明: 调用模块的命名应与该模块名匹配。同一模块内调用同一子模块时,调用名宜采用‘Un_xx_模块名’标识。n表示例化的名字,从0开始,表第1次例化,依次累加。只用一次可不加n,直接写‘U_xx_模块名’;xx表示该实例的特性或用途,可不写,模块名就是该模块的本来名字。

原因:增加模块的可读性,避免混淆。

示例:

2编码风格

2.1整个工程项目使用相同的目录结构

级别: 规定

说明: 规范目录结构,利于编写脚本

示例:

2.2每个文件都要有timescale,具体值工程内统一

级别: 规定

说明: 没有timescale生命,某些仿真工具会报错,比如IES

相关文档
最新文档