随着功能复杂度的快速提升,对芯片的要求也是随着提高,所以现在一款芯片的开发,往往需要数十人,长达几个月的共同开发才能完成。
因为Verilog HDL的语法相对开放,所以每个人开发的Verilog HDL之间的差异也是非常的大。但是一个设计团队之间,进行RTL模块的交叉review、相互调用是非常频繁的事情,所以为了增强RTL代码的可移植性,以及review的效率,我们通常在一个项目开始的时候,会统一整理一个RTL编码规则,里面的内容包括,命名的规则、单词的缩略原则,一些标准电路的常用写法等等。往往这个编码规则会写的很具体,但是个人认为,这是非常有必要的。在前面的五篇文章中,我们已经聊了一些,今天的文章,我就继续来聊一聊一般常见的规则。
RTL推荐编码规则
在RTL源代码中禁止使用Design Compiler的综合命令。综合工具有很多种,Design Compiler只是其中一种,虽然它的市场份额很大,但是并不说100%的占有这个综合工具市场,所以Design Compiler中的命令并不能被其他综合工具所识别,这样的话,综合结果就变得不可控,因为如果使用其他综合工具,对Design Compiler的命令,究竟会识别成什么情况,是不能预估的。
另外,即使是一直使用Design Compiler进行综合,因为有两种综合策略,Top-down和bottom-up,所以当你使用不同的综合策略时候,对不同的综合命令处理方式,也会有很大的不同,所以通过上面的分析,不难看出,综合命令的使用,比较好的方式是放在一个批处理的脚本文件中,进行统一管理,不管是变换约束条件,综合策略还是其他的命令,都可以十分方便的在一个脚本里面进行统一更改。不过在这里有个例外,就是编译开关的打开和关闭命令,这个是可以放到RTL里面。下面我们举两个命令,做简单介绍,后面的文章中,我们将对这两个命令做详细介绍。
translate_off/translate_on,当出现translate_off命令,之后的RTL代码,Design Compiler将不会再进行编译,直到出现translate_on。这条命令就十分的实用,当我们的RTL里面出现了仅用来进行仿真的RTL时候,就可以使用这两条命令,这条命令简化了RTL在仿真工具和综合工具的移植。
parallel_case/full_case,parallel_case可以让综合工具在综合过程中,使用并行不带优先级的多路现则结构,有利于timing的优化,full_case可以避免锁存器的产生。
小结
RTL的可综合是十分重要的,因为RTL只是中间状态,我们要交付的是网表,所以在RTL编码过程中,我们只有把握好一些编码原则,才能使得综合得到的网表,更加符合我们的预期了。
本文由久芯网www.9icnet.com编辑整理发布,请勿转载