随着功能复杂度的快速提升,对芯片的要求也是随着提高,所以现在一款芯片的开发,往往需要数十人,长达几个月的共同开发才能完成。 因为VerilogHDL的语法相对开放,所以每个人开发的VerilogHDL之间的差异也是非常的大。但是一个设计团队之间,进行RTL模块的交叉review、相互调用是非常频繁的事情,所以为了增强RTL代码的可移植性,以及review的效率,我们通常在一个项目开始的时候,会统一整理一个RTL编码规则,里面的内容包括,命名的规则、单词的缩略原则,一些标准电路的常用写法等等。往往这个编码规则会写的很具体,但是个人认为,这是非常有必要的。在前面的五篇文章中,我们已经聊了一些,今天的文章,我就继续来聊一聊一般常见的规则。 RTL推荐编码规则 每一个独立行,只写一行有效代码。个人看来,这条规则十分重要,有的朋友可能认为,这样会增加很多代码行数,使得文件冗长,但是有一个原则是只要代码便于阅读,那么即使行数多一些,总体看来,阅读效率还是要高的。所以毫无疑问,我坚持这条原则的原因主要有以下两个:语句独立成行,增加了RTL的阅读性;语句独立成行,增加了RTL的可维护性; 而在我看来,RTL的可阅读性和可维护性的优先级是非常高的。 我们还是通过例子来说明这一个观点。 程序段一: reg〔1:0〕a; always(posedgeclkornegedgerstn) beginif(!rstn)a2d0;elsea2d1;end 程序段二: reg〔1:0〕a; always(posedgeclkornegedgerstn) begin if(!rstn) a2d0; else a2d1; end 从上面这两段程序中,我们可以清楚的看出两者的差异。 程序段一,将所有的语句都锁到一行,这样貌似节省了RTL代码行数,但是阅读起来,很不畅快。因为这个例子相对功能简单,所以对功能理解的影响还算比较小,如果说功能再复杂一点,当阅读RTL的工作人员,读到这段RTL的时候,相信感觉是十分糟糕的。 相反,程序段二中,我们可以清楚的看到每条语句的条件,以及赋值过程,适当的缩进,可以很好的表现出程序的逻辑层次(python就是通过缩进来体现代码的逻辑层次),读起来就会清晰很多了。这样做唯一的缺点就是,增加了RTL代码的逻辑行数,现在已经不是很早之前,存储设备很宝贵的年代,所以这点消耗,应该不是问题了。 小结 今天的这条编码规则,看似很小,但是确实很实用,当我们在工作中去阅读大量的RTL时候,就是这一个小点,可能就能在很大程度上,提升我们的阅读效率,所以还是希望朋友们能够重视了。