随着设计尺寸不断增加,对物理和逻辑设计域的管理变得越来越困难。一个分层的、基于模块的设计流程有助于设计管理,并可使顶级和模块级的协同设计成为可能,本文描述一种使ASIC设计人员和ASIC商家之间可以实现协同工作从而加速SoC的开发的设计方法。
为了满足时序要求,系统级芯片(SoC)的设计人员需要利用多种设计方法、流程和工具。现在的物理综合工具能够处理从RTL到GDSII的模块级的时序收敛问题。不过,IC设计人员面临的新挑战出现在芯片一级,包括多供电电压支持、多软模块的分层集成、分层信号与设计完整性,还有时延预估问题。由于许多功能模块和内核都是在芯片级集成的,因此板极问题对于芯片级是可见的。下一代工具必须处理这些芯片级的问题,以确保SoC设计能经过最少的迭代快速完成。
对分层设计的需求
虽然扁平设计(flat design)是实现设计任务的一种有效途径,但是当设计规模超过500万门电路时,它就变得几乎不可行了。对于复杂度达到或超过这一规模的设计,尤其是在由多个设计小组协作完成一个大型设计任务时,必须采用一种分层的(hierarchical)基于模块的设计方法。
内置有布局算法的综合工具可提供更为精确的布局和布线设计时序预测,从而减少了在设计流程前后阶段之间进行迭代的次数。当然,只要将设计中的所有模块相邻布置,就可较为容易地对时序信息进行估计。但是这种做法没有为全局布线预留任何空间。因此,布局算法必须考虑到全局布线的要求。因为金属层的选择可能对时序产生重大的影响,负责全局布线的人员也必须了解模块的具体布线。内层上的细信号线会相互耦合,还会与基底耦合,因此,考虑到这些越来越严重的信号线耦合,具体布线人员需要对寄生信号的提取和分析有所了解。所有这些都意味着设计过程中前面的步骤和后面的步骤之间已不再是相互孤立的了。同时也表明下一代工具必须是紧密集成的,以使得设计的各个阶段之间能够进行迭代和数据交换。
设计人员们一般在孤立于其它设计人员的情况下对模块进行综合,然后将已经综合的模块交给一个物理设计小组进行封装设计。但是,芯片的封装会对设计产生一些附加的限制,因此常常需要重新对模块进行综合。一个集成的、分层的综合/布局和布线方法允许前后阶段的设计人员在设计过程中更早地分享数据,从而使得只经过一次或很少的几次设计就满足时序要求的几率大大提高了。
向前期设计小组提供有关全局约束(包括信号线总长度、全局缓冲器、电源布线、对电池布设的影响、以及模块内布线)的信息,将减少设计迭代的可能性。另外,分层设计方法允许设计人员在顶层设计时使用从RTL描述中获得的信息执行电源规划与布线、全局缓冲,以及具体布线。
外壳/内核划分是一种分层的时序分析方法(见图1)。它通过从内部(内核)逻辑中划分出接口(外壳)逻辑,建立了模块间时序的一个精确的总体信息。外壳/内核划分的第一步包括识别物理区域中的外壳逻辑和内核逻辑。外壳逻辑是指位于物理区域边界与第一个输入寄存器之间的设计部分。而在输出端,最后一个寄存器与物理区域边界之间的逻辑也是外壳逻辑。在输入和输出寄存器之间的设计部分是内核逻辑。如果模块中没有寄存器,或者该逻辑并不通过一个寄存器,则将整个模块标记为外壳逻辑。
这种外壳/内核的划分显著提高了芯片级时序分析与规划的性能。时序分析只读取外壳模块的网络表,而让内核模块中的实体处于黑箱状态。在典型设计中,一般的大型物理模块包含20%的接口逻辑和80%的内部逻辑,因此时序分析可使容量提高5倍,运行速度也有相应的提高。
在分层设计中还用到了动态时序提取技术,通常它能使芯片级时序分析的性能提高2倍,还能提高容量。通过只分析芯片一级的路径,动态时序提取自动避免了对任何完全包含在模块中的路径进行分析所带来的额外开销。设计人员只需指定设计中应当提取的模块,然后运行时序分析即可。
底层规划与信号的完整性
RTL底层规划是基于对设计尺寸的估计之上的,估计中的任何不准确性都将使底层规划和用来创建它的大部分设计工作无效。相比之下,通过开展软模块(或P&R单元)的协同设计,动态底层规划可确保模块严格依照约束条件来实现。通过将物理影响纳入考虑,动态底层规划避免了估计的不准确性。物理综合技术构成了对物理限制进行估计的基础,并提高了尺寸估计的准确性。
就象时序收敛问题一样,信号完整性的问题也随着特征尺寸的减小而加剧了。例如,对于0.25μm工艺,只需要考虑很少的几千个网络的寄生影响,这些网络可以通过手工进行处理。在0.18μm工艺中,这一数字变成了几百万个。在0.13μm工艺中,大多数的网络都有问题,电源电压的降低也会使串扰和基底耦合问题变得更加严重。此时,以分析和校正为核心的方法也不管用了。
解决的办法是一种通过构造进行修正的方法,它支持整体式及分层的信号以及设计的完整性。影响信号完整性的因素包括串扰噪声、串扰对时延的影响、以及IR压降。影响设计完整性的主要因素包括电迁移、导线自热(有时称作信号线电迁移)和热电效应。下一代设计方法中必须结合在P&R过程中避免将这些影响因素引入设计的试探算法。而另一个独立的分析和修正步骤则验证先前的预防步骤并改正任何遗留的问题。
为了将功耗降到最低,设计人员通常会采用不同的供电电压,他们为设计中速度最快的部分保留较高的电压,或者在模拟/混合信号部分采用特定的电压。因此功耗分配问题的复杂程度也进一步加剧了。
功耗最小化包括在物理设计中将电源和接地连接进行交互式的自动分配。但是,逻辑网络表中并未指明电源连接,电压区域也不需要与分层模块的边界相一致。为了对此进行补偿,自动化工具采用几种不同的方法来为新增加的门电路确定供电连接。供电连接可从与上游门电路和下游门电路的连接中获得,或者从面积推断得知。网络和管脚名称之间的一致性可以帮助建立供电连接。门电路的物理隔离也可暗示与一个普通供电电压的连接。在底层规划过程中,供电区域的可视化有助于布局和布线工作,它要报告每一个区域的利用情况和功耗情况。
此外,在设计中时序特性可能会随各模块所用的供电电压的不同而异。这意味着工具必须支持协同时序分析和多种电压区域的最优化。另外,给物理验证工具的输出必须传递有关多种供电电压的信息。
系统级芯片设计的一项主要技术是采用一个支持从RTL描述直到布局布线设计的分层数据的统一数据库。保持设计的分层性也缩短了设计周期。除了此处叙述的分层的布局布线流程之外,这个统一的数据库以及集成化的设计工具必须支持现有的扁平设计和分层设计的用途。为了提高设计流程中的可预测性,这个数据库还必须支持统一的时序、功耗分析以及信号完整性引擎。对于一个完善的芯片,增量引擎是综合所必需的。再加上一个公共域应用程序接口(API),设计人员就可以设计出与设计流程紧密结合的应用程序(见图2)。
超越传统
传统的设计流程常常包括一系列来自不同商家的或是内部开发的各不相同的工具,维护这些工具可能会给设计小组带来很大的麻烦。通过将这些从前端到后端的工具集成起来,要完成输入、输出和转换数据等这些设计过程中消耗大量时间的任务就简便多了。
把所有设计工具都纳入到一个通用的用户界面之下也很有益处。这将给设计小组中的每一位成员提供一个一致的可以访问到整个流程中所有设计数据的环境。采用类似Tcl这样的工业标准语言也有帮助。
随着设计尺寸不断增加,对物理和逻辑设计域的管理变得越来越困难。一个分层的、基于模块的设计流程有助于设计管理,并可使顶级和模块级的协同设计成为可能。一个集成的、分层的综合和P&R方法避免了顶级和模块级设计之间形成循环相互依赖关系,并有助于在芯片一级实现时序收敛。对协同设计方法的支持使得ASIC设计人员和ASIC商家之间可以实现协同工作,加速SoC的开发过程。
Jake Buurma
研发高级副总裁
Cadence Design Systems公司