Skip to content

参考华为内部的verilog编程规范,总结自己的代码风格。

设计风格

内容包括变量(信号)命名规范,模块命名规范等

信号与常量

  1. 对低电平有效的信号,信号名后缀“_n”
  2. 使用降序排列的定义向量有效位顺序,最低为是0
  3. 使用大写字母定义parameter,使用小写字母定义 inputregoutput等信号的命名
  4. 时钟信号统一使用前缀 "clk",复位信号统一使用前缀 "rst"

模块

  1. 模块的命名全部小写
  2. 到其他模块的信号声明顺序按照 : 输入、(双向)、输出
  3. 每个模块只包含一个模块,模块名称与文件名保持一致
  4. 在调用模块时,使用name_based的方式进行调用而不是order_based的方式进行调用
  5. 模块例化统一使用 "U_name_i",进行命名,如果多次例化,则i使用数字编号

可靠性

在模块设计时遵守以下原则:

  1. 同步时序逻辑块always块中有且只有一个使用信号,并且在同一个沿做出动作
  2. 不要在时钟信号路径上添加任何buffer
  3. 不要采取向量的方式定义一组时钟信号
  4. 一个always语句中只能有一个事件列表
  5. 时序逻辑电路中统一使用非阻塞赋值方式
  6. 组合逻辑电路中统一使用阻塞赋值方式

最新更新: