芯片设计,某种程度上越来越同质化。设计软件,无非是那两三家EDA公司,工艺,无非那几个晶圆厂。IP,例如cpu,主要是ARM core。用到的库,也基本上都是由晶圆厂推荐或者提供。如果是拼算法,拼生态,我们的竞争力和美西方还有一定的差距。目前来看,很多国内设计公司的发力点在于,如何让已经成熟的芯片,变得功耗更低,面积更小,或者性能更好。
如果芯片中用到了大量最小尺寸的标准单元,则需要考虑,是否需要定制一些更小的cell,以便于节省面积和功耗。因为这些最小尺寸的标准单元,有很大的可能性,可以用更小尺寸的标准单元来替代。
如果芯片中用到了很多大尺寸的标准单元,则需要考虑,是否需要定制一些更大尺寸的标准单元。虽然从单个单元来看,功耗提高了,但是从全局来看则未必,因为cell的使用量少了。
时钟树的latency如果比较长,则需要想到定制大尺寸时钟单元。这样可以减小时钟树上的latency,skew,进而减小时钟树上的变动(variation),而这个影响是全局性的。最终可能导致性能以及整体功耗的减小。如果是高性能芯片,则更需要考虑时钟单元定制,甚至考虑H tree,增强时钟树在不同corner之间的一致性。对于很多高性能芯片,这个是必须的,但是并不代表,性能要求不高的芯片不需要定制。 如果库中的标准单元驱动能力间隔太大,则需要考虑增加中间值。比如,如果库中只提供了D6 D12,则可以考虑增加D8 D10。标准单元驱动能力越精细,工具优化也就越完美。 是否可以针对于特殊设计,定制一些特殊功能的单元?这里不建议单元过于复杂,因为过于复杂的单元,需要考虑工具是否支持。 如果库中不提供Multibit寄存器,那么可以考虑定制。Multibit主要能够节省clock上的功耗。 在芯片的应用中,可以选择更加适合的电压。而晶圆厂提供的单元库的电压种类是有限的,有时候未必是最优。重新定制更接近实际应用的电压,可以取得更好的性价比。这也需要重新进行k库。通常,晶圆厂不会为一般的客户进行这种服务。