前言:本文主要从Naming Convention,File Header,Comments,Coding Style,Synthesis,Static 描述Timing Analysis, Simulation, Design for Test 等八个方面介绍verilog 代码设计规范。
一、術語說明
1、Severity Levels Definition 严格等级定义:
(1)Mandatory 1 (M1) –强制性1 --> 此等级规则必须遵守,如果不符合,设计必须更改
(2)Mandatory 2 (M2) –强制性2 --> 此等级规则应该遵守,如果不符合,必须提供文档说明
(3)Recommended (R) –建议等级 --> Rules are recommended to be followed in the design
二、为何要编码指南?
1、在ASIC设计过程中,CAD工具非常重要,然而,每个CAD工具都有它自己的能力和局限性,设计者必须熟悉每个使用的CAD工具的能力和局限性,为了获得工具最好的性能以避免疲惫迭代, 要求按照工具的特性进行编码。
三、命名约定规则列表:
No. | Naming Convention | Level |
[S.NC.1] | 一个文件最多只能包含一个module 模块 | M2 |
[S.NC.2] | 文件名应该与设计模块名一致 | R |
[S.NC.3] | 只有数字字母和下划线可以用来命名 | M1 |
[S.NC.4] | 名字应该以字母开头 | M2 |
[S.NC.5] | 名字不用只用大小写来区分 | M1 |
[S.NC.6] | 使用下划线来分开由几个单词构造的名字 | R |
[S.NC.7] | 在整个层次中使用相同的信号名称 | M2 |
[S.NC.8] | 参数和宏定义使用大写字母 | M2 |
[S.NC.9] | 端口,信号,结构体和实例单元的名字使用小写字母 | M2 |
[S.NC.10] | 使用能够表示一定含义的单词来名字 | R |
[S.NC.11] | 一致的时钟信号名称 | M2 |
[S.NC.12] | 一致的复位信号名称 | M2 |
[S.NC.13] | 一致的低电平信号名称 | M2 |
[S.NC.14] | 对于状态及变量,使用<fsm_cs>, <fsm_ns>命名 | R |
[S.NC.15] | 对于latch 类型的变量,以_lat 结尾 | R |
[S.NC.16] | 对于三态信号名,用_z 结尾 | R |
[S.NC.17] | 对于异步信号名,用_结尾 | R |
[S.NC.18] | 命名不能使用Verilog and VHDL 的关键字 | M1 |
[S.NC.19] | 名字的长度不能超过32 个字母 | M2 |
[S.NC.20] | 描述和缩写需要一致 | R |
[S.NC.21] | 文档缩写和附加命名约定 | R |
[S.NC.22] | 实例名称必须与模块名相同 | M2 |
[S.NC.23] | 要以特定的顺序来描述多位宽总线 | M2 |
[S.NC.1] | 一个文件最多只能包含一个module 模块 | M2 |
[S.NC.2] | 文件名应该与设计模块名一致 | R |
[S.NC.3] | 只有数字字母和下划线可以用来命名 | M1 |
[S.NC.4] | 名字应该以字母开头 | M2 |
[S.NC.5] | 名字不用只用大小写来区分 | M1 |
[S.NC.6] | 使用下划线来分开由几个单词构造的名字 | R |