编码规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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