verilog编码规范@TOC
-
模块
(1) 一个module模块单独在一个单独的源文件里,且原文件名和模块名一致
(2) 在文件开始加注说明,至少包括:
设计时间
设计者
文件名
所属项目
上下层模块
模块名称及功能描述
修改记录
(3) 模块名要求可描述模块功能,可用下划线间隔简写单词
(4) 顶层模块的设计只是各子模块信号的连接,不做信号设计,这样有利于系统综合 -
信号
(1) 模块名和信号名不使用大写字母
(2) 常数和参数使用大写字母
(3) 信号命名要能体现信号功能,进来使用简写,中间用下划线间隔
(4) 系统级信号命名要以system的简写开始
(5) 低电平有效信号以_n结束
(6) 经过所存的信号要以_r结束
(7) 时钟信号采用clock简写clk_加频率表示
(8) Fifo和ram命名方式为功能+fifo+深度位宽+ip说明,以下划线间隔
(9) 每设计一个模块,都添加一个debug信号备用,每一个debug模块应包含模块设计关键点 -
设计
(1) 同一时钟信号在各模块尽量保持一致
(2) 一个模块中只使用时钟上升沿或者下降沿驱动
(3) 尽量不使用组合逻辑设计电路,减少竞争和冒险
(4) 一个模块尽可能不超过五百行
(5) 代码中不出现保留字
(6) 关键always块加备注
(7) 时序逻辑中不使用阻塞赋值
(8) 在顶层中输出信号要做寄存
(9) 多实用状态机进行设计,状态使用独热码,注意添加default项
(10) 使用单一的复位电路
(11) 一个always中尽可能只对一个变量操作