标准库单元对设计的性能、功耗、面积和成品率影响深远,但是并未得到应有的重视,目前许多半导体公司选择与独立的库销售商合作开发或者向他们购买定制的、有版权的成品库。本文介绍的流态库方法可使库的创建更易管理,它允许库设计师着眼于种子单元的内核,并根据要求生成其他单元,从而使标准单元IP设计更加实用,因而更有价值。
Paul de Dood
董事长
Prolific
由于新工艺发展很快,所以标准单元设计变得越来越复杂,库的容量和种类也在增加,从几年前仅有二、三百种,增加到现在的500种以上,且每个库都具有性能高、面积小和功耗低的特点。尽管从技术角度看,采用“万金油”型现成库不失为一种折衷方案,但是资源限制和上市时间的双重压力极大地影响单元库的生成方法。此外,选择现成的库也有许多不利之处,例如:工程师对设计风格、性能、功率、面积和成品率的优化有限;不能控制库的布局流程;缺乏熟练使用库的设计人员;不得不与其竞争对手共享知识产权等。
典型的解决方案
在设计复杂性日益增加、设计师却日益减少的情况下,半导体公司如何利用量身定制的标准单元库呢?目前有两种解决方案。
第一种方案是使用“流态库(liquid libraries)”,其核心单元由经验丰富的设计小组设计。流态库单元按用户需求设计,这样可以将生成库的大部分过程转移到设计技术集中的EDA综合与布局和布线流程之中。
流态库标准单元布局和布线流程是在改进SPR流程的基础上获得的。典型的流程包括下列步骤(某些步骤可能根据所用的工具合并为一个步骤):
- 从RTL级到门级的综合;
- 门级布局;
- 门级详细布线;
- 根据布线情况调整门级的驱动力度;
- ECO布局;
- ECO布线;
SPR工具在设计流程的每个阶段都要用到库。在典型的SPR流程中,库是单元的静态集合,单元定义于RTL级综合之前,其基础是库设计师最终要求的期望形式。库设计师预先确定功率、面积、设计周期和可制造性之间的折衷关系(图1)。
但是,随着设计进一步深入,对库的要求在不断变化,而且,不同部分的设计还可能有不同的要求。比如,一项设计可能对面积要求高,即需要一个面积最小的库。假如为了满足对面积的布局要求不得不影响其它参数,那么这个面积最小的库将无法满足整个设计预计的设计周期要求。此外,在典型的静态库中,为了支持关键的时序路径,可能需要人工添加某些单元。
第二种方案是重新设计整个库,以提高设计性能,但这极有可能严重影响有效面积和功率。在理想情况下,每一模块都是采用针对该模块优化的库进行设计,但是,如果库由人工或半自动化生成,这种优化就将耗费大量额外的设计时间。
库设计方法的新思路
流态库的概念有助于解决库设计中面临的矛盾。在流态库的流程中,单元库既可针对特定的设计需要优化也可针对要特殊设计的模块而优化。流态库SPR流程的步骤如下:
- 使用种子库完成从RTL级到门级的综合;
- 门级的布局;
- 门级的详细布线;
- 根据布线情况调整门级的驱动力度;
- 建立库单元;
- ECO布局;
- ECO布线;
典型流程和流态库流程之间的主要区别在于第一步和第四步上。在这两个步骤中,工具并不是为综合、布局和布线工具提供的静态库,取而代之的是采用包含所有可能单元的流态库。根据使用SPR工具的不同,流态库可以包含非常多的独立单元,它也可以尽可能更抽象地表达单元。一旦综合工具在第四步中选定了最终单元,这些单元就动态地建立并特征化。流态库流程然后还可增加库单元创建步骤(第五步)。
流态库解决方案的优点非常明显。在综合开始的时候,可用的单元种类很多,因此,库的种类更加丰富,综合工具也更加实用。此外,在调整单元的时候,可以根据需要选择具有最佳驱动力度的单元(图2)。
例如,假设驱动力度为1X的门自身的延迟时间为一个时间单位(t),1X门驱动一个负载为36X的门,这两个门的延迟时间可表达为S+36/S,其中S是中间门的驱动力度。如果静态库设计师为这个门设计了多种驱动力度(如1X、3X和9X的门),这一对门的最佳延迟将是以9X门作为中间门的情况:9+36/9=13t。
但是使用流态库,可以自动生成6X的最佳驱动力度的门,其延迟为12t,亦即周期缩短8%。6X门的功耗也远远小于9X门。现在假设静态库仅包含1X门,静态库的大多数单元中普遍存在这样的情况,在此情形下,通过这对门的延时为:1+36/1=37t。它甚至是最佳延迟的三倍还多。如果目标周期是12t,那么使用静态库就无法实现。即使在不同的门中将逻辑重组,也未必能解决问题。由于流态库根据需要生成单元,因而加速了设计。
SPR的工具要求
综合工具必须能够处理像流态库这样的大型潜在库。这可以通过把单元抽象化或仅仅使用非常多的分立单元来实现。流态库的主要优点是它可以包含丰富的库组件,类似地,布局和布线工具必须能处理单元版图,即使这些单元不一定出现在模块所采用的最终版图。一旦最终流态库定型,布局和布线工具还必须把工程变更次序(ECO)变为最后的布局和布线,以产生最终详细的布局和布线。
为了使流态库生成能成为流程的一部分,库生成软件必须完全自动化,无需人工干预运行,此外,不管SPR流程需要什么样的单元,库生成必须保证完整性。由于布局和布线工具要把ECO变为最终的设计,所以流态库的生成必须可重复且具备一致性。实际上,这意味着所有门级系列的单元版图都必须相似。
例如,假如6X门与6.2X门有很大差异,布局和布线工具会在方案的选择中摇摆不定,最终无法做出最佳选择,甚至根本无法得到完整的方案。为了防止出现问题,流态库生成软件必须保证得到一致的答案。
重要的考虑
由于综合解决方案通常本身是无序的,因而库创建过程产生的布局和迷宫式布线的方案通常不适用于流态库。这类方案的不一致性决定了很难得到一致的结果,而且,它们不能确保完成某一指定单元的设计。这与模块级的布局和布线不同,因为单元级的连线(晶体管端子间)比模块级连线(单元的I/O端口间)要复杂得多。
借助流态库实现自动库生成是可行的,例如Prolific公司的工具使用的生成器既保证完整性又可保证可重复性和一致性。生成器通过预先确定的方法建立版图的拓扑结构。然后根据目标设计规则压缩版图的拓扑结构,以形成最终的版图。由于生成器是以预先确定的方法形成版图,所以它可以保证结果符合某一标准。
即使库本身已经较大,通过减少设计某种器件需要的标准单元的数目,流态库方法可使库的创建更易管理,它允许库设计师着眼于种子单元的内核,并根据要求生成其他单元,从而使标准单元IP设计更加实用,因而更有价值。
作者简介:
Paul de Dood是Prolific公司董事长和创始人,他曾担任Sun Microsystems公司 UltraSparc和UltraSparc-II产品系列的库和芯片设计小组的负责人。