芯片设计,某种程度上越来越同质化。设计软件,无非是那两三家EDA公司,工艺,无非那几个晶圆厂。IP,例如cpu,主要是ARM core。用到的库,也基本上都是由晶圆厂推荐或者提供。如果是拼算法,拼生态,我们的竞争力和美西方还有一定的差距。目前来看,很多国内设计公司的发力点在于,如何让已经成熟的芯片,变得功耗更低,面积更小,或者性能更好。
尽管国产替代是趋势,芯片采购方也足够的动力来使用国产芯片,而如果业者能够为客户提供相较于美西方同类产品更优秀的指标的芯片,那么这种替代过程,将会更加顺畅,更能体现出双赢的精神。
用户经过替代,让自己的产品变得更有竞争力。而芯片设计公司,也由于客户提供的机会以及更多的销售额,赚到了进行下一代产品开发的资金。
那么,如何能让自己的芯片变得更有竞争力呢?这里介绍的一个思路就是标准单元定制。
由于标准单元库多由晶圆厂提供,多数公司基本上都是用晶圆厂提供的库。库的同质化,导致了性能上如果想赶超竞争对手变得非常困难。
这方面体现最为极致的就是比特币芯片。这种芯片算法极其简单并且完全限定,因此,这是个极端内卷领域。各个公司使出了浑身解数,就是为了能在PPA上赶超对手。于是,人们很早就开始了标准单元库定制。其寄存器甚至使用了所谓的动态寄存器,也就是通过单元内的寄生电容来保存数据。由于时钟不停跳动,寄生电容会被不断充电,因此数据并不会丢失。而面积,速度,功耗相对于普通寄存器有了根本性的提升。以至于后来者如果不采用动态寄存器的设置,将无法参与竞争。
虽然比特币芯片并不是一个有代表性的行业,不过我想说的是,在一些情况下,通过单元库定制是可以产生颠覆性的效果。即使对于普通的芯片,如果能根据芯片本身的特点进行一定的优化,也能取得显而易见的效果。
这里抛砖引玉,给大家一些进行单元库定制方面的思路。
- 如果芯片中用到了大量最小尺寸的标准单元,则需要考虑,是否需要定制一些更小的cell,以便于节省面积和功耗。因为这些最小尺寸的标准单元,有很大的可能性,可以用更小尺寸的标准单元来替代。
- 如果芯片中用到了很多大尺寸的标准单元,则需要考虑,是否需要定制一些更大尺寸的标准单元。虽然从单个单元来看,功耗提高了,但是从全局来看则未必,因为cell的使用量少了。
- 时钟树的latency如果比较长,则需要想到定制大尺寸时钟单元。这样可以减小时钟树上的latency,skew,进而减小时钟树上的变动(variation),而这个影响是全局性的。最终可能导致性能以及整体功耗的减小。如果是高性能芯片,则更需要考虑时钟单元定制,甚至考虑H tree,增强时钟树在不同corner之间的一致性。对于很多高性能芯片,这个是必须的,但是并不代表,性能要求不高的芯片不需要定制。
- 如果库中的标准单元驱动能力间隔太大,则需要考虑增加中间值。比如,如果库中只提供了D6 D12,则可以考虑增加D8 D10。标准单元驱动能力越精细,工具优化也就越完美。
- 是否可以针对于特殊设计,定制一些特殊功能的单元?这里不建议单元过于复杂,因为过于复杂的单元,需要考虑工具是否支持。
- 如果库中不提供Multibit寄存器,那么可以考虑定制。Multibit主要能够节省clock上的功耗。
- 在芯片的应用中,可以选择更加适合的电压。而晶圆厂提供的单元库的电压种类是有限的,有时候未必是最优。重新定制更接近实际应用的电压,可以取得更好的性价比。这也需要重新进行k库。通常,晶圆厂不会为一般的客户进行这种服务。
追求技术的路上没有终点。祝愿大家能够做出更有竞争力的芯片。