项目组内统一这些RTL编码规则,让项目管理更轻松
随着功能复杂度的快速提升,对芯片的要求也是随着提高,所以现在一款芯片的开发,往往需要数十人,长达几个月的共同开发才能完成。
因为Verilog HDL的语法相对开放,所以每个人开发的Verilog HDL之间的差异也是非常的大。但是一个设计团队之间,进行RTL模块的交叉review、相互调用是非常频繁的事情,所以为了增强RTL代码的可移植性,以及review的效率,我们通常在一个项目开始的时候,会统一整理一个RTL编码规则,里面的内容包括,命名的规则、单词的缩略原则,一些标准电路的常用写法等等。往往这个编码规则会写的很具体,但是个人认为,这是非常有必要的。在下面的文章中,我就继续来聊一聊一般常见的规则。
RTL推荐编码规则定义多比特信号或者总线时,推荐使用固定的定义方式,一般推荐使用signal[xx:0]。例如推荐使用reg [7:0] a定义一个register,而不是[0:7] a。定义信号名时,尽量和大家的习惯保持一致。例如*_ff表示打一拍,*_r表示寄存器,*_syn表示同步信号。
在开始一个全新的module时,在module的开头一定要有一个文件头,内容包括文件名、RTL编写作者、module的功能描述、module的首次创建时间。如果是修改别人的RTL,则需要在module开头填写module修改时间、修改内容、修改者姓名等信息。这样做的原因是,RTL在完成之后,可能在多个项目使用,RTL的维护者一般肯定不是一个人,所以如果有问题,需要找人协助时,可以很快的找的RTL的设计者,提升整个项目的效率。设计者一定要意识到注释的重要,在必要的地方添加适当的注释。这些地方包括,信号的声明、端口的定义、参数定义、变量的声明,以及一些always,assign、function的使用等地方。添加注释不仅仅是为了方便给别人看,而且在很大程度上,也方面自己阅读自己的RTL。有的RTL可能间隔很长时间再使用,一些非功能性的RTL,基本上很难在短时间内看出为什么当时要这么设计,所以必要的注释,无疑可以很好地解决这个问题。但是有一点也要注意,就是注释不是文档,所以不能长篇大论,要做到意思清晰,描述尽可能简单,注释不一定只是文字,也可以通过一些简单的图形、流水线图等方式来呈现。
小结
今天的文章,主要给出了一些编码的规范,看起来特别琐碎,但是却是非常重要。如果您对内容有什么建议或者疑问,欢迎和我进行讨论。